diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6fc3f7f7..4bb4450e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -178,9 +178,19 @@ jobs: release-performance-evidence.json if-no-files-found: error - contracts: - name: Cross-Engine Contracts + public-parity: + name: Public Parity (${{ matrix.framework }}) runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - framework: vectorbt_oss + environment: .venv-vectorbt-oss + - framework: backtrader + environment: .venv-backtrader + - framework: zipline + environment: .venv-zipline steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -192,22 +202,50 @@ jobs: - name: Set up Python run: uv python install ${{ env.PYTHON_VERSION }} - - name: Install dependencies (with comparison frameworks) - run: uv sync --dev --extra comparison + - name: Build the locked framework environment + run: >- + python validation/build_framework_env.py + --framework ${{ matrix.framework }} + --evidence-output environment-evidence.json - - name: Run cross-engine contract tests - env: - ML4T_COMPARISON_INPROC: "1" + - name: Measure native VectorBT OSS behavior + if: matrix.framework == 'vectorbt_oss' run: >- - uv run pytest tests/contracts/test_cross_engine_contracts.py -v --tb=short --no-cov - --junitxml=parity-contracts.xml + "${{ matrix.environment }}/bin/python" + validation/native/vectorbt_behavior.py + --framework vectorbt_oss + --output native-evidence.json - - name: Retain cross-engine parity evidence + - name: Measure native Backtrader behavior + if: matrix.framework == 'backtrader' + run: >- + "${{ matrix.environment }}/bin/python" + validation/native/backtrader_behavior.py + --output native-evidence.json + + - name: Measure native Zipline behavior + if: matrix.framework == 'zipline' + run: >- + "${{ matrix.environment }}/bin/python" + validation/native/zipline_behavior.py + --output native-evidence.json + + - name: Run the complete required scenario matrix + run: >- + "${{ matrix.environment }}/bin/python" + validation/run_all_correctness.py + --framework ${{ matrix.framework }} + --output correctness-candidate.json + + - name: Retain public parity evidence if: always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: parity-contracts - path: parity-contracts.xml + name: parity-${{ matrix.framework }} + path: | + environment-evidence.json + correctness-candidate.json + native-evidence.json if-no-files-found: error documentation: @@ -249,7 +287,7 @@ jobs: name: Build Package runs-on: ubuntu-latest needs: - [lint, typecheck, compatibility, security, coverage, runtime, contracts, documentation] + [lint, typecheck, compatibility, security, coverage, runtime, public-parity, documentation] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: @@ -289,12 +327,12 @@ jobs: --commit "$GITHUB_SHA" \ --repository "$GITHUB_REPOSITORY" \ --gate compatibility=${{ needs.compatibility.result }} \ - --gate correctness=${{ needs.coverage.result }} \ + --gate correctness=${{ needs.public-parity.result }} \ --gate coverage=${{ needs.coverage.result }} \ --gate documentation=${{ needs.documentation.result }} \ --gate lint=${{ needs.lint.result }} \ --gate packaging=success \ - --gate parity=${{ needs.contracts.result }} \ + --gate parity=${{ needs.public-parity.result }} \ --gate performance=${{ needs.runtime.result }} \ --gate security=${{ needs.security.result }} \ --gate typecheck=${{ needs.typecheck.result }} \ diff --git a/.github/workflows/private-comparisons.yml b/.github/workflows/private-comparisons.yml new file mode 100644 index 00000000..544f14b9 --- /dev/null +++ b/.github/workflows/private-comparisons.yml @@ -0,0 +1,115 @@ +name: Private Comparison Evidence + +on: + workflow_call: + secrets: + VECTORBT_PRO_DEPLOY_KEY: + required: true + workflow_dispatch: + +permissions: + contents: read + +env: + PYTHON_VERSION: "3.12" + +jobs: + vectorbt-pro: + name: VectorBT Pro Parity + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Install uv + uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0 + with: + version: "latest" + + - name: Set up Python + run: uv python install ${{ env.PYTHON_VERSION }} + + - name: Configure licensed source access + env: + VECTORBT_PRO_DEPLOY_KEY: ${{ secrets.VECTORBT_PRO_DEPLOY_KEY }} + run: | + install -m 700 -d "$HOME/.ssh" + printf '%s\n' "$VECTORBT_PRO_DEPLOY_KEY" > "$HOME/.ssh/id_ed25519" + chmod 600 "$HOME/.ssh/id_ed25519" + ssh-keyscan github.com >> "$HOME/.ssh/known_hosts" + + - name: Build the locked VectorBT Pro environment + run: >- + python validation/build_framework_env.py + --framework vectorbt_pro + --evidence-output vectorbt-pro-environment.json + + - name: Measure native VectorBT Pro behavior + run: >- + .venv-vectorbt-pro/bin/python + validation/native/vectorbt_behavior.py + --framework vectorbt_pro + --output vectorbt-pro-native.json + + - name: Run the complete VectorBT Pro scenario matrix + run: >- + .venv-vectorbt-pro/bin/python + validation/run_all_correctness.py + --framework vectorbt_pro + --output vectorbt-pro-correctness.json + + - name: Retain VectorBT Pro evidence + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: vectorbt-pro-comparison-${{ github.sha }} + path: | + vectorbt-pro-environment.json + vectorbt-pro-native.json + vectorbt-pro-correctness.json + if-no-files-found: error + retention-days: 90 + + lean: + name: LEAN Native Behavior + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Install uv + uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0 + with: + version: "latest" + + - name: Set up Python + run: uv python install ${{ env.PYTHON_VERSION }} + + - name: Verify locked LEAN CLI and engine image + run: >- + python validation/build_framework_env.py + --framework lean + --evidence-output lean-environment.json + + - name: Measure native LEAN behavior + run: >- + .venv-lean/bin/python + validation/native/lean_behavior.py + --lean-command .venv-lean/bin/lean + --output lean-native.json + + - name: Run the LEAN Chapter 16 comparisons + run: >- + .venv-lean/bin/python + validation/run_lean_case_studies.py + --lean-command .venv-lean/bin/lean + --output lean-case-studies.json + + - name: Retain LEAN provenance + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: lean-comparison-${{ github.sha }} + path: | + lean-environment.json + lean-native.json + lean-case-studies.json + if-no-files-found: error + retention-days: 90 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 36fc195c..26ca9bf5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,10 +24,15 @@ jobs: name: Qualify Release Candidate uses: ./.github/workflows/ci.yml + private-comparisons: + name: Qualify Licensed and Container Comparisons + uses: ./.github/workflows/private-comparisons.yml + secrets: inherit + publish: name: Publish to PyPI runs-on: ubuntu-latest - needs: [ecosystem-qualification, qualification] + needs: [ecosystem-qualification, private-comparisons, qualification] environment: pypi permissions: contents: read diff --git a/.gitignore b/.gitignore index dbf2c1d3..dccc9f57 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,7 @@ src/ml4t/backtest/_version.py validation/.zipline/ validation/CORRECTNESS_RESULTS.md validation/BENCHMARK_RESULTS.md +validation/candidates/ validation/trade_logs/ validation/lean/workspace/ validation/nautilus/.venv-nautilus/ diff --git a/README.md b/README.md index 99733399..cd2c075d 100644 --- a/README.md +++ b/README.md @@ -126,10 +126,10 @@ config = BacktestConfig.from_preset("vectorbt") # Match Backtrader behavior (next-bar open fills, integer shares) config = BacktestConfig.from_preset("backtrader") -# Match Zipline behavior (next-bar open fills, integer shares, per-share commission) +# Match the documented Zipline comparison protocol (next-bar open, no default costs) config = BacktestConfig.from_preset("zipline") -# Match QuantConnect LEAN behavior (same-bar close fills, integer shares) +# Match the frozen LEAN daily US-equity protocol (next-session open, integer shares) config = BacktestConfig.from_preset("lean") # Conservative production settings (higher costs, cash buffer) @@ -276,28 +276,35 @@ opt-in. ## Cross-Framework Validation -Profiles configure framework-specific execution behavior. The generated table below reports only -claims supported by the retained release-candidate evidence. +The primary audit uses frozen data and targets from ETF allocation, CME futures, and crypto +perpetual-funding case studies. Profiles configure framework-specific execution behavior, and only +genuinely supported framework and asset combinations are required. The broad real-strategy gate +currently passes 6 of 8 required pairs; the generated table reports the exact remaining gaps. + +The scenario matrix and 250-asset workload remain useful synthetic diagnostic and stress tests. +They do not establish realistic strategy equivalence. -Scenario claims use the retained release-candidate matrix. "Exact" appears only when every required scenario has zero canonical gap. +Scenario claims use the retained accepted matrix. "Exact" means terminal values, ordered closed trades, and ordered fills match after 1e-8 quantization. Each record declares whether a surface is native, reconstructed, aggregate-only, input-only, or unavailable; the claim does not extend to unavailable order-lifecycle fields. | Profile | Pinned framework | Required scenarios | Evidence | |---|---|---:|---| -| `vectorbt_strict` | [VectorBT Pro 2025.12.31](https://github.com/polakowo/vectorbt.pro) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `vectorbt` | [VectorBT OSS 0.28.2](https://pypi.org/project/vectorbt/0.28.2/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | - -Large-scale claims are published only when a retained workload has zero canonical gap. - -| Profile | Pinned framework | Compared | Trade gap | Terminal value | Evidence | -|---|---|---:|---:|---:|---| -| `vectorbt_strict` | VectorBT Pro 2025.12.31 (`1305a1e19743`) | 225,844 trades | 0 | 685179.007330 | [large-scale evidence](https://github.com/ml4t/backtest/blob/main/validation/vectorbt_pro/large_scale_parity.json) | - -No large-scale claim is published for Backtrader, Zipline, VectorBT OSS, or LEAN without a passing retained artifact. +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | + +The controlled scale workload contains 250 assets and 5,040 daily sessions (1,260,000 bars). Every row has zero canonical gap for target intents, native fills, closed trades reconstructed from those fills, and terminal state reconstructed from the fill ledger and final marks. + +| Profile | Current framework | Target intents | Native fills | Fill-derived closed trades | Terminal value | Evidence | +|---|---|---:|---:|---:|---:|---| +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 427,790 | 343,813 | 182,019 | -9,166,273.555954 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 427,790 | 427,696 | 226,434 | 10,504,095.900000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `lean` | [LEAN 18001](https://github.com/QuantConnect/Lean) | 427,790 | 361,297 | 191,297 | 184,538.130000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | See [validation/README.md](validation/README.md) for methodology and detailed results. @@ -334,6 +341,17 @@ Workload definitions and expected checksums are retained in `validation/performance_baselines.json`. The project does not publish hardware-dependent runtime, throughput, memory, or cross-framework ratios as stable claims. +Cross-framework performance evidence uses a common 50-asset, 252-session controlled workload. +Each runner receives one isolated warm-up followed by ten isolated measurements. The retained +artifact contains raw samples, whole-process wall time, process-tree peak RSS, deterministic 95% +bootstrap intervals, output checksums, framework identities, and semantic disclosures for the +idiomatic view. The results remain audit evidence pending a separate publication decision. + +The real-strategy performance artifact times only engine execution for correctness-passing pairs. +Inputs, model inference, target construction, adapter preparation, extraction, and reporting are +excluded. See `validation/REAL_STRATEGY_PERFORMANCE.json`; its ratios are dated audit measurements, +not stable framework claims. + ## Documentation - [Getting Started](docs/getting-started/quickstart.md) — your first backtest diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md index 0c50993c..6ba6ad60 100644 --- a/docs/getting-started/quickstart.md +++ b/docs/getting-started/quickstart.md @@ -171,13 +171,13 @@ result = run_backtest(prices, strategy, config=config) Match the exact behavior of another backtesting framework: ```python -# Backtrader-compatible: next-bar execution, integer shares, margin account +# Backtrader-compatible: next-bar execution, integer shares, default cash checks result = run_backtest(prices, strategy, config="backtrader") # VectorBT-compatible: same-bar execution, fractional shares, no costs result = run_backtest(prices, strategy, config="vectorbt") -# Zipline-compatible: next-bar execution, per-share commission +# Zipline comparison protocol: next-bar open execution, no default costs result = run_backtest(prices, strategy, config="zipline") # Conservative production settings diff --git a/docs/index.md b/docs/index.md index 73fbf3c6..8cd806fe 100644 --- a/docs/index.md +++ b/docs/index.md @@ -21,8 +21,8 @@ how cash is reserved, and how results change when you match another framework's - :material-check-all:{ .lg .middle } __Validated Against 4 Frameworks__ --- - Compare fills and terminal values against VectorBT, Backtrader, Zipline, - and LEAN on the same benchmark scenarios. + Compare retained scenario evidence for VectorBT, Backtrader, and Zipline, + plus native and Chapter 16 evidence for LEAN. [:octicons-arrow-right-24: Profiles](user-guide/profiles.md) - :material-book-open-variant:{ .lg .middle } __Chapters 16-19__ @@ -82,8 +82,9 @@ which pinned framework scenarios currently match exactly. **Quote-aware when you need it.** The feed can cache bid, ask, midpoint, and quote sizes additively. Market execution and position marking can use `price`, `bid`, `ask`, `quote_mid`, or `quote_side`. -**Validated at scale.** The retained 250-asset, 20-year VectorBT Pro workload compares 225,844 -trades with zero canonical gap. +**Retained validation evidence.** The primary audit uses three real case studies with frozen +inputs. Separate synthetic scenario and 250-asset stress suites isolate conventions and exercise +high event counts. | Feature | Description | |---------|-------------| @@ -97,28 +98,30 @@ trades with zero canonical gap. ## Parity Validation -Scenario comparisons run equivalent inputs and check framework-specific outcomes. Large-scale -claims additionally require a retained workload with canonical record hashes and terminal values. +Real-strategy comparisons run frozen market data and model-derived targets through each supported +engine pair. The synthetic scenario and stress suites provide narrower conformance evidence. -Scenario claims use the retained release-candidate matrix. "Exact" appears only when every required scenario has zero canonical gap. +Scenario claims use the retained accepted matrix. "Exact" means terminal values, ordered closed trades, and ordered fills match after 1e-8 quantization. Each record declares whether a surface is native, reconstructed, aggregate-only, input-only, or unavailable; the claim does not extend to unavailable order-lifecycle fields. | Profile | Pinned framework | Required scenarios | Evidence | |---|---|---:|---| -| `vectorbt_strict` | [VectorBT Pro 2025.12.31](https://github.com/polakowo/vectorbt.pro) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `vectorbt` | [VectorBT OSS 0.28.2](https://pypi.org/project/vectorbt/0.28.2/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | - -Large-scale claims are published only when a retained workload has zero canonical gap. - -| Profile | Pinned framework | Compared | Trade gap | Terminal value | Evidence | -|---|---|---:|---:|---:|---| -| `vectorbt_strict` | VectorBT Pro 2025.12.31 (`1305a1e19743`) | 225,844 trades | 0 | 685179.007330 | [large-scale evidence](https://github.com/ml4t/backtest/blob/main/validation/vectorbt_pro/large_scale_parity.json) | - -No large-scale claim is published for Backtrader, Zipline, VectorBT OSS, or LEAN without a passing retained artifact. +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | + +The controlled scale workload contains 250 assets and 5,040 daily sessions (1,260,000 bars). Every row has zero canonical gap for target intents, native fills, closed trades reconstructed from those fills, and terminal state reconstructed from the fill ledger and final marks. + +| Profile | Current framework | Target intents | Native fills | Fill-derived closed trades | Terminal value | Evidence | +|---|---|---:|---:|---:|---:|---| +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 427,790 | 343,813 | 182,019 | -9,166,273.555954 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 427,790 | 427,696 | 226,434 | 10,504,095.900000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `lean` | [LEAN 18001](https://github.com/QuantConnect/Lean) | 427,790 | 361,297 | 191,297 | 184,538.130000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | Release performance evidence runs deterministic single-asset, 250-asset daily, quote-aware, @@ -129,6 +132,11 @@ reported for diagnosis, while the instrument-free hotpath benchmark enforces the runtime regression limit. The project does not publish hardware-dependent performance ratios as stable claims. +The separate cross-framework performance artifact retains ten isolated measurements per runner +after one warm-up. It reports complete-process wall time, process-tree and LEAN-container peak RSS, +raw samples, 95% bootstrap intervals, exact output checksums, and semantic disclosures. It is +retained as audit evidence without stable speed or memory ratios pending a publication decision. + ## Installation ```bash diff --git a/docs/user-guide/accounts.md b/docs/user-guide/accounts.md index bc482e42..0410660b 100644 --- a/docs/user-guide/accounts.md +++ b/docs/user-guide/accounts.md @@ -185,9 +185,11 @@ config = BacktestConfig.from_preset("lean") config = BacktestConfig.from_preset("realistic") ``` -Each preset sets all 40+ behavioral knobs to match the target framework's behavior. -Strict variants (`backtrader_strict`, `vectorbt_strict`, `zipline_strict`) -are also available for exact parity testing. +Each preset configures the measured behavior used by its comparison protocol. The native defaults, +explicit overrides, and adapter-emulated behavior are listed in the +[validation methodology](https://github.com/ml4t/backtest/blob/main/validation/METHODOLOGY.md). +Strict aliases are also available for +the retained comparison commands. ## Insufficient Funds diff --git a/docs/user-guide/configuration.md b/docs/user-guide/configuration.md index 34cfa200..6fd09fe0 100644 --- a/docs/user-guide/configuration.md +++ b/docs/user-guide/configuration.md @@ -128,6 +128,7 @@ separate assumption layer. | `fixed_margin_schedule` | dict \| None | None | Per-asset `(initial, maintenance)` fixed dollar margin per contract | | `margin_pct_schedule` | dict \| None | None | Per-asset `(initial, maintenance)` fractions of notional; cannot overlap the fixed schedule | | `short_cash_policy` | ShortCashPolicy | CREDIT | How short proceeds affect cash | +| `lock_notional_update_mode` | LockNotionalUpdateMode | POSITION_LEGS | Whether locked short collateral updates by closing/opening legs or by the combined order | Account type is determined by the flag combination: @@ -209,6 +210,7 @@ friction: | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | `share_type` | ShareType | INTEGER | FRACTIONAL or INTEGER | +| `share_rounding` | ShareRounding | NEAREST | NEAREST or TRUNCATE for integer quantities | ### Result evidence diff --git a/docs/user-guide/execution-semantics.md b/docs/user-guide/execution-semantics.md index 8db6097b..7358f0d1 100644 --- a/docs/user-guide/execution-semantics.md +++ b/docs/user-guide/execution-semantics.md @@ -480,7 +480,7 @@ config = BacktestConfig( | `NONE` | No slippage | | | `PERCENTAGE` | % of price | `slippage_rate=0.001` (0.1%) | | `FIXED` | Fixed $ per share | `slippage_fixed=0.01` | -| `VOLUME_BASED` | Size vs volume | `slippage_rate=0.1` (10% volume limit) | +| `VOLUME_BASED` | Linear size-to-volume impact | `slippage_rate=0.1` (impact coefficient) | Slippage models remain separate from quote-side execution: diff --git a/docs/user-guide/profiles.md b/docs/user-guide/profiles.md index bc182ccc..771cc95d 100644 --- a/docs/user-guide/profiles.md +++ b/docs/user-guide/profiles.md @@ -14,8 +14,8 @@ exactly and which remain release-blocking. | `fast` | Zero-cost, integer-share execution -- fastest possible execution | | `backtrader` | Match Backtrader's default behavior | | `vectorbt` | Match VectorBT's default behavior (including fractional shares) | -| `zipline` | Match Zipline Reloaded's default behavior | -| `lean` | Match QuantConnect LEAN's default behavior | +| `zipline` | Match the documented Zipline comparison protocol | +| `lean` | Match the frozen LEAN daily US-equity comparison protocol | | `realistic` | Conservative settings for production | ### Broker Presets @@ -30,15 +30,20 @@ The broker preset also supports a modular alias: |-------|-------------| | `ibkr:us:stocks:fixed` | `ibkr_us_stocks_fixed` | +The `lean` profile is scoped to daily US equities submitted from `OnData` with +`DefaultBrokerageModel`, a margin account, and 2x security leverage. LEAN delegates fees, +slippage, margin, and fills to selected brokerage and security models, so this profile is not a +claim about every LEAN asset class, resolution, or brokerage model. + ### Strict Profiles -Strict variants tune additional knobs (cash validation, settlement, short policies) for maximum parity on large-scale comparisons: +Strict variants are the names used by retained comparison commands: | Profile | Base | Additional Tuning | |---------|------|-------------------| | `backtrader_strict` | backtrader | Submission precheck, simple cash check | -| `vectorbt_strict` | vectorbt | Lock notional for shorts, FIFO ordering | -| `zipline_strict` | zipline | Skip cash validation, allow shorts | +| `vectorbt_strict` | vectorbt | Same settings as `vectorbt` | +| `zipline_strict` | zipline | Same settings as `zipline` | ### Aliases @@ -79,83 +84,116 @@ Profiles define behavioral defaults. Quote-aware feeds layer on top of them: you ## Profile Comparison +These tables report configured values. A profile value is not automatically an equivalence claim. +The [behavior coverage map](https://github.com/ml4t/backtest/blob/main/validation/behavior_coverage.toml) +identifies which field groups have both a native oracle and a cross-engine comparison. Target +sizing, insufficient-cash boundaries, competing same-session orders, partial fills, missing bars, +and late assets remain excluded from scenario-level equivalence where the map marks them +unpublished. + ### Execution | Setting | default | backtrader | vectorbt | zipline | lean | realistic | |---------|---------|-----------|----------|---------|------|-----------| -| Execution mode | next_bar | next_bar | same_bar | next_bar | same_bar | next_bar | -| Execution price | open | open | close | open | close | open | +| Execution mode | next_bar | next_bar | same_bar | next_bar | next_bar | next_bar | +| Execution price | open | open | close | open | open | open | ### Stops | Setting | default | backtrader | vectorbt | zipline | lean | realistic | |---------|---------|-----------|----------|---------|------|-----------| -| Fill mode | stop_price | stop_price | stop_price | stop_price | stop_price | next_bar_open | -| Level basis | fill_price | signal_price | fill_price | fill_price | fill_price | fill_price | -| Trail HWM | close | close | bar_extreme | close | close | close | -| Trail timing | lagged | lagged | intrabar | lagged | lagged | lagged | +| Fill mode | stop_price | stop_price | stop_price | next_bar_open | stop_price* | next_bar_open | +| Level basis | fill_price | signal_price | fill_price | fill_price | fill_price* | fill_price | +| Trail HWM | close | close | bar_extreme | bar_extreme | close* | close | +| Trail timing | lagged | lagged | intrabar | intrabar | lagged* | lagged | + +`*` The LEAN stop settings are ML4T profile fallbacks. The current native LEAN oracle does not +claim stop-order parity. ### Account | Setting | default | backtrader | vectorbt | zipline | lean | realistic | |---------|---------|-----------|----------|---------|------|-----------| -| Short selling | No | Yes (margin) | Yes | No | Yes | No | -| Leverage | No | Yes (50%) | No | No | No | No | +| Short selling | No | Yes | Yes | Yes | Yes | No | +| Leverage | No | No | No | Cash validation disabled | Yes, 2x | No | | Share type | integer | integer | fractional | integer | integer | integer | ### Costs | Setting | default | backtrader | vectorbt | zipline | lean | realistic | |---------|---------|-----------|----------|---------|------|-----------| -| Commission | none | 0.1% | none | $0.005/share | $0.005/share | 0.2% | -| Slippage | none | 0.1% | none | 10% volume | 0.1% | 0.2% | +| Commission | none | none | none | none | $0.005/share | 0.2% | +| Slippage | none | none | none | none | none | 0.2% | | Stop slippage | 0 | 0 | 0 | 0 | 0 | 0.1% | | Cash buffer | 0% | 0% | 0% | 0% | 0% | 2% | +| Target-weight multiplier | 100% | 100% | 100% | 100% | 99.75% | 100% | ### Order Processing | Setting | default | backtrader | vectorbt | zipline | lean | realistic | |---------|---------|-----------|----------|---------|------|-----------| -| Fill ordering | exit_first | fifo | exit_first | exit_first | exit_first | exit_first | -| Reject insuff. | yes | yes | no | yes | yes | yes | -| Partial fills | no | no | yes | yes | no | no | +| Fill ordering | exit_first | fifo | exit_first | fifo | sequential | exit_first | +| Reject insuff. | yes | yes | no | no | yes | yes | +| Partial fills | no | no | yes | no | no | no | | Rebalance mode | incremental | snapshot | hybrid | snapshot | snapshot | incremental | ## Parity Validation -Framework profiles can be validated at two levels: +Framework profiles are validated on the workloads each retained artifact declares: + +1. **Real strategies**: Complete canonical fill streams, every shared equity timestamp, and + terminal values for supported pairs drawn from ETF allocation, CME futures, and crypto + perpetual-funding case studies. Frozen model-derived targets are shared by both engines. + +2. **Synthetic scenarios**: Exact ordered trade and fill matching on the required matrix for + VectorBT, Backtrader, and Zipline. Capability declarations identify reconstructed and + unavailable result surfaces. -1. **Scenario-level** (16 scenarios per framework): Exact trade-by-trade matching on synthetic data covering entries, exits, stops, trailing stops, brackets, and multi-asset strategies. +3. **Synthetic stress**: Exact target-intent, native-fill, fill-derived closed-trade, and + terminal-state comparison on a reconstructable 250-asset, 5,040-session workload. Each + framework row states the surface it exposes; the claim does not include unavailable + order-lifecycle fields. -2. **Large-scale**: Trade-by-trade comparison on a retained real-data workload. A claim is omitted - when no passing artifact is retained for that framework. +LEAN has separate native-behavior and Chapter 16 case-study evidence. The frozen engine produced +47,652 fills across three case studies; ML4T matched every canonical fill and each terminal value +at the declared $0.0001 quantum. See `validation/native/evidence/lean-18001.json` and +`validation/lean/case_study_evidence.json`. -Scenario claims use the retained release-candidate matrix. "Exact" appears only when every required scenario has zero canonical gap. +Scenario claims use the retained accepted matrix. "Exact" means terminal values, ordered closed trades, and ordered fills match after 1e-8 quantization. Each record declares whether a surface is native, reconstructed, aggregate-only, input-only, or unavailable; the claim does not extend to unavailable order-lifecycle fields. | Profile | Pinned framework | Required scenarios | Evidence | |---|---|---:|---| -| `vectorbt_strict` | [VectorBT Pro 2025.12.31](https://github.com/polakowo/vectorbt.pro) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `vectorbt` | [VectorBT OSS 0.28.2](https://pypi.org/project/vectorbt/0.28.2/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | - -Large-scale claims are published only when a retained workload has zero canonical gap. - -| Profile | Pinned framework | Compared | Trade gap | Terminal value | Evidence | -|---|---|---:|---:|---:|---| -| `vectorbt_strict` | VectorBT Pro 2025.12.31 (`1305a1e19743`) | 225,844 trades | 0 | 685179.007330 | [large-scale evidence](https://github.com/ml4t/backtest/blob/main/validation/vectorbt_pro/large_scale_parity.json) | - -No large-scale claim is published for Backtrader, Zipline, VectorBT OSS, or LEAN without a passing retained artifact. +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | + +The controlled scale workload contains 250 assets and 5,040 daily sessions (1,260,000 bars). Every row has zero canonical gap for target intents, native fills, closed trades reconstructed from those fills, and terminal state reconstructed from the fill ledger and final marks. + +| Profile | Current framework | Target intents | Native fills | Fill-derived closed trades | Terminal value | Evidence | +|---|---|---:|---:|---:|---:|---| +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 427,790 | 343,813 | 182,019 | -9,166,273.555954 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 427,790 | 427,696 | 226,434 | 10,504,095.900000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `lean` | [LEAN 18001](https://github.com/QuantConnect/Lean) | 427,790 | 361,297 | 191,297 | 184,538.130000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | ## Performance -The stable release does not publish cross-framework speed ratios. Release performance evidence is -limited to the deterministic workloads and measurement boundaries in -`validation/performance_baselines.json`; framework parity uses correctness evidence instead. +The stable release does not publish cross-framework speed ratios. ML4T-only regression evidence is +defined in `validation/performance_baselines.json`. The separate retained cross-framework artifact +uses one warm-up and ten process-isolated measurements per runner, with raw samples, median and 95% +intervals, process-tree peak RSS, exact output checksums, and an idiomatic view that makes no +equivalence claim. + +`validation/REAL_STRATEGY_PERFORMANCE.json` separately retains engine-only timings for the six +real-strategy pairs that passed correctness. It excludes data loading, inference, target +construction, adapter preparation, extraction, and reporting. The results apply only to the named +versions, bundles, and machine. ## Listing Profiles diff --git a/pyproject.toml b/pyproject.toml index f6f4a7fc..f94d65d1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,7 +81,7 @@ dependencies = [ "pandas>=3.0.5; python_version >= '3.15'", "numpy>=2.3.2", "PyYAML>=6.0.3", - "pandas-market-calendars>=5.2.4", + "pandas-market-calendars>=5.4.0", ] [project.optional-dependencies] diff --git a/src/ml4t/backtest/_validation/case_study_lean.py b/src/ml4t/backtest/_validation/case_study_lean.py index 2f6782ad..885e45c2 100644 --- a/src/ml4t/backtest/_validation/case_study_lean.py +++ b/src/ml4t/backtest/_validation/case_study_lean.py @@ -28,6 +28,7 @@ import math import re import zipfile +from decimal import ROUND_HALF_EVEN, Decimal from pathlib import Path import pandas as pd @@ -39,10 +40,25 @@ from ..strategy import Strategy _NUMBER = r"[-+]?(?:\d[\d_]*(?:\.\d[\d_]*)?|\.\d[\d_]*)(?:[eE][-+]?\d[\d_]*)?" +_MONEY_QUANTUM = Decimal("0.0001") +RETAINED_ORDER_EVENT_ARTIFACTS = { + "chapter16_etfs": ("ml4t_order_events.csv.xz",), + "chapter16_sp500_equity_option_analytics": ("ml4t_order_events.csv",), + "chapter16_us_equities_panel": ( + "ml4t_order_events.csv.part01.xz", + "ml4t_order_events.csv.part02.xz", + ), +} def _csv_path(base_dir: Path, name: str) -> Path: - for suffix in ("", ".xz", ".gz"): + if name == "ml4t_order_events.csv": + retained = RETAINED_ORDER_EVENT_ARTIFACTS.get(base_dir.name) + if retained and len(retained) == 1: + candidate = base_dir / retained[0] + if candidate.is_file(): + return candidate + for suffix in (".xz", ".gz", ""): path = base_dir / f"{name}{suffix}" if path.exists(): return path @@ -249,7 +265,7 @@ def lean_side(workspace_dir: Path) -> dict: final_value = float(equity["equity"].iloc[-1]) events = _read_csv_fixture(workspace_dir, "ml4t_order_events.csv", low_memory=False) - filled = events[events["status"].astype(str) == "Filled"].copy() + filled = events[events["status"].astype(str).str.lower() == "filled"].copy() filled["asset"] = filled["symbol"].astype(str).map(symbol_map).fillna(filled["symbol"]) filled = filled.rename(columns={"fill_quantity": "quantity", "fill_price": "price"}) filled["side"] = filled["direction"].astype(str).str.lower() @@ -267,11 +283,20 @@ def compare(lean: dict, ml4t: dict) -> dict: len(ls) == len(ms) and not (lean["fills"][cols].reset_index(drop=True) != ml4t["fills"][cols]).any().any() ) + lean_value = Decimal(str(lean["final_value"])).quantize( + _MONEY_QUANTUM, rounding=ROUND_HALF_EVEN + ) + ml4t_value = Decimal(str(ml4t["final_value"])).quantize( + _MONEY_QUANTUM, rounding=ROUND_HALF_EVEN + ) return { "lean_final_value": lean["final_value"], "ml4t_final_value": ml4t["final_value"], "final_value_gap_usd": ml4t["final_value"] - lean["final_value"], "final_value_gap_pct": ml4t["final_value"] / lean["final_value"] - 1.0, + "canonical_final_value_gap_usd": float(ml4t_value - lean_value), + "canonical_final_value_match": ml4t_value == lean_value, + "final_value_quantum_usd": float(_MONEY_QUANTUM), "lean_fills": len(lean["fills"]), "ml4t_fills": len(ml4t["fills"]), "fill_gap": len(ml4t["fills"]) - len(lean["fills"]), diff --git a/src/ml4t/backtest/_validation/lean_runner.py b/src/ml4t/backtest/_validation/lean_runner.py index 49bc861a..3afb17cc 100644 --- a/src/ml4t/backtest/_validation/lean_runner.py +++ b/src/ml4t/backtest/_validation/lean_runner.py @@ -184,15 +184,25 @@ def load_lean_artifacts( def resolve_lean_command() -> list[str]: - """Resolve the local LEAN CLI command.""" + """Resolve a preinstalled LEAN CLI command without installing an unpinned version.""" + configured = os.getenv("ML4T_LEAN_COMMAND") + if configured: + return [configured] + + locked_binary = ( + Path.cwd() / ".venv-lean" / ("Scripts/lean.exe" if os.name == "nt" else "bin/lean") + ) + if locked_binary.is_file(): + return [str(locked_binary)] + lean_binary = shutil.which("lean") if lean_binary is not None: return [lean_binary] - uvx_binary = shutil.which("uvx") - if uvx_binary is None: - raise FileNotFoundError("Neither 'lean' nor 'uvx' executable found.") - return [uvx_binary, "--python", "3.12", "--with", "setuptools<81", "lean"] + raise FileNotFoundError( + "LEAN CLI not found; build the frozen environment with " + "validation/build_framework_env.py --framework lean" + ) def make_lean_env() -> dict[str, str]: @@ -308,10 +318,13 @@ def run_lean_backtest( project_dir: Path, lean_config: Path, output_dir: Path, + image: str, timeout: int = 1800, env: dict[str, str] | None = None, ) -> float: - """Run a LEAN backtest and return the runtime in seconds.""" + """Run a LEAN backtest with an immutable engine image and return its runtime.""" + if "@sha256:" not in image: + raise ValueError(f"LEAN image must use an immutable digest: {image}") if output_dir.exists(): shutil.rmtree(output_dir) @@ -320,6 +333,8 @@ def run_lean_backtest( str(project_dir), "--lean-config", str(lean_config), + "--image", + image, "--no-update", "--output", str(output_dir), diff --git a/src/ml4t/backtest/accounting/account.py b/src/ml4t/backtest/accounting/account.py index 01f32e09..89782141 100644 --- a/src/ml4t/backtest/accounting/account.py +++ b/src/ml4t/backtest/accounting/account.py @@ -38,6 +38,7 @@ def __init__(self, initial_cash: float, policy: AccountPolicy): """ self.cash = initial_cash self._lock_notional_free_cash = initial_cash + self._lock_notional_short_basis: dict[str, float] = {} self.positions: dict[str, Position] = {} self.policy = policy diff --git a/src/ml4t/backtest/accounting/policy.py b/src/ml4t/backtest/accounting/policy.py index 964bbb67..2c35a524 100644 --- a/src/ml4t/backtest/accounting/policy.py +++ b/src/ml4t/backtest/accounting/policy.py @@ -335,14 +335,14 @@ def __init__( raise ValueError( f"Short maintenance margin must be in (0.0, 1.0], got {short_maintenance_margin}" ) - if long_maintenance_margin >= initial_margin: + if long_maintenance_margin > initial_margin: raise ValueError( - f"Long maintenance margin ({long_maintenance_margin}) must be < " + f"Long maintenance margin ({long_maintenance_margin}) must be <= " f"initial margin ({initial_margin})" ) - if short_maintenance_margin >= initial_margin: + if short_maintenance_margin > initial_margin: raise ValueError( - f"Short maintenance margin ({short_maintenance_margin}) must be < " + f"Short maintenance margin ({short_maintenance_margin}) must be <= " f"initial margin ({initial_margin})" ) diff --git a/src/ml4t/backtest/broker.py b/src/ml4t/backtest/broker.py index 51f1a328..5ec0b753 100644 --- a/src/ml4t/backtest/broker.py +++ b/src/ml4t/backtest/broker.py @@ -15,6 +15,7 @@ FillOrdering, InitialHwmSource, LateAssetPolicy, + LockNotionalUpdateMode, MissingPricePolicy, ShareType, ShortCashPolicy, @@ -103,6 +104,7 @@ def __init__( fixed_margin_schedule: dict[str, tuple[float, float]] | None = None, margin_pct_schedule: dict[str, tuple[float, float]] | None = None, short_cash_policy: ShortCashPolicy = ShortCashPolicy.CREDIT, + lock_notional_update_mode: LockNotionalUpdateMode = LockNotionalUpdateMode.POSITION_LEGS, execution_limits: ExecutionLimits | None = None, market_impact_model: MarketImpactModel | None = None, contract_specs: dict[str, ContractSpec] | None = None, @@ -214,6 +216,7 @@ def __init__( self.fixed_margin_schedule = effective_margin_schedule self.margin_pct_schedule = effective_margin_pct_schedule self.short_cash_policy = short_cash_policy + self.lock_notional_update_mode = lock_notional_update_mode # Create Gatekeeper for order validation self.gatekeeper = Gatekeeper( @@ -409,6 +412,7 @@ def from_config( fixed_margin_schedule=config.fixed_margin_schedule, margin_pct_schedule=config.margin_pct_schedule, short_cash_policy=config.short_cash_policy, + lock_notional_update_mode=config.lock_notional_update_mode, execution_limits=execution_limits, market_impact_model=market_impact_model, contract_specs=contract_specs, diff --git a/src/ml4t/backtest/config.py b/src/ml4t/backtest/config.py index 93c12026..9d903d30 100644 --- a/src/ml4t/backtest/config.py +++ b/src/ml4t/backtest/config.py @@ -87,6 +87,13 @@ class ShareType(str, Enum): INTEGER = "integer" # Round down to whole shares (like most real brokers) +class ShareRounding(str, Enum): + """Integer-share rounding used during target-weight sizing.""" + + NEAREST = "nearest" + TRUNCATE = "truncate" + + class FillOrdering(str, Enum): """Order processing sequence within a single bar. @@ -153,6 +160,20 @@ class ShortCashPolicy(str, Enum): LOCK_NOTIONAL = "lock_notional" +class LockNotionalUpdateMode(str, Enum): + """Floating-point operation order for locked-notional cash updates. + + POSITION_LEGS: + Settle closing and opening position legs separately. + + COMBINED_ORDER: + Settle the gross cash and short-debt effects as one order. + """ + + POSITION_LEGS = "position_legs" + COMBINED_ORDER = "combined_order" + + class RebalanceMode(str, Enum): """How portfolio value is computed during multi-asset rebalancing. @@ -262,6 +283,7 @@ class InitialHwmSource(str, Enum): Controls what price is used for HWM when a new position is created: - FILL_PRICE: Use the actual fill price including slippage (default) + - SIGNAL_PRICE: Use the price observed when the entry order was submitted - BAR_CLOSE: Use the bar's close price - BAR_HIGH: Use the bar's high price (VBT Pro with OHLC data) @@ -271,6 +293,7 @@ class InitialHwmSource(str, Enum): """ FILL_PRICE = "fill_price" # Use fill price (default, most frameworks) + SIGNAL_PRICE = "signal_price" # Use the entry order's signal price (Backtrader) BAR_CLOSE = "bar_close" # Use bar's close BAR_HIGH = "bar_high" # Use bar's high (VBT Pro with OHLC) @@ -502,6 +525,7 @@ class BacktestConfig: fixed_margin_schedule: dict[str, tuple[float, float]] | None = None # For futures margin_pct_schedule: dict[str, tuple[float, float]] | None = None # Price-aware futures margin short_cash_policy: ShortCashPolicy = ShortCashPolicy.CREDIT + lock_notional_update_mode: LockNotionalUpdateMode = LockNotionalUpdateMode.POSITION_LEGS # === Execution Timing === execution_price: ExecutionPrice = ExecutionPrice.OPEN @@ -695,6 +719,7 @@ def get_effective_account_type(self) -> str: # === Position Sizing === share_type: ShareType = ShareType.INTEGER + share_rounding: ShareRounding = ShareRounding.NEAREST # === Commission === commission_type: CommissionType = CommissionType.NONE @@ -731,10 +756,9 @@ def get_effective_account_type(self) -> str: next_bar_submission_precheck: bool = False next_bar_simple_cash_check: bool = False buying_power_reservation: bool = False # Reserve cash at submission (LEAN-style) - # TODO(parity): consider an explicit profile/knob for "commit basket at close, - # fill reserved orders at next open" semantics. Keep it separate from the - # default next-bar/open path, which currently revalidates affordability at - # the actual open. + # Validate a next-open batch against a shadow account in submission order. + # When combined with next_bar_submission_precheck, each order first gets an + # independent close-price check before the batch is rechecked next session. next_bar_queue_shadow_validation: bool = False immediate_fill: bool = False # Fill same-bar market orders at submit time (LEAN-style) rebalance_mode: RebalanceMode = RebalanceMode.INCREMENTAL @@ -877,6 +901,7 @@ def to_dict(self) -> dict: "fixed_margin_schedule": _margin_schedule_to_dict(self.fixed_margin_schedule), "margin_pct_schedule": _margin_schedule_to_dict(self.margin_pct_schedule), "short_cash_policy": self.short_cash_policy.value, + "lock_notional_update_mode": self.lock_notional_update_mode.value, }, "execution": { "execution_price": self.execution_price.value, @@ -893,6 +918,7 @@ def to_dict(self) -> dict: }, "position_sizing": { "share_type": self.share_type.value, + "share_rounding": self.share_rounding.value, }, "commission": { "model": self.commission_type.value, @@ -993,6 +1019,7 @@ def from_dict( "fixed_margin_schedule", "margin_pct_schedule", "short_cash_policy", + "lock_notional_update_mode", }, "execution": {"execution_price", "mark_price", "execution_mode"}, "stops": { @@ -1003,7 +1030,7 @@ def from_dict( "initial_hwm_source", "trail_stop_timing", }, - "position_sizing": {"share_type"}, + "position_sizing": {"share_type", "share_rounding"}, "commission": {"model", "rate", "per_share", "per_trade", "minimum"}, "slippage": { "model", @@ -1117,6 +1144,9 @@ def from_dict( fixed_margin_schedule=acct_cfg.get("fixed_margin_schedule"), margin_pct_schedule=acct_cfg.get("margin_pct_schedule"), short_cash_policy=ShortCashPolicy(acct_cfg.get("short_cash_policy", "credit")), + lock_notional_update_mode=LockNotionalUpdateMode( + acct_cfg.get("lock_notional_update_mode", "position_legs") + ), # Execution execution_price=ExecutionPrice( exec_cfg.get("execution_price", ExecutionPrice.OPEN.value) @@ -1136,6 +1166,7 @@ def from_dict( trail_stop_timing=TrailStopTiming(stops_cfg.get("trail_stop_timing", "lagged")), # Sizing share_type=ShareType(sizing_cfg.get("share_type", "integer")), + share_rounding=ShareRounding(sizing_cfg.get("share_rounding", "nearest")), # Commission commission_type=CommissionType(comm_cfg.get("model", "none")), commission_rate=comm_cfg.get("rate", 0.0), @@ -1219,7 +1250,7 @@ def from_preset(cls, preset: str) -> BacktestConfig: - "backtrader": Match Backtrader's default behavior - "vectorbt": Match VectorBT's default behavior - "zipline": Match Zipline's default behavior - - "lean": Match QuantConnect LEAN's default behavior + - "lean": Match the frozen LEAN daily US-equity comparison protocol - "realistic": Conservative settings for realistic simulation - "ibkr_us_stocks_fixed": Interactive Brokers US stocks fixed pricing """ diff --git a/src/ml4t/backtest/core/execution_engine.py b/src/ml4t/backtest/core/execution_engine.py index 06a513b5..e15f75aa 100644 --- a/src/ml4t/backtest/core/execution_engine.py +++ b/src/ml4t/backtest/core/execution_engine.py @@ -3,7 +3,8 @@ from __future__ import annotations import copy -from typing import TYPE_CHECKING +import math +from typing import TYPE_CHECKING, TypeGuard from ..models import calculate_commission from ..types import ExecutionMode, Order, OrderSide, OrderStatus, OrderType, Position @@ -16,6 +17,10 @@ from .fill_engine import FillEngine +def _price_available(price: object) -> TypeGuard[int | float]: + return isinstance(price, (int, float)) and math.isfinite(price) + + class ExecutionEngine: """Executes pending orders using configured fill ordering.""" @@ -129,7 +134,7 @@ def _process_orders_exit_first( deferred_entries.append(order) continue price = fill.get_fill_price_for_order(order, use_open) - if price is None: + if not _price_available(price): continue fill_price = fill.check_fill(order, price) if fill_price is not None: @@ -174,18 +179,13 @@ def _should_use_next_bar_queue_shadow_validation( if order_types is not None or order_ids is not None or include_orders_this_bar: return False - current_bar_index = self.market.bar_index eligible_orders = self._eligible_orders( use_open, order_types=order_types, order_ids=order_ids, include_orders_this_bar=include_orders_this_bar, ) - for order in eligible_orders: - if getattr(order, "_created_bar_index", current_bar_index) < current_bar_index - 1: - return True - - return False + return bool(eligible_orders) def _process_orders_next_bar_queue_shadow( self, @@ -221,7 +221,7 @@ def _process_orders_next_bar_queue_shadow( for order in eligible_orders: price = fill.get_fill_price_for_order(order, use_open) - if price is None: + if not _price_available(price): continue fill.apply_share_rounding(order) @@ -451,7 +451,7 @@ def _process_orders_sequential( continue price = fill.get_fill_price_for_order(order, use_open) - if price is None: + if not _price_available(price): continue fill.apply_share_rounding(order) @@ -500,7 +500,7 @@ def _process_single_order( if order.status is not OrderStatus.PENDING: return price = fill.get_fill_price_for_order(order, use_open) - if price is None: + if not _price_available(price): return skip_cash = broker.skip_cash_validation @@ -678,7 +678,15 @@ def _passes_simple_cash_check(self, order, fill_price: float) -> bool: broker.commission_model, order.asset, order.quantity, fill_price ) projected_cash = broker.cash - signed_qty * fill_price - commission - return projected_cash >= 0.0 + if projected_cash >= 0.0: + return True + + # Backtrader executes the closing leg of a reversal after an + # opening-price gap, even when that close leaves cash negative. + if is_opposite and order.quantity > abs(current_qty): + order.quantity = abs(current_qty) + return True + return False def _cleanup_filled_orders(self, filled_orders: list) -> None: filled_ids = {o.order_id for o in filled_orders} @@ -711,8 +719,10 @@ def _sort_entry_orders(self, orders: list, use_open: bool) -> list: def notional(order) -> float: px = fill.get_fill_price_for_order(order, use_open) - if px is None: + if not _price_available(px): px = self.market.prices.get(order.asset, self.market.opens.get(order.asset, 0.0)) + if not _price_available(px): + return 0.0 return abs(order.quantity * px) reverse = priority == "notional_desc" diff --git a/src/ml4t/backtest/core/fill_engine.py b/src/ml4t/backtest/core/fill_engine.py index 7012d775..a29b440b 100644 --- a/src/ml4t/backtest/core/fill_engine.py +++ b/src/ml4t/backtest/core/fill_engine.py @@ -5,9 +5,10 @@ from dataclasses import replace from typing import TYPE_CHECKING -from ..config import ExecutionPrice, ShareType +from ..config import ExecutionPrice, LockNotionalUpdateMode, ShareType +from ..models import calculate_commission from ..types import OrderSide, OrderType -from .shared import CASH_TOLERANCE +from .shared import CASH_TOLERANCE, add_with_zero_cancellation from .state import MarketState, OrderState if TYPE_CHECKING: @@ -62,6 +63,10 @@ def get_max_affordable_quantity(self, order, fill_price: float) -> float: if fill_price <= 0 or order.quantity <= 0: return 0.0 + direct_limit = self._get_lock_notional_zero_cost_limit(order, fill_price) + if direct_limit is not None: + return min(order.quantity, direct_limit) + if self.broker.share_type == ShareType.INTEGER: high_int = int(order.quantity) if high_int <= 0: @@ -97,6 +102,79 @@ def get_max_affordable_quantity(self, order, fill_price: float) -> float: cash_tolerance = 0.0 return max(0.0, low - cash_tolerance / fill_price) + def _get_lock_notional_zero_cost_limit(self, order, fill_price: float) -> float | None: + broker = self.broker + if ( + broker.share_type != ShareType.FRACTIONAL + or broker.short_cash_policy.value != "lock_notional" + or broker.account.policy.allow_leverage + or broker.cash_buffer_pct != 0.0 + or calculate_commission( + broker.commission_model, + order.asset, + order.quantity, + fill_price, + ) + != 0.0 + ): + return None + + free_cash = broker.account._lock_notional_free_cash + current_quantity = broker.account.get_position_quantity(order.asset) + multiplier = broker.get_multiplier(order.asset) + unit_cost = fill_price * multiplier + + if broker.lock_notional_update_mode is LockNotionalUpdateMode.COMBINED_ORDER: + if order.side is OrderSide.BUY and current_quantity < 0.0: + short_quantity = abs(current_quantity) + short_basis = broker.account._lock_notional_short_basis.get(order.asset, 0.0) + cover_required = short_quantity * unit_cost + cover_free_cash = add_with_zero_cancellation( + free_cash + 2 * short_basis, + -cover_required, + ) + if cover_free_cash > 0.0: + cash_limit = free_cash + 2 * short_basis + elif cover_free_cash < 0.0: + average_entry = short_basis / short_quantity + denominator = unit_cost - 2 * average_entry + if denominator == 0.0: + return 0.0 + max_short_size = free_cash / denominator + cash_limit = max_short_size * unit_cost + else: + cash_limit = broker.cash + return max(0.0, min(cash_limit, broker.cash) / unit_cost) + + if order.side is OrderSide.SELL: + long_quantity = max(current_quantity, 0.0) + long_cash = long_quantity * unit_cost + total_free_cash = add_with_zero_cancellation(free_cash, long_cash) + if total_free_cash <= 0.0: + return long_quantity if current_quantity > 0.0 else 0.0 + max_short_size = total_free_cash / unit_cost + return add_with_zero_cancellation(long_quantity, max_short_size) + + return max(0.0, free_cash / unit_cost) + + if order.side is OrderSide.BUY and current_quantity < 0.0: + short_quantity = abs(current_quantity) + short_basis = broker.account._lock_notional_short_basis.get(order.asset, 0.0) + cover_budget = free_cash + short_basis + short_basis + max_cover = cover_budget / unit_cost + if max_cover < short_quantity: + return max_cover + released = short_basis + short_basis - short_quantity * unit_cost + free_after_cover = add_with_zero_cancellation(free_cash, released) + return short_quantity + max(0.0, free_after_cover / unit_cost) + + if order.side is OrderSide.SELL and current_quantity > 0.0: + sale_proceeds = current_quantity * unit_cost + free_after_close = add_with_zero_cancellation(free_cash, sale_proceeds) + return current_quantity + max(0.0, free_after_close / unit_cost) + + return max(0.0, free_cash / unit_cost) + def try_partial_fill(self, order, fill_price: float) -> bool: max_shares = self.get_max_affordable_quantity(order, fill_price) diff --git a/src/ml4t/backtest/core/order_book.py b/src/ml4t/backtest/core/order_book.py index d7616e65..d77d5657 100644 --- a/src/ml4t/backtest/core/order_book.py +++ b/src/ml4t/backtest/core/order_book.py @@ -2,9 +2,11 @@ from __future__ import annotations +import math from datetime import datetime from typing import TYPE_CHECKING +from ..config import MissingPricePolicy from ..models import calculate_commission from ..types import ExecutionMode, Order, OrderSide, OrderStatus, OrderType, Position from .shared import SubmitOrderOptions, is_exit_order, quantity_zero_tolerance @@ -171,7 +173,10 @@ def _fill_immediately(self, order: Order) -> Order: # Get fill price (close price for same-bar) price = fill.get_fill_price_for_order(order, use_open=False) - if price is None: + missing_price = price is None or not math.isfinite(price) + if missing_price and broker.missing_price_policy is MissingPricePolicy.USE_LAST: + price = broker.get_last_price(order.asset) + if price is None or not math.isfinite(price): order.reject("No price available", "price_unavailable") return order @@ -365,7 +370,11 @@ def _passes_submission_precheck(self, order: Order) -> bool: self._reset_submission_shadow_if_needed() if broker.allow_leverage and not broker.next_bar_simple_cash_check: - return self._passes_margin_submission_precheck(order, signal_price) + return self._passes_margin_submission_precheck( + order, + signal_price, + commit=not broker.next_bar_queue_shadow_validation, + ) size = order.quantity if order.side is OrderSide.BUY else -order.quantity old_qty, old_price = self._submission_shadow_positions.get(order.asset, (0.0, signal_price)) @@ -488,11 +497,17 @@ def _passes_buying_power_check(self, order: Order) -> bool: self._submission_shadow_positions[order.asset] = (new_qty, new_price) return True - def _passes_margin_submission_precheck(self, order: Order, signal_price: float) -> bool: + def _passes_margin_submission_precheck( + self, + order: Order, + signal_price: float, + *, + commit: bool = True, + ) -> bool: """Margin-aware submission precheck for NEXT_BAR market orders. - Simulates sequential submission-time acceptance using policy validation at - signal-bar prices and commits only accepted orders into shadow state. + Validate at the signal-bar price. ``commit=False`` keeps each check + independent, while ``commit=True`` reserves accepted orders in shadow state. """ broker = self.broker @@ -571,6 +586,9 @@ def _passes_margin_submission_precheck(self, order: Order, signal_price: float) order._rejection_code = rejection_code return False + if not commit: + return True + multiplier = broker.get_multiplier(order.asset) self._submission_shadow_cash += -size * signal_price * multiplier - commission if abs(new_qty) <= quantity_zero_tolerance(old_qty, size): diff --git a/src/ml4t/backtest/core/shared.py b/src/ml4t/backtest/core/shared.py index 2a9b321e..81fd44a0 100644 --- a/src/ml4t/backtest/core/shared.py +++ b/src/ml4t/backtest/core/shared.py @@ -4,7 +4,7 @@ import re from dataclasses import dataclass -from math import fabs, isfinite, ulp +from math import copysign, fabs, isclose, isfinite, ulp from typing import TYPE_CHECKING from ..types import ExitReason, OrderSide @@ -19,6 +19,15 @@ QUANTITY_ZERO_ULPS: int = 16 +def add_with_zero_cancellation(left: float, right: float) -> float: + """Add values while collapsing tolerance-equivalent opposite amounts to zero.""" + if copysign(1.0, left) != copysign(1.0, right) and isclose( + abs(left), abs(right), rel_tol=1e-9, abs_tol=1e-12 + ): + return 0.0 + return left + right + + def quantity_zero_tolerance(*operands: float) -> float: """Return the larger of the absolute floor and 16 ULP at the operand scale. diff --git a/src/ml4t/backtest/execution/fill_executor.py b/src/ml4t/backtest/execution/fill_executor.py index 7567e74a..27d0ebca 100644 --- a/src/ml4t/backtest/execution/fill_executor.py +++ b/src/ml4t/backtest/execution/fill_executor.py @@ -13,8 +13,8 @@ from datetime import datetime from typing import TYPE_CHECKING -from ..config import InitialHwmSource, ShareType -from ..core.shared import quantity_zero_tolerance +from ..config import InitialHwmSource, LockNotionalUpdateMode, ShareType +from ..core.shared import add_with_zero_cancellation, quantity_zero_tolerance from ..core.state import ExecutionJournal, MarketState, OrderState, RiskState from ..models import calculate_commission, calculate_slippage from ..types import ( @@ -62,15 +62,6 @@ def _calculate_position_pnl( return (exit_price * signed_quantity - entry_price * signed_quantity) * multiplier -def _add_with_zero_cancellation(left: float, right: float) -> float: - """Add values while collapsing tolerance-equivalent opposite amounts to zero.""" - if math.copysign(1.0, left) != math.copysign(1.0, right) and math.isclose( - abs(left), abs(right), rel_tol=1e-9, abs_tol=1e-12 - ): - return 0.0 - return left + right - - @dataclass class FillContext: """Context for a single fill execution. @@ -314,7 +305,6 @@ def execute(self, order: Order, base_price: float) -> bool: old_position = self.account.positions.get(order.asset) old_quantity = old_position.quantity if old_position is not None else 0.0 - old_entry_price = old_position.entry_price if old_position is not None else 0.0 # Update position and get actual commission (may change for flips) actual_commission = self._update_position(ctx) @@ -323,7 +313,6 @@ def execute(self, order: Order, base_price: float) -> bool: self._update_lock_notional_free_cash( ctx, old_quantity=old_quantity, - old_entry_price=old_entry_price, commission=actual_commission, ) @@ -357,7 +346,6 @@ def _update_lock_notional_free_cash( ctx: FillContext, *, old_quantity: float, - old_entry_price: float, commission: float, ) -> None: broker = self.broker @@ -365,26 +353,106 @@ def _update_lock_notional_free_cash( if policy.allow_leverage or policy.short_cash_policy != "lock_notional": return + if broker.lock_notional_update_mode is LockNotionalUpdateMode.COMBINED_ORDER: + self._update_combined_lock_notional_cash( + ctx, + old_quantity=old_quantity, + commission=commission, + ) + return + remaining = ctx.signed_qty free_cash = self.account._lock_notional_free_cash multiplier = broker.get_multiplier(ctx.order.asset) + asset = ctx.order.asset + short_basis = self.account._lock_notional_short_basis.get(asset, 0.0) if old_quantity < 0.0 and remaining > 0.0: covered = min(remaining, abs(old_quantity)) - released_basis = covered * old_entry_price * multiplier + size_fraction = covered / abs(old_quantity) + released_basis = size_fraction * short_basis required_cash = covered * ctx.fill_price * multiplier - free_cash = _add_with_zero_cancellation(free_cash, 2.0 * released_basis - required_cash) + free_cash = add_with_zero_cancellation( + free_cash, + released_basis + released_basis - required_cash, + ) + new_quantity = old_quantity + covered + if new_quantity < 0.0: + new_fraction = abs(new_quantity) / abs(old_quantity) + self.account._lock_notional_short_basis[asset] = new_fraction * short_basis + else: + self.account._lock_notional_short_basis.pop(asset, None) remaining -= covered elif old_quantity > 0.0 and remaining < 0.0: closed = min(abs(remaining), old_quantity) - free_cash = _add_with_zero_cancellation(free_cash, closed * ctx.fill_price * multiplier) + free_cash = add_with_zero_cancellation(free_cash, closed * ctx.fill_price * multiplier) remaining += closed + new_position = self.account.positions.get(asset) + if ( + new_position is not None + and old_quantity * new_position.quantity < 0.0 + and remaining != 0.0 + ): + remaining = new_position.quantity + if remaining != 0.0: required_cash = abs(remaining) * ctx.fill_price * multiplier - free_cash = _add_with_zero_cancellation(free_cash, -required_cash) + free_cash = add_with_zero_cancellation(free_cash, -required_cash) + if remaining < 0.0: + current_basis = self.account._lock_notional_short_basis.get(asset, 0.0) + self.account._lock_notional_short_basis[asset] = current_basis + required_cash + + self.account._lock_notional_free_cash = add_with_zero_cancellation(free_cash, -commission) + + def _update_combined_lock_notional_cash( + self, + ctx: FillContext, + *, + old_quantity: float, + commission: float, + ) -> None: + """Settle locked collateral in VectorBT OSS combined-order operation order.""" + broker = self.broker + asset = ctx.order.asset + free_cash = self.account._lock_notional_free_cash + short_basis = self.account._lock_notional_short_basis.get(asset, 0.0) + unit_cost = ctx.fill_price * broker.get_multiplier(asset) + fill_quantity = abs(ctx.signed_qty) + + if ctx.signed_qty > 0.0: + required_cash = add_with_zero_cancellation(fill_quantity * unit_cost, commission) + if old_quantity < 0.0: + covered = min(fill_quantity, abs(old_quantity)) + average_entry = short_basis / abs(old_quantity) + released_basis = covered * average_entry + free_cash = add_with_zero_cancellation( + free_cash + 2 * released_basis, + -required_cash, + ) + new_basis = add_with_zero_cancellation(short_basis, -released_basis) + if old_quantity + covered < 0.0: + self.account._lock_notional_short_basis[asset] = new_basis + else: + self.account._lock_notional_short_basis.pop(asset, None) + else: + free_cash = add_with_zero_cancellation(free_cash, -required_cash) + else: + acquired_cash = add_with_zero_cancellation(fill_quantity * unit_cost, -commission) + new_quantity = old_quantity - fill_quantity + if new_quantity < 0.0: + short_quantity = fill_quantity if old_quantity < 0.0 else abs(new_quantity) + short_value = short_quantity * unit_cost + self.account._lock_notional_short_basis[asset] = short_basis + short_value + free_cash_difference = add_with_zero_cancellation( + acquired_cash, + -2 * short_value, + ) + free_cash = add_with_zero_cancellation(free_cash, free_cash_difference) + else: + free_cash = free_cash + acquired_cash - self.account._lock_notional_free_cash = _add_with_zero_cancellation(free_cash, -commission) + self.account._lock_notional_free_cash = free_cash @staticmethod def _validate_execution_price(value: float, *, source: str) -> None: @@ -430,12 +498,51 @@ def _update_position(self, ctx: FillContext) -> float: self._close_position(ctx, pos, old_qty) return ctx.commission elif _is_position_flip(old_qty, new_qty): + new_qty = self._get_lock_notional_flip_quantity(ctx, old_qty, new_qty) return self._flip_position(ctx, pos, old_qty, new_qty) else: self._scale_position(ctx, pos, old_qty, new_qty) return ctx.commission - def _get_initial_hwm(self, asset: str, fill_price: float) -> float: + def _get_lock_notional_flip_quantity( + self, + ctx: FillContext, + old_quantity: float, + fallback: float, + ) -> float: + broker = self.broker + if ( + broker.share_type != ShareType.FRACTIONAL + or broker.short_cash_policy.value != "lock_notional" + or broker.account.policy.allow_leverage + or broker.cash_buffer_pct != 0.0 + or ctx.commission != 0.0 + or broker.lock_notional_update_mode is LockNotionalUpdateMode.COMBINED_ORDER + ): + return fallback + + unit_cost = ctx.fill_price * broker.get_multiplier(ctx.order.asset) + if ctx.fill_quantity == ctx.order.quantity: + requested_quantity = ctx.order.requested_quantity or ctx.order.quantity + requested_open = abs(requested_quantity) - abs(old_quantity) + else: + requested_open = abs(ctx.signed_qty) - abs(old_quantity) + free_cash = self.account._lock_notional_free_cash + if old_quantity < 0.0: + short_basis = self.account._lock_notional_short_basis.get(ctx.order.asset, 0.0) + released = short_basis + short_basis - abs(old_quantity) * unit_cost + free_after_close = add_with_zero_cancellation(free_cash, released) + else: + free_after_close = add_with_zero_cancellation( + free_cash, + abs(old_quantity) * unit_cost, + ) + open_quantity = min(requested_open, max(0.0, free_after_close / unit_cost)) + return math.copysign(open_quantity, ctx.signed_qty) + + def _get_initial_hwm( + self, asset: str, fill_price: float, signal_price: float | None = None + ) -> float: """Get initial high water mark based on configuration. This is the single source of truth for HWM initialization, @@ -449,6 +556,8 @@ def _get_initial_hwm(self, asset: str, fill_price: float) -> float: Initial HWM value based on configuration """ broker = self.broker + if broker.initial_hwm_source == InitialHwmSource.SIGNAL_PRICE: + return signal_price if signal_price is not None else fill_price if broker.initial_hwm_source == InitialHwmSource.BAR_HIGH: return self.market.highs.get(asset, fill_price) elif broker.initial_hwm_source == InitialHwmSource.BAR_CLOSE: @@ -456,7 +565,9 @@ def _get_initial_hwm(self, asset: str, fill_price: float) -> float: else: return fill_price - def _get_initial_lwm(self, asset: str, fill_price: float) -> float: + def _get_initial_lwm( + self, asset: str, fill_price: float, signal_price: float | None = None + ) -> float: """Get initial low water mark based on configuration. For VBT Pro compatibility with OHLC data, LWM should be initialized @@ -471,6 +582,8 @@ def _get_initial_lwm(self, asset: str, fill_price: float) -> float: Initial LWM value based on configuration """ broker = self.broker + if broker.initial_hwm_source == InitialHwmSource.SIGNAL_PRICE: + return signal_price if signal_price is not None else fill_price # When using BAR_HIGH for HWM, use BAR_LOW for LWM if broker.initial_hwm_source == InitialHwmSource.BAR_HIGH: return self.market.lows.get(asset, fill_price) @@ -513,8 +626,9 @@ def _create_position(self, ctx: FillContext) -> None: broker = self.broker order = ctx.order - initial_hwm = self._get_initial_hwm(order.asset, ctx.fill_price) - initial_lwm = self._get_initial_lwm(order.asset, ctx.fill_price) + signal_price = getattr(order, "_signal_price", None) + initial_hwm = self._get_initial_hwm(order.asset, ctx.fill_price, signal_price) + initial_lwm = self._get_initial_lwm(order.asset, ctx.fill_price, signal_price) context = self._build_position_context(order) pos = Position( @@ -658,8 +772,9 @@ def _flip_position( self.record_pnl(order.asset, pnl) # Create new position in opposite direction - initial_hwm = self._get_initial_hwm(order.asset, ctx.fill_price) - initial_lwm = self._get_initial_lwm(order.asset, ctx.fill_price) + signal_price = getattr(order, "_signal_price", None) + initial_hwm = self._get_initial_hwm(order.asset, ctx.fill_price, signal_price) + initial_lwm = self._get_initial_lwm(order.asset, ctx.fill_price, signal_price) context = self._build_position_context(order) self.account.positions[order.asset] = Position( diff --git a/src/ml4t/backtest/execution/rebalancer.py b/src/ml4t/backtest/execution/rebalancer.py index 813c129a..6903cc77 100644 --- a/src/ml4t/backtest/execution/rebalancer.py +++ b/src/ml4t/backtest/execution/rebalancer.py @@ -30,7 +30,13 @@ from ml4t.specs.market_data import TimestampSemantics -from ..config import DataFrequency, ExecutionPrice, RebalanceMode, ShareType +from ..config import ( + DataFrequency, + ExecutionPrice, + RebalanceMode, + ShareRounding, + ShareType, +) from ..core.shared import SubmitOrderOptions from ..types import OrderSide from .schedule import RebalanceSchedule, _OnlineRebalanceEvaluator @@ -105,6 +111,7 @@ class RebalanceConfig: cancel_before_rebalance: bool = True account_for_pending: bool = True rebalance_mode: RebalanceMode = RebalanceMode.SNAPSHOT + share_rounding: ShareRounding | str = ShareRounding.NEAREST schedule: RebalanceSchedule | None = None calendar: str | None = None timezone: str | None = None @@ -113,6 +120,7 @@ class RebalanceConfig: timestamp_semantics: TimestampSemantics | str | None = None def __post_init__(self) -> None: + self.share_rounding = ShareRounding(self.share_rounding) if self.session_start_time is None: return from ..sessions import _validate_session_start_time @@ -411,9 +419,7 @@ def _process_asset( # Compute shares (account for contract multiplier for futures) multiplier = broker.get_multiplier(asset) - shares = delta_value / (price * multiplier) - - shares = self._quantize_shares(shares, broker) + shares = self._quantize_shares(delta_value / (price * multiplier), broker) if shares == 0: return None @@ -449,6 +455,8 @@ def _quantize_shares(self, shares: float, broker: Broker) -> float: return int(rounded_lots) if use_fractional: return shares + if self.config.share_rounding is ShareRounding.TRUNCATE: + return int(shares) rounded = math.copysign(math.floor(abs(shares) + 0.5), shares) return int(rounded) diff --git a/src/ml4t/backtest/profiles.py b/src/ml4t/backtest/profiles.py index f5afeed2..29794e76 100644 --- a/src/ml4t/backtest/profiles.py +++ b/src/ml4t/backtest/profiles.py @@ -53,10 +53,7 @@ BACKTRADER_PROFILE = { "account": { "allow_short_selling": True, - "allow_leverage": True, - "initial_margin": 0.5, - "long_maintenance_margin": 0.25, - "short_maintenance_margin": 0.30, + "allow_leverage": False, "short_cash_policy": "credit", }, "execution": { @@ -67,18 +64,20 @@ "stop_fill_mode": "stop_price", "stop_level_basis": "signal_price", "trail_hwm_source": "close", + "initial_hwm_source": "signal_price", "trail_stop_timing": "lagged", }, "position_sizing": { "share_type": "integer", + "share_rounding": "truncate", }, "commission": { - "model": "percentage", - "rate": 0.001, + "model": "none", + "rate": 0.0, }, "slippage": { - "model": "percentage", - "rate": 0.001, + "model": "none", + "rate": 0.0, }, "cash": { "initial": 100000.0, @@ -90,10 +89,10 @@ "fill_ordering": "fifo", "entry_order_priority": "submission", "rebalance_mode": "snapshot", - "rebalance_headroom_pct": 0.998, + "rebalance_headroom_pct": 1.0, "missing_price_policy": "use_last", - "late_asset_policy": "require_history", - "late_asset_min_bars": 2, + "late_asset_policy": "allow", + "late_asset_min_bars": 1, }, } @@ -102,6 +101,7 @@ "allow_short_selling": True, "allow_leverage": False, "short_cash_policy": "credit", + "lock_notional_update_mode": "position_legs", }, "execution": { "execution_price": "close", @@ -134,9 +134,10 @@ "partial_fills_allowed": True, "fill_ordering": "exit_first", "entry_order_priority": "submission", + "immediate_fill": True, "rebalance_mode": "hybrid", "rebalance_headroom_pct": 1.0, - "missing_price_policy": "use_last", + "missing_price_policy": "skip", "late_asset_policy": "allow", "late_asset_min_bars": 1, }, @@ -144,7 +145,7 @@ ZIPLINE_PROFILE = { "account": { - "allow_short_selling": False, + "allow_short_selling": True, "allow_leverage": False, "short_cash_policy": "credit", }, @@ -153,36 +154,37 @@ "execution_mode": "next_bar", }, "stops": { - "stop_fill_mode": "stop_price", + "stop_fill_mode": "next_bar_open", "stop_level_basis": "fill_price", - "trail_hwm_source": "close", - "trail_stop_timing": "lagged", + "trail_hwm_source": "bar_extreme", + "trail_stop_timing": "intrabar", }, "position_sizing": { "share_type": "integer", }, "commission": { - "model": "per_share", + "model": "none", "rate": 0.0, - "per_share": 0.005, - "minimum": 1.0, + "per_share": 0.0, + "minimum": 0.0, }, "slippage": { - "model": "volume_based", - "rate": 0.1, + "model": "none", + "rate": 0.0, }, "cash": { "initial": 100000.0, "buffer_pct": 0.0, }, "orders": { - "reject_on_insufficient_cash": True, - "partial_fills_allowed": True, - "fill_ordering": "exit_first", + "reject_on_insufficient_cash": False, + "skip_cash_validation": True, + "partial_fills_allowed": False, + "fill_ordering": "fifo", "entry_order_priority": "submission", - "next_bar_queue_shadow_validation": True, + "next_bar_queue_shadow_validation": False, "rebalance_mode": "snapshot", - "rebalance_headroom_pct": 0.998, + "rebalance_headroom_pct": 1.0, "missing_price_policy": "use_last", "late_asset_policy": "allow", "late_asset_min_bars": 1, @@ -287,24 +289,23 @@ VECTORBT_STRICT_PROFILE["orders"]["fill_ordering"] = "fifo" VECTORBT_STRICT_PROFILE["orders"]["entry_order_priority"] = "submission" +VECTORBT_OSS_STRICT_PROFILE = deepcopy(VECTORBT_STRICT_PROFILE) +VECTORBT_OSS_STRICT_PROFILE["account"]["lock_notional_update_mode"] = "combined_order" + BACKTRADER_STRICT_PROFILE = deepcopy(BACKTRADER_PROFILE) BACKTRADER_STRICT_PROFILE["orders"]["entry_order_priority"] = "submission" BACKTRADER_STRICT_PROFILE["orders"]["next_bar_submission_precheck"] = True BACKTRADER_STRICT_PROFILE["orders"]["next_bar_simple_cash_check"] = True ZIPLINE_STRICT_PROFILE = deepcopy(ZIPLINE_PROFILE) -ZIPLINE_STRICT_PROFILE["account"]["allow_short_selling"] = True -ZIPLINE_STRICT_PROFILE["account"]["short_cash_policy"] = "credit" -ZIPLINE_STRICT_PROFILE["orders"]["skip_cash_validation"] = True -ZIPLINE_STRICT_PROFILE["orders"]["entry_order_priority"] = "submission" LEAN_PROFILE = { "account": { "allow_short_selling": True, "allow_leverage": True, "initial_margin": 0.5, - "long_maintenance_margin": 0.25, - "short_maintenance_margin": 0.30, + "long_maintenance_margin": 0.5, + "short_maintenance_margin": 0.5, "short_cash_policy": "credit", }, "execution": { @@ -327,8 +328,8 @@ "minimum": 1.0, }, "slippage": { - "model": "percentage", - "rate": 0.001, + "model": "none", + "rate": 0.0, }, "cash": { "initial": 100000.0, @@ -337,11 +338,13 @@ "orders": { "reject_on_insufficient_cash": True, "partial_fills_allowed": False, - "fill_ordering": "exit_first", + "fill_ordering": "sequential", "entry_order_priority": "submission", + "buying_power_reservation": False, + "next_bar_submission_precheck": True, "next_bar_queue_shadow_validation": True, "rebalance_mode": "snapshot", - "rebalance_headroom_pct": 1.0, + "rebalance_headroom_pct": 0.9975, "missing_price_policy": "use_last", "late_asset_policy": "allow", "late_asset_min_bars": 1, @@ -402,6 +405,7 @@ "realistic": REALISTIC_PROFILE, "ibkr_us_stocks_fixed": IBKR_US_STOCKS_FIXED_PROFILE, "vectorbt_strict": VECTORBT_STRICT_PROFILE, + "vectorbt_oss_strict": VECTORBT_OSS_STRICT_PROFILE, "backtrader_strict": BACKTRADER_STRICT_PROFILE, "zipline_strict": ZIPLINE_STRICT_PROFILE, } @@ -412,6 +416,7 @@ "quantconnect": "lean", "ibkr:us:stocks:fixed": "ibkr_us_stocks_fixed", "vectorbt_compare": "vectorbt_strict", + "vectorbt_oss_compare": "vectorbt_oss_strict", "backtrader_compare": "backtrader_strict", "zipline_compare": "zipline_strict", "lean_compare": "lean", diff --git a/tests/accounting/test_margin_account_policy.py b/tests/accounting/test_margin_account_policy.py index 3e0bca5e..e3eeb7cf 100644 --- a/tests/accounting/test_margin_account_policy.py +++ b/tests/accounting/test_margin_account_policy.py @@ -66,8 +66,8 @@ def test_invalid_maintenance_margin_too_high(self): ) def test_invalid_maintenance_greater_than_initial(self): - """Test that long_maintenance_margin must be < initial_margin.""" - with pytest.raises(ValueError, match="maintenance margin.*must be <"): + """Test that long_maintenance_margin must be <= initial_margin.""" + with pytest.raises(ValueError, match="maintenance margin.*must be <="): UnifiedAccountPolicy( allow_short_selling=True, allow_leverage=True, @@ -75,15 +75,17 @@ def test_invalid_maintenance_greater_than_initial(self): long_maintenance_margin=0.5, ) - def test_invalid_maintenance_equal_to_initial(self): - """Test that long_maintenance_margin cannot equal initial_margin.""" - with pytest.raises(ValueError, match="maintenance margin.*must be <"): - UnifiedAccountPolicy( - allow_short_selling=True, - allow_leverage=True, - initial_margin=0.5, - long_maintenance_margin=0.5, - ) + def test_maintenance_can_equal_initial(self): + """Support models that use the same initial and maintenance requirement.""" + policy = UnifiedAccountPolicy( + allow_short_selling=True, + allow_leverage=True, + initial_margin=0.5, + long_maintenance_margin=0.5, + short_maintenance_margin=0.5, + ) + assert policy.long_maintenance_margin == 0.5 + assert policy.short_maintenance_margin == 0.5 class TestMarginAccountPolicyBuyingPower: diff --git a/tests/benchmark/test_case_study_lean.py b/tests/benchmark/test_case_study_lean.py index 59ce6c96..8c1a77c6 100644 --- a/tests/benchmark/test_case_study_lean.py +++ b/tests/benchmark/test_case_study_lean.py @@ -8,11 +8,17 @@ from __future__ import annotations +import lzma from pathlib import Path import pytest -from ml4t.backtest._validation.case_study_lean import compare, lean_side, run_ml4t_lean +from ml4t.backtest._validation.case_study_lean import ( + _read_csv_fixture, + compare, + lean_side, + run_ml4t_lean, +) WORKSPACE = Path(__file__).resolve().parents[2] / "validation" / "lean" / "workspace" DATA_DAILY = WORKSPACE / "data" / "equity" / "usa" / "daily" @@ -32,6 +38,36 @@ def _has_reference_artifacts(workspace_dir: Path) -> bool: ) +def test_retained_compressed_surface_precedes_ignored_runtime_file(tmp_path: Path) -> None: + (tmp_path / "surface.csv").write_text("value\n1\n", encoding="utf-8") + (tmp_path / "surface.csv.xz").write_bytes(lzma.compress(b"value\n2\n")) + + assert _read_csv_fixture(tmp_path, "surface.csv")["value"].tolist() == [2] + + +def test_lean_side_accepts_current_uppercase_order_status(tmp_path: Path) -> None: + (tmp_path / "ml4t_symbol_map.json").write_text('{"AAAA": "AAPL"}', encoding="utf-8") + (tmp_path / "ml4t_daily_equity.csv").write_text( + "timestamp,equity\n2024-01-03,10010\n", + encoding="utf-8", + ) + (tmp_path / "ml4t_order_events.csv").write_text( + "timestamp,symbol,status,direction,fill_quantity,fill_price\n" + "2024-01-03,AAAA,FILLED,BUY,1,110\n", + encoding="utf-8", + ) + + result = lean_side(tmp_path) + + assert result["n_trades"] == 1 + row = result["fills"].iloc[0] + assert str(row["timestamp"].date()) == "2024-01-03" + assert row["asset"] == "AAPL" + assert row["side"] == "buy" + assert row["quantity"] == 1.0 + assert row["price"] == 110.0 + + # The generic equity-decomposition invariant (initial + closed_pnl + open_pnl == # final_value) does not model 2x margin, but parity here is asserted directly # against LEAN's terminal value (external ground truth), which matches exactly. @@ -52,6 +88,8 @@ def test_case_study_lean_parity(project: str) -> None: f"(lean={result['lean_fills']} ml4t={result['ml4t_fills']})" ) assert result["fill_gap"] == 0 + assert result["canonical_final_value_match"] + assert result["canonical_final_value_gap_usd"] == 0.0 assert abs(result["final_value_gap_usd"]) < 1e-4, ( f"{project}: terminal value gap ${result['final_value_gap_usd']:.6f}" ) diff --git a/tests/benchmark/test_cross_framework_selected.py b/tests/benchmark/test_cross_framework_selected.py index 852b8b03..7809b42d 100644 --- a/tests/benchmark/test_cross_framework_selected.py +++ b/tests/benchmark/test_cross_framework_selected.py @@ -68,6 +68,7 @@ def _run_framework_pair(framework: str, runner_name: str, artifact_dir: Path): framework_result, ml4t_result, initial_cash=config.initial_cash, + timestamp_domain="session_date", ) artifact_path = artifact_dir / f"{framework}-exact-comparison.json" suite.write_exact_comparison_artifact(artifact, artifact_path) diff --git a/tests/compatibility/snapshots/v0.1.json b/tests/compatibility/snapshots/v0.1.json index 43fe1f56..59ef3404 100644 --- a/tests/compatibility/snapshots/v0.1.json +++ b/tests/compatibility/snapshots/v0.1.json @@ -71,6 +71,15 @@ "keyword_only": false, "name": "short_cash_policy" }, + { + "annotation": "LockNotionalUpdateMode", + "default": { + "enum": "ml4t.backtest.config.LockNotionalUpdateMode.POSITION_LEGS", + "value": "position_legs" + }, + "keyword_only": false, + "name": "lock_notional_update_mode" + }, { "annotation": "ExecutionPrice", "default": { @@ -158,6 +167,15 @@ "keyword_only": false, "name": "share_type" }, + { + "annotation": "ShareRounding", + "default": { + "enum": "ml4t.backtest.config.ShareRounding.NEAREST", + "value": "nearest" + }, + "keyword_only": false, + "name": "share_rounding" + }, { "annotation": "CommissionType", "default": { @@ -458,6 +476,7 @@ "allow_short_selling": false, "fixed_margin_schedule": null, "initial_margin": 0.5, + "lock_notional_update_mode": "position_legs", "long_maintenance_margin": 0.25, "margin_pct_schedule": null, "short_cash_policy": "credit", @@ -525,6 +544,7 @@ "skip_cash_validation": false }, "position_sizing": { + "share_rounding": "nearest", "share_type": "integer" }, "result": { @@ -754,6 +774,10 @@ "name": "FILL_PRICE", "value": "fill_price" }, + { + "name": "SIGNAL_PRICE", + "value": "signal_price" + }, { "name": "BAR_CLOSE", "value": "bar_close" @@ -773,6 +797,16 @@ "value": "require_history" } ], + "ml4t.backtest.config.LockNotionalUpdateMode": [ + { + "name": "POSITION_LEGS", + "value": "position_legs" + }, + { + "name": "COMBINED_ORDER", + "value": "combined_order" + } + ], "ml4t.backtest.config.MissingPricePolicy": [ { "name": "SKIP", @@ -797,6 +831,16 @@ "value": "hybrid" } ], + "ml4t.backtest.config.ShareRounding": [ + { + "name": "NEAREST", + "value": "nearest" + }, + { + "name": "TRUNCATE", + "value": "truncate" + } + ], "ml4t.backtest.config.ShareType": [ { "name": "FRACTIONAL", @@ -1194,26 +1238,24 @@ "quantconnect": "lean", "vectorbt_compare": "vectorbt_strict", "vectorbt_oss": "vectorbt", + "vectorbt_oss_compare": "vectorbt_oss_strict", "vectorbt_pro": "vectorbt", "zipline_compare": "zipline_strict" }, "canonical": { "backtrader": { "account": { - "allow_leverage": true, + "allow_leverage": false, "allow_short_selling": true, - "initial_margin": 0.5, - "long_maintenance_margin": 0.25, - "short_cash_policy": "credit", - "short_maintenance_margin": 0.3 + "short_cash_policy": "credit" }, "cash": { "buffer_pct": 0.0, "initial": 100000.0 }, "commission": { - "model": "percentage", - "rate": 0.001 + "model": "none", + "rate": 0.0 }, "execution": { "execution_mode": "next_bar", @@ -1222,22 +1264,24 @@ "orders": { "entry_order_priority": "submission", "fill_ordering": "fifo", - "late_asset_min_bars": 2, - "late_asset_policy": "require_history", + "late_asset_min_bars": 1, + "late_asset_policy": "allow", "missing_price_policy": "use_last", "partial_fills_allowed": false, - "rebalance_headroom_pct": 0.998, + "rebalance_headroom_pct": 1.0, "rebalance_mode": "snapshot", "reject_on_insufficient_cash": true }, "position_sizing": { + "share_rounding": "truncate", "share_type": "integer" }, "slippage": { - "model": "percentage", - "rate": 0.001 + "model": "none", + "rate": 0.0 }, "stops": { + "initial_hwm_source": "signal_price", "stop_fill_mode": "stop_price", "stop_level_basis": "signal_price", "trail_hwm_source": "close", @@ -1246,20 +1290,17 @@ }, "backtrader_strict": { "account": { - "allow_leverage": true, + "allow_leverage": false, "allow_short_selling": true, - "initial_margin": 0.5, - "long_maintenance_margin": 0.25, - "short_cash_policy": "credit", - "short_maintenance_margin": 0.3 + "short_cash_policy": "credit" }, "cash": { "buffer_pct": 0.0, "initial": 100000.0 }, "commission": { - "model": "percentage", - "rate": 0.001 + "model": "none", + "rate": 0.0 }, "execution": { "execution_mode": "next_bar", @@ -1268,24 +1309,26 @@ "orders": { "entry_order_priority": "submission", "fill_ordering": "fifo", - "late_asset_min_bars": 2, - "late_asset_policy": "require_history", + "late_asset_min_bars": 1, + "late_asset_policy": "allow", "missing_price_policy": "use_last", "next_bar_simple_cash_check": true, "next_bar_submission_precheck": true, "partial_fills_allowed": false, - "rebalance_headroom_pct": 0.998, + "rebalance_headroom_pct": 1.0, "rebalance_mode": "snapshot", "reject_on_insufficient_cash": true }, "position_sizing": { + "share_rounding": "truncate", "share_type": "integer" }, "slippage": { - "model": "percentage", - "rate": 0.001 + "model": "none", + "rate": 0.0 }, "stops": { + "initial_hwm_source": "signal_price", "stop_fill_mode": "stop_price", "stop_level_basis": "signal_price", "trail_hwm_source": "close", @@ -1430,9 +1473,9 @@ "allow_leverage": true, "allow_short_selling": true, "initial_margin": 0.5, - "long_maintenance_margin": 0.25, + "long_maintenance_margin": 0.5, "short_cash_policy": "credit", - "short_maintenance_margin": 0.3 + "short_maintenance_margin": 0.5 }, "cash": { "buffer_pct": 0.0, @@ -1449,14 +1492,16 @@ "execution_price": "open" }, "orders": { + "buying_power_reservation": false, "entry_order_priority": "submission", - "fill_ordering": "exit_first", + "fill_ordering": "sequential", "late_asset_min_bars": 1, "late_asset_policy": "allow", "missing_price_policy": "use_last", "next_bar_queue_shadow_validation": true, + "next_bar_submission_precheck": true, "partial_fills_allowed": false, - "rebalance_headroom_pct": 1.0, + "rebalance_headroom_pct": 0.9975, "rebalance_mode": "snapshot", "reject_on_insufficient_cash": true }, @@ -1464,8 +1509,8 @@ "share_type": "integer" }, "slippage": { - "model": "percentage", - "rate": 0.001 + "model": "none", + "rate": 0.0 }, "stops": { "stop_fill_mode": "stop_price", @@ -1522,6 +1567,7 @@ "account": { "allow_leverage": false, "allow_short_selling": true, + "lock_notional_update_mode": "position_legs", "short_cash_policy": "credit" }, "cash": { @@ -1539,9 +1585,10 @@ "orders": { "entry_order_priority": "submission", "fill_ordering": "exit_first", + "immediate_fill": true, "late_asset_min_bars": 1, "late_asset_policy": "allow", - "missing_price_policy": "use_last", + "missing_price_policy": "skip", "partial_fills_allowed": true, "rebalance_headroom_pct": 1.0, "rebalance_mode": "hybrid", @@ -1562,10 +1609,57 @@ "trail_stop_timing": "intrabar" } }, + "vectorbt_oss_strict": { + "account": { + "allow_leverage": false, + "allow_short_selling": true, + "lock_notional_update_mode": "combined_order", + "short_cash_policy": "lock_notional" + }, + "cash": { + "buffer_pct": 0.0, + "initial": 100000.0 + }, + "commission": { + "model": "none", + "rate": 0.0 + }, + "execution": { + "execution_mode": "same_bar", + "execution_price": "close" + }, + "orders": { + "entry_order_priority": "submission", + "fill_ordering": "fifo", + "immediate_fill": true, + "late_asset_min_bars": 1, + "late_asset_policy": "allow", + "missing_price_policy": "skip", + "partial_fills_allowed": true, + "rebalance_headroom_pct": 1.0, + "rebalance_mode": "hybrid", + "reject_on_insufficient_cash": true + }, + "position_sizing": { + "share_type": "fractional" + }, + "slippage": { + "model": "none", + "rate": 0.0 + }, + "stops": { + "initial_hwm_source": "bar_high", + "stop_fill_mode": "stop_price", + "stop_level_basis": "fill_price", + "trail_hwm_source": "bar_extreme", + "trail_stop_timing": "intrabar" + } + }, "vectorbt_strict": { "account": { "allow_leverage": false, "allow_short_selling": true, + "lock_notional_update_mode": "position_legs", "short_cash_policy": "lock_notional" }, "cash": { @@ -1583,9 +1677,10 @@ "orders": { "entry_order_priority": "submission", "fill_ordering": "fifo", + "immediate_fill": true, "late_asset_min_bars": 1, "late_asset_policy": "allow", - "missing_price_policy": "use_last", + "missing_price_policy": "skip", "partial_fills_allowed": true, "rebalance_headroom_pct": 1.0, "rebalance_mode": "hybrid", @@ -1609,7 +1704,7 @@ "zipline": { "account": { "allow_leverage": false, - "allow_short_selling": false, + "allow_short_selling": true, "short_cash_policy": "credit" }, "cash": { @@ -1617,9 +1712,9 @@ "initial": 100000.0 }, "commission": { - "minimum": 1.0, - "model": "per_share", - "per_share": 0.005, + "minimum": 0.0, + "model": "none", + "per_share": 0.0, "rate": 0.0 }, "execution": { @@ -1628,28 +1723,29 @@ }, "orders": { "entry_order_priority": "submission", - "fill_ordering": "exit_first", + "fill_ordering": "fifo", "late_asset_min_bars": 1, "late_asset_policy": "allow", "missing_price_policy": "use_last", - "next_bar_queue_shadow_validation": true, - "partial_fills_allowed": true, - "rebalance_headroom_pct": 0.998, + "next_bar_queue_shadow_validation": false, + "partial_fills_allowed": false, + "rebalance_headroom_pct": 1.0, "rebalance_mode": "snapshot", - "reject_on_insufficient_cash": true + "reject_on_insufficient_cash": false, + "skip_cash_validation": true }, "position_sizing": { "share_type": "integer" }, "slippage": { - "model": "volume_based", - "rate": 0.1 + "model": "none", + "rate": 0.0 }, "stops": { - "stop_fill_mode": "stop_price", + "stop_fill_mode": "next_bar_open", "stop_level_basis": "fill_price", - "trail_hwm_source": "close", - "trail_stop_timing": "lagged" + "trail_hwm_source": "bar_extreme", + "trail_stop_timing": "intrabar" } }, "zipline_strict": { @@ -1663,9 +1759,9 @@ "initial": 100000.0 }, "commission": { - "minimum": 1.0, - "model": "per_share", - "per_share": 0.005, + "minimum": 0.0, + "model": "none", + "per_share": 0.0, "rate": 0.0 }, "execution": { @@ -1674,29 +1770,29 @@ }, "orders": { "entry_order_priority": "submission", - "fill_ordering": "exit_first", + "fill_ordering": "fifo", "late_asset_min_bars": 1, "late_asset_policy": "allow", "missing_price_policy": "use_last", - "next_bar_queue_shadow_validation": true, - "partial_fills_allowed": true, - "rebalance_headroom_pct": 0.998, + "next_bar_queue_shadow_validation": false, + "partial_fills_allowed": false, + "rebalance_headroom_pct": 1.0, "rebalance_mode": "snapshot", - "reject_on_insufficient_cash": true, + "reject_on_insufficient_cash": false, "skip_cash_validation": true }, "position_sizing": { "share_type": "integer" }, "slippage": { - "model": "volume_based", - "rate": 0.1 + "model": "none", + "rate": 0.0 }, "stops": { - "stop_fill_mode": "stop_price", + "stop_fill_mode": "next_bar_open", "stop_level_basis": "fill_price", - "trail_hwm_source": "close", - "trail_stop_timing": "lagged" + "trail_hwm_source": "bar_extreme", + "trail_stop_timing": "intrabar" } } } @@ -2497,7 +2593,7 @@ }, "module": "ml4t.backtest.execution.rebalancer", "qualname": "RebalanceConfig", - "signature": "(min_trade_value: 'float' = 0.0, min_weight_change: 'float' = 0.0, allow_fractional: 'bool | None' = None, round_lots: 'bool' = False, lot_size: 'int' = 100, allow_short: 'bool' = False, max_single_weight: 'float' = 1.0, max_gross_leverage: 'float | None' = None, cancel_before_rebalance: 'bool' = True, account_for_pending: 'bool' = True, rebalance_mode: 'RebalanceMode' = , schedule: 'RebalanceSchedule | None' = None, calendar: 'str | None' = None, timezone: 'str | None' = None, session_start_time: 'str | None' = None, data_frequency: 'DataFrequency | str | None' = None, timestamp_semantics: 'TimestampSemantics | str | None' = None) -> None" + "signature": "(min_trade_value: 'float' = 0.0, min_weight_change: 'float' = 0.0, allow_fractional: 'bool | None' = None, round_lots: 'bool' = False, lot_size: 'int' = 100, allow_short: 'bool' = False, max_single_weight: 'float' = 1.0, max_gross_leverage: 'float | None' = None, cancel_before_rebalance: 'bool' = True, account_for_pending: 'bool' = True, rebalance_mode: 'RebalanceMode' = , share_rounding: 'ShareRounding | str' = , schedule: 'RebalanceSchedule | None' = None, calendar: 'str | None' = None, timezone: 'str | None' = None, session_start_time: 'str | None' = None, data_frequency: 'DataFrequency | str | None' = None, timestamp_semantics: 'TimestampSemantics | str | None' = None) -> None" }, "ml4t.backtest.execution.rebalancer:TargetWeightExecutor": { "kind": "class", @@ -2569,7 +2665,7 @@ }, "module": "ml4t.backtest.execution.rebalancer", "qualname": "RebalanceConfig", - "signature": "(min_trade_value: 'float' = 0.0, min_weight_change: 'float' = 0.0, allow_fractional: 'bool | None' = None, round_lots: 'bool' = False, lot_size: 'int' = 100, allow_short: 'bool' = False, max_single_weight: 'float' = 1.0, max_gross_leverage: 'float | None' = None, cancel_before_rebalance: 'bool' = True, account_for_pending: 'bool' = True, rebalance_mode: 'RebalanceMode' = , schedule: 'RebalanceSchedule | None' = None, calendar: 'str | None' = None, timezone: 'str | None' = None, session_start_time: 'str | None' = None, data_frequency: 'DataFrequency | str | None' = None, timestamp_semantics: 'TimestampSemantics | str | None' = None) -> None" + "signature": "(min_trade_value: 'float' = 0.0, min_weight_change: 'float' = 0.0, allow_fractional: 'bool | None' = None, round_lots: 'bool' = False, lot_size: 'int' = 100, allow_short: 'bool' = False, max_single_weight: 'float' = 1.0, max_gross_leverage: 'float | None' = None, cancel_before_rebalance: 'bool' = True, account_for_pending: 'bool' = True, rebalance_mode: 'RebalanceMode' = , share_rounding: 'ShareRounding | str' = , schedule: 'RebalanceSchedule | None' = None, calendar: 'str | None' = None, timezone: 'str | None' = None, session_start_time: 'str | None' = None, data_frequency: 'DataFrequency | str | None' = None, timestamp_semantics: 'TimestampSemantics | str | None' = None) -> None" }, "ml4t.backtest.execution:SquareRootImpact": { "kind": "class", @@ -3618,7 +3714,7 @@ }, "module": "ml4t.backtest.broker", "qualname": "Broker", - "signature": "(initial_cash: 'float' = 100000.0, commission_model: 'CommissionModel | None' = None, slippage_model: 'SlippageModel | None' = None, stop_slippage_rate: 'float' = 0.0, execution_mode: 'ExecutionMode' = , execution_price: 'ExecutionPrice' = , mark_price: 'ExecutionPrice' = , stop_fill_mode: 'StopFillMode' = , stop_level_basis: 'StopLevelBasis' = , trail_hwm_source: 'WaterMarkSource' = , trail_include_entry_bar_extremes: 'bool' = False, initial_hwm_source: 'InitialHwmSource' = , trail_stop_timing: 'TrailStopTiming' = , allow_short_selling: 'bool' = False, allow_leverage: 'bool' = False, initial_margin: 'float' = 0.5, long_maintenance_margin: 'float' = 0.25, short_maintenance_margin: 'float' = 0.3, fixed_margin_schedule: 'dict[str, tuple[float, float]] | None' = None, margin_pct_schedule: 'dict[str, tuple[float, float]] | None' = None, short_cash_policy: 'ShortCashPolicy' = , execution_limits: 'ExecutionLimits | None' = None, market_impact_model: 'MarketImpactModel | None' = None, contract_specs: 'dict[str, ContractSpec] | None' = None, share_type: 'ShareType' = , fill_ordering: 'FillOrdering' = , entry_order_priority: 'EntryOrderPriority' = , next_bar_submission_precheck: 'bool' = False, next_bar_simple_cash_check: 'bool' = False, buying_power_reservation: 'bool' = False, next_bar_queue_shadow_validation: 'bool' = False, immediate_fill: 'bool' = False, reject_on_insufficient_cash: 'bool' = True, skip_cash_validation: 'bool' = False, cash_buffer_pct: 'float' = 0.0, partial_fills_allowed: 'bool' = False, rebalance_headroom_pct: 'float' = 1.0, missing_price_policy: 'MissingPricePolicy' = , late_asset_policy: 'LateAssetPolicy' = , late_asset_min_bars: 'int' = 1, settlement_delay: 'int' = 0, settlement_reduces_buying_power: 'bool' = True)" + "signature": "(initial_cash: 'float' = 100000.0, commission_model: 'CommissionModel | None' = None, slippage_model: 'SlippageModel | None' = None, stop_slippage_rate: 'float' = 0.0, execution_mode: 'ExecutionMode' = , execution_price: 'ExecutionPrice' = , mark_price: 'ExecutionPrice' = , stop_fill_mode: 'StopFillMode' = , stop_level_basis: 'StopLevelBasis' = , trail_hwm_source: 'WaterMarkSource' = , trail_include_entry_bar_extremes: 'bool' = False, initial_hwm_source: 'InitialHwmSource' = , trail_stop_timing: 'TrailStopTiming' = , allow_short_selling: 'bool' = False, allow_leverage: 'bool' = False, initial_margin: 'float' = 0.5, long_maintenance_margin: 'float' = 0.25, short_maintenance_margin: 'float' = 0.3, fixed_margin_schedule: 'dict[str, tuple[float, float]] | None' = None, margin_pct_schedule: 'dict[str, tuple[float, float]] | None' = None, short_cash_policy: 'ShortCashPolicy' = , lock_notional_update_mode: 'LockNotionalUpdateMode' = , execution_limits: 'ExecutionLimits | None' = None, market_impact_model: 'MarketImpactModel | None' = None, contract_specs: 'dict[str, ContractSpec] | None' = None, share_type: 'ShareType' = , fill_ordering: 'FillOrdering' = , entry_order_priority: 'EntryOrderPriority' = , next_bar_submission_precheck: 'bool' = False, next_bar_simple_cash_check: 'bool' = False, buying_power_reservation: 'bool' = False, next_bar_queue_shadow_validation: 'bool' = False, immediate_fill: 'bool' = False, reject_on_insufficient_cash: 'bool' = True, skip_cash_validation: 'bool' = False, cash_buffer_pct: 'float' = 0.0, partial_fills_allowed: 'bool' = False, rebalance_headroom_pct: 'float' = 1.0, missing_price_policy: 'MissingPricePolicy' = , late_asset_policy: 'LateAssetPolicy' = , late_asset_min_bars: 'int' = 1, settlement_delay: 'int' = 0, settlement_reduces_buying_power: 'bool' = True)" }, "ml4t.backtest:CommissionType": { "kind": "class", @@ -3900,7 +3996,7 @@ }, "module": "ml4t.backtest.execution.rebalancer", "qualname": "RebalanceConfig", - "signature": "(min_trade_value: 'float' = 0.0, min_weight_change: 'float' = 0.0, allow_fractional: 'bool | None' = None, round_lots: 'bool' = False, lot_size: 'int' = 100, allow_short: 'bool' = False, max_single_weight: 'float' = 1.0, max_gross_leverage: 'float | None' = None, cancel_before_rebalance: 'bool' = True, account_for_pending: 'bool' = True, rebalance_mode: 'RebalanceMode' = , schedule: 'RebalanceSchedule | None' = None, calendar: 'str | None' = None, timezone: 'str | None' = None, session_start_time: 'str | None' = None, data_frequency: 'DataFrequency | str | None' = None, timestamp_semantics: 'TimestampSemantics | str | None' = None) -> None" + "signature": "(min_trade_value: 'float' = 0.0, min_weight_change: 'float' = 0.0, allow_fractional: 'bool | None' = None, round_lots: 'bool' = False, lot_size: 'int' = 100, allow_short: 'bool' = False, max_single_weight: 'float' = 1.0, max_gross_leverage: 'float | None' = None, cancel_before_rebalance: 'bool' = True, account_for_pending: 'bool' = True, rebalance_mode: 'RebalanceMode' = , share_rounding: 'ShareRounding | str' = , schedule: 'RebalanceSchedule | None' = None, calendar: 'str | None' = None, timezone: 'str | None' = None, session_start_time: 'str | None' = None, data_frequency: 'DataFrequency | str | None' = None, timestamp_semantics: 'TimestampSemantics | str | None' = None) -> None" }, "ml4t.backtest:RebalanceSchedule": { "kind": "class", diff --git a/tests/contracts/test_backtrader_native_evidence.py b/tests/contracts/test_backtrader_native_evidence.py new file mode 100644 index 00000000..28c236a4 --- /dev/null +++ b/tests/contracts/test_backtrader_native_evidence.py @@ -0,0 +1,53 @@ +"""Contracts for retained framework-native Backtrader evidence.""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +_ROOT = Path(__file__).parents[2] +_ORACLE = _ROOT / "validation/native/backtrader_behavior.py" +_EVIDENCE = _ROOT / "validation/native/evidence/backtrader-1.9.78.123.json" + +EXPECTED_CHECKS = { + "cash_rejection_and_configured_leverage", + "cheat_on_close", + "commission_headroom", + "defaults", + "final_bar_market_order", + "gap_reversal_executes_close_leg_despite_margin", + "integer_target_percent", + "late_feed_start", + "losing_short_cover_submission_rejection", + "missing_bar_uses_last_value", + "next_bar_open_and_gap", + "short_cash", + "signal_price_stop_basis", + "submission_sequence", + "trade_record", + "trailing_stop_signal_close_and_lagged", +} + + +def test_retained_backtrader_native_evidence_is_complete_and_current() -> None: + payload = json.loads(_EVIDENCE.read_text(encoding="utf-8")) + + assert payload["schema_version"] == 1 + assert payload["framework"] == "backtrader" + assert payload["package"] == "backtrader" + assert payload["version"] == "1.9.78.123" + assert payload["artifact"] == "backtrader-1.9.78.123-py2.py3-none-any.whl" + assert payload["artifact_sha256"] == ( + "9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd" + ) + assert payload["oracle_sha256"] == hashlib.sha256(_ORACLE.read_bytes()).hexdigest() + assert payload["passed"] is True + assert {check["id"] for check in payload["checks"]} == EXPECTED_CHECKS + assert all(check["passed"] for check in payload["checks"]) + assert all(check["actual"] == check["expected"] for check in payload["checks"]) + for location in payload["source_locations"].values(): + assert location["artifact"] == payload["artifact"] + assert location["artifact_sha256"] == payload["artifact_sha256"] + assert location["path"].startswith("backtrader/") + assert location["source"].endswith("/backtrader/1.9.78.123/") diff --git a/tests/contracts/test_behavior_coverage.py b/tests/contracts/test_behavior_coverage.py new file mode 100644 index 00000000..6bfba3c1 --- /dev/null +++ b/tests/contracts/test_behavior_coverage.py @@ -0,0 +1,87 @@ +"""Contracts for the profile behavior coverage map.""" + +from __future__ import annotations + +import json +import sys +import tomllib +from pathlib import Path + +_ROOT = Path(__file__).parents[2] +_VALIDATION = _ROOT / "validation" +if str(_VALIDATION) not in sys.path: + sys.path.insert(0, str(_VALIDATION)) + +from scenarios.definitions import SCENARIOS # noqa: E402 + +from ml4t.backtest.profiles import get_profile_config # noqa: E402 + +_COVERAGE = _VALIDATION / "behavior_coverage.toml" +_NATIVE_EVIDENCE = { + "vectorbt": ( + _VALIDATION / "native/evidence/vectorbt_oss-1.1.0.json", + _VALIDATION / "native/evidence/vectorbt_pro-2026.6.27.json", + ), + "backtrader": (_VALIDATION / "native/evidence/backtrader-1.9.78.123.json",), + "zipline": (_VALIDATION / "native/evidence/zipline-3.1.1.json",), + "lean": (_VALIDATION / "native/evidence/lean-18001.json",), +} +_SCENARIO_FRAMEWORKS = { + "vectorbt": {"vectorbt_oss", "vectorbt_pro"}, + "backtrader": {"backtrader"}, + "zipline": {"zipline"}, +} + + +def _native_checks(path: Path) -> set[str]: + payload = json.loads(path.read_text(encoding="utf-8")) + assert payload["passed"] is True + checks = payload["checks"] + if isinstance(checks, list): + return {check["id"] for check in checks} + return set(checks) + + +def test_coverage_map_accounts_for_every_framework_profile_field() -> None: + payload = tomllib.loads(_COVERAGE.read_text(encoding="utf-8")) + assert payload["schema_version"] == 1 + assert set(payload["framework"]) == set(_NATIVE_EVIDENCE) + + for framework, entries in payload["framework"].items(): + expected_fields = { + f"{section}.{field}" + for section, values in get_profile_config(framework).items() + for field in values + } + covered_fields = [field for entry in entries for field in entry["fields"]] + assert len(covered_fields) == len(set(covered_fields)) + assert set(covered_fields) == expected_fields + + +def test_published_dimensions_have_native_and_cross_engine_evidence() -> None: + payload = tomllib.loads(_COVERAGE.read_text(encoding="utf-8")) + lean_cases = { + case["case"] + for case in json.loads( + (_VALIDATION / "lean/case_study_evidence.json").read_text(encoding="utf-8") + )["cases"] + } + + for framework, entries in payload["framework"].items(): + evidence_sets = [_native_checks(path) for path in _NATIVE_EVIDENCE[framework]] + for entry in entries: + assert entry["name"] + assert all(set(entry["native_checks"]) <= checks for checks in evidence_sets) + if entry["published"]: + assert entry["native_checks"] + assert entry["scenarios"] + else: + assert entry["reason"] + for scenario_id in entry["scenarios"]: + if scenario_id.startswith("lean-case:"): + assert scenario_id.removeprefix("lean-case:") in lean_cases + continue + assert scenario_id in SCENARIOS + assert _SCENARIO_FRAMEWORKS[framework] <= set( + SCENARIOS[scenario_id].supported_frameworks + ) diff --git a/tests/contracts/test_correctness_evidence.py b/tests/contracts/test_correctness_evidence.py new file mode 100644 index 00000000..4b100656 --- /dev/null +++ b/tests/contracts/test_correctness_evidence.py @@ -0,0 +1,261 @@ +"""Contracts for complete, current, atomically accepted correctness evidence.""" + +from __future__ import annotations + +import copy +import json +import subprocess +import sys +from pathlib import Path +from typing import Any, cast + +import pandas as pd +import pytest + +_VALIDATION_DIR = Path(__file__).parents[2] / "validation" +if str(_VALIDATION_DIR) not in sys.path: + sys.path.insert(0, str(_VALIDATION_DIR)) + +from common.capabilities import FRAMEWORK_CAPABILITIES, ML4T_CAPABILITIES # noqa: E402 +from common.comparator import compare_results # noqa: E402 +from common.correctness_evidence import ( # noqa: E402 + build_report, + correctness_report_failures, + promote_candidate, +) +from common.framework_registry import load_framework_manifest # noqa: E402 +from common.provenance import ( # noqa: E402 + _tree_digest, + generate_inputs, + input_digest, + static_digests, +) +from common.types import FrameworkResult, ValidationRecord, ValidationStatus # noqa: E402 +from scenarios.definitions import SCENARIOS # noqa: E402 + + +def _complete_record(framework: str, scenario_id: str) -> ValidationRecord: + manifest = load_framework_manifest() + target = manifest.targets[framework] + scenario = SCENARIOS[scenario_id] + prices, entries, exits = generate_inputs(scenario, framework) + extra = {"total_commission": 0.0, "exit_price": 0.0} + expected = FrameworkResult( + target.display_name, + 100_000.0, + 0.0, + 0, + capabilities=FRAMEWORK_CAPABILITIES[framework], + extra=extra, + ) + actual = FrameworkResult( + "ml4t.backtest", + 100_000.0, + 0.0, + 0, + capabilities=ML4T_CAPABILITIES, + extra=extra, + ) + comparison = compare_results(scenario, expected, actual) + provenance = { + "framework_target": { + "version": target.version, + "actual_version": target.version, + "immutable_id": target.immutable_id, + }, + "ml4t": {"commit": "a" * 40, "dirty": False}, + "python": {"version": "3.12.11", "implementation": "cpython"}, + "adapter": { + "module": f"frameworks.{framework}", + "path": f"validation/frameworks/{framework}.py", + }, + "digests": static_digests(scenario, framework), + "input_digest": input_digest(prices, entries, exits), + "capabilities": { + "framework": FRAMEWORK_CAPABILITIES[framework], + "ml4t": ML4T_CAPABILITIES, + }, + "record_counts": { + "bars": len(prices), + "entry_signals": int(entries.sum()), + "exit_signals": int(exits.sum()) if exits is not None else 0, + "framework_intents": int(entries.sum()) + + (int(exits.sum()) if exits is not None else 0), + "ml4t_intents": int(entries.sum()) + (int(exits.sum()) if exits is not None else 0), + "framework_orders": None, + "ml4t_orders": None, + "framework_fills": 0, + "ml4t_fills": 0, + "framework_closed_trades": 0, + "ml4t_closed_trades": 0, + }, + } + return ValidationRecord( + framework=framework, + scenario_id=scenario_id, + scenario_name=scenario.name, + status=ValidationStatus.PASS, + required=True, + duration_seconds=0.01, + provenance=provenance, + framework_result=expected, + ml4t_result=actual, + comparison=comparison, + ) + + +def _full_report() -> dict[str, object]: + manifest = load_framework_manifest() + records: list[ValidationRecord] = [] + for framework in manifest.scenario_framework_ids: + for scenario_id, scenario in SCENARIOS.items(): + if framework in scenario.supported_frameworks: + records.append(_complete_record(framework, scenario_id)) + else: + records.append( + ValidationRecord( + framework=framework, + scenario_id=scenario_id, + scenario_name=scenario.name, + status=ValidationStatus.UNSUPPORTED, + required=False, + detail="Scenario explicitly excludes this framework", + duration_seconds=0.001, + ) + ) + return build_report(records) + + +def _first_required_record(report: dict[str, object]) -> dict[str, Any]: + records = cast(list[dict[str, Any]], report["records"]) + return next(record for record in records if record["required"]) + + +def test_complete_record_retains_outputs_checks_runtime_and_provenance() -> None: + payload = _complete_record("backtrader", "01").to_dict() + + assert payload["duration_seconds"] > 0 + assert payload["framework_result"]["final_value"] == 100_000.0 + assert payload["ml4t_result"]["final_value"] == 100_000.0 + assert payload["provenance"]["input_digest"] + assert payload["provenance"]["digests"]["adapter"] + checks = payload["comparison"]["checks"] + assert checks + assert {check["canonical_quantum"] for check in checks} == {"1", "0.00000001"} + assert all( + {"name", "canonical_quantum", "expected", "actual", "difference", "message"} <= check.keys() + for check in checks + ) + + +def test_input_digest_uses_values_not_pandas_index_metadata() -> None: + scenario = SCENARIOS["01"] + prices, entries, exits = generate_inputs(scenario, "backtrader") + assert exits is not None + expected = input_digest(prices, entries, exits) + + same_values = prices.copy() + same_values.index = pd.DatetimeIndex(same_values.index.to_numpy()) + assert same_values.index.freq is None + assert input_digest(same_values, entries.copy(), exits.copy()) == expected + + changed_values = prices.copy() + changed_values.iloc[0, 0] += 0.01 + assert input_digest(changed_values, entries, exits) != expected + + +def test_complete_current_matrix_is_acceptable() -> None: + assert correctness_report_failures(_full_report()) == [] + + +@pytest.mark.parametrize( + ("mutation", "expected_failure"), + [ + ("version", "framework target identity"), + ("input", "generated-input digest"), + ("adapter", "adapter digest"), + ("profile", "profile digest"), + ("comparator", "comparator digest"), + ("capability", "capability declaration differs"), + ("expected", "comparison checks differ"), + ("actual", "comparison checks differ"), + ("missing", "comparison evidence must be complete"), + ], +) +def test_evidence_mutations_fail_closed(mutation: str, expected_failure: str) -> None: + report = copy.deepcopy(_full_report()) + record = _first_required_record(report) + if mutation == "version": + record["provenance"]["framework_target"]["actual_version"] = "0.0.0" + elif mutation == "input": + record["provenance"]["input_digest"] = "0" * 64 + elif mutation in {"adapter", "profile", "comparator"}: + record["provenance"]["digests"][mutation] = "0" * 64 + elif mutation == "capability": + record["provenance"]["capabilities"]["framework"]["fills"] = "unavailable" + elif mutation in {"expected", "actual"}: + record["comparison"]["checks"][0][mutation] = 12345 + else: + record.pop("comparison") + + failures = correctness_report_failures(report) + + assert any(expected_failure in failure for failure in failures) + + +def test_source_commit_change_without_behavior_change_is_not_stale() -> None: + report = _full_report() + for record in cast(list[dict[str, Any]], report["records"]): + if record["provenance"] is not None: + record["provenance"]["ml4t"]["commit"] = "b" * 40 + + assert correctness_report_failures(report) == [] + + +def test_tree_digest_excludes_untracked_generated_python(tmp_path: Path) -> None: + source = tmp_path / "src" / "package" + source.mkdir(parents=True) + (source / "engine.py").write_text("VALUE = 1\n", encoding="utf-8") + subprocess.run(["git", "init", "-q"], cwd=tmp_path, check=True) + subprocess.run(["git", "add", "src/package/engine.py"], cwd=tmp_path, check=True) + + _tree_digest.cache_clear() + expected = _tree_digest(source) + (source / "_version.py").write_text("VERSION = 'generated'\n", encoding="utf-8") + _tree_digest.cache_clear() + + assert _tree_digest(source) == expected + + +def test_dirty_source_is_not_acceptable() -> None: + report = _full_report() + _first_required_record(report)["provenance"]["ml4t"]["dirty"] = True + + assert any("dirty ML4T tree" in failure for failure in correctness_report_failures(report)) + + +def test_failed_candidate_does_not_replace_accepted_evidence(tmp_path: Path) -> None: + report = _full_report() + report["release_gate_passed"] = False + candidate = tmp_path / "candidate.json" + accepted = tmp_path / "accepted.json" + candidate.write_text(json.dumps(report), encoding="utf-8") + accepted.write_bytes(b"accepted-before\n") + + failures = promote_candidate(candidate, accepted) + + assert failures + assert accepted.read_bytes() == b"accepted-before\n" + assert candidate.is_file() + + +def test_valid_candidate_atomically_replaces_accepted_evidence(tmp_path: Path) -> None: + report = _full_report() + candidate = tmp_path / "candidate.json" + accepted = tmp_path / "accepted.json" + candidate.write_text(json.dumps(report, sort_keys=True), encoding="utf-8") + accepted.write_bytes(b"accepted-before\n") + + assert promote_candidate(candidate, accepted) == [] + assert accepted.read_bytes() == candidate.read_bytes() + assert candidate.is_file() diff --git a/tests/contracts/test_cross_framework_performance.py b/tests/contracts/test_cross_framework_performance.py new file mode 100644 index 00000000..2851aaeb --- /dev/null +++ b/tests/contracts/test_cross_framework_performance.py @@ -0,0 +1,163 @@ +"""Contracts for repeated cross-framework performance evidence.""" + +from __future__ import annotations + +import copy +import json +from pathlib import Path + +import pytest + +from validation import cross_framework_performance as performance + + +def _sample(runner: performance.RunnerSpec, index: int = 0) -> dict: + target = performance.load_framework_manifest().targets[runner.framework] + target_metadata = {**target.evidence_metadata(), "actual_version": target.version} + if runner.framework == "vectorbt_pro": + target_metadata.update( + { + "actual_commit": target.source_commit, + "actual_immutable_id": target.immutable_id, + } + ) + input_sha256 = performance.scale._expected_input_digest(performance.WORKLOAD) + output = { + "order_intents": {"count": 1, "sha256": "a" * 64}, + "fills": {"count": 1, "sha256": "b" * 64}, + "trades": {"count": 1, "sha256": "c" * 64}, + "trade_count": 1, + "total_pnl": 1.0, + "final_value": 1_000_001.0, + "terminal_state_sha256": "d" * 64, + } + return { + "runner_id": runner.runner_id, + "framework": runner.framework, + "side": runner.side, + "profile": runner.profile, + "target": target_metadata, + "python": {"implementation": "cpython", "version": "3.12.11"}, + "ml4t": {"commit": "a" * 40, "dirty": False}, + "input": {"raw_sha256": input_sha256, "effective_sha256": input_sha256}, + "stages_seconds": { + "input_generation": 0.01, + "framework_call": 0.1 + index / 1_000, + "adapter_reported_engine": 0.08 + index / 1_000, + "output_validation": 0.01, + "worker_total": 0.12 + index / 1_000, + }, + "process_peak_rss_mb": 100.0 + index, + "worker_self_peak_rss_mb": 90.0 + index, + "process_wall_seconds": 0.2 + index / 100, + "lean_container_observed": True, + "thread_environment": performance.THREAD_ENVIRONMENT, + "output": output, + "output_sha256": performance._json_digest(output), + "captured_log_tail": "", + } + + +def test_bootstrap_interval_is_reproducible_and_requires_ten_samples() -> None: + values = [float(value) for value in range(10)] + + first = performance.bootstrap_median_interval(values, seed=7) + second = performance.bootstrap_median_interval(values, seed=7) + + assert first == second + assert first[0] <= 4.5 <= first[1] + with pytest.raises(ValueError, match="At least 10"): + performance.bootstrap_median_interval(values[:9], seed=7) + + +def test_instrumentation_calibration_measures_child_wall_time_and_rss() -> None: + result = performance.run_calibration_process() + + assert result["allocated_bytes"] == 32 * 1024 * 1024 + assert result["worker_seconds"] >= 0.02 + assert result["process_wall_seconds"] >= result["worker_seconds"] + assert result["process_peak_rss_mb"] >= 20 + + +def test_protocol_identity_changes_with_setup_or_cache_boundary() -> None: + original = performance._json_digest(performance.MEASUREMENT_PROTOCOL) + changed = copy.deepcopy(performance.MEASUREMENT_PROTOCOL) + changed["cache_policy"] = "different" + + assert performance._json_digest(changed) != original + + +def test_complete_report_recomputes_raw_sample_summaries( + monkeypatch: pytest.MonkeyPatch, +) -> None: + calibration = { + "allocated_bytes": 32 * 1024 * 1024, + "worker_seconds": 0.025, + "process_wall_seconds": 0.03, + "process_peak_rss_mb": 40.0, + } + monkeypatch.setattr(performance, "run_calibration_process", lambda: calibration) + calls = {runner.runner_id: 0 for runner in performance.RUNNERS} + + def run(runner: performance.RunnerSpec) -> dict: + index = calls[runner.runner_id] + calls[runner.runner_id] += 1 + return _sample(runner, max(index - 1, 0)) + + monkeypatch.setattr(performance, "_run_process", run) + + report = performance.collect_evidence(10) + + assert performance.report_failures(report) == [] + assert report["controlled"]["passed"] is True + assert report["idiomatic"]["equivalence_claim"] is False + assert all(len(runner["samples"]) == 10 for runner in report["runners"].values()) + + +def test_output_change_or_missing_runner_fails_closed(monkeypatch: pytest.MonkeyPatch) -> None: + calibration = { + "allocated_bytes": 32 * 1024 * 1024, + "worker_seconds": 0.025, + "process_wall_seconds": 0.03, + "process_peak_rss_mb": 40.0, + } + monkeypatch.setattr(performance, "run_calibration_process", lambda: calibration) + monkeypatch.setattr(performance, "_run_process", lambda runner: _sample(runner)) + report = performance.collect_evidence(10) + + changed = copy.deepcopy(report) + changed["runners"]["backtrader:ml4t"]["samples"][0]["output_sha256"] = "0" * 64 + assert performance.report_failures(changed) + + missing = copy.deepcopy(report) + del missing["runners"]["zipline:external"] + assert performance.report_failures(missing) + + +def test_worker_uses_profile_specific_ml4t_side(monkeypatch: pytest.MonkeyPatch) -> None: + runner = performance.RUNNERS_BY_ID["backtrader:ml4t"] + captured: dict[str, object] = {} + + def benchmark(*_args, **kwargs): + captured.update(kwargs) + return object() + + monkeypatch.setattr(performance.suite, "benchmark_ml4t", benchmark) + + result = performance._run_ml4t(runner, object(), {}, object(), object()) + + assert result is not None + assert captured == { + "execution_mode": "next_bar", + "profile_override": "backtrader_strict", + } + + +def test_accepted_write_is_atomic(tmp_path: Path) -> None: + target = tmp_path / "accepted.json" + target.write_text("old\n", encoding="utf-8") + + performance._write_json_atomic(target, {"value": 1}) + + assert json.loads(target.read_text(encoding="utf-8")) == {"value": 1} + assert list(tmp_path.iterdir()) == [target] diff --git a/tests/contracts/test_exact_validation_comparator.py b/tests/contracts/test_exact_validation_comparator.py index af8853c7..e23683b1 100644 --- a/tests/contracts/test_exact_validation_comparator.py +++ b/tests/contracts/test_exact_validation_comparator.py @@ -17,6 +17,8 @@ sys.path.insert(0, str(_VALIDATION_DIR)) from common.comparator import compare_results # noqa: E402 +from common.ml4t_runner import run_ml4t # noqa: E402 +from common.provenance import generate_inputs # noqa: E402 from common.types import FrameworkResult # noqa: E402 from scenarios.definitions import SCENARIOS # noqa: E402 @@ -34,13 +36,29 @@ def _load_benchmark_suite(): return module -def _trade() -> dict[str, object]: +def _trade(*, offset: int = 0) -> dict[str, object]: + entry_time = pd.Timestamp("2024-01-02") + pd.Timedelta(days=offset) return { + "entry_time": entry_time, + "exit_time": entry_time + pd.Timedelta(days=1), + "asset": "AAPL", "entry_price": 100.0, "exit_price": 101.0, "pnl": 10.0, "size": 10.0, "direction": "Long", + "commission": 0.0, + } + + +def _fill(*, offset: int = 0) -> dict[str, object]: + return { + "timestamp": pd.Timestamp("2024-01-02") + pd.Timedelta(days=offset), + "asset": "AAPL", + "side": "buy" if offset == 0 else "sell", + "quantity": 10.0, + "price": 100.0 + offset, + "commission": 0.0, } @@ -63,10 +81,24 @@ def test_zipline_nine_dollar_difference_fails_despite_diagnostic_tolerance() -> assert "diagnostic_limit=$10.0" in checks["total_pnl"].message -def test_scenario_trade_fields_require_exact_equality() -> None: +@pytest.mark.parametrize( + ("field", "changed"), + [ + ("entry_time", pd.Timestamp("2024-01-03")), + ("exit_time", pd.Timestamp("2024-01-04")), + ("asset", "MSFT"), + ("direction", "short"), + ("size", 10.00000001), + ("entry_price", 100.00000001), + ("exit_price", 101.00000001), + ("pnl", 10.00000001), + ("commission", 0.00000001), + ], +) +def test_scenario_trade_fields_require_exact_equality(field: str, changed: object) -> None: expected = FrameworkResult("Backtrader", 100_010.0, 10.0, 1, trades=[_trade()]) changed_trade = _trade() - changed_trade["exit_price"] = 101.0000001 + changed_trade[field] = changed actual = FrameworkResult( "ml4t.backtest", 100_010.0, @@ -80,7 +112,74 @@ def test_scenario_trade_fields_require_exact_equality() -> None: assert comparison.passed is False trade_check = next(check for check in comparison.checks if check.name == "trade_level_match") assert trade_check.passed is False - assert "exit_price" in trade_check.message + assert field in trade_check.message + + +@pytest.mark.parametrize( + ("field", "changed"), + [ + ("timestamp", pd.Timestamp("2024-01-03")), + ("asset", "MSFT"), + ("side", "sell"), + ("quantity", 10.00000001), + ("price", 100.00000001), + ("commission", 0.00000001), + ], +) +def test_scenario_fill_fields_require_exact_equality(field: str, changed: object) -> None: + expected = FrameworkResult("Backtrader", 100_010.0, 10.0, 1, trades=[_trade()], fills=[_fill()]) + changed_fill = _fill() + changed_fill[field] = changed + actual = FrameworkResult( + "ml4t.backtest", + 100_010.0, + 10.0, + 1, + trades=[_trade()], + fills=[changed_fill], + ) + + comparison = compare_results(SCENARIOS["01"], expected, actual) + fill_check = next(check for check in comparison.checks if check.name == "fill_level_match") + + assert comparison.passed is False + assert fill_check.passed is False + assert field in fill_check.message + + +@pytest.mark.parametrize("mutation", ["missing", "duplicate", "ordering", "malformed"]) +def test_scenario_record_shape_negative_controls(mutation: str) -> None: + expected_trades = [_trade(offset=0), _trade(offset=2)] + actual_trades = copy.deepcopy(expected_trades) + if mutation == "missing": + actual_trades[0].pop("asset") + elif mutation == "duplicate": + actual_trades.append(copy.deepcopy(actual_trades[-1])) + elif mutation == "ordering": + actual_trades.reverse() + else: + actual_trades[0]["pnl"] = float("nan") + expected = FrameworkResult("Backtrader", 100_020.0, 20.0, 2, trades=expected_trades) + actual = FrameworkResult("ml4t.backtest", 100_020.0, 20.0, 2, trades=actual_trades) + + comparison = compare_results(SCENARIOS["01"], expected, actual) + trade_check = next(check for check in comparison.checks if check.name == "trade_level_match") + + assert comparison.passed is False + assert trade_check.passed is False + + +def test_wrong_execution_profile_remains_a_detected_negative_control() -> None: + scenario = SCENARIOS["01"] + prices, entries, exits = generate_inputs(scenario, "backtrader") + reference = run_ml4t(scenario, prices, entries, exits, framework="backtrader") + reference.framework = "Backtrader reference" + wrong_profile = run_ml4t(scenario, prices, entries, exits, framework="vectorbt_oss") + + comparison = compare_results(scenario, reference, wrong_profile) + + assert comparison.passed is False + assert any(not check.passed for check in comparison.checks) def _benchmark_result(suite, framework: str): @@ -191,6 +290,63 @@ def test_fixed_point_zero_fill_and_trade_records_are_omitted() -> None: assert suite.canonical_trade_records(dust_trade) == [] +def test_daily_records_normalize_framework_session_timestamp_and_asset_wrapper() -> None: + suite = _load_benchmark_suite() + frame = pd.DataFrame( + [ + { + "dt": pd.Timestamp("2024-01-02 21:00:00", tz="UTC"), + "asset": "Equity(1 [AAPL])", + "amount": 10.0, + "price": 100.0, + "commission": 0.0, + } + ] + ) + + records = suite.canonical_fill_records(frame, timestamp_domain="session_date") + + assert records == [ + { + "timestamp": "2024-01-02", + "asset": "AAPL", + "side": "buy", + "quantity": 10.0, + "price": 100.0, + "commission": 0.0, + } + ] + + +def test_target_trace_excludes_unchanged_targets() -> None: + suite = _load_benchmark_suite() + index = pd.date_range("2024-01-02", periods=3, freq="D") + targets = pd.DataFrame({"AAPL": [10.0, 10.0, 0.0], "MSFT": [0.0, 5.0, 5.0]}, index=index) + + trace = suite.build_canonical_target_trace(targets) + + assert trace[["timestamp", "asset", "prev_target", "target"]].to_dict("records") == [ + { + "timestamp": index[0], + "asset": "AAPL", + "prev_target": 0.0, + "target": 10.0, + }, + { + "timestamp": index[1], + "asset": "MSFT", + "prev_target": 0.0, + "target": 5.0, + }, + { + "timestamp": index[2], + "asset": "AAPL", + "prev_target": 10.0, + "target": 0.0, + }, + ] + + def test_terminal_value_uses_exact_microdollar_representation() -> None: suite = _load_benchmark_suite() expected = _benchmark_result(suite, "Reference") diff --git a/tests/contracts/test_framework_environment_builder.py b/tests/contracts/test_framework_environment_builder.py new file mode 100644 index 00000000..0063378b --- /dev/null +++ b/tests/contracts/test_framework_environment_builder.py @@ -0,0 +1,174 @@ +"""Contracts for locked framework comparison environments.""" + +from __future__ import annotations + +import json +import subprocess +import sys +from pathlib import Path + +import pytest + +_PROJECT_ROOT = Path(__file__).parents[2] +_VALIDATION_DIR = _PROJECT_ROOT / "validation" +if str(_VALIDATION_DIR) not in sys.path: + sys.path.insert(0, str(_VALIDATION_DIR)) + +import build_framework_env # noqa: E402 +from common.framework_registry import FrameworkTarget, load_framework_manifest # noqa: E402 + + +@pytest.fixture +def targets() -> dict[str, FrameworkTarget]: + return load_framework_manifest().targets + + +def test_all_environment_definitions_match_frozen_targets( + targets: dict[str, FrameworkTarget], +) -> None: + for framework in build_framework_env.BUILDABLE_FRAMEWORKS: + assert build_framework_env.definition_failures(framework, targets[framework]) == [] + + +def test_public_build_uses_locked_isolated_environment( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, + targets: dict[str, FrameworkTarget], +) -> None: + calls: list[tuple[list[str], dict[str, str]]] = [] + + def run(command: list[str], **kwargs): + calls.append((command, kwargs["env"])) + return subprocess.CompletedProcess(command, 0) + + monkeypatch.setattr(build_framework_env.subprocess, "run", run) + + def verify(framework: str, _target: FrameworkTarget, *, root: Path): + assert root == tmp_path + return {"framework": framework} + + monkeypatch.setattr(build_framework_env, "verify_environment", verify) + + result = build_framework_env.build_environment( + "backtrader", targets["backtrader"], root=tmp_path + ) + + assert result == {"framework": "backtrader"} + command, environment = calls[0] + assert command[-2:] == ["--locked", "--no-dev"] + assert environment["UV_PROJECT_ENVIRONMENT"] == str(tmp_path / ".venv-backtrader") + + +def test_definition_rejects_wrong_public_version( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, + targets: dict[str, FrameworkTarget], +) -> None: + project = tmp_path / "backtrader" + project.mkdir() + (project / "uv.lock").write_text(targets["backtrader"].immutable_id, encoding="utf-8") + (project / "pyproject.toml").write_text( + '[project]\ndependencies = ["backtrader==1.9.78.122"]\n', encoding="utf-8" + ) + monkeypatch.setattr(build_framework_env, "ENVIRONMENTS_DIR", tmp_path) + + failures = build_framework_env.definition_failures("backtrader", targets["backtrader"]) + + assert any("backtrader==1.9.78.123" in failure for failure in failures) + + +def test_definition_rejects_wrong_private_commit( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, + targets: dict[str, FrameworkTarget], +) -> None: + project = tmp_path / "vectorbt_pro" + project.mkdir() + (project / "uv.lock").write_text("wrong-commit", encoding="utf-8") + (project / "pyproject.toml").write_text( + '[project]\ndependencies = ["vectorbtpro @ git+ssh://example.invalid/repo@wrong"]\n', + encoding="utf-8", + ) + monkeypatch.setattr(build_framework_env, "ENVIRONMENTS_DIR", tmp_path) + + failures = build_framework_env.definition_failures("vectorbt_pro", targets["vectorbt_pro"]) + + assert "VectorBT Pro environment does not pin the manifest commit" in failures + assert any("artifact identity" in failure for failure in failures) + + +def test_private_build_reports_missing_licensed_access( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, + targets: dict[str, FrameworkTarget], +) -> None: + monkeypatch.setattr(build_framework_env, "definition_failures", lambda *_: []) + monkeypatch.setattr( + build_framework_env.subprocess, + "run", + lambda *args, **_kwargs: (_ for _ in ()).throw(subprocess.CalledProcessError(1, args[0])), + ) + + with pytest.raises(RuntimeError, match="Authorized SSH access"): + build_framework_env.build_environment( + "vectorbt_pro", targets["vectorbt_pro"], root=tmp_path + ) + + +def test_lean_verification_separates_cli_and_engine_provenance( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, + targets: dict[str, FrameworkTarget], +) -> None: + target = targets["lean"] + interpreter = tmp_path / ".venv-lean" / "bin" / "python" + interpreter.parent.mkdir(parents=True) + interpreter.touch() + monkeypatch.setattr(build_framework_env, "definition_failures", lambda *_: []) + monkeypatch.setattr( + build_framework_env, + "_probe", + lambda *_: { + "version": target.cli_version, + "ml4t_path": str(_PROJECT_ROOT / "src/ml4t/backtest/__init__.py"), + "python": "3.12.11", + }, + ) + commands: list[list[str]] = [] + + def run(command: list[str], **_kwargs): + commands.append(command) + return subprocess.CompletedProcess(command, 0, "", "") + + monkeypatch.setattr(build_framework_env.subprocess, "run", run) + + evidence = build_framework_env.verify_environment("lean", target, root=tmp_path) + + assert evidence["data_preparation"]["cli_version"] == target.cli_version + assert evidence["engine_execution"]["image_digest"] == target.immutable_id + assert commands == [["docker", "buildx", "imagetools", "inspect", target.artifact]] + + +def test_private_environment_rejects_wrong_installed_commit( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, + targets: dict[str, FrameworkTarget], +) -> None: + target = targets["vectorbt_pro"] + interpreter = tmp_path / ".venv-vectorbt-pro" / "bin" / "python" + interpreter.parent.mkdir(parents=True) + interpreter.touch() + monkeypatch.setattr(build_framework_env, "definition_failures", lambda *_: []) + monkeypatch.setattr( + build_framework_env, + "_probe", + lambda *_: { + "version": target.version, + "direct_url": json.dumps({"vcs_info": {"commit_id": "wrong"}}), + "ml4t_path": str(_PROJECT_ROOT / "src/ml4t/backtest/__init__.py"), + "python": "3.12.11", + }, + ) + + with pytest.raises(ValueError, match="commit differs"): + build_framework_env.verify_environment("vectorbt_pro", target, root=tmp_path) diff --git a/tests/contracts/test_framework_target_manifest.py b/tests/contracts/test_framework_target_manifest.py new file mode 100644 index 00000000..5fabf58b --- /dev/null +++ b/tests/contracts/test_framework_target_manifest.py @@ -0,0 +1,204 @@ +"""Contracts for frozen comparison targets and the comparison-claim inventory.""" + +from __future__ import annotations + +import sys +from pathlib import Path + +import pytest + +_PROJECT_ROOT = Path(__file__).parents[2] +_VALIDATION_DIR = _PROJECT_ROOT / "validation" +if str(_VALIDATION_DIR) not in sys.path: + sys.path.insert(0, str(_VALIDATION_DIR)) + +import run_all_benchmarks # noqa: E402 +from common.framework_registry import ( # noqa: E402 + ManifestError, + load_claim_inventory, + load_framework_manifest, +) + + +def test_current_framework_targets_are_exact_and_immutable() -> None: + manifest = load_framework_manifest() + + assert manifest.freeze_date == "2026-08-13" + assert set(manifest.targets) == { + "backtrader", + "lean", + "vectorbt_oss", + "vectorbt_pro", + "zipline", + } + assert {key: target.version for key, target in manifest.targets.items()} == { + "vectorbt_pro": "2026.6.27", + "vectorbt_oss": "1.1.0", + "backtrader": "1.9.78.123", + "zipline": "3.1.1", + "lean": "18001", + } + assert manifest.scenario_framework_ids == ( + "vectorbt_pro", + "vectorbt_oss", + "backtrader", + "zipline", + ) + for target in manifest.targets.values(): + assert not any(operator in target.version for operator in ("<", ">", "=", "*", "~")) + assert target.immutable_id.startswith(("git:", "sha256:")) + assert target.profile + assert target.python + assert target.license + assert target.access in {"public", "licensed"} + + +def test_scenario_targets_define_reproducible_interpreters() -> None: + manifest = load_framework_manifest() + + for framework_id in manifest.scenario_framework_ids: + target = manifest.targets[framework_id] + assert target.environment + assert target.python_env_var.startswith("ML4T_") + assert target.required_scenarios + target.unsupported_scenarios == 17 + + +def test_benchmark_runner_uses_frozen_target_environments() -> None: + manifest = load_framework_manifest() + + assert set(run_all_benchmarks.FRAMEWORKS) == {"ml4t", *manifest.targets} + for framework_id, target in manifest.targets.items(): + assert run_all_benchmarks.FRAMEWORKS[framework_id]["venv"] == target.environment + + +@pytest.mark.parametrize( + ("replacement", "message"), + [ + ('version = "1.1.0"', "missing required field 'immutable_id'"), + ('version = ">=1.1.0"\nimmutable_id = "git:abc"', "must be an exact version"), + ], +) +def test_invalid_framework_targets_are_rejected( + tmp_path: Path, + replacement: str, + message: str, +) -> None: + manifest = tmp_path / "targets.toml" + manifest.write_text( + """ +[metadata] +schema_version = 1 +freeze_date = "2026-08-13" +scenario_frameworks = ["example"] + +[framework.example] +display_name = "Example" +package = "example" +profile = "default" +python = ">=3.11" +license = "MIT" +access = "public" +source = "https://example.com" +environment = ".venv-example" +python_env_var = "ML4T_EXAMPLE_PYTHON" +scenario_matrix = true +required_scenarios = 1 +unsupported_scenarios = 0 +""" + + replacement + + "\n", + encoding="utf-8", + ) + + with pytest.raises(ManifestError, match=message): + load_framework_manifest(manifest) + + +def test_duplicate_framework_tables_are_rejected(tmp_path: Path) -> None: + manifest = tmp_path / "targets.toml" + manifest.write_text( + """ +[metadata] +schema_version = 1 +freeze_date = "2026-08-13" + +[framework.example] +display_name = "Example" +package = "example" +version = "1.0" +profile = "default" +python = ">=3.11" +license = "MIT" +access = "public" +source = "https://example.com" +immutable_id = "git:abc" +scenario_matrix = false +required_scenarios = 0 +unsupported_scenarios = 0 + +[framework.example] +version = "2.0" +""", + encoding="utf-8", + ) + + with pytest.raises(ManifestError, match="Invalid TOML"): + load_framework_manifest(manifest) + + +def test_claim_inventory_accounts_for_all_repositories_and_known_targets() -> None: + manifest = load_framework_manifest() + inventory = load_claim_inventory(manifest=manifest) + + assert inventory.audit_date == manifest.freeze_date + assert {claim.repository for claim in inventory.claims} == { + "ml4t/backtest", + "ml4t/public", + "ml4t/content-marketing", + } + assert {claim.claim_type for claim in inventory.claims} == { + "behavioral", + "correctness", + "performance", + "qualitative", + } + assert inventory.unresolved + assert all(item.issue.startswith("ml4t/backtest-dev#") for item in inventory.unresolved) + local_paths = { + path + for claim in inventory.claims + if claim.repository == "ml4t/backtest" + for path in claim.paths + } + assert local_paths + assert all((_PROJECT_ROOT / path).is_file() for path in local_paths) + + +def test_claim_inventory_rejects_unknown_framework(tmp_path: Path) -> None: + inventory = tmp_path / "claims.toml" + inventory.write_text( + """ +[metadata] +schema_version = 1 +audit_date = "2026-08-13" + +[[claim]] +id = "unknown-target" +repository = "ml4t/backtest" +paths = ["README.md"] +type = "correctness" +frameworks = ["not-a-framework"] +required_evidence = ["canonical_trade_log"] +status = "unresolved" +issue = "ml4t/backtest-dev#9" + +[[unresolved]] +id = "placeholder" +finding = "Placeholder finding." +issue = "ml4t/backtest-dev#9" +""", + encoding="utf-8", + ) + + with pytest.raises(ManifestError, match="unknown framework"): + load_claim_inventory(inventory) diff --git a/tests/contracts/test_large_scale_evidence.py b/tests/contracts/test_large_scale_evidence.py new file mode 100644 index 00000000..91afc7f7 --- /dev/null +++ b/tests/contracts/test_large_scale_evidence.py @@ -0,0 +1,294 @@ +"""Contracts for reconstructable, capability-qualified large-scale evidence.""" + +from __future__ import annotations + +import copy +import importlib.util +import json +import subprocess +import sys +from pathlib import Path + +import pandas as pd +import pytest + + +def _load_module(): + path = Path(__file__).parents[2] / "validation" / "large_scale_evidence.py" + spec = importlib.util.spec_from_file_location("ml4t_large_scale_evidence", path) + assert spec is not None + assert spec.loader is not None + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +def _small_workload(module): + return module.ScaleWorkload( + name="contract_scale", + seed=7, + bars=20, + assets=3, + top_n=1, + bottom_n=1, + end_session="2024-12-31", + ) + + +def _complete_report(module, monkeypatch: pytest.MonkeyPatch): + workload = _small_workload(module) + monkeypatch.setattr(module, "WORKLOAD", workload) + module._expected_input_digest.cache_clear() + config = workload.benchmark_config() + prices, signals, dates = module.suite.generate_benchmark_data(config, seed=workload.seed) + digest = module.input_digest(prices, signals, dates) + records = [] + manifest = module.load_framework_manifest() + surface_names = ("order_intents", "fills", "trades", "terminal_state") + scalar_names = ("trade_count", "total_pnl", "final_value") + for framework in module.FRAMEWORKS: + target = manifest.targets[framework] + checks = [ + { + "name": name, + "passed": True, + "expected_sha256": "a" * 64, + "actual_sha256": "a" * 64, + } + for name in surface_names + ] + checks.extend( + { + "name": name, + "passed": True, + "canonical_expected": 1.0, + "canonical_actual": 1.0, + } + for name in scalar_names + ) + records.append( + { + "framework": framework, + "target": { + **target.evidence_metadata(), + "actual_version": target.version, + **( + { + "actual_commit": target.source_commit, + "actual_immutable_id": target.immutable_id, + } + if framework == "vectorbt_pro" + else {} + ), + }, + "python": {"version": "3.12.11", "implementation": "cpython"}, + "ml4t": {"commit": "a" * 40, "dirty": False}, + "source_digests": module._source_digests(), + "input": { + "raw_sha256": digest, + "effective_sha256": digest, + "conversion": "none", + }, + "capabilities": { + "intents": "canonical strategy trace", + "fills": "native", + "closed_trades": "native", + "terminal_state": "reconstructed", + "fill_order": "canonical", + }, + "comparison": {"passed": True, "checks": checks}, + } + ) + return module.build_report(records, workload) + + +def test_input_digest_is_independent_of_datetime_resolution() -> None: + module = _load_module() + workload = _small_workload(module) + config = workload.benchmark_config() + prices, signals, dates = module.suite.generate_benchmark_data(config, seed=workload.seed) + expected = module.input_digest(prices, signals, dates) + + converted_prices = {asset: frame.copy() for asset, frame in prices.items()} + for frame in converted_prices.values(): + frame.index = pd.DatetimeIndex(frame.index.to_numpy(dtype="datetime64[us]")) + converted_signals = signals.copy() + converted_signals["timestamp"] = converted_signals["timestamp"].to_numpy(dtype="datetime64[us]") + converted_dates = pd.DatetimeIndex(dates.to_numpy(dtype="datetime64[us]")) + + assert module.input_digest(converted_prices, converted_signals, converted_dates) == expected + + +@pytest.mark.parametrize( + ("framework", "expected_profile"), + [("vectorbt_pro", "vectorbt_strict"), ("vectorbt_oss", "vectorbt_oss_strict")], +) +def test_vectorbt_scale_pairs_use_version_specific_collateral_profiles( + framework: str, expected_profile: str, monkeypatch: pytest.MonkeyPatch +) -> None: + module = _load_module() + captured: dict[str, object] = {} + + monkeypatch.setattr( + module.suite, + f"benchmark_{framework}", + lambda *_args: "external", + ) + + def capture_ml4t(*args, **kwargs): + captured.update(kwargs) + return "ml4t" + + monkeypatch.setattr(module.suite, "benchmark_ml4t", capture_ml4t) + + result = module._framework_run(framework, object(), {}, pd.DataFrame(), pd.DatetimeIndex([])) + + assert result == ("external", "ml4t") + assert captured["profile_override"] == expected_profile + + +def test_scale_trade_surface_is_reconstructed_from_canonical_fills() -> None: + module = _load_module() + fills = pd.DataFrame( + [ + { + "timestamp": "2024-01-01", + "asset": "A", + "side": "buy", + "quantity": 3.0, + "price": 10.0, + "commission": 0.0, + }, + { + "timestamp": "2024-01-02", + "asset": "A", + "side": "sell", + "quantity": 3.0, + "price": 11.0, + "commission": 0.0, + }, + ] + ) + external = module.suite.BenchmarkResult("external", "scale", 0.0, 999, 0.0, 0.0) + ml4t = module.suite.BenchmarkResult("ml4t", "scale", 0.0, 999, 0.0, 0.0) + external.fills_df = fills + ml4t.fills_df = fills.copy() + + module._use_canonical_fill_backed_trades(external, ml4t) + + assert external.num_trades == ml4t.num_trades == 1 + assert module.suite.canonical_trade_records(external.trades_df) == ( + module.suite.canonical_trade_records(ml4t.trades_df) + ) + + +def test_complete_report_reconstructs(monkeypatch: pytest.MonkeyPatch) -> None: + module = _load_module() + report = _complete_report(module, monkeypatch) + + assert module.report_failures(report, reconstruct_input=True) == [] + + +def test_historical_report_requires_exact_identity_and_matching_outputs( + monkeypatch: pytest.MonkeyPatch, +) -> None: + module = _load_module() + current_report = _complete_report(module, monkeypatch) + current = next( + record for record in current_report["frameworks"] if record["framework"] == "vectorbt_pro" + ) + historical = copy.deepcopy(current) + target = module._historical_vectorbt_pro_target() + historical["target"] = { + **target.evidence_metadata(), + "actual_version": target.version, + "actual_commit": target.source_commit, + "actual_immutable_id": target.immutable_id, + } + report = module.build_historical_report(current, historical, module.WORKLOAD) + + assert module.historical_report_failures(report, reconstruct_input=True) == [] + + evidence_only_revision = copy.deepcopy(report) + evidence_only_revision["historical"]["ml4t"]["commit"] = "b" * 40 + assert module.historical_report_failures(evidence_only_revision, reconstruct_input=True) == [] + + wrong_identity = copy.deepcopy(report) + wrong_identity["historical"]["target"]["actual_version"] = "2026.6.27" + assert module.historical_report_failures(wrong_identity) + + missing_ml4t_identity = copy.deepcopy(report) + missing_ml4t_identity["historical"]["ml4t"]["commit"] = "" + assert module.historical_report_failures(missing_ml4t_identity) + + changed_output = copy.deepcopy(report) + fill_check = next( + check + for check in changed_output["historical"]["comparison"]["checks"] + if check["name"] == "fills" + ) + fill_check["expected_sha256"] = "0" * 64 + assert module.historical_report_failures(changed_output) + + +@pytest.mark.parametrize( + "mutation", + ["recipe", "input", "order_intents", "fills", "trades", "terminal_state", "final_value"], +) +def test_large_scale_mutations_fail_closed(mutation: str, monkeypatch: pytest.MonkeyPatch) -> None: + module = _load_module() + report = copy.deepcopy(_complete_report(module, monkeypatch)) + if mutation == "recipe": + report["workload"]["recipe"]["seed"] = 999 + elif mutation == "input": + report["frameworks"][0]["input"]["raw_sha256"] = "0" * 64 + else: + check = next( + check + for check in report["frameworks"][0]["comparison"]["checks"] + if check["name"] == mutation + ) + if mutation == "final_value": + check["canonical_actual"] = 2.0 + else: + check["actual_sha256"] = "0" * 64 + + assert module.report_failures(report, reconstruct_input=True) + + +def test_accepted_write_is_atomic(tmp_path: Path) -> None: + module = _load_module() + target = tmp_path / "accepted.json" + target.write_text("old\n", encoding="utf-8") + + module._write_json_atomic(target, {"value": 1}) + + assert json.loads(target.read_text(encoding="utf-8")) == {"value": 1} + assert list(tmp_path.iterdir()) == [target] + + +def test_failed_worker_comparison_is_retained( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + module = _load_module() + interpreter = tmp_path / "python" + interpreter.touch() + monkeypatch.setattr(module, "CANDIDATE_DIR", tmp_path / "candidates") + record = { + "framework": "backtrader", + "comparison": {"passed": False, "first_difference": {"name": "fills"}}, + } + + def failed_run(command, **_kwargs): + output = Path(command[command.index("--output") + 1]) + output.write_text(json.dumps(record), encoding="utf-8") + return subprocess.CompletedProcess(command, 1, stdout="", stderr="") + + monkeypatch.setattr(module.subprocess, "run", failed_run) + + with pytest.raises(RuntimeError, match="diagnostic retained"): + module._run_isolated_worker("backtrader", interpreter) + + retained = tmp_path / "candidates" / "backtrader.large_scale.candidate.json" + assert json.loads(retained.read_text(encoding="utf-8")) == record diff --git a/tests/contracts/test_lean_case_study_evidence.py b/tests/contracts/test_lean_case_study_evidence.py new file mode 100644 index 00000000..2e6dacd7 --- /dev/null +++ b/tests/contracts/test_lean_case_study_evidence.py @@ -0,0 +1,86 @@ +"""Contracts for retained fresh LEAN case-study evidence.""" + +from __future__ import annotations + +import gzip +import hashlib +import json +import lzma +from pathlib import Path + +_ROOT = Path(__file__).parents[2] +_WORKSPACE = _ROOT / "validation/lean/workspace" +_DATA = _WORKSPACE / "data/equity/usa/daily" +_SUPPORT = _ROOT / "validation/lean/support" +_EVIDENCE = _ROOT / "validation/lean/case_study_evidence.json" +_CASES = { + "chapter16_etfs", + "chapter16_sp500_equity_option_analytics", + "chapter16_us_equities_panel", +} + + +def _digest(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def _read_compressed(path: Path) -> bytes: + payload = path.read_bytes() + if path.suffix == ".xz": + return lzma.decompress(payload) + if path.suffix == ".gz": + return gzip.decompress(payload) + return payload + + +def _reconstruct_order_events(paths: list[Path]) -> bytes: + parts = [_read_compressed(path) for path in paths] + if len(parts) == 1: + return parts[0] + header = parts[0].splitlines(keepends=True)[0] + body = [parts[0], *(b"".join(part.splitlines(keepends=True)[1:]) for part in parts[1:])] + assert parts[0].startswith(header) + return b"".join(body) + + +def test_retained_lean_case_study_evidence_is_fresh_and_complete() -> None: + payload = json.loads(_EVIDENCE.read_text(encoding="utf-8")) + + assert payload["schema_version"] == 1 + assert payload["passed"] is True + assert payload["promoted"] is True + assert payload["framework"]["version"] == "18001" + assert payload["framework"]["artifact"].startswith("quantconnect/lean@sha256:") + assert payload["cli_observed"] == "lean 1.0.228" + assert {case["case"] for case in payload["cases"]} == _CASES + + for relative, digest in payload["producer_files"].items(): + assert _digest(_ROOT / relative) == digest + for relative, digest in payload["support_files"].items(): + assert _digest(_SUPPORT / relative) == digest + + for case in payload["cases"]: + assert case["passed"] is True + assert case["comparison"]["fill_gap"] == 0 + assert case["comparison"]["sorted_fill_multiset_match"] is True + assert case["comparison"]["canonical_final_value_match"] is True + assert case["comparison"]["canonical_final_value_gap_usd"] == 0.0 + assert case["lean_fill_surface_sha256"] == case["ml4t_fill_surface_sha256"] + + project = _WORKSPACE / case["case"] + for relative, digest in case["inputs"].items(): + path = ( + _DATA / Path(relative).name if relative.startswith("data/") else project / relative + ) + assert _digest(path) == digest + + retained = [_ROOT / relative for relative in case["retained_artifacts"]] + for path in retained: + assert _digest(path) == case["retained_artifacts"][path.relative_to(_ROOT).as_posix()] + order_paths = [path for path in retained if "order_events" in path.name] + equity_path = next(path for path in retained if path.name == "ml4t_daily_equity.csv") + assert ( + hashlib.sha256(_reconstruct_order_events(order_paths)).hexdigest() + == case["raw_order_events_sha256"] + ) + assert _digest(equity_path) == case["raw_daily_equity_sha256"] diff --git a/tests/contracts/test_lean_native_evidence.py b/tests/contracts/test_lean_native_evidence.py new file mode 100644 index 00000000..4391909f --- /dev/null +++ b/tests/contracts/test_lean_native_evidence.py @@ -0,0 +1,75 @@ +"""Contracts for retained framework-native LEAN evidence.""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +_ROOT = Path(__file__).parents[2] +_ORACLE = _ROOT / "validation/native/lean_behavior.py" +_PROJECT = _ROOT / "validation/native/lean_project" +_SUPPORT = _ROOT / "validation/lean/support" +_EVIDENCE = _ROOT / "validation/native/evidence/lean-18001.json" + +EXPECTED_CHECKS = { + "buying_power_allowed", + "buying_power_rejected", + "buying_power_sequence", + "default_full_fill", + "default_models", + "explicit_costs", + "fill_forward", + "final_bar_order", + "liquidation", + "submission_sequence", + "target_sizing", + "terminal_holding", + "timing", +} + + +def test_retained_lean_native_evidence_is_complete_and_current() -> None: + payload = json.loads(_EVIDENCE.read_text(encoding="utf-8")) + + assert payload["schema_version"] == 1 + assert payload["framework"] == "lean" + assert payload["engine"]["engine_version"] == "18001" + assert payload["engine"]["source_commit"] == ("278fcb3d1b815b63ccadba68d7ae54422e34b792") + assert payload["engine"]["image"] == ( + "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70" + ) + assert payload["engine"]["platform_artifact"] == ( + "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307" + ) + assert payload["cli"] == { + "immutable_id": ("sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c"), + "package": "lean", + "version": "1.0.228", + } + assert payload["models"] == { + "account_type": "Margin", + "brokerage": "DefaultBrokerageModel", + "security": "Equity USA, daily, adjusted normalization, leverage 2", + } + assert payload["oracle_sha256"] == hashlib.sha256(_ORACLE.read_bytes()).hexdigest() + expected_files = { + path.relative_to(_PROJECT).as_posix(): hashlib.sha256(path.read_bytes()).hexdigest() + for path in sorted(_PROJECT.rglob("*")) + if path.is_file() + } + assert payload["oracle_files"] == expected_files + expected_support = { + path.relative_to(_SUPPORT).as_posix(): hashlib.sha256(path.read_bytes()).hexdigest() + for path in sorted(_SUPPORT.rglob("*")) + if path.is_file() + } + assert payload["support_files"] == expected_support + assert payload["passed"] is True + assert {check["id"] for check in payload["checks"]} == EXPECTED_CHECKS + assert all(check["passed"] for check in payload["checks"]) + assert all(check["contract_actual"] == check["expected"] for check in payload["checks"]) + assert all( + payload["engine"]["source_commit"] in source + for source in payload["source_references"].values() + ) diff --git a/tests/contracts/test_lean_orchestration.py b/tests/contracts/test_lean_orchestration.py new file mode 100644 index 00000000..5cf0f333 --- /dev/null +++ b/tests/contracts/test_lean_orchestration.py @@ -0,0 +1,72 @@ +"""Contracts for immutable LEAN engine orchestration.""" + +from __future__ import annotations + +from pathlib import Path +from types import SimpleNamespace + +import pytest + +from ml4t.backtest._validation import lean_runner + + +def test_lean_backtest_requires_an_immutable_image(tmp_path: Path) -> None: + with pytest.raises(ValueError, match="immutable digest"): + lean_runner.run_lean_backtest( + lean_cmd=["lean"], + cwd=tmp_path, + project_dir=tmp_path / "project", + lean_config=tmp_path / "lean.json", + output_dir=tmp_path / "output", + image="quantconnect/lean:latest", + ) + + +def test_lean_command_resolution_does_not_install_an_unpinned_cli( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, +) -> None: + monkeypatch.chdir(tmp_path) + monkeypatch.delenv("ML4T_LEAN_COMMAND", raising=False) + monkeypatch.setattr(lean_runner.shutil, "which", lambda _name: None) + + with pytest.raises(FileNotFoundError, match="frozen environment"): + lean_runner.resolve_lean_command() + + +def test_lean_backtest_passes_the_frozen_image_to_the_cli( + monkeypatch: pytest.MonkeyPatch, + tmp_path: Path, +) -> None: + calls: list[list[str]] = [] + + def fake_run(command: list[str], **kwargs: object) -> SimpleNamespace: + calls.append(command) + return SimpleNamespace(returncode=0, stdout="", stderr="") + + monkeypatch.setattr(lean_runner.subprocess, "run", fake_run) + image = "quantconnect/lean@sha256:" + "a" * 64 + + lean_runner.run_lean_backtest( + lean_cmd=["lean"], + cwd=tmp_path, + project_dir=tmp_path / "project", + lean_config=tmp_path / "lean.json", + output_dir=tmp_path / "output", + image=image, + ) + + assert calls == [ + [ + "lean", + "backtest", + str(tmp_path / "project"), + "--lean-config", + str(tmp_path / "lean.json"), + "--image", + image, + "--no-update", + "--output", + str(tmp_path / "output"), + ] + ] diff --git a/tests/contracts/test_parity_claim_generation.py b/tests/contracts/test_parity_claim_generation.py index 53508724..cf6a7018 100644 --- a/tests/contracts/test_parity_claim_generation.py +++ b/tests/contracts/test_parity_claim_generation.py @@ -6,6 +6,8 @@ import sys from pathlib import Path +import pytest + _VALIDATION_DIR = Path(__file__).parents[2] / "validation" if str(_VALIDATION_DIR) not in sys.path: sys.path.insert(0, str(_VALIDATION_DIR)) @@ -13,7 +15,19 @@ import generate_parity_claims # noqa: E402 -def test_parity_claim_documents_match_retained_evidence() -> None: +def test_legacy_accepted_evidence_cannot_generate_current_claims() -> None: + correctness = copy.deepcopy( + generate_parity_claims._load_json(generate_parity_claims.CORRECTNESS_EVIDENCE) + ) + large_scale = generate_parity_claims._load_json(generate_parity_claims.LARGE_SCALE_EVIDENCE) + real_strategy = generate_parity_claims._load_json(generate_parity_claims.REAL_STRATEGY_EVIDENCE) + correctness["schema_version"] = 1 + + with pytest.raises(ValueError, match="Unsupported correctness schema: 1"): + generate_parity_claims._validate_evidence(correctness, large_scale, real_strategy) + + +def test_generated_claims_are_current() -> None: assert generate_parity_claims.synchronize(check=True) == [] @@ -30,19 +44,45 @@ def test_every_claim_target_uses_the_same_generated_block() -> None: assert len(set(blocks)) == 1 -def test_claims_pin_every_advertised_framework_and_expose_failures() -> None: +def test_claims_pin_every_advertised_framework_and_expose_failures( + monkeypatch: pytest.MonkeyPatch, +) -> None: correctness = generate_parity_claims._load_json(generate_parity_claims.CORRECTNESS_EVIDENCE) + correctness = copy.deepcopy(correctness) + for framework in generate_parity_claims.SCENARIO_FRAMEWORKS: + framework_records = [ + record for record in correctness["records"] if record["framework"] == framework + ] + if len(framework_records) < len(generate_parity_claims.SCENARIOS): + added = copy.deepcopy(framework_records[-1]) + added["scenario_id"] = "17" + added["scenario_name"] = "High Event Count" + added["required"] = True + added["status"] = "pass" + correctness["records"].append(added) large_scale = generate_parity_claims._load_json(generate_parity_claims.LARGE_SCALE_EVIDENCE) + real_strategy = generate_parity_claims._load_json(generate_parity_claims.REAL_STRATEGY_EVIDENCE) + monkeypatch.setattr(generate_parity_claims, "correctness_report_failures", lambda _: []) + monkeypatch.setattr(generate_parity_claims, "large_scale_report_failures", lambda _: []) - claims = generate_parity_claims.render_claims(correctness, large_scale) + claims = generate_parity_claims.render_claims(correctness, large_scale, real_strategy) for pin in correctness["frameworks"].values(): assert pin["version"] in claims assert pin["source"] in claims assert f"`{pin['profile']}`" in claims - assert "15/15 exact" in claims - assert "225,844 trades" in claims - assert "No large-scale claim is published for Backtrader" in claims + assert "16/16 exact" in claims + assert "synthetic stress workload contains 250 assets" in claims + assert "6/8 supported pairs pass" in claims + for record in large_scale["frameworks"]: + target = record["target"] + checks = generate_parity_claims._comparison_checks(record) + assert f"`{target['profile']}`" in claims + assert target["version"] in claims + assert f"{checks['fills']['expected_count']:,}" in claims + assert f"{checks['trades']['expected_count']:,}" in claims + assert "validation/LARGE_SCALE_RESULTS.json" in claims + assert "No large-scale claim is published" not in claims failed_correctness = copy.deepcopy(correctness) failed_record = next( @@ -51,5 +91,7 @@ def test_claims_pin_every_advertised_framework_and_expose_failures() -> None: if record["framework"] == "zipline" and record["scenario_id"] == "15" ) failed_record["status"] = "comparison_failure" - failed_claims = generate_parity_claims.render_claims(failed_correctness, large_scale) - assert "14/15 pass; blocked by scenario 15" in failed_claims + failed_claims = generate_parity_claims.render_claims( + failed_correctness, large_scale, real_strategy + ) + assert "15/16 pass; blocked by scenario 15" in failed_claims diff --git a/tests/contracts/test_profile_parity_basics.py b/tests/contracts/test_profile_parity_basics.py index c851182f..df65c194 100644 --- a/tests/contracts/test_profile_parity_basics.py +++ b/tests/contracts/test_profile_parity_basics.py @@ -7,8 +7,9 @@ from ml4t.backtest.config import BacktestConfig from ml4t.backtest.engine import run_backtest from ml4t.backtest.profiles import list_profiles +from ml4t.backtest.risk.position.dynamic import TrailingStop from ml4t.backtest.strategy import Strategy -from ml4t.backtest.types import StopLevelBasis +from ml4t.backtest.types import OrderSide, StopLevelBasis def _prices() -> pl.DataFrame: @@ -40,6 +41,100 @@ def on_data(self, timestamp, data, context, broker) -> None: self.done = True +class _BuyOnMissingClose(Strategy): + def on_data(self, timestamp, data, context, broker) -> None: + if timestamp.day == 2: + broker.submit_order("AAPL", 1.0) + + +class _ExerciseVectorbtShortCollateral(Strategy): + def on_data(self, timestamp, data, context, broker) -> None: + if timestamp.day == 1: + broker.submit_order("B", 5.0, side=OrderSide.SELL) + elif timestamp.day == 2: + broker.submit_order("A", 5.0) + broker.submit_order("B", 5.0, side=OrderSide.SELL) + + +def _flat_two_asset_prices() -> pl.DataFrame: + return pl.DataFrame( + [ + { + "timestamp": datetime(2024, 1, day), + "asset": asset, + "open": 100.0, + "high": 100.0, + "low": 100.0, + "close": 100.0, + "volume": 1_000_000.0, + } + for day in (1, 2, 3) + for asset in ("A", "B") + ] + ) + + +def _prices_with_missing_middle() -> pl.DataFrame: + return ( + _prices() + .vstack( + pl.DataFrame( + { + "timestamp": [datetime(2024, 1, 3)], + "asset": ["AAPL"], + "open": [120.0], + "high": [120.0], + "low": [120.0], + "close": [120.0], + "volume": [1_000_000.0], + } + ) + ) + .with_columns( + pl.when(pl.col("timestamp") == datetime(2024, 1, 2)) + .then(float("nan")) + .otherwise(pl.col(column)) + .alias(column) + for column in ("open", "high", "low", "close") + ) + ) + + +class _BuyWithTrailingStop(Strategy): + def __init__(self) -> None: + self.done = False + + def on_data(self, timestamp, data, context, broker) -> None: + if not self.done: + broker.set_position_rules(TrailingStop(pct=0.1)) + broker.submit_order("AAPL", 1.0) + self.done = True + + +def _backtrader_trailing_prices() -> pl.DataFrame: + start = datetime(2024, 1, 1) + rows = [] + bars = [ + (100.0, 101.0, 99.0, 100.0), + (110.0, 111.0, 94.0, 95.0), + (95.0, 96.0, 85.0, 90.0), + (100.0, 101.0, 99.0, 100.0), + ] + for offset, (open_, high, low, close) in enumerate(bars): + rows.append( + { + "timestamp": start + timedelta(days=offset), + "asset": "AAPL", + "open": open_, + "high": high, + "low": low, + "close": close, + "volume": 1_000_000.0, + } + ) + return pl.DataFrame(rows) + + def test_profile_registry_has_expected_core_profiles() -> None: assert list_profiles() == ["backtrader", "default", "lean", "realistic", "vectorbt", "zipline"] @@ -60,10 +155,51 @@ def test_profiles_enforce_expected_entry_timing_contract() -> None: vbt = run_backtest(prices=_prices(), strategy=_BuyOnce(), config="vectorbt") bt = run_backtest(prices=_prices(), strategy=_BuyOnce(), config="backtrader") zl = run_backtest(prices=_prices(), strategy=_BuyOnce(), config="zipline") + lean = run_backtest(prices=_prices(), strategy=_BuyOnce(), config="lean") assert vbt.trades[0].entry_price == 101.0 # same-bar close - assert 110.0 < bt.trades[0].entry_price < 111.0 # next-bar open with default slippage - assert 110.0 < zl.trades[0].entry_price < 111.0 # next-bar open with volume slippage + assert bt.trades[0].entry_price == 110.0 # next-bar open with zero default slippage + assert zl.trades[0].entry_price == 110.0 # configured next-bar open with zero slippage + assert lean.trades[0].entry_price == 110.0 # DefaultBrokerageModel has null slippage + + +def test_vectorbt_profile_drops_signal_order_with_missing_close() -> None: + result = run_backtest( + prices=_prices_with_missing_middle(), + strategy=_BuyOnMissingClose(), + config="vectorbt", + ) + + assert result.fills == [] + assert len(result.rejected_orders) == 1 + assert result.rejected_orders[0].rejection_code == "price_unavailable" + + +def test_vectorbt_strict_locks_short_collateral_from_new_exposure() -> None: + config = BacktestConfig.from_preset("vectorbt_strict") + config.initial_cash = 1_000.0 + + result = run_backtest( + prices=_flat_two_asset_prices(), + strategy=_ExerciseVectorbtShortCollateral(), + config=config, + ) + + assert [(fill.asset, fill.quantity, fill.side.value) for fill in result.fills] == [ + ("B", 5.0, "sell"), + ("A", 5.0, "buy"), + ] + + +def test_zipline_profile_defers_pending_order_across_stale_bar() -> None: + result = run_backtest( + prices=_prices_with_missing_middle(), + strategy=_BuyOnce(), + config="zipline", + ) + + assert result.fills[0].timestamp == datetime(2024, 1, 3) + assert result.fills[0].price == 120.0 def test_backtrader_profile_uses_signal_price_stop_basis() -> None: @@ -71,17 +207,28 @@ def test_backtrader_profile_uses_signal_price_stop_basis() -> None: assert cfg.stop_level_basis == StopLevelBasis.SIGNAL_PRICE +def test_backtrader_profile_trailing_stop_uses_signal_close_before_fill() -> None: + result = run_backtest( + prices=_backtrader_trailing_prices(), + strategy=_BuyWithTrailingStop(), + config="backtrader", + ) + + assert result.trades[0].entry_price == 110.0 + assert result.trades[0].exit_price == 90.0 + + def test_backtrader_profile_parity_order_knobs() -> None: cfg = BacktestConfig.from_preset("backtrader") - assert cfg.rebalance_headroom_pct == 0.998 + assert cfg.rebalance_headroom_pct == 1.0 assert cfg.missing_price_policy.value == "use_last" - assert cfg.late_asset_policy.value == "require_history" - assert cfg.late_asset_min_bars == 2 + assert cfg.late_asset_policy.value == "allow" + assert cfg.late_asset_min_bars == 1 def test_zipline_profile_parity_order_knobs() -> None: cfg = BacktestConfig.from_preset("zipline") - assert cfg.rebalance_headroom_pct == 0.998 + assert cfg.rebalance_headroom_pct == 1.0 assert cfg.missing_price_policy.value == "use_last" assert cfg.late_asset_policy.value == "allow" @@ -96,19 +243,26 @@ def test_profile_registry_has_lean_profile() -> None: """LEAN profile must be a core profile, not just a strict variant.""" cfg = BacktestConfig.from_preset("lean") assert cfg.preset_name == "lean" - assert cfg.fill_ordering.value == "exit_first" + assert cfg.execution_mode.value == "next_bar" + assert cfg.execution_price.value == "open" + assert cfg.fill_ordering.value == "sequential" assert cfg.commission_per_share == 0.005 assert cfg.commission_minimum == 1.0 + assert cfg.slippage_type.value == "none" + assert cfg.initial_margin == 0.5 + assert cfg.long_maintenance_margin == 0.5 + assert cfg.short_maintenance_margin == 0.5 + assert cfg.rebalance_headroom_pct == 0.9975 def test_lean_profile_is_independent_of_backtrader() -> None: """LEAN profile must remain distinct from Backtrader on execution semantics.""" lean = BacktestConfig.from_preset("lean") bt = BacktestConfig.from_preset("backtrader") - assert lean.fill_ordering.value == "exit_first" + assert lean.fill_ordering.value == "sequential" assert bt.fill_ordering.value == "fifo" assert lean.commission_per_share == 0.005 - assert bt.commission_rate == 0.001 + assert bt.commission_rate == 0.0 def test_quantconnect_alias_resolves_to_lean() -> None: diff --git a/tests/contracts/test_python_support_policy.py b/tests/contracts/test_python_support_policy.py index 3d287166..c62af951 100644 --- a/tests/contracts/test_python_support_policy.py +++ b/tests/contracts/test_python_support_policy.py @@ -103,7 +103,7 @@ def test_minimum_dependency_matrix_proves_declared_lower_bounds() -> None: "pandas>=2.3.3; python_version < '3.15'", "numpy>=2.3.2", "PyYAML>=6.0.3", - "pandas-market-calendars>=5.2.4", + "pandas-market-calendars>=5.4.0", } specs_dependencies = [ requirement @@ -122,4 +122,7 @@ def test_merge_and_release_builds_depend_on_compatibility_gate() -> None: assert ci_jobs["compatibility"]["uses"] == "./.github/workflows/compatibility.yml" assert "compatibility" in ci_jobs["build"]["needs"] assert release_jobs["qualification"]["uses"] == "./.github/workflows/ci.yml" - assert release_jobs["publish"]["needs"] == ["ecosystem-qualification", "qualification"] + assert set(release_jobs["publish"]["needs"]) >= { + "ecosystem-qualification", + "qualification", + } diff --git a/tests/contracts/test_real_strategy_applicability.py b/tests/contracts/test_real_strategy_applicability.py new file mode 100644 index 00000000..20876e03 --- /dev/null +++ b/tests/contracts/test_real_strategy_applicability.py @@ -0,0 +1,25 @@ +"""Contracts for the bounded real-strategy framework matrix.""" + +from __future__ import annotations + +import tomllib +from itertools import product +from pathlib import Path + + +def test_every_selected_case_framework_pair_has_one_disposition() -> None: + path = Path(__file__).parents[2] / "validation" / "real_strategy_applicability.toml" + payload = tomllib.loads(path.read_text(encoding="utf-8")) + metadata = payload["metadata"] + pairs = payload["pair"] + + expected = set(product(metadata["case_studies"], metadata["frameworks"])) + actual = {(pair["case_study"], pair["framework"]) for pair in pairs} + + assert len(pairs) == len(actual) + assert actual == expected + assert {pair["status"] for pair in pairs} == {"required", "unsupported"} + assert sum(pair["status"] == "required" for pair in pairs) == 8 + assert sum(pair["status"] == "unsupported" for pair in pairs) == 7 + assert all(pair["native_contract"] for pair in pairs) + assert all(pair["source"].startswith("https://") for pair in pairs) diff --git a/tests/contracts/test_real_strategy_corpus.py b/tests/contracts/test_real_strategy_corpus.py new file mode 100644 index 00000000..b3634f94 --- /dev/null +++ b/tests/contracts/test_real_strategy_corpus.py @@ -0,0 +1,207 @@ +"""Contracts for the bounded current real-strategy inventory.""" + +from __future__ import annotations + +import importlib.util +import json +import sys +from pathlib import Path + +import polars as pl +import pytest + + +def _load_module(): + path = Path(__file__).parents[2] / "validation" / "real_strategy_corpus.py" + spec = importlib.util.spec_from_file_location("ml4t_real_strategy_corpus", path) + assert spec is not None + assert spec.loader is not None + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +def _artifact_tree(tmp_path: Path, case_id: str = "etfs") -> tuple[Path, dict[str, str]]: + artifact_root = tmp_path / "artifacts" + run_log = artifact_root / "case_studies" / case_id / "run_log" + backtest_hash = "a" * 12 + prediction_hash = "b" * 12 + backtest = run_log / "backtest" / backtest_hash + prediction = run_log / "predictions" / prediction_hash + backtest.mkdir(parents=True) + prediction.mkdir(parents=True) + (run_log / "registry.db").write_bytes(b"registry") + pl.DataFrame({"timestamp": ["2024-01-01"], "symbol": ["SPY"], "y_score": [0.1]}).write_parquet( + prediction / "predictions.parquet" + ) + spec = { + "backtest_config": { + "metadata": {"prediction_hash": prediction_hash}, + "execution": {"execution_mode": "next_bar"}, + "commission": {"model": "none"}, + "slippage": {"model": "none"}, + "position_sizing": {"share_type": "integer"}, + }, + "strategy": { + "signal": {"method": "equal_weight_top_k", "top_k": 1}, + "rebalance": {"mode": "engine", "cadence": "daily_close"}, + }, + } + (backtest / "spec.json").write_text(json.dumps(spec), encoding="utf-8") + for name in ( + "daily_returns.parquet", + "equity.parquet", + "fills.parquet", + "portfolio_state.parquet", + "trades.parquet", + "weights.parquet", + ): + pl.DataFrame({"value": [1.0]}).write_parquet(backtest / name) + return artifact_root, { + "val_backtest_hash": backtest_hash, + "val_prediction_hash": prediction_hash, + "val_stage": "signal", + "label": "fwd_ret_1d", + } + + +def test_case_contract_contains_selected_real_case_studies() -> None: + module = _load_module() + + cases = module.load_case_contract() + + assert len(cases) == 3 + assert {case["id"] for case in cases} == { + "cme_futures", + "crypto_perps_funding", + "etfs", + } + assert all(case["production_path"] == "event_driven" for case in cases) + + +def test_case_record_retains_predictions_spec_and_outputs(tmp_path: Path) -> None: + module = _load_module() + artifact_root, lineage = _artifact_tree(tmp_path) + case = next(case for case in module.load_case_contract() if case["id"] == "etfs") + + record = module.build_case_record(case, lineage, artifact_root=artifact_root) + + assert record["case_study"] == "etfs" + assert record["production_path"] == "event_driven" + assert record["inputs"]["predictions.parquet"]["rows"] == 1 + assert record["backtest_artifacts"]["fills.parquet"]["rows"] == 1 + assert record["strategy"]["execution"] == {"execution_mode": "next_bar"} + assert all("sha256" in value for value in record["backtest_artifacts"].values()) + + +def test_case_record_fails_when_required_output_is_missing(tmp_path: Path) -> None: + module = _load_module() + artifact_root, lineage = _artifact_tree(tmp_path) + case = next(case for case in module.load_case_contract() if case["id"] == "etfs") + missing = ( + artifact_root + / "case_studies" + / "etfs" + / "run_log" + / "backtest" + / lineage["val_backtest_hash"] + / "fills.parquet" + ) + missing.unlink() + + with pytest.raises(FileNotFoundError, match="fills.parquet"): + module.build_case_record(case, lineage, artifact_root=artifact_root) + + +def test_case_record_detects_prediction_mismatch(tmp_path: Path) -> None: + module = _load_module() + artifact_root, lineage = _artifact_tree(tmp_path) + case = next(case for case in module.load_case_contract() if case["id"] == "etfs") + spec_path = ( + artifact_root + / "case_studies" + / "etfs" + / "run_log" + / "backtest" + / lineage["val_backtest_hash"] + / "spec.json" + ) + spec = json.loads(spec_path.read_text(encoding="utf-8")) + spec["backtest_config"]["metadata"]["prediction_hash"] = "wrong" + spec_path.write_text(json.dumps(spec), encoding="utf-8") + + with pytest.raises(ValueError, match="does not name selected prediction"): + module.build_case_record(case, lineage, artifact_root=artifact_root) + + +def test_content_addressed_bundle_is_reused_and_mutations_change_identity(tmp_path: Path) -> None: + module = _load_module() + market = pl.DataFrame( + { + "timestamp": ["2024-01-01", "2024-01-02"], + "symbol": ["SPY", "SPY"], + "open": [100.0, 101.0], + "close": [101.0, 102.0], + } + ) + targets = pl.DataFrame({"timestamp": ["2024-01-01"], "symbol": ["SPY"], "weight": [1.0]}) + kwargs = { + "case_id": "etfs", + "selection": {"val_backtest_hash": "a" * 12}, + "source_prediction_sha256": "b" * 64, + "spec": {"strategy": {"rebalance": {"mode": "engine"}}}, + "market": market, + "targets": targets, + "output_root": tmp_path, + } + + first = module.write_bundle(**kwargs) + second = module.write_bundle(**kwargs) + changed = module.write_bundle(**{**kwargs, "targets": targets.with_columns(weight=0.5)}) + + assert first == second + assert first["bundle_sha256"] != changed["bundle_sha256"] + assert (tmp_path / "etfs" / first["bundle_sha256"] / "manifest.json").is_file() + + +def test_funding_is_limited_to_timestamps_presented_by_market() -> None: + module = _load_module() + market = pl.DataFrame( + { + "timestamp": ["2024-01-01T08:00:00", "2024-01-03T08:00:00"], + "symbol": ["BTCUSDT", "BTCUSDT"], + } + ).with_columns(pl.col("timestamp").str.to_datetime()) + funding = pl.DataFrame( + { + "timestamp": [ + "2024-01-01T08:00:00", + "2024-01-02T08:00:00", + "2024-01-03T08:00:00", + ], + "symbol": ["BTCUSDT", "BTCUSDT", "ETHUSDT"], + "funding_rate": [0.0001, 0.0002, -0.0001], + } + ).with_columns(pl.col("timestamp").str.to_datetime(time_unit="ms")) + + aligned = module.align_funding_to_market_events(funding, market) + + assert aligned["timestamp"].to_list() == market["timestamp"].to_list() + assert aligned["symbol"].to_list() == ["BTCUSDT", "ETHUSDT"] + + +def test_targets_are_limited_to_production_engine_schedule() -> None: + module = _load_module() + targets = pl.DataFrame( + { + "timestamp": ["2024-01-01", "2024-01-02", "2024-01-03"], + "symbol": ["SPY", "SPY", "QQQ"], + "weight": [1.0, 0.5, 1.0], + } + ).with_columns(pl.col("timestamp").str.to_datetime()) + schedule = pl.Series("timestamp", ["2024-01-01", "2024-01-03"]).str.to_datetime(time_unit="ms") + + aligned = module.align_targets_to_engine_schedule(targets, schedule) + + assert aligned["symbol"].to_list() == ["SPY", "QQQ"] diff --git a/tests/contracts/test_real_strategy_runner.py b/tests/contracts/test_real_strategy_runner.py new file mode 100644 index 00000000..80d439ba --- /dev/null +++ b/tests/contracts/test_real_strategy_runner.py @@ -0,0 +1,150 @@ +"""Behavior contracts for the frozen real-strategy ML4T runner.""" + +from __future__ import annotations + +import importlib.util +from datetime import UTC, datetime +from pathlib import Path +from types import SimpleNamespace + +import polars as pl + + +def _load_runner(): + path = Path(__file__).parents[2] / "validation" / "real_strategy_runner.py" + spec = importlib.util.spec_from_file_location("ml4t_real_strategy_runner", path) + assert spec is not None and spec.loader is not None + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def _load_evidence(): + path = Path(__file__).parents[2] / "validation" / "real_strategy_evidence.py" + spec = importlib.util.spec_from_file_location("ml4t_real_strategy_evidence", path) + assert spec is not None and spec.loader is not None + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def _load_benchmark(): + path = Path(__file__).parents[2] / "validation" / "real_strategy_benchmark.py" + spec = importlib.util.spec_from_file_location("ml4t_real_strategy_benchmark", path) + assert spec is not None and spec.loader is not None + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +class _Broker: + def __init__(self) -> None: + self.cash = 1_000.0 + self.positions = {"PERP": SimpleNamespace(quantity=2.0, multiplier=3.0)} + + @staticmethod + def get_mark_price(_symbol: str, *, quantity: float) -> float: + assert quantity == 2.0 + return 10.0 + + +def test_lean_funding_schedule_skips_entry_boundary_then_settles() -> None: + runner = _load_runner() + funding = pl.DataFrame( + { + "symbol": ["PERP", "PERP"], + "timestamp": [ + datetime(2024, 1, 1, 8, tzinfo=UTC), + datetime(2024, 1, 1, 16, tzinfo=UTC), + ], + "funding_rate": [0.01, 0.02], + } + ) + ledger = runner.FundingSettlementLedger(funding, skip_first_after_entry=True) + broker = _Broker() + + ledger.settle(datetime(2024, 1, 1, 8, tzinfo=UTC), broker) + assert broker.cash == 1_000.0 + + ledger.settle(datetime(2024, 1, 1, 16, tzinfo=UTC), broker) + assert broker.cash == 998.8 + assert ledger.metrics() == { + "funding_pnl": -1.2, + "funding_events": 1, + "funding_settlements": 2, + } + + +def test_lean_funding_schedule_observes_flat_positions_between_settlements() -> None: + runner = _load_runner() + funding = pl.DataFrame( + { + "symbol": ["PERP", "PERP"], + "timestamp": [ + datetime(2024, 1, 1, 8, tzinfo=UTC), + datetime(2024, 1, 1, 16, tzinfo=UTC), + ], + "funding_rate": [0.01, 0.02], + } + ) + ledger = runner.FundingSettlementLedger(funding, skip_first_after_entry=True) + broker = _Broker() + + ledger.settle(datetime(2024, 1, 1, 8, tzinfo=UTC), broker) + broker.positions["PERP"].quantity = 0.0 + ledger.settle(datetime(2024, 1, 1, 12, tzinfo=UTC), broker) + broker.positions["PERP"].quantity = 2.0 + ledger.settle(datetime(2024, 1, 1, 16, tzinfo=UTC), broker) + + assert broker.cash == 1_000.0 + assert ledger.metrics()["funding_events"] == 0 + + +def test_lean_comparison_preserves_margin_account_and_disables_equity_costs() -> None: + runner = _load_runner() + source = { + "account": {"allow_short_selling": True, "allow_leverage": False}, + "cash": {"initial": 125_000.0}, + "calendar": {"calendar": "NYSE", "data_frequency": "daily"}, + "feed": {"calendar": "NYSE", "data_frequency": "daily"}, + "commission": {"model": "percentage", "rate": 0.001}, + "slippage": {"model": "percentage", "rate": 0.001}, + "orders": {"rebalance_headroom_pct": 0.99}, + "metadata": {}, + } + + config = runner._comparison_config({"backtest_config": source}, "lean") + + assert config.allow_leverage is True + assert config.commission_rate == 0.0 + assert config.slippage_rate == 0.0 + assert config.rebalance_headroom_pct == 1.0 + + +def test_real_strategy_comparator_detects_one_quantum_mutation() -> None: + evidence = _load_evidence() + framework = [{"timestamp": "2024-01-01", "price": "10.00000000"}] + mutated = [{"timestamp": "2024-01-01", "price": "10.00000001"}] + + result = evidence.compare_records(framework, mutated, numeric_fields=("price",)) + + assert result["passed"] is False + assert result["first_divergence"] == { + "kind": "record", + "index": 0, + "field": "price", + "framework": framework[0], + "ml4t": mutated[0], + "canonical_gap": "0.00000001", + } + + +def test_real_strategy_benchmark_interval_is_deterministic() -> None: + benchmark = _load_benchmark() + values = [float(value) for value in range(1, 11)] + + first = benchmark.bootstrap_median_interval(values, draws=1_000, seed=7) + second = benchmark.bootstrap_median_interval(values, draws=1_000, seed=7) + + assert first == second + assert first[0] <= 5.5 <= first[1] diff --git a/tests/contracts/test_release_workflow.py b/tests/contracts/test_release_workflow.py index 1a7d69a5..f1316344 100644 --- a/tests/contracts/test_release_workflow.py +++ b/tests/contracts/test_release_workflow.py @@ -146,9 +146,22 @@ def test_release_reuses_all_ci_gates_and_publishes_the_exact_candidate() -> None "security", "coverage", "runtime", - "contracts", + "public-parity", "documentation", } + parity = jobs["public-parity"] + assert {entry["framework"] for entry in parity["strategy"]["matrix"]["include"]} == { + "vectorbt_oss", + "backtrader", + "zipline", + } + parity_commands = "\n".join(step.get("run", "") for step in parity["steps"]) + assert "validation/build_framework_env.py" in parity_commands + assert "validation/native/vectorbt_behavior.py" in parity_commands + assert "validation/native/backtrader_behavior.py" in parity_commands + assert "validation/native/zipline_behavior.py" in parity_commands + assert "validation/run_all_correctness.py" in parity_commands + assert "--extra comparison" not in parity_commands build_commands = "\n".join(step.get("run", "") for step in jobs["build"]["steps"]) assert "git rev-parse HEAD" in build_commands assert "validation/release_candidate.py create" in build_commands @@ -157,7 +170,14 @@ def test_release_reuses_all_ci_gates_and_publishes_the_exact_candidate() -> None assert f"--gate {gate}=" in build_commands assert release_jobs["qualification"]["uses"] == "./.github/workflows/ci.yml" - assert release_jobs["publish"]["needs"] == ["ecosystem-qualification", "qualification"] + assert release_jobs["private-comparisons"]["uses"] == ( + "./.github/workflows/private-comparisons.yml" + ) + assert release_jobs["publish"]["needs"] == [ + "ecosystem-qualification", + "private-comparisons", + "qualification", + ] assert release_jobs["publish"]["permissions"] == { "contents": "read", "id-token": "write", @@ -172,3 +192,22 @@ def test_release_reuses_all_ci_gates_and_publishes_the_exact_candidate() -> None assert release_jobs["verify-pypi"]["needs"] == "publish" assert release_jobs["github-release"]["needs"] == "verify-pypi" assert "if" not in release_jobs["github-release"] + + +def test_private_comparison_workflow_pins_and_retains_evidence() -> None: + workflow = _workflow("private-comparisons.yml") + jobs = workflow["jobs"] + + assert workflow["on"]["workflow_call"]["secrets"]["VECTORBT_PRO_DEPLOY_KEY"]["required"] + pro_commands = "\n".join(step.get("run", "") for step in jobs["vectorbt-pro"]["steps"]) + assert "validation/build_framework_env.py" in pro_commands + assert "validation/native/vectorbt_behavior.py" in pro_commands + assert "validation/run_all_correctness.py" in pro_commands + assert "--framework vectorbt_pro" in pro_commands + lean_commands = "\n".join(step.get("run", "") for step in jobs["lean"]["steps"]) + assert "--framework lean" in lean_commands + assert "validation/native/lean_behavior.py" in lean_commands + assert "validation/run_lean_case_studies.py" in lean_commands + assert "lean-native.json" in str(jobs["lean"]) + assert "lean-case-studies.json" in str(jobs["lean"]) + assert "run_all_correctness.py" not in lean_commands diff --git a/tests/contracts/test_security_policy.py b/tests/contracts/test_security_policy.py index 21e7055e..62271734 100644 --- a/tests/contracts/test_security_policy.py +++ b/tests/contracts/test_security_policy.py @@ -161,7 +161,10 @@ def test_ci_and_release_both_require_the_evidence_retaining_security_workflow() assert ci_jobs["security"]["uses"] == "./.github/workflows/security.yml" assert "security" in ci_jobs["build"]["needs"] assert release_jobs["qualification"]["uses"] == "./.github/workflows/ci.yml" - assert release_jobs["publish"]["needs"] == ["ecosystem-qualification", "qualification"] + assert set(release_jobs["publish"]["needs"]) >= { + "ecosystem-qualification", + "qualification", + } scan = security["jobs"]["scan"] commands = "\n".join(step.get("run", "") for step in scan["steps"]) diff --git a/tests/contracts/test_static_analysis_policy.py b/tests/contracts/test_static_analysis_policy.py index 17cda8e8..e886b39e 100644 --- a/tests/contracts/test_static_analysis_policy.py +++ b/tests/contracts/test_static_analysis_policy.py @@ -83,7 +83,7 @@ def test_ci_checks_every_release_validation_script() -> None: ) } excluded_validation_scripts = { - # Legacy benchmark entry points run only in their named framework environments. + # Compatibility benchmark entry points route to the checked retained harness. "validation/backtrader/benchmark_performance.py", "validation/backtrader/scale_validation.py", "validation/vectorbt_pro/benchmark_performance.py", @@ -93,7 +93,8 @@ def test_ci_checks_every_release_validation_script() -> None: "validation/lean/workspace/chapter16_etfs/main.py", "validation/lean/workspace/chapter16_sp500_equity_option_analytics/main.py", "validation/lean/workspace/chapter16_us_equities_panel/main.py", - # Legacy manual orchestrators require optional framework environments. + "validation/native/lean_project/main.py", + # Manual orchestrators require optional framework environments. "validation/benchmark_suite.py", "validation/run_all_benchmarks.py", "validation/run_full_validation.py", @@ -103,6 +104,9 @@ def test_ci_checks_every_release_validation_script() -> None: "validation/frameworks/vectorbt_oss.py", "validation/frameworks/vectorbt_pro.py", "validation/frameworks/zipline.py", + "validation/real_strategy_backtrader.py", + "validation/real_strategy_vectorbt.py", + "validation/real_strategy_zipline.py", } candidate_files = subprocess.run( [ diff --git a/tests/contracts/test_validation_cli_outcomes.py b/tests/contracts/test_validation_cli_outcomes.py index 70337b90..30dd1b24 100644 --- a/tests/contracts/test_validation_cli_outcomes.py +++ b/tests/contracts/test_validation_cli_outcomes.py @@ -112,6 +112,7 @@ def test_isolated_timeout_is_retained( assert record.status is ValidationStatus.TIMEOUT assert "7" in (record.detail or "") + assert record.duration_seconds is not None def test_isolated_subprocess_failure_without_record_is_retained( @@ -194,7 +195,7 @@ def test_release_gate_fails_for_every_non_optional_nonpass_status() -> None: assert run_all_correctness.release_gate_passed(records[:1]) is False -def test_unavailable_vectorbt_pro_matrix_cannot_report_sixteen_passes( +def test_unavailable_vectorbt_pro_matrix_cannot_report_all_passes( monkeypatch: pytest.MonkeyPatch, ) -> None: def unavailable(framework: str, scenario_id: str, **_kwargs) -> ValidationRecord: @@ -211,9 +212,9 @@ def unavailable(framework: str, scenario_id: str, **_kwargs) -> ValidationRecord records = run_all_correctness.run_all_validations(frameworks=["vectorbt_pro"]) summary = run_all_correctness.summarize(records) - assert len(records) == 16 + assert len(records) == 17 assert summary["pass"] == 0 - assert summary["unavailable"] == 16 + assert summary["unavailable"] == 17 assert run_all_correctness.release_gate_passed(records) is False @@ -239,4 +240,69 @@ def test_report_retains_framework_pins(tmp_path: Path) -> None: run_all_correctness.write_report(report_path, records) report = json.loads(report_path.read_text(encoding="utf-8")) + assert report["schema_version"] == 3 assert report["frameworks"] == run_all_correctness.FRAMEWORK_PINS + + +def _matrix_records(framework: str) -> list[ValidationRecord]: + return [ + ValidationRecord( + framework, + scenario_id, + scenario.name, + ( + ValidationStatus.PASS + if framework in scenario.supported_frameworks + else ValidationStatus.UNSUPPORTED + ), + framework in scenario.supported_frameworks, + ) + for scenario_id, scenario in run_all_correctness.SCENARIOS.items() + ] + + +def test_complete_public_matrices_match_declared_counts() -> None: + frameworks = ["vectorbt_oss", "backtrader", "zipline"] + records = [record for framework in frameworks for record in _matrix_records(framework)] + + failures = run_all_correctness.matrix_coverage_failures( + records, + frameworks, + list(run_all_correctness.SCENARIOS), + ) + + assert failures == [] + + +def test_matrix_coverage_rejects_an_omitted_pair() -> None: + records = _matrix_records("backtrader")[:-1] + + failures = run_all_correctness.matrix_coverage_failures( + records, + ["backtrader"], + list(run_all_correctness.SCENARIOS), + ) + + assert any("Missing matrix pairs" in failure for failure in failures) + assert any("required count differs" in failure for failure in failures) + + +def test_matrix_coverage_rejects_a_misclassified_pair() -> None: + records = _matrix_records("vectorbt_oss") + unsupported = next(record for record in records if not record.required) + records[records.index(unsupported)] = ValidationRecord( + unsupported.framework, + unsupported.scenario_id, + unsupported.scenario_name, + ValidationStatus.PASS, + True, + ) + + failures = run_all_correctness.matrix_coverage_failures( + records, + ["vectorbt_oss"], + list(run_all_correctness.SCENARIOS), + ) + + assert any("required count differs" in failure for failure in failures) + assert any("unsupported count differs" in failure for failure in failures) diff --git a/tests/contracts/test_validation_scenarios.py b/tests/contracts/test_validation_scenarios.py index 1090cb3f..d9c455fc 100644 --- a/tests/contracts/test_validation_scenarios.py +++ b/tests/contracts/test_validation_scenarios.py @@ -1,12 +1,12 @@ """Validation scenarios bridged into pytest CI. -Runs the 16 cross-framework validation scenarios through ml4t only +Runs the cross-framework validation scenarios through ml4t only (no external framework venvs required) and checks: 1. Each scenario runs without error and produces trades 2. Each scenario passes all accounting invariants 3. Smoke: final value is positive -This does NOT compare against external frameworks — that's the separate +This does NOT compare against external frameworks; that is the separate validation suite. This ensures ml4t scenarios don't regress. """ @@ -28,6 +28,7 @@ try: from common.data_generators import ( # noqa: E402 generate_bracket_data, + generate_high_event_data, generate_random_walk, generate_rule_combo_data, generate_short_signals, @@ -63,6 +64,7 @@ "generate_short_trending_data": generate_short_trending_data, "generate_rule_combo_data": generate_rule_combo_data, "generate_stress_data": generate_stress_data, + "generate_high_event_data": generate_high_event_data, } @@ -212,7 +214,7 @@ def on_data(self, timestamp, data, context, broker): return engine.run(), config -# Parameterize over all 16 scenarios +# Parameterize over all scenarios _SCENARIO_PARAMS = list(SCENARIOS.items()) if _HAS_VALIDATION else [] diff --git a/tests/contracts/test_vectorbt_native_evidence.py b/tests/contracts/test_vectorbt_native_evidence.py new file mode 100644 index 00000000..314a2183 --- /dev/null +++ b/tests/contracts/test_vectorbt_native_evidence.py @@ -0,0 +1,62 @@ +"""Contracts for retained framework-native VectorBT evidence.""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +_ROOT = Path(__file__).parents[2] +_ORACLE = _ROOT / "validation/native/vectorbt_behavior.py" +_EVIDENCE = _ROOT / "validation/native/evidence" + +EXPECTED_CHECKS = { + "accumulation", + "cash_sharing_and_call_sequence", + "cash_sharing_short_collateral", + "defaults", + "explicit_fill_price", + "fees_and_slippage", + "insufficient_cash_partial_fill", + "integer_signal_dtype", + "lock_notional_update_arithmetic", + "long_signal_conflict", + "missing_order_price", + "record_construction", + "short_cash", + "signal_timing_and_default_fill", + "stop_fill", + "target_percent_sizing", + "trailing_stop_extreme_and_intrabar_fill", +} + + +def test_retained_vectorbt_native_evidence_is_complete_and_current() -> None: + oracle_sha256 = hashlib.sha256(_ORACLE.read_bytes()).hexdigest() + identities = { + "vectorbt_oss-1.1.0.json": ( + "vectorbt_oss", + "1.1.0", + "259d2d89fe2e7638baf3ca76c394937cd32b656d", + ), + "vectorbt_pro-2026.6.27.json": ( + "vectorbt_pro", + "2026.6.27", + "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + ), + } + + for filename, (framework, version, commit) in identities.items(): + payload = json.loads((_EVIDENCE / filename).read_text(encoding="utf-8")) + assert payload["schema_version"] == 1 + assert payload["framework"] == framework + assert payload["version"] == version + assert payload["source_commit"] == commit + assert payload["oracle_sha256"] == oracle_sha256 + assert payload["passed"] is True + assert {check["id"] for check in payload["checks"]} == EXPECTED_CHECKS + assert all(check["passed"] for check in payload["checks"]) + assert all(check["actual"] == check["expected"] for check in payload["checks"]) + for location in payload["source_locations"].values(): + assert commit in location["source_url"] + assert location["path"].endswith("portfolio/base.py") diff --git a/tests/contracts/test_vectorbt_pro_adapter.py b/tests/contracts/test_vectorbt_pro_adapter.py index 8a96a40c..e07d9069 100644 --- a/tests/contracts/test_vectorbt_pro_adapter.py +++ b/tests/contracts/test_vectorbt_pro_adapter.py @@ -34,8 +34,8 @@ def _load_adapter(): def test_supported_vectorbt_pro_version_is_explicit() -> None: adapter = _load_adapter() - assert adapter.SUPPORTED_VECTORBT_PRO_VERSION == "2025.12.31" - adapter._require_supported_version("2025.12.31") + assert adapter.SUPPORTED_VECTORBT_PRO_VERSION == "2026.6.27" + adapter._require_supported_version("2026.6.27") def test_unsupported_vectorbt_pro_version_fails_precisely() -> None: @@ -43,7 +43,7 @@ def test_unsupported_vectorbt_pro_version_fails_precisely() -> None: with pytest.raises( RuntimeError, - match=r"requires version 2025\.12\.31, found 2026\.1\.1", + match=r"requires version 2026\.6\.27, found 2026\.1\.1", ): adapter._require_supported_version("2026.1.1") diff --git a/tests/contracts/test_zipline_native_evidence.py b/tests/contracts/test_zipline_native_evidence.py new file mode 100644 index 00000000..f3a00f91 --- /dev/null +++ b/tests/contracts/test_zipline_native_evidence.py @@ -0,0 +1,66 @@ +"""Contracts for retained native and configured Zipline evidence.""" + +from __future__ import annotations + +import hashlib +import json +import sys +from pathlib import Path + +_ROOT = Path(__file__).parents[2] +_VALIDATION = _ROOT / "validation" +if str(_VALIDATION) not in sys.path: + sys.path.insert(0, str(_VALIDATION)) + +from common.provenance import comparison_protocol_metadata # noqa: E402 +from scenarios.definitions import SCENARIOS # noqa: E402 + +_ORACLE = _ROOT / "validation/native/zipline_behavior.py" +_EVIDENCE = _ROOT / "validation/native/evidence/zipline-3.1.1.json" + +EXPECTED_CHECKS = { + "cash_and_short_proceeds", + "configured_next_bar_open_fill", + "default_next_bar_close_fill", + "defaults", + "explicit_minimum_commission", + "final_bar_market_order", + "integer_target_percent", + "missing_bar", + "session_calendar", + "submission_sequence", + "target_percent_snapshot", + "transaction_records_not_native_trades", + "volume_share_partial_fills", +} + + +def test_retained_zipline_native_evidence_is_complete_and_current() -> None: + payload = json.loads(_EVIDENCE.read_text(encoding="utf-8")) + + assert payload["schema_version"] == 1 + assert payload["framework"] == "zipline" + assert payload["package"] == "zipline-reloaded" + assert payload["version"] == "3.1.1" + assert payload["source_commit"] == "09885a2ebc7567d40942c891b3879dc03c745070" + assert payload["artifact"] == "zipline_reloaded-3.1.1.tar.gz" + assert payload["artifact_sha256"] == ( + "4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f" + ) + assert payload["oracle_sha256"] == hashlib.sha256(_ORACLE.read_bytes()).hexdigest() + assert payload["passed"] is True + assert {check["id"] for check in payload["checks"]} == EXPECTED_CHECKS + assert all(check["passed"] for check in payload["checks"]) + assert all(check["actual"] == check["expected"] for check in payload["checks"]) + for location in payload["source_locations"].values(): + assert location["artifact"] == payload["artifact"] + assert location["artifact_sha256"] == payload["artifact_sha256"] + assert payload["source_commit"] in location["source_url"] + + +def test_zipline_risk_scenarios_are_labeled_as_adapter_emulation() -> None: + for scenario in SCENARIOS.values(): + protocol = comparison_protocol_metadata(scenario, "zipline") + expected = "adapter_emulated_daily_ohlc" if scenario.risk_rules else "none" + assert protocol["risk_rules"] == expected + assert protocol["trade_records"] == "adapter_reconstructed_from_native_transactions" diff --git a/tests/execution/test_rebalancer.py b/tests/execution/test_rebalancer.py index 8990c828..639f3bff 100644 --- a/tests/execution/test_rebalancer.py +++ b/tests/execution/test_rebalancer.py @@ -9,7 +9,11 @@ Broker, OrderSide, ) -from ml4t.backtest.config import ExecutionPrice, RebalanceMode +from ml4t.backtest.config import ( + ExecutionPrice, + RebalanceMode, + ShareRounding, +) from ml4t.backtest.execution.rebalancer import RebalanceConfig, TargetWeightExecutor from ml4t.backtest.execution.schedule import RebalanceSchedule, resolve_rebalance_timestamps from ml4t.backtest.models import NoCommission, NoSlippage @@ -266,6 +270,19 @@ def test_fractional_shares(self, broker, sample_data): # Should be approximately 66.67 assert 66.6 < orders[0].quantity < 66.7 + def test_truncation_matches_target_percent_brokers(self, broker, sample_data): + executor = TargetWeightExecutor( + config=RebalanceConfig( + allow_fractional=False, + share_rounding=ShareRounding.TRUNCATE, + ) + ) + + orders = executor.execute({"AAPL": 0.1}, sample_data, broker) + + assert len(orders) == 1 + assert orders[0].quantity == 66 + def test_lot_rounding(self, broker, sample_data): """Test rounding to lot sizes.""" executor = TargetWeightExecutor(config=RebalanceConfig(round_lots=True, lot_size=100)) diff --git a/tests/test_calendar.py b/tests/test_calendar.py index a367ef77..0fbe411a 100644 --- a/tests/test_calendar.py +++ b/tests/test_calendar.py @@ -138,6 +138,10 @@ def test_is_trading_day_holiday(self): assert is_trading_day("NYSE", date(2024, 7, 4)) is False # Independence Day assert is_trading_day("NYSE", date(2024, 12, 25)) is False # Christmas + def test_cme_good_friday_early_close_is_a_session(self): + """CME equity futures traded an abbreviated session on Good Friday 2021.""" + assert is_trading_day("CME", date(2021, 4, 2)) is True + def test_is_trading_day_with_string(self): """Test with string date input.""" assert is_trading_day("NYSE", "2024-06-03") is True diff --git a/tests/test_config_wiring.py b/tests/test_config_wiring.py index 33994a18..03f8fa4e 100644 --- a/tests/test_config_wiring.py +++ b/tests/test_config_wiring.py @@ -25,6 +25,9 @@ EntryOrderPriority, ExecutionPrice, FillOrdering, + LateAssetPolicy, + LockNotionalUpdateMode, + MissingPricePolicy, ShareType, ShortCashPolicy, SlippageType, @@ -42,6 +45,7 @@ TieredCommission, VolumeShareSlippage, ) +from ml4t.backtest.profiles import get_profile_config from ml4t.backtest.types import OrderSide, Position # --------------------------------------------------------------------------- @@ -258,6 +262,132 @@ def test_next_bar_submission_precheck_uses_sequential_shadow_cash(self): assert first.status.value != "rejected" assert second.status.value == "rejected" + def test_lean_two_stage_buying_power_validation(self): + broker = _make_broker( + initial_cash=10_000.0, + execution_mode=ExecutionMode.NEXT_BAR, + next_bar_submission_precheck=True, + next_bar_queue_shadow_validation=True, + allow_short_selling=True, + allow_leverage=True, + initial_margin=0.5, + long_maintenance_margin=0.5, + short_maintenance_margin=0.5, + fill_ordering=FillOrdering.SEQUENTIAL, + share_type=ShareType.INTEGER, + reject_on_insufficient_cash=True, + ) + broker._update_time( + timestamp=datetime(2024, 1, 2), + prices={"AAPL": 100.0}, + opens={"AAPL": 100.0}, + volumes={"AAPL": 1_000.0}, + highs={"AAPL": 100.0}, + lows={"AAPL": 100.0}, + signals={}, + ) + + first = broker.submit_order("AAPL", 150, OrderSide.BUY) + second = broker.submit_order("AAPL", 150, OrderSide.BUY) + + assert first is not None and first.status.value == "pending" + assert second is not None and second.status.value == "pending" + + broker._update_time( + timestamp=datetime(2024, 1, 3), + prices={"AAPL": 110.0}, + opens={"AAPL": 110.0}, + volumes={"AAPL": 1_000.0}, + highs={"AAPL": 110.0}, + lows={"AAPL": 110.0}, + signals={}, + ) + broker._process_orders(use_open=True) + + assert first.status.value == "filled" + assert second.status.value == "rejected" + assert second.rejection_code == "insufficient_buying_power" + assert broker.get_position("AAPL").quantity == 150.0 + assert broker.cash == -6_500.0 + + def test_backtrader_precheck_rejects_unaffordable_short_cover(self): + broker = _make_broker( + initial_cash=100.0, + execution_mode=ExecutionMode.NEXT_BAR, + next_bar_submission_precheck=True, + next_bar_simple_cash_check=True, + share_type=ShareType.INTEGER, + reject_on_insufficient_cash=True, + ) + ts = datetime(2024, 1, 2) + _set_prices(broker, {"AAPL": 250.0}, ts=ts) + broker.cash = 200.0 + broker.positions["AAPL"] = Position( + asset="AAPL", + quantity=-1.0, + entry_price=100.0, + entry_time=ts, + current_price=250.0, + ) + + order = broker.submit_order("AAPL", 1, OrderSide.BUY) + + assert order is not None + assert order.status.value == "rejected" + assert order.rejection_code == "insufficient_cash" + + def test_backtrader_gap_reversal_executes_only_the_close_leg(self): + broker = _make_broker( + initial_cash=100.0, + execution_mode=ExecutionMode.NEXT_BAR, + next_bar_submission_precheck=True, + next_bar_simple_cash_check=True, + share_type=ShareType.INTEGER, + fill_ordering=FillOrdering.FIFO, + reject_on_insufficient_cash=True, + ) + broker._update_time( + timestamp=datetime(2024, 1, 1), + prices={"AAPL": 100.0}, + opens={"AAPL": 100.0}, + volumes={"AAPL": 1_000.0}, + highs={"AAPL": 100.0}, + lows={"AAPL": 100.0}, + signals={}, + ) + short_order = broker.submit_order("AAPL", 1, OrderSide.SELL) + + broker._update_time( + timestamp=datetime(2024, 1, 2), + prices={"AAPL": 90.0}, + opens={"AAPL": 100.0}, + volumes={"AAPL": 1_000.0}, + highs={"AAPL": 100.0}, + lows={"AAPL": 90.0}, + signals={}, + ) + broker._process_orders(use_open=True) + reversal = broker.submit_order("AAPL", 2, OrderSide.BUY) + + broker._update_time( + timestamp=datetime(2024, 1, 3), + prices={"AAPL": 250.0}, + opens={"AAPL": 250.0}, + volumes={"AAPL": 1_000.0}, + highs={"AAPL": 250.0}, + lows={"AAPL": 250.0}, + signals={}, + ) + broker._process_orders(use_open=True) + + assert short_order is not None + assert reversal is not None + assert [fill.quantity for fill in broker.fills] == [1.0, 1.0] + assert broker.get_position("AAPL") is None + assert broker.cash == -50.0 + assert reversal.requested_quantity == 2.0 + assert reversal.filled_quantity == 1.0 + def test_margin_submission_precheck_allows_reversal_after_close_proceeds(self): broker = _make_broker( initial_cash=1_000_000.0, @@ -398,22 +528,67 @@ def test_credit_proceeds_policy_allows_short_without_full_notional_cash(self): assert pos is not None assert pos.quantity == -10.0 - def test_vectorbt_strict_profile_sets_lock_notional(self): + def test_vectorbt_strict_profile_preserves_native_cash_semantics(self): config = BacktestConfig.from_preset("vectorbt_strict") assert config.short_cash_policy == ShortCashPolicy.LOCK_NOTIONAL assert config.fill_ordering == FillOrdering.FIFO + assert config.reject_on_insufficient_cash is True + assert config.partial_fills_allowed is True assert config.entry_order_priority == EntryOrderPriority.SUBMISSION + assert get_profile_config("vectorbt_strict") != get_profile_config("vectorbt") + + def test_vectorbt_oss_strict_uses_combined_order_cash_updates(self): + pro = BacktestConfig.from_preset("vectorbt_strict") + oss = BacktestConfig.from_preset("vectorbt_oss_strict") + + assert pro.lock_notional_update_mode is LockNotionalUpdateMode.POSITION_LEGS + assert oss.lock_notional_update_mode is LockNotionalUpdateMode.COMBINED_ORDER + + def test_lock_notional_update_modes_reproduce_native_cover_arithmetic(self): + initial_cash = 800_928.6801081297 + entry_price = 445.1764349947099 + short_quantity = 935.6511349828165 + cover_quantity = 822.3137995772428 + cover_price = 98.35685542114634 + + results = {} + for mode in LockNotionalUpdateMode: + broker = _make_broker( + initial_cash=initial_cash, + short_cash_policy=ShortCashPolicy.LOCK_NOTIONAL, + lock_notional_update_mode=mode, + share_type=ShareType.FRACTIONAL, + reject_on_insufficient_cash=True, + partial_fills_allowed=True, + ) + _set_prices(broker, {"A": entry_price}) + broker.submit_order("A", short_quantity, OrderSide.SELL) + broker._process_orders() + _set_prices(broker, {"A": cover_price}, ts=datetime(2024, 1, 2)) + broker.submit_order("A", cover_quantity, OrderSide.BUY) + broker._process_orders() + results[mode] = broker.account._lock_notional_free_cash + + assert results[LockNotionalUpdateMode.POSITION_LEGS] == 1_035_668.0954273958 + assert results[LockNotionalUpdateMode.COMBINED_ORDER] == 1_035_668.0954273955 def test_zipline_strict_profile_uses_credit(self): config = BacktestConfig.from_preset("zipline_strict") assert config.short_cash_policy == ShortCashPolicy.CREDIT assert config.allow_leverage is False assert config.skip_cash_validation is True + assert config.fill_ordering == FillOrdering.FIFO + assert config.reject_on_insufficient_cash is False + assert config.partial_fills_allowed is False + assert config.commission_type == CommissionType.NONE + assert config.slippage_type == SlippageType.NONE + assert get_profile_config("zipline_strict") == get_profile_config("zipline") def test_backtrader_strict_profile_enables_submission_precheck(self): config = BacktestConfig.from_preset("backtrader_strict") assert config.next_bar_submission_precheck is True assert config.next_bar_simple_cash_check is True + assert config.share_rounding.value == "truncate" def test_lean_profile_uses_margin_next_bar_open(self): config = BacktestConfig.from_preset("lean") @@ -491,6 +666,98 @@ def test_lock_notional_long_to_short_reversal_reuses_long_sale_proceeds(self): assert position is not None assert position.quantity == -10.0 + def test_lock_notional_partial_cover_releases_proportional_aggregate_basis(self): + initial_cash = 100_000.0 + first_qty = 13.436424411240122 + second_qty = 84.74337369372327 + first_price = 152.7549237953228 + second_price = 51.01380514788434 + covered = 48.64171682480172 + cover_price = 73.25 + broker = _make_broker( + initial_cash=initial_cash, + allow_short_selling=True, + allow_leverage=False, + short_cash_policy=ShortCashPolicy.LOCK_NOTIONAL, + share_type=ShareType.FRACTIONAL, + reject_on_insufficient_cash=True, + partial_fills_allowed=True, + ) + + _set_prices(broker, {"A": first_price}) + broker.submit_order("A", first_qty, OrderSide.SELL) + broker._process_orders() + _set_prices(broker, {"A": second_price}, ts=datetime(2024, 1, 2)) + broker.submit_order("A", second_qty, OrderSide.SELL) + broker._process_orders() + + aggregate_basis = first_qty * first_price + second_qty * second_price + total_qty = first_qty + second_qty + expected_before_cover = initial_cash - first_qty * first_price - second_qty * second_price + assert broker.account._lock_notional_short_basis["A"] == aggregate_basis + assert broker.account._lock_notional_free_cash == expected_before_cover + + _set_prices(broker, {"A": cover_price}, ts=datetime(2024, 1, 3)) + broker.submit_order("A", covered, OrderSide.BUY) + broker._process_orders() + + released_basis = (covered / total_qty) * aggregate_basis + expected_free_cash = expected_before_cover + ( + released_basis + released_basis - covered * cover_price + ) + remaining_fraction = (total_qty - covered) / total_qty + assert broker.account._lock_notional_free_cash == expected_free_cash + assert broker.account._lock_notional_short_basis["A"] == ( + remaining_fraction * aggregate_basis + ) + + def test_lock_notional_partial_fill_uses_direct_native_cash_quotient(self): + initial_cash = 20_697.596345718113 + price = 680.4559000307344 + broker = _make_broker( + initial_cash=initial_cash, + allow_short_selling=True, + allow_leverage=False, + short_cash_policy=ShortCashPolicy.LOCK_NOTIONAL, + share_type=ShareType.FRACTIONAL, + reject_on_insufficient_cash=True, + partial_fills_allowed=True, + ) + _set_prices(broker, {"A": price}) + + broker.submit_order("A", 100.0, OrderSide.SELL) + broker._process_orders() + + assert broker.fills[0].quantity == initial_cash / price + + def test_lock_notional_partial_reversal_retains_native_open_leg_quantity(self): + initial_cash = 8_837.873808549472 + short_price = 88.37873808549472 + reversal_price = 90.0615227583623 + broker = _make_broker( + initial_cash=initial_cash, + allow_short_selling=True, + allow_leverage=False, + short_cash_policy=ShortCashPolicy.LOCK_NOTIONAL, + share_type=ShareType.FRACTIONAL, + reject_on_insufficient_cash=True, + partial_fills_allowed=True, + ) + _set_prices(broker, {"A": short_price}) + broker.submit_order("A", 100.0, OrderSide.SELL) + broker._process_orders() + + _set_prices(broker, {"A": reversal_price}, ts=datetime(2024, 1, 2)) + broker.submit_order("A", 200.0, OrderSide.BUY) + broker._process_orders() + + free_after_cover = initial_cash * 2.0 - 100.0 * reversal_price + expected_open_quantity = free_after_cover / reversal_price + position = broker.get_position("A") + assert position is not None + assert position.quantity == expected_open_quantity + assert position.quantity != broker.fills[-1].quantity - 100.0 + # --------------------------------------------------------------------------- # partial_fills_allowed @@ -865,6 +1132,12 @@ def test_backtrader_preset_values(self): assert config.share_type == ShareType.INTEGER assert config.fill_ordering == FillOrdering.FIFO assert config.reject_on_insufficient_cash is True + assert config.allow_leverage is False + assert config.commission_type == CommissionType.NONE + assert config.slippage_type == SlippageType.NONE + assert config.missing_price_policy == MissingPricePolicy.USE_LAST + assert config.late_asset_policy == LateAssetPolicy.ALLOW + assert config.late_asset_min_bars == 1 def test_vectorbt_preset_values(self): config = BacktestConfig.from_preset("vectorbt") @@ -872,6 +1145,7 @@ def test_vectorbt_preset_values(self): assert config.fill_ordering == FillOrdering.EXIT_FIRST assert config.reject_on_insufficient_cash is False assert config.partial_fills_allowed is True + assert config.missing_price_policy == MissingPricePolicy.SKIP def test_realistic_preset_values(self): config = BacktestConfig.from_preset("realistic") @@ -881,9 +1155,17 @@ def test_realistic_preset_values(self): def test_lean_preset_values(self): config = BacktestConfig.from_preset("lean") assert config.share_type == ShareType.INTEGER - assert config.fill_ordering == FillOrdering.EXIT_FIRST + assert config.fill_ordering == FillOrdering.SEQUENTIAL + assert config.rebalance_headroom_pct == 0.9975 + assert config.slippage_type == SlippageType.NONE + assert config.next_bar_submission_precheck is True assert config.next_bar_queue_shadow_validation is True + def test_zipline_preset_does_not_apply_buying_power_validation(self): + config = BacktestConfig.from_preset("zipline_strict") + assert config.skip_cash_validation is True + assert config.next_bar_queue_shadow_validation is False + def test_ibkr_us_stocks_fixed_preset_values(self): config = BacktestConfig.from_preset("ibkr_us_stocks_fixed") assert config.share_type == ShareType.INTEGER diff --git a/uv.lock b/uv.lock index 7c772815..e0ecbd45 100644 --- a/uv.lock +++ b/uv.lock @@ -735,7 +735,7 @@ wheels = [ [[package]] name = "exchange-calendars" -version = "4.11.3" +version = "4.13.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "korean-lunar-calendar" }, @@ -746,9 +746,9 @@ dependencies = [ { name = "toolz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fa/14/a9de4bb3b86ce661d33b9d862562eba6aad2ade629a0a821627604a108b5/exchange_calendars-4.11.3.tar.gz", hash = "sha256:53a8f68f86edaf265b0b20cb3641ce34c4b9205b039b0a50f36fc99d114b77bd", size = 4090661, upload-time = "2025-11-10T14:44:16.009Z" } +sdist = { url = "https://files.pythonhosted.org/packages/47/73/460b0ece4e7444e3098b7738974c822787e134578d069d3a88b4be17d50a/exchange_calendars-4.13.2.tar.gz", hash = "sha256:a9459425dd64142cd54fbc639847403c7e0c33d60fbc326c94fc1d6bd127f002", size = 4137321, upload-time = "2026-03-10T03:24:38.536Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/dd/b30915627128b388c235ee047ca721a40a4960e8b55ea9fa4a005466774b/exchange_calendars-4.11.3-py3-none-any.whl", hash = "sha256:c40d9f1b50238f578f9f8c772aa895533ab03db4910da43825ca59f7ebd9e82f", size = 209667, upload-time = "2025-11-10T14:44:14.694Z" }, + { url = "https://files.pythonhosted.org/packages/c8/4c/0469b40057bc9f8d9594dcc6024202626b981ae4b52dfcd304552e8e1c3a/exchange_calendars-4.13.2-py3-none-any.whl", hash = "sha256:fc5a2ad0d61b5c3a6539a3061cd4cbb55c59f4a903455cec7926e4b798919996", size = 213306, upload-time = "2026-03-10T03:24:37.055Z" }, ] [[package]] @@ -1908,7 +1908,7 @@ requires-dist = [ { name = "numpy", specifier = ">=2.3.2" }, { name = "pandas", marker = "python_full_version < '3.15'", specifier = ">=2.3.3" }, { name = "pandas", marker = "python_full_version >= '3.15'", specifier = ">=3.0.5" }, - { name = "pandas-market-calendars", specifier = ">=5.2.4" }, + { name = "pandas-market-calendars", specifier = ">=5.4.0" }, { name = "plotly", marker = "extra == 'all'", specifier = ">=5.15.0" }, { name = "plotly", marker = "extra == 'viz'", specifier = ">=5.15.0" }, { name = "polars", specifier = ">=1.36.1" }, @@ -2594,16 +2594,16 @@ wheels = [ [[package]] name = "pandas-market-calendars" -version = "5.2.4" +version = "5.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exchange-calendars" }, { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.15'" }, { name = "pandas", version = "3.0.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.15'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/86/3f6f1325dbbd948150e683aa9735c34493954b525c1efd453c47beb46f9c/pandas_market_calendars-5.2.4.tar.gz", hash = "sha256:7cbb7de0e1652f08db4d5185f9429486fd3a6e050c4fc8d1f51a5eaad2fabdb0", size = 162701, upload-time = "2026-01-07T12:50:33.48Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/4c/98067cb91b37a137389f978f52410975915268d394c09cf941c490565297/pandas_market_calendars-5.4.0.tar.gz", hash = "sha256:b02f3a0e9bcb4b9e82a5060bf260ef0060ccd398f989b5e6f8208f4352967806", size = 175213, upload-time = "2026-05-27T02:42:05.249Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/de/f9940c57937720f07f5cd3acf4b4e1208520e1321ed5576d928121e2dae3/pandas_market_calendars-5.2.4-py3-none-any.whl", hash = "sha256:82998eeaed52a554d88ca98c2ff799c329d72c77630502ced74487a951bb2e86", size = 127819, upload-time = "2026-01-07T12:50:34.614Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d3/59b999f7f6a1d173572d3e8f8b07ded7e256c691d02b3b5cacb26479895a/pandas_market_calendars-5.4.0-py3-none-any.whl", hash = "sha256:bb2b93b28d496cab173b41c7d120fd5cd9d506b31f3bb0ad3d1d9f2b60d9d9e3", size = 134904, upload-time = "2026-05-27T02:42:06.35Z" }, ] [[package]] diff --git a/validation/CORRECTNESS_RESULTS.json b/validation/CORRECTNESS_RESULTS.json index d5f14833..d9042112 100644 --- a/validation/CORRECTNESS_RESULTS.json +++ b/validation/CORRECTNESS_RESULTS.json @@ -1,40 +1,1394 @@ { + "comparison_policy": { + "canonical_quantum": "0.00000001", + "meaning": "equality after canonical quantization, not bit identity", + "record_order": "significant", + "rounding": "ROUND_HALF_EVEN", + "surfaces": [ + "terminal", + "closed_trades", + "fills" + ], + "timestamp_domain": "daily session date" + }, "frameworks": { "backtrader": { + "access": "public", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", "package": "backtrader", "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", "source": "https://pypi.org/project/backtrader/1.9.78.123/", "version": "1.9.78.123" }, "vectorbt_oss": { + "access": "public", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", "package": "vectorbt", - "profile": "vectorbt", - "source": "https://pypi.org/project/vectorbt/0.28.2/", - "version": "0.28.2" + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" }, "vectorbt_pro": { - "commit": "1305a1e1974325db9382eaeacc6452e9b075ca71", + "access": "licensed", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", "package": "vectorbtpro", "profile": "vectorbt_strict", + "python": ">=3.11", "source": "https://github.com/polakowo/vectorbt.pro", - "version": "2025.12.31" + "version": "2026.6.27" }, "zipline": { + "access": "public", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", "package": "zipline-reloaded", "profile": "zipline_strict", + "python": ">=3.10", "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", "version": "3.1.1" } }, - "generated_at": "2026-08-08T12:20:05.088761+00:00", + "generated_at": "2026-08-14T19:54:35.713047+00:00", "records": [ { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT Pro=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98778.90186467487, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 98778.90186467487, + "message": "VectorBT Pro=$98,778.9018646749, ML4T=$98,778.9018646749 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1221.0981353251263, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -1221.0981353251263, + "message": "VectorBT Pro=$-1,221.0981353251, ML4T=$-1,221.0981353251 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078753465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.418378739706, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078745507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.41837873970593, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "01" + }, "detail": null, + "duration_seconds": 2.5833668319974095, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98778.90186467487, + "framework": "VectorBT Pro", + "num_trades": 10, + "total_pnl": -1221.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078745507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.41837873970593, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98778.90186467487, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1221.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078753465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.418378739706, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d34babef0534a871f927ab6553a49d7b7e35a03283516b1741835d49381d2e0d" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "01", @@ -42,8 +1396,1329 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT Pro=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98778.90186467487, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 98778.90186467487, + "message": "VectorBT Pro=$98,778.9018646749, ML4T=$98,778.9018646749 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1221.0981353251263, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -1221.0981353251263, + "message": "VectorBT Pro=$-1,221.0981353251, ML4T=$-1,221.0981353251 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078753465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.418378739706, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078745507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.41837873970593, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "02" + }, "detail": null, + "duration_seconds": 2.5786483350675553, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98778.90186467487, + "framework": "VectorBT Pro", + "num_trades": 10, + "total_pnl": -1221.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078745507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.41837873970593, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98778.90186467487, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1221.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078753465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.418378739706, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "be4345288348f6a276f38cb4a364261003c925cddc5d9423b667fb82c34cff1b", + "scenario": "7db3751b770b7369c40f6b31fc757e7949b07dd5b56430e7226dc8db7d444e38" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "02", @@ -51,8 +2726,317 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT Pro=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99500.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99500.0, + "message": "VectorBT Pro=$99,500.0000000000, ML4T=$99,500.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -500.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": -500.0, + "message": "VectorBT Pro=$-500.0000000000, ML4T=$-500.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 95.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 95.0, + "message": "VectorBT Pro=$95.0000000000, ML4T=$95.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "exit_price", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-07T00:00:00", + "pnl": -500.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-07T00:00:00", + "pnl": -500.0, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "03" + }, "detail": null, + "duration_seconds": 2.637149689020589, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 95.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "final_value": 99500.0, + "framework": "VectorBT Pro", + "num_trades": 1, + "total_pnl": -500.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-07T00:00:00", + "pnl": -500.0, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 95.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "final_value": 99500.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -500.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-07T00:00:00", + "pnl": -500.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "9de5c47a372a7ab97c36bfaa81bb522deb6a4ea2c77f8ecd01945d92b7dc61c5", + "scenario": "ad7292cedc685fa6c10032a0574f3e5da89b81dbb0f3a312cc2f5d83f5b454a1" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "c450f8db901151f953d81b05845db8cad686ca7c619cfe7e881485a2228972a7", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 20, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "03", @@ -60,8 +3044,317 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT Pro=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 101050.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 101050.0, + "message": "VectorBT Pro=$101,050.0000000000, ML4T=$101,050.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1050.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 1050.0, + "message": "VectorBT Pro=$1,050.0000000000, ML4T=$1,050.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 110.5, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 110.5, + "message": "VectorBT Pro=$110.5000000000, ML4T=$110.5000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "exit_price", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 110.5, + "exit_reason": "take_profit", + "exit_time": "2020-01-08T00:00:00", + "pnl": 1050.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 110.5, + "exit_time": "2020-01-08T00:00:00", + "pnl": 1050.0, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "04" + }, "detail": null, + "duration_seconds": 2.465967547148466, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 110.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "final_value": 101050.0, + "framework": "VectorBT Pro", + "num_trades": 1, + "total_pnl": 1050.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 110.5, + "exit_time": "2020-01-08T00:00:00", + "pnl": 1050.0, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 110.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "final_value": 101050.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": 1050.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 110.5, + "exit_reason": "take_profit", + "exit_time": "2020-01-08T00:00:00", + "pnl": 1050.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "9de5c47a372a7ab97c36bfaa81bb522deb6a4ea2c77f8ecd01945d92b7dc61c5", + "scenario": "2dea68c3a9472e95c15e7238928919fe01b4e63bfd3a14a5a9666ea89b86cc41" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "d62c3c2d015f1ead6bff9d1d3ed7e92b396ddf9e4f7c808cf3ebe3eb7ae7491b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 20, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "04", @@ -69,8 +3362,1343 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT Pro=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98602.0173051621, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 2.9103830456733704e-11, + "expected": 98602.01730516207, + "message": "VectorBT Pro=$98,602.0173051621, ML4T=$98,602.0173051621 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1397.982694837905, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 2.9103830456733704e-11, + "expected": -1397.982694837934, + "message": "VectorBT Pro=$-1,397.9826948379, ML4T=$-1,397.9826948379 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 176.8845595128108, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 176.8845595128108, + "message": "VectorBT Pro=$176.8845595128, ML4T=$176.8845595128 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_commission", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 20.520625856289048, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.4293932491613, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.755514964906304, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.85097338901531, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258532, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.719133464042915, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.104291559917314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.634073322502488, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.0483236286091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.313187988243484, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.40151852929084, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.896961297414983, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.51592532720605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.33417359656284, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688687495, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.458397104542577, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442486, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 20.520625856289048, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.4293932491612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.755514964906304, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663618, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.85097338901531, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258533, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.719133464042915, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155991686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.634073322502488, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362860884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.313187988243484, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.3155341196167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.40151852929084, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.896961297414983, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.5159253272056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.33417359656284, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688688291, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.458397104542577, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442485, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 10.099837918591799, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.420787937697249, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.836596400103879, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.918918564802423, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.615521769776073, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.235451619239235, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.825655019509478, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.893478444533438, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.520243786404297, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.11382953609819, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.033279633067812, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.279908355175671, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.226955248250814, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.174563281040026, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.34127420539518, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.555687092019802, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.166557101327484, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.16761649523536, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.386907741641142, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.071489362901437, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 10.099837918591799, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.420787937697249, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.836596400103879, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.918918564802423, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.615521769776073, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.235451619239235, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.825655019509478, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.893478444533438, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.520243786404297, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.11382953609819, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.033279633067812, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.279908355175671, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.226955248250814, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.174563281040026, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.34127420539518, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.555687092019802, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.166557101327484, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.16761649523536, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.386907741641142, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.071489362901437, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "05" + }, "detail": null, + "duration_seconds": 2.628178286133334, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 176.8845595128108 + }, + "fills": [ + { + "asset": "TEST", + "commission": 10.099837918591799, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.420787937697249, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.836596400103879, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.918918564802423, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.615521769776073, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.235451619239235, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.825655019509478, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.893478444533438, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.520243786404297, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.11382953609819, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.033279633067812, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.279908355175671, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.226955248250814, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.174563281040026, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.34127420539518, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.555687092019802, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.166557101327484, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.16761649523536, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.386907741641142, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.071489362901437, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98602.01730516207, + "framework": "VectorBT Pro", + "num_trades": 10, + "total_pnl": -1397.982694837934, + "trades": [ + { + "asset": "TEST", + "commission": 20.520625856289048, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.4293932491612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.755514964906304, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663618, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.85097338901531, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258533, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.719133464042915, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155991686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.634073322502488, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362860884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.313187988243484, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.3155341196167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.40151852929084, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.896961297414983, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.5159253272056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.33417359656284, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688688291, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.458397104542577, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442485, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 176.8845595128108 + }, + "fills": [ + { + "asset": "TEST", + "commission": 10.099837918591799, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.420787937697249, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.836596400103879, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.918918564802423, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.615521769776073, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.235451619239235, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.825655019509478, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.893478444533438, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.520243786404297, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.11382953609819, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.033279633067812, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.279908355175671, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.226955248250814, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.174563281040026, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.34127420539518, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.555687092019802, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.166557101327484, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.16761649523536, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.386907741641142, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.071489362901437, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98602.0173051621, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1397.982694837905, + "trades": [ + { + "asset": "TEST", + "commission": 20.520625856289048, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.4293932491613, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.755514964906304, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.85097338901531, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258532, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.719133464042915, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.104291559917314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.634073322502488, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.0483236286091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.313187988243484, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.40151852929084, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.896961297414983, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.51592532720605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.33417359656284, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688687495, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.458397104542577, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442486, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "93f5ba4a70377e12f472819a04fbceabb1a44df86108f5feed401a8499bd7b88" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "05", @@ -78,8 +4706,1343 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT Pro=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98768.90186467487, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 98768.90186467487, + "message": "VectorBT Pro=$98,768.9018646749, ML4T=$98,768.9018646749 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1231.0981353251263, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -1231.0981353251263, + "message": "VectorBT Pro=$-1,231.0981353251, ML4T=$-1,231.0981353251 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 10.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 10.0, + "message": "VectorBT Pro=$10.0000000000, ML4T=$10.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_commission", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 319.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -918.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -381.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 66.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -407.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 245.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -53.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 213.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 0.059393907875346486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -316.418378739706, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 319.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -918.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -381.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 66.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -407.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 245.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -53.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 213.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 0.05939390787455068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -316.41837873970593, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.5, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "06" + }, "detail": null, + "duration_seconds": 2.563997716875747, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 10.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.5, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98768.90186467487, + "framework": "VectorBT Pro", + "num_trades": 10, + "total_pnl": -1231.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 319.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -918.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -381.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 66.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -407.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 245.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -53.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 213.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 0.05939390787455068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -316.41837873970593, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 10.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98768.90186467487, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1231.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 319.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -918.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -381.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 66.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -407.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 245.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -53.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 213.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 0.059393907875346486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -316.418378739706, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "523af2137e8233ef65d03ffb841e91525f65f7c3057b3111e86aedbf0a973fb7" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "06", @@ -87,8 +6050,1329 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT Pro=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98758.88423767696, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.4551915228366852e-11, + "expected": 98758.88423767698, + "message": "VectorBT Pro=$98,758.8842376770, ML4T=$98,758.8842376770 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1241.1157623230392, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 1.4551915228366852e-11, + "expected": -1241.1157623230247, + "message": "VectorBT Pro=$-1,241.1157623230, ML4T=$-1,241.1157623230 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.0098089448947, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.19608640609162, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 318.62774611969144, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.37822753298649, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.17796063140325, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -920.0266901583236, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.1660993670657, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.344064639912, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -382.20347271536775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.26653798999779, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.92471989618961, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 65.81819061918395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.2120800319358, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.12911312293775, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -408.29669089980507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.34188741221216, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.78971336605554, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 244.78259538433667, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.27886274237149, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.73638184134556, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -54.24809010259287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.42218168600282, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.5471886419149, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 212.50069559120857, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.67481292191637, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.66692184481985, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -0.7891077096519439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.87856869090707, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.70575930639009, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -317.2809384516977, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.00980894489471, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.19608640609162, + "exit_time": "2020-01-07T00:00:00", + "pnl": 318.62774611969087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.3782275329865, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.17796063140325, + "exit_time": "2020-01-17T00:00:00", + "pnl": -920.0266901583248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.16609936706568, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.34406463991202, + "exit_time": "2020-01-27T00:00:00", + "pnl": -382.2034727153664, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.2665379899978, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.92471989618963, + "exit_time": "2020-02-06T00:00:00", + "pnl": 65.81819061918281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.21208003193583, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.12911312293775, + "exit_time": "2020-02-16T00:00:00", + "pnl": -408.2966908998074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.34188741221216, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.78971336605554, + "exit_time": "2020-02-26T00:00:00", + "pnl": 244.78259538433775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.27886274237149, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.73638184134556, + "exit_time": "2020-03-07T00:00:00", + "pnl": -54.24809010259253, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.42218168600283, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.5471886419149, + "exit_time": "2020-03-17T00:00:00", + "pnl": 212.50069559120703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.67481292191637, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.66692184481985, + "exit_time": "2020-03-27T00:00:00", + "pnl": -0.7891077096516597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.87856869090707, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.70575930639009, + "exit_time": "2020-04-06T00:00:00", + "pnl": -317.2809384516981, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.0098089448947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.19608640609162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.37822753298649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.17796063140325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.1660993670657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.344064639912, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.26653798999779, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.92471989618961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.2120800319358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.12911312293775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.34188741221216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.78971336605554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.27886274237149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.73638184134556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.42218168600282, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.5471886419149, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.67481292191637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66692184481985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.87856869090707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.70575930639009, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.00980894489471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.19608640609162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.3782275329865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17796063140325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.1660993670657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.34406463991202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.2665379899978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.92471989618963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.21208003193581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.12911312293775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.34188741221216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.78971336605554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.27886274237149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.73638184134556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.42218168600283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.5471886419149, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67481292191637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66692184481985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.87856869090707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.70575930639009, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "07" + }, "detail": null, + "duration_seconds": 2.4722915049642324, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.00980894489471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.19608640609162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.3782275329865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17796063140325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.1660993670657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.34406463991202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.2665379899978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.92471989618963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.21208003193581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.12911312293775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.34188741221216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.78971336605554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.27886274237149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.73638184134556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.42218168600283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.5471886419149, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67481292191637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66692184481985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.87856869090707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.70575930639009, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98758.88423767698, + "framework": "VectorBT Pro", + "num_trades": 10, + "total_pnl": -1241.1157623230247, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.00980894489471, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.19608640609162, + "exit_time": "2020-01-07T00:00:00", + "pnl": 318.62774611969087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.3782275329865, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.17796063140325, + "exit_time": "2020-01-17T00:00:00", + "pnl": -920.0266901583248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.16609936706568, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.34406463991202, + "exit_time": "2020-01-27T00:00:00", + "pnl": -382.2034727153664, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.2665379899978, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.92471989618963, + "exit_time": "2020-02-06T00:00:00", + "pnl": 65.81819061918281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.21208003193583, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.12911312293775, + "exit_time": "2020-02-16T00:00:00", + "pnl": -408.2966908998074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.34188741221216, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.78971336605554, + "exit_time": "2020-02-26T00:00:00", + "pnl": 244.78259538433775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.27886274237149, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.73638184134556, + "exit_time": "2020-03-07T00:00:00", + "pnl": -54.24809010259253, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.42218168600283, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.5471886419149, + "exit_time": "2020-03-17T00:00:00", + "pnl": 212.50069559120703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.67481292191637, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.66692184481985, + "exit_time": "2020-03-27T00:00:00", + "pnl": -0.7891077096516597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.87856869090707, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.70575930639009, + "exit_time": "2020-04-06T00:00:00", + "pnl": -317.2809384516981, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.0098089448947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.19608640609162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.37822753298649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.17796063140325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.1660993670657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.344064639912, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.26653798999779, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.92471989618961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.2120800319358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.12911312293775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.34188741221216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.78971336605554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.27886274237149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.73638184134556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.42218168600282, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.5471886419149, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.67481292191637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66692184481985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.87856869090707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.70575930639009, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98758.88423767696, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1241.1157623230392, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.0098089448947, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.19608640609162, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 318.62774611969144, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.37822753298649, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.17796063140325, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -920.0266901583236, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.1660993670657, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.344064639912, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -382.20347271536775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.26653798999779, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.92471989618961, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 65.81819061918395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.2120800319358, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.12911312293775, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -408.29669089980507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.34188741221216, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.78971336605554, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 244.78259538433667, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.27886274237149, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.73638184134556, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -54.24809010259287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.42218168600282, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.5471886419149, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 212.50069559120857, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.67481292191637, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.66692184481985, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -0.7891077096519439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.87856869090707, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.70575930639009, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -317.2809384516977, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "0eee68a74bb2c999c23582d129c81e91ad51b48af637e051507f8a40979c2871" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "07", @@ -96,8 +7380,1329 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT Pro=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98602.01730516205, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.4551915228366852e-11, + "expected": 98602.01730516207, + "message": "VectorBT Pro=$98,602.0173051621, ML4T=$98,602.0173051621 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1397.9826948379487, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 1.4551915228366852e-11, + "expected": -1397.982694837934, + "message": "VectorBT Pro=$-1,397.9826948379, ML4T=$-1,397.9826948379 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.09937756510391, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.10367149759551, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.42939324916006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.47432996503983, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.0899964623762, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.433350266363, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.25137291545848, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.26216167619997, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.92112392585113, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.34480674528986, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.84584966088904, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155991915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.287640301907, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.05715706562091, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.41312912700879, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.71628446820495, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961522, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.35182203499065, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.66388717758986, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007963, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.49615479600575, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.47131404927781, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.51592532720497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.74723658428812, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.59448878740123, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688688795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.95294649382782, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.63417873538535, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442473, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.0993775651039, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.10367149759551, + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.42939324916205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.47432996503981, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.0899964623762, + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.25137291545848, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.26216167619997, + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258509, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.34480674528984, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.84584966088904, + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.28764030190699, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.05715706562091, + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362860765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.41312912700877, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.71628446820495, + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961738, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.35182203499063, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.66388717758986, + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.49615479600574, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.47131404927781, + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.5159253272068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.7472365842881, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.59448878740123, + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.27477968868709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.95294649382782, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.63417873538535, + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442476, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.09937756510391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.10367149759551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.47432996503983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0899964623762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.25137291545848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.26216167619997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.34480674528986, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.84584966088904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.287640301907, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.05715706562091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.41312912700879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.71628446820495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.35182203499065, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66388717758986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.49615479600575, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.47131404927781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.74723658428812, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.59448878740123, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.95294649382782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.63417873538535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.0993775651039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.10367149759551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.47432996503981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0899964623762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.25137291545848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.26216167619997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.34480674528984, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.84584966088904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.28764030190699, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.05715706562091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.41312912700877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.71628446820495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.35182203499063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66388717758986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.49615479600574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.47131404927781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.7472365842881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.59448878740123, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.95294649382782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.63417873538535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "08" + }, "detail": null, + "duration_seconds": 2.507237384095788, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.0993775651039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.10367149759551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.47432996503981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0899964623762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.25137291545848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.26216167619997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.34480674528984, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.84584966088904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.28764030190699, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.05715706562091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.41312912700877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.71628446820495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.35182203499063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66388717758986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.49615479600574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.47131404927781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.7472365842881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.59448878740123, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.95294649382782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.63417873538535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98602.01730516207, + "framework": "VectorBT Pro", + "num_trades": 10, + "total_pnl": -1397.982694837934, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.0993775651039, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.10367149759551, + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.42939324916205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.47432996503981, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.0899964623762, + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.25137291545848, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.26216167619997, + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258509, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.34480674528984, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.84584966088904, + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.28764030190699, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.05715706562091, + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362860765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.41312912700877, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.71628446820495, + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961738, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.35182203499063, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.66388717758986, + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.49615479600574, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.47131404927781, + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.5159253272068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.7472365842881, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.59448878740123, + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.27477968868709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.95294649382782, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.63417873538535, + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442476, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.09937756510391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.10367149759551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.47432996503983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0899964623762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.25137291545848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.26216167619997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.34480674528986, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.84584966088904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.287640301907, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.05715706562091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.41312912700879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.71628446820495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.35182203499065, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66388717758986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.49615479600575, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.47131404927781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.74723658428812, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.59448878740123, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.95294649382782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.63417873538535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98602.01730516205, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1397.9826948379487, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.09937756510391, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.10367149759551, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.42939324916006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.47432996503983, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.0899964623762, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.433350266363, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.25137291545848, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.26216167619997, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.92112392585113, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.34480674528986, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.84584966088904, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155991915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.287640301907, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.05715706562091, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.41312912700879, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.71628446820495, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961522, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.35182203499065, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.66388717758986, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007963, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.49615479600575, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.47131404927781, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.51592532720497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.74723658428812, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.59448878740123, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688688795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.95294649382782, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.63417873538535, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442473, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d2d36326d5a7ec88f577088205574b8a9f6dab9661ed6813d190c138c4c8208f" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "08", @@ -105,8 +8710,417 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 2, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 2, + "message": "VectorBT Pro=2, ML4T=2, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 100363.84268834148, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.5, + "difference": 0.0, + "expected": 100363.84268834148, + "message": "VectorBT Pro=$100,363.8426883415, ML4T=$100,363.8426883415 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.5%)", + "name": "final_value", + "passed": true + }, + { + "actual": 363.8426883414795, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 50.0, + "difference": 0.0, + "expected": 363.8426883414795, + "message": "VectorBT Pro=$363.8426883415, ML4T=$363.8426883415 (exact_diff=$0.0000000000; diagnostic_limit=$50.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.29858222929766, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-02T00:00:00", + "pnl": 429.85822292976627, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.37355416326918, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 96.71339881738633, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.01553458828494, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.29858222929766, + "exit_time": "2020-02-02T00:00:00", + "pnl": 429.8582229297665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.37355416326918, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 96.71339881738633, + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.0155345882842, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.37355416326918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.71339881738633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.37355416326918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.71339881738633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "09" + }, "detail": null, + "duration_seconds": 2.585157000925392, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.37355416326918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.71339881738633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 100363.84268834148, + "framework": "VectorBT Pro", + "num_trades": 2, + "total_pnl": 363.8426883414795, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.29858222929766, + "exit_time": "2020-02-02T00:00:00", + "pnl": 429.8582229297665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.37355416326918, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 96.71339881738633, + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.0155345882842, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.37355416326918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.71339881738633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 100363.84268834148, + "framework": "ml4t.backtest", + "num_trades": 2, + "total_pnl": 363.8426883414795, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.29858222929766, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-02T00:00:00", + "pnl": 429.85822292976627, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.37355416326918, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 96.71339881738633, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.01553458828494, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "71cd4215e29c1c85892b66ea019173b0f05f6dbf1b5c03eb2b9a436c4259cae3", + "scenario": "80d8dea99e845ad7f708cc42fb94f66feababcf8b6814e3096300af1f4b709c2" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "0ab00a6cfc6f76a1d74f0617186a4d5c95d27cb4fd62bd5c535b3b191965369d", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 2, + "exit_signals": 0, + "framework_closed_trades": 2, + "framework_fills": 4, + "framework_intents": 2, + "framework_orders": null, + "ml4t_closed_trades": 2, + "ml4t_fills": 4, + "ml4t_intents": 2, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "09", @@ -114,8 +9128,531 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 3, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 3, + "message": "VectorBT Pro=3, ML4T=3, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99854.35332614176, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.5, + "difference": 1.4551915228366852e-11, + "expected": 99854.35332614178, + "message": "VectorBT Pro=$99,854.3533261418, ML4T=$99,854.3533261418 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.5%)", + "name": "final_value", + "passed": true + }, + { + "actual": -145.6466738582385, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 50.0, + "difference": 1.4551915228366852e-11, + "expected": -145.64667385822395, + "message": "VectorBT Pro=$-145.6466738582, ML4T=$-145.6466738582 (exact_diff=$0.0000000000; diagnostic_limit=$50.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-15T00:00:00", + "pnl": -500.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36277380567032, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 100.49905118623735, + "exit_reason": "take_profit", + "exit_time": "2020-02-12T00:00:00", + "pnl": 913.6277380567044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.22663864471447, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 96.63389452556515, + "exit_reason": "stop_loss", + "exit_time": "2020-03-06T00:00:00", + "pnl": -559.274411914932, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-15T00:00:00", + "pnl": -500.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36277380567032, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 100.49905118623735, + "exit_time": "2020-02-12T00:00:00", + "pnl": 913.6277380567037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.22663864471447, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 96.63389452556515, + "exit_time": "2020-03-06T00:00:00", + "pnl": -559.2744119149315, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.36277380567032, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 102.22663864471447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36277380567032, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 102.22663864471447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "10" + }, "detail": null, + "duration_seconds": 2.4881120228674263, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36277380567032, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 102.22663864471447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "final_value": 99854.35332614178, + "framework": "VectorBT Pro", + "num_trades": 3, + "total_pnl": -145.64667385822395, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-15T00:00:00", + "pnl": -500.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36277380567032, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 100.49905118623735, + "exit_time": "2020-02-12T00:00:00", + "pnl": 913.6277380567037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.22663864471447, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 96.63389452556515, + "exit_time": "2020-03-06T00:00:00", + "pnl": -559.2744119149315, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.36277380567032, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 102.22663864471447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "final_value": 99854.35332614176, + "framework": "ml4t.backtest", + "num_trades": 3, + "total_pnl": -145.6466738582385, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-15T00:00:00", + "pnl": -500.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36277380567032, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 100.49905118623735, + "exit_reason": "take_profit", + "exit_time": "2020-02-12T00:00:00", + "pnl": 913.6277380567044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.22663864471447, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 96.63389452556515, + "exit_reason": "stop_loss", + "exit_time": "2020-03-06T00:00:00", + "pnl": -559.274411914932, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "592c4ca3a782275c61f3fc2123e30c9055c3dcaec49a4b0202feafbc9821f1f3", + "scenario": "ca329113ef7eae6ef6cb075659587a244d4808ab35df74a891dcea2db9151f0e" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "c46f13757f77a357bcf860856d78551fd3d0b5a707fc379bb9be724a04e1d219", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 3, + "exit_signals": 0, + "framework_closed_trades": 3, + "framework_fills": 6, + "framework_intents": 3, + "framework_orders": null, + "ml4t_closed_trades": 3, + "ml4t_fills": 6, + "ml4t_intents": 3, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "10", @@ -123,8 +9660,1329 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT Pro=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 1000951.8554526691, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 2.3283064365386963e-10, + "expected": 1000951.8554526689, + "message": "VectorBT Pro=$1,000,951.8554526689, ML4T=$1,000,951.8554526691 (exact_diff=$0.0000000002, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 951.8554526690859, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 2.3283064365386963e-10, + "expected": 951.8554526688531, + "message": "VectorBT Pro=$951.8554526689, ML4T=$951.8554526691 (exact_diff=$0.0000000002; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 104.20787937697249, + "entry_time": "2020-01-07T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": 501.8693728948256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.35451619239235, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 341.97317470579765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.1382953609819, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": -166.07881907748015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.74563281040025, + "entry_time": "2020-03-07T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": -381.12381097977595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.67616495235359, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": 96.12713233392333, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 76.91587538104775, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 81.55985216039402, + "exit_reason": "signal", + "exit_time": "2020-04-26T00:00:00", + "pnl": -464.3976779346258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 87.21379021281562, + "entry_time": "2020-05-06T00:00:00", + "exit_price": 81.47883268095197, + "exit_reason": "signal", + "exit_time": "2020-05-16T00:00:00", + "pnl": 573.4957531863656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.87940403957454, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 77.69162042691461, + "exit_reason": "signal", + "exit_time": "2020-06-05T00:00:00", + "pnl": 318.7783612659923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.04428520737794, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 85.37220602586794, + "exit_reason": "signal", + "exit_time": "2020-06-25T00:00:00", + "pnl": -232.79208184900017, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 91.73225900039202, + "entry_time": "2020-07-05T00:00:00", + "exit_price": 88.0922185191642, + "exit_reason": "signal", + "exit_time": "2020-07-15T00:00:00", + "pnl": 364.0040481227825, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 104.20787937697249, + "entry_time": "2020-01-07T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": 501.869372894825, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.35451619239235, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 341.97317470579804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.1382953609819, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": -166.07881907748094, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.74563281040025, + "entry_time": "2020-03-07T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": -381.1238109797756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.67616495235359, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": 96.12713233392327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 76.91587538104775, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 81.55985216039402, + "exit_time": "2020-04-26T00:00:00", + "pnl": -464.3976779346261, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 87.21379021281562, + "entry_time": "2020-05-06T00:00:00", + "exit_price": 81.47883268095197, + "exit_time": "2020-05-16T00:00:00", + "pnl": 573.4957531863656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.87940403957454, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 77.69162042691461, + "exit_time": "2020-06-05T00:00:00", + "pnl": 318.77836126599277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.04428520737794, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 85.37220602586794, + "exit_time": "2020-06-25T00:00:00", + "pnl": -232.792081849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 91.73225900039202, + "entry_time": "2020-07-05T00:00:00", + "exit_price": 88.0922185191642, + "exit_time": "2020-07-15T00:00:00", + "pnl": 364.0040481227814, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 76.91587538104775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.55985216039402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.21379021281562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.47883268095197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.87940403957454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 77.69162042691461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.04428520737794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.37220602586794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73225900039202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.0922185191642, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 76.91587538104775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.55985216039402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.21379021281562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.47883268095197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.87940403957454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 77.69162042691461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.04428520737794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.37220602586794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73225900039202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.0922185191642, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "11" + }, "detail": null, + "duration_seconds": 2.615277051925659, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 76.91587538104775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.55985216039402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.21379021281562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.47883268095197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.87940403957454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 77.69162042691461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.04428520737794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.37220602586794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73225900039202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.0922185191642, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + } + ], + "final_value": 1000951.8554526689, + "framework": "VectorBT Pro", + "num_trades": 10, + "total_pnl": 951.8554526688531, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 104.20787937697249, + "entry_time": "2020-01-07T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": 501.869372894825, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.35451619239235, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 341.97317470579804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.1382953609819, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": -166.07881907748094, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.74563281040025, + "entry_time": "2020-03-07T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": -381.1238109797756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.67616495235359, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": 96.12713233392327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 76.91587538104775, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 81.55985216039402, + "exit_time": "2020-04-26T00:00:00", + "pnl": -464.3976779346261, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 87.21379021281562, + "entry_time": "2020-05-06T00:00:00", + "exit_price": 81.47883268095197, + "exit_time": "2020-05-16T00:00:00", + "pnl": 573.4957531863656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.87940403957454, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 77.69162042691461, + "exit_time": "2020-06-05T00:00:00", + "pnl": 318.77836126599277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.04428520737794, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 85.37220602586794, + "exit_time": "2020-06-25T00:00:00", + "pnl": -232.792081849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 91.73225900039202, + "entry_time": "2020-07-05T00:00:00", + "exit_price": 88.0922185191642, + "exit_time": "2020-07-15T00:00:00", + "pnl": 364.0040481227814, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 76.91587538104775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.55985216039402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.21379021281562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.47883268095197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.87940403957454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 77.69162042691461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.04428520737794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.37220602586794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73225900039202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.0922185191642, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + } + ], + "final_value": 1000951.8554526691, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": 951.8554526690859, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 104.20787937697249, + "entry_time": "2020-01-07T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": 501.8693728948256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.35451619239235, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 341.97317470579765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.1382953609819, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": -166.07881907748015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.74563281040025, + "entry_time": "2020-03-07T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": -381.12381097977595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.67616495235359, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": 96.12713233392333, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 76.91587538104775, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 81.55985216039402, + "exit_reason": "signal", + "exit_time": "2020-04-26T00:00:00", + "pnl": -464.3976779346258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 87.21379021281562, + "entry_time": "2020-05-06T00:00:00", + "exit_price": 81.47883268095197, + "exit_reason": "signal", + "exit_time": "2020-05-16T00:00:00", + "pnl": 573.4957531863656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.87940403957454, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 77.69162042691461, + "exit_reason": "signal", + "exit_time": "2020-06-05T00:00:00", + "pnl": 318.7783612659923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.04428520737794, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 85.37220602586794, + "exit_reason": "signal", + "exit_time": "2020-06-25T00:00:00", + "pnl": -232.79208184900017, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 91.73225900039202, + "entry_time": "2020-07-05T00:00:00", + "exit_price": 88.0922185191642, + "exit_reason": "signal", + "exit_time": "2020-07-15T00:00:00", + "pnl": 364.0040481227825, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "be4345288348f6a276f38cb4a364261003c925cddc5d9423b667fb82c34cff1b", + "scenario": "88c5993243d7dfa17cc8ed4d7979639e4846f1a3d5a9f1b62007e934bd9f73b5" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "e0efe74473f286a7ddeb3a4e39d9eb7a2443b69474480e9e4fcf97459672b93b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 200, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "11", @@ -132,8 +10990,417 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 2, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 2, + "message": "VectorBT Pro=2, ML4T=2, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 1001485.7011748579, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.5, + "difference": 0.0, + "expected": 1001485.7011748579, + "message": "VectorBT Pro=$1,001,485.7011748579, ML4T=$1,001,485.7011748579 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.5%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1485.7011748579098, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 50.0, + "difference": 0.0, + "expected": 1485.7011748579098, + "message": "VectorBT Pro=$1,485.7011748579, ML4T=$1,485.7011748579 (exact_diff=$0.0000000000; diagnostic_limit=$50.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 87.2667981247593, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-03T00:00:00", + "pnl": 1273.3201875240702, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.78505322725157, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 83.6612433539132, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": 212.38098733383595, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 87.2667981247593, + "exit_time": "2020-02-03T00:00:00", + "pnl": 1273.3201875240695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.78505322725158, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 83.6612433539132, + "exit_time": "2020-03-04T00:00:00", + "pnl": 212.38098733383737, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.78505322725157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.6612433539132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.78505322725157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.6612433539132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "12" + }, "detail": null, + "duration_seconds": 2.5031831508968025, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.78505322725157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.6612433539132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 1001485.7011748579, + "framework": "VectorBT Pro", + "num_trades": 2, + "total_pnl": 1485.7011748579098, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 87.2667981247593, + "exit_time": "2020-02-03T00:00:00", + "pnl": 1273.3201875240695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.78505322725158, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 83.6612433539132, + "exit_time": "2020-03-04T00:00:00", + "pnl": 212.38098733383737, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.78505322725157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.6612433539132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 1001485.7011748579, + "framework": "ml4t.backtest", + "num_trades": 2, + "total_pnl": 1485.7011748579098, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 87.2667981247593, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-03T00:00:00", + "pnl": 1273.3201875240702, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.78505322725157, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 83.6612433539132, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": 212.38098733383595, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "ed38e0bc2ef5eae08a4d0d71c4d646cde827805bcfb346f2c85d92295040a29f", + "scenario": "51166032bf2c4582113ae77995f8db134af72ee7ccdca2dfa4b989fc48295e33" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "3057fb1181d8b6bde3b0f0c71860dca5701293bcd956920c618e911bce7d0c67", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 2, + "exit_signals": 0, + "framework_closed_trades": 2, + "framework_fills": 4, + "framework_intents": 2, + "framework_orders": null, + "ml4t_closed_trades": 2, + "ml4t_fills": 4, + "ml4t_intents": 2, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "12", @@ -141,8 +11408,303 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT Pro=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 100800.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 100800.0, + "message": "VectorBT Pro=$100,800.0000000000, ML4T=$100,800.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 800.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 800.0, + "message": "VectorBT Pro=$800.0000000000, ML4T=$800.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 108.0, + "exit_reason": "take_profit", + "exit_time": "2020-01-13T00:00:00", + "pnl": 800.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 108.0, + "exit_time": "2020-01-13T00:00:00", + "pnl": 800.0, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "13" + }, "detail": null, + "duration_seconds": 2.4922204778995365, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "final_value": 100800.0, + "framework": "VectorBT Pro", + "num_trades": 1, + "total_pnl": 800.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 108.0, + "exit_time": "2020-01-13T00:00:00", + "pnl": 800.0, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "final_value": 100800.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": 800.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 108.0, + "exit_reason": "take_profit", + "exit_time": "2020-01-13T00:00:00", + "pnl": 800.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "71cd4215e29c1c85892b66ea019173b0f05f6dbf1b5c03eb2b9a436c4259cae3", + "scenario": "b39049d150f6fc2c71a16c642dc255e53e92c4840e949226036d175bccc4e1b0" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "6868775136fad190c5e2fffe0cb05f259b244161572731b86777972b78ea5fb5", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "13", @@ -150,8 +11712,303 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT Pro=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99889.95449782923, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99889.95449782923, + "message": "VectorBT Pro=$99,889.9544978292, ML4T=$99,889.9544978292 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -110.04550217077485, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -110.04550217077485, + "message": "VectorBT Pro=$-110.0455021708, ML4T=$-110.0455021708 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 98.89954497829228, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-12T00:00:00", + "pnl": -110.04550217077121, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 98.89954497829228, + "exit_time": "2020-01-12T00:00:00", + "pnl": -110.04550217077167, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "14" + }, "detail": null, + "duration_seconds": 2.4836581491399556, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "final_value": 99889.95449782923, + "framework": "VectorBT Pro", + "num_trades": 1, + "total_pnl": -110.04550217077485, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 98.89954497829228, + "exit_time": "2020-01-12T00:00:00", + "pnl": -110.04550217077167, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "final_value": 99889.95449782923, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -110.04550217077485, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 98.89954497829228, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-12T00:00:00", + "pnl": -110.04550217077121, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "71cd4215e29c1c85892b66ea019173b0f05f6dbf1b5c03eb2b9a436c4259cae3", + "scenario": "875c440f742f71bb0793ff5c4c6a1a0080b961930e6d2a24493cfa3e4c1d80b5" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "515cb2ead81157a5d033173889d2a47af873b49bb750c0fedf91036506520aa2", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "14", @@ -159,8 +12016,303 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT Pro=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99670.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99670.0, + "message": "VectorBT Pro=$99,670.0000000000, ML4T=$99,670.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -330.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -330.0, + "message": "VectorBT Pro=$-330.0000000000, ML4T=$-330.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 96.7, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-03T00:00:00", + "pnl": -330.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 96.7, + "exit_time": "2020-01-03T00:00:00", + "pnl": -329.9999999999997, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "15" + }, "detail": null, + "duration_seconds": 2.481939998921007, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + } + ], + "final_value": 99670.0, + "framework": "VectorBT Pro", + "num_trades": 1, + "total_pnl": -330.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 96.7, + "exit_time": "2020-01-03T00:00:00", + "pnl": -329.9999999999997, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + } + ], + "final_value": 99670.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -330.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 96.7, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-03T00:00:00", + "pnl": -330.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "71cd4215e29c1c85892b66ea019173b0f05f6dbf1b5c03eb2b9a436c4259cae3", + "scenario": "fccddcd3455a97b6ce7c416cc2b41672c9d79511da75211739c16c90e940c969" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "0e9ac5d663e87ef8d9d42db148ea6b689902b2533884263ccde90d5ba20fc135", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "15", @@ -168,17 +12320,71135 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 9, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 9, + "message": "VectorBT Pro=9, ML4T=9, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 104005.39557457357, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 2.9103830456733704e-11, + "expected": 104005.3955745736, + "message": "VectorBT Pro=$104,005.3955745736, ML4T=$104,005.3955745736 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=1.0%)", + "name": "final_value", + "passed": true + }, + { + "actual": 4005.395574573573, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 200.0, + "difference": 2.9103830456733704e-11, + "expected": 4005.395574573602, + "message": "VectorBT Pro=$4,005.3955745736, ML4T=$4,005.3955745736 (exact_diff=$0.0000000000; diagnostic_limit=$200.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 101.8286517665368, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-18T00:00:00", + "pnl": 182.86517665367865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.87178148043324, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 103.42819240641157, + "exit_reason": "trailing_stop", + "exit_time": "2020-04-15T00:00:00", + "pnl": -544.3589074021675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 67.68717455028396, + "entry_time": "2020-07-20T00:00:00", + "exit_price": 85.73788226904412, + "exit_reason": "trailing_stop", + "exit_time": "2020-09-21T00:00:00", + "pnl": 1805.0707718760177, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 146.1644167243563, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 141.12149237162103, + "exit_reason": "trailing_stop", + "exit_time": "2021-02-12T00:00:00", + "pnl": -504.2924352735281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 115.28717822764801, + "entry_time": "2021-05-16T00:00:00", + "exit_price": 163.2468713643689, + "exit_reason": "trailing_stop", + "exit_time": "2021-08-07T00:00:00", + "pnl": 4795.969313672089, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 231.76982156958886, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 220.1813304911094, + "exit_reason": "trailing_stop", + "exit_time": "2021-12-04T00:00:00", + "pnl": -1158.8491078479456, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 124.86128159909472, + "entry_time": "2022-03-12T00:00:00", + "exit_price": 120.36184217949486, + "exit_reason": "trailing_stop", + "exit_time": "2022-04-01T00:00:00", + "pnl": -449.94394195998757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.70076277915071, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 83.93629293465128, + "exit_reason": "trailing_stop", + "exit_time": "2022-10-07T00:00:00", + "pnl": -376.44698444994174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.17201183584265, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.72582872889643, + "exit_reason": "trailing_stop", + "exit_time": "2023-05-15T00:00:00", + "pnl": 255.38168930537722, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 101.8286517665368, + "exit_time": "2020-01-18T00:00:00", + "pnl": 182.86517665367938, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.87178148043324, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 103.42819240641158, + "exit_time": "2020-04-15T00:00:00", + "pnl": -544.3589074021659, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 67.68717455028396, + "entry_time": "2020-07-20T00:00:00", + "exit_price": 85.73788226904414, + "exit_time": "2020-09-21T00:00:00", + "pnl": 1805.070771876018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 146.1644167243563, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 141.12149237162103, + "exit_time": "2021-02-12T00:00:00", + "pnl": -504.29243527352696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 115.28717822764801, + "entry_time": "2021-05-16T00:00:00", + "exit_price": 163.24687136436893, + "exit_time": "2021-08-07T00:00:00", + "pnl": 4795.969313672092, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 231.76982156958886, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 220.1813304911094, + "exit_time": "2021-12-04T00:00:00", + "pnl": -1158.849107847945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 124.86128159909472, + "entry_time": "2022-03-12T00:00:00", + "exit_price": 120.36184217949486, + "exit_time": "2022-04-01T00:00:00", + "pnl": -449.94394195998666, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.7007627791507, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 83.93629293465128, + "exit_time": "2022-10-07T00:00:00", + "pnl": -376.4469844499416, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.17201183584265, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.72582872889643, + "exit_time": "2023-05-15T00:00:00", + "pnl": 255.3816893053778, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 101.8286517665368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.87178148043324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 103.42819240641157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 67.68717455028396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 85.73788226904412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 146.1644167243563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 115.28717822764801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 163.2468713643689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 231.76982156958886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 220.1813304911094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 124.86128159909472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 120.36184217949486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.70076277915071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.17201183584265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 92.72582872889643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.8286517665368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.87178148043324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 103.42819240641158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 67.68717455028396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.73788226904414, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 146.1644167243563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 115.28717822764801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 163.24687136436893, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 231.76982156958886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 220.1813304911094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 124.86128159909472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 120.36184217949486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.70076277915071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.17201183584265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72582872889643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "16" + }, "detail": null, + "duration_seconds": 2.5283554480411112, "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.8286517665368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.87178148043324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 103.42819240641158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 67.68717455028396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.73788226904414, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 146.1644167243563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 115.28717822764801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 163.24687136436893, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 231.76982156958886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 220.1813304911094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 124.86128159909472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 120.36184217949486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.70076277915071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.17201183584265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72582872889643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + } + ], + "final_value": 104005.3955745736, + "framework": "VectorBT Pro", + "num_trades": 9, + "total_pnl": 4005.395574573602, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 101.8286517665368, + "exit_time": "2020-01-18T00:00:00", + "pnl": 182.86517665367938, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.87178148043324, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 103.42819240641158, + "exit_time": "2020-04-15T00:00:00", + "pnl": -544.3589074021659, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 67.68717455028396, + "entry_time": "2020-07-20T00:00:00", + "exit_price": 85.73788226904414, + "exit_time": "2020-09-21T00:00:00", + "pnl": 1805.070771876018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 146.1644167243563, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 141.12149237162103, + "exit_time": "2021-02-12T00:00:00", + "pnl": -504.29243527352696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 115.28717822764801, + "entry_time": "2021-05-16T00:00:00", + "exit_price": 163.24687136436893, + "exit_time": "2021-08-07T00:00:00", + "pnl": 4795.969313672092, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 231.76982156958886, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 220.1813304911094, + "exit_time": "2021-12-04T00:00:00", + "pnl": -1158.849107847945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 124.86128159909472, + "entry_time": "2022-03-12T00:00:00", + "exit_price": 120.36184217949486, + "exit_time": "2022-04-01T00:00:00", + "pnl": -449.94394195998666, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.7007627791507, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 83.93629293465128, + "exit_time": "2022-10-07T00:00:00", + "pnl": -376.4469844499416, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.17201183584265, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.72582872889643, + "exit_time": "2023-05-15T00:00:00", + "pnl": 255.3816893053778, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 101.8286517665368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.87178148043324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 103.42819240641157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 67.68717455028396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 85.73788226904412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 146.1644167243563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 115.28717822764801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 163.2468713643689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 231.76982156958886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 220.1813304911094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 124.86128159909472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 120.36184217949486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.70076277915071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.17201183584265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 92.72582872889643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + } + ], + "final_value": 104005.39557457357, + "framework": "ml4t.backtest", + "num_trades": 9, + "total_pnl": 4005.395574573573, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 101.8286517665368, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-18T00:00:00", + "pnl": 182.86517665367865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.87178148043324, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 103.42819240641157, + "exit_reason": "trailing_stop", + "exit_time": "2020-04-15T00:00:00", + "pnl": -544.3589074021675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 67.68717455028396, + "entry_time": "2020-07-20T00:00:00", + "exit_price": 85.73788226904412, + "exit_reason": "trailing_stop", + "exit_time": "2020-09-21T00:00:00", + "pnl": 1805.0707718760177, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 146.1644167243563, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 141.12149237162103, + "exit_reason": "trailing_stop", + "exit_time": "2021-02-12T00:00:00", + "pnl": -504.2924352735281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 115.28717822764801, + "entry_time": "2021-05-16T00:00:00", + "exit_price": 163.2468713643689, + "exit_reason": "trailing_stop", + "exit_time": "2021-08-07T00:00:00", + "pnl": 4795.969313672089, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 231.76982156958886, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 220.1813304911094, + "exit_reason": "trailing_stop", + "exit_time": "2021-12-04T00:00:00", + "pnl": -1158.8491078479456, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 124.86128159909472, + "entry_time": "2022-03-12T00:00:00", + "exit_price": 120.36184217949486, + "exit_reason": "trailing_stop", + "exit_time": "2022-04-01T00:00:00", + "pnl": -449.94394195998757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.70076277915071, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 83.93629293465128, + "exit_reason": "trailing_stop", + "exit_time": "2022-10-07T00:00:00", + "pnl": -376.44698444994174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.17201183584265, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.72582872889643, + "exit_reason": "trailing_stop", + "exit_time": "2023-05-15T00:00:00", + "pnl": 255.38168930537722, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "71cd4215e29c1c85892b66ea019173b0f05f6dbf1b5c03eb2b9a436c4259cae3", + "scenario": "0198df8bd89459f57967743d1f22954c5d08e535d28d96d9ab83461ca73d02b9" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "8b4829a04d740fe6087782188f15eb27044961db12acbcb5f5fdd227e83fde41", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 1500, + "entry_signals": 9, + "exit_signals": 0, + "framework_closed_trades": 9, + "framework_fills": 18, + "framework_intents": 9, + "framework_orders": null, + "ml4t_closed_trades": 9, + "ml4t_fills": 18, + "ml4t_intents": 9, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "16", - "scenario_name": "Stress Test", + "scenario_name": "Regime Path Coverage", + "status": "pass" + }, + { + "comparison": { + "checks": [ + { + "actual": 600, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 600, + "message": "VectorBT Pro=600, ML4T=600, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99082.81840069593, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 3.2014213502407074e-10, + "expected": 99082.81840069561, + "message": "VectorBT Pro=$99,082.8184006956, ML4T=$99,082.8184006959 (exact_diff=$0.0000000003, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -917.1815993040655, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 3.2014213502407074e-10, + "expected": -917.1815993043856, + "message": "VectorBT Pro=$-917.1815993044, ML4T=$-917.1815993041 (exact_diff=$0.0000000003; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33867736091129, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 100.24521783497416, + "exit_reason": "signal", + "exit_time": "2020-01-03T00:00:00", + "pnl": -9.345952593714173, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33353996675463, + "entry_time": "2020-01-05T00:00:00", + "exit_price": 100.17535391574476, + "exit_reason": "signal", + "exit_time": "2020-01-06T00:00:00", + "pnl": -15.818605100987043, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.17558936557836, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 99.82464445421311, + "exit_reason": "signal", + "exit_time": "2020-01-09T00:00:00", + "pnl": -35.094491136524084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.14823158528606, + "entry_time": "2020-01-11T00:00:00", + "exit_price": 100.02303868942406, + "exit_reason": "signal", + "exit_time": "2020-01-12T00:00:00", + "pnl": -12.519289586200102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0898265784532, + "entry_time": "2020-01-14T00:00:00", + "exit_price": 100.0375220132344, + "exit_reason": "signal", + "exit_time": "2020-01-15T00:00:00", + "pnl": -5.2304565218801145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.69877148351581, + "entry_time": "2020-01-17T00:00:00", + "exit_price": 99.8094147843381, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": 11.06433008222848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.88896279741591, + "entry_time": "2020-01-20T00:00:00", + "exit_price": 99.58446195759505, + "exit_reason": "signal", + "exit_time": "2020-01-21T00:00:00", + "pnl": -30.450083982086653, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.94461858556683, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 99.86726342876044, + "exit_reason": "signal", + "exit_time": "2020-01-24T00:00:00", + "pnl": -7.735515680638855, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.264261049502, + "entry_time": "2020-01-26T00:00:00", + "exit_price": 99.97378019208324, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -29.048085741877003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43666090180685, + "entry_time": "2020-01-29T00:00:00", + "exit_price": 99.64557703864863, + "exit_reason": "signal", + "exit_time": "2020-01-30T00:00:00", + "pnl": 20.891613684178083, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.41486055220747, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 99.62832834535065, + "exit_reason": "signal", + "exit_time": "2020-02-02T00:00:00", + "pnl": 21.346779314319065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.40627623062987, + "entry_time": "2020-02-04T00:00:00", + "exit_price": 98.9966907903866, + "exit_reason": "signal", + "exit_time": "2020-02-05T00:00:00", + "pnl": -40.95854402432633, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.62784889129782, + "entry_time": "2020-02-07T00:00:00", + "exit_price": 98.91665393395704, + "exit_reason": "signal", + "exit_time": "2020-02-08T00:00:00", + "pnl": 28.880504265922355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20129913778622, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 99.36824311350031, + "exit_reason": "signal", + "exit_time": "2020-02-11T00:00:00", + "pnl": 16.694397571409354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.44539780996692, + "entry_time": "2020-02-13T00:00:00", + "exit_price": 99.29577808855632, + "exit_reason": "signal", + "exit_time": "2020-02-14T00:00:00", + "pnl": -14.96197214105996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60087912978423, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 98.67646038571121, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": 7.558125592699071, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17445140133515, + "entry_time": "2020-02-19T00:00:00", + "exit_price": 99.07045121918839, + "exit_reason": "signal", + "exit_time": "2020-02-20T00:00:00", + "pnl": -10.400018214677402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.49723620471183, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 99.5174230546468, + "exit_reason": "signal", + "exit_time": "2020-02-23T00:00:00", + "pnl": 2.0186849934980273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5413500261472, + "entry_time": "2020-02-25T00:00:00", + "exit_price": 99.47975770399327, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": -6.159232215391967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.29423417091141, + "entry_time": "2020-02-28T00:00:00", + "exit_price": 99.27541464305773, + "exit_reason": "signal", + "exit_time": "2020-02-29T00:00:00", + "pnl": -1.8819527853665932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43920860251751, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.06079463387583, + "exit_reason": "signal", + "exit_time": "2020-03-03T00:00:00", + "pnl": -37.84139686416711, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.37828233356667, + "entry_time": "2020-03-05T00:00:00", + "exit_price": 99.30210368322795, + "exit_reason": "signal", + "exit_time": "2020-03-06T00:00:00", + "pnl": -7.617865033871567, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.8891828858322, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 98.6817301819728, + "exit_reason": "signal", + "exit_time": "2020-03-09T00:00:00", + "pnl": -20.745270385939875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.39002953943762, + "entry_time": "2020-03-11T00:00:00", + "exit_price": 98.68517685658658, + "exit_reason": "signal", + "exit_time": "2020-03-12T00:00:00", + "pnl": 29.514731714896698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.65084298157255, + "entry_time": "2020-03-14T00:00:00", + "exit_price": 98.93501858046714, + "exit_reason": "signal", + "exit_time": "2020-03-15T00:00:00", + "pnl": 28.41755988945988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.1907166501479, + "entry_time": "2020-03-17T00:00:00", + "exit_price": 99.25659603867345, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 6.587938852555453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36428253311259, + "entry_time": "2020-03-20T00:00:00", + "exit_price": 99.01156809266551, + "exit_reason": "signal", + "exit_time": "2020-03-21T00:00:00", + "pnl": -35.271444044707096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31879308123833, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.40136182036203, + "exit_reason": "signal", + "exit_time": "2020-03-24T00:00:00", + "pnl": 8.256873912370793, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17903686528695, + "entry_time": "2020-03-26T00:00:00", + "exit_price": 99.0619221034904, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -11.71147617965471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25968317752123, + "entry_time": "2020-03-29T00:00:00", + "exit_price": 99.56379928977212, + "exit_reason": "signal", + "exit_time": "2020-03-30T00:00:00", + "pnl": 30.411611225090383, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.80666495491704, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 99.94182055020374, + "exit_reason": "signal", + "exit_time": "2020-04-02T00:00:00", + "pnl": 13.515559528670565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.92425119368045, + "entry_time": "2020-04-04T00:00:00", + "exit_price": 99.78971486194605, + "exit_reason": "signal", + "exit_time": "2020-04-05T00:00:00", + "pnl": -13.453633173439812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.23057477534164, + "entry_time": "2020-04-07T00:00:00", + "exit_price": 100.4049348801832, + "exit_reason": "signal", + "exit_time": "2020-04-08T00:00:00", + "pnl": 17.436010484158032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.24159987362269, + "entry_time": "2020-04-10T00:00:00", + "exit_price": 100.06843389735158, + "exit_reason": "signal", + "exit_time": "2020-04-11T00:00:00", + "pnl": -17.31659762711024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.22183940097844, + "entry_time": "2020-04-13T00:00:00", + "exit_price": 99.93299182979392, + "exit_reason": "signal", + "exit_time": "2020-04-14T00:00:00", + "pnl": -28.8847571184524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91637693821662, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 100.20188970935105, + "exit_reason": "signal", + "exit_time": "2020-04-17T00:00:00", + "pnl": 28.551277113443575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.57826653579693, + "entry_time": "2020-04-19T00:00:00", + "exit_price": 100.48615354430639, + "exit_reason": "signal", + "exit_time": "2020-04-20T00:00:00", + "pnl": -9.211299149052138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.48852996658736, + "entry_time": "2020-04-22T00:00:00", + "exit_price": 100.70097560384337, + "exit_reason": "signal", + "exit_time": "2020-04-23T00:00:00", + "pnl": 21.244563725602347, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.56660104606993, + "entry_time": "2020-04-25T00:00:00", + "exit_price": 100.60339517911308, + "exit_reason": "signal", + "exit_time": "2020-04-26T00:00:00", + "pnl": 3.6794133043149486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5215727488348, + "entry_time": "2020-04-28T00:00:00", + "exit_price": 100.3913600319206, + "exit_reason": "signal", + "exit_time": "2020-04-29T00:00:00", + "pnl": -13.021271691421134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.66423065390151, + "entry_time": "2020-05-01T00:00:00", + "exit_price": 100.49406633741951, + "exit_reason": "signal", + "exit_time": "2020-05-02T00:00:00", + "pnl": -17.016431648198704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64849065100934, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.63323070552582, + "exit_reason": "signal", + "exit_time": "2020-05-05T00:00:00", + "pnl": -1.5259945483521733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88914932519062, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 100.96225788336264, + "exit_reason": "signal", + "exit_time": "2020-05-08T00:00:00", + "pnl": 7.310855817202537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.21454142458283, + "entry_time": "2020-05-10T00:00:00", + "exit_price": 101.08973549159177, + "exit_reason": "signal", + "exit_time": "2020-05-11T00:00:00", + "pnl": -12.480593299107568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.91131718633395, + "entry_time": "2020-05-13T00:00:00", + "exit_price": 100.95365272243404, + "exit_reason": "signal", + "exit_time": "2020-05-14T00:00:00", + "pnl": 4.233553610009039, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3677264483084, + "entry_time": "2020-05-16T00:00:00", + "exit_price": 100.38542382708798, + "exit_reason": "signal", + "exit_time": "2020-05-17T00:00:00", + "pnl": 1.7697378779575956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.727355594576, + "entry_time": "2020-05-19T00:00:00", + "exit_price": 99.80184598433505, + "exit_reason": "signal", + "exit_time": "2020-05-20T00:00:00", + "pnl": 7.449038975904841, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.75895482632265, + "entry_time": "2020-05-22T00:00:00", + "exit_price": 99.65309620079978, + "exit_reason": "signal", + "exit_time": "2020-05-23T00:00:00", + "pnl": -10.585862552286926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.18275486854981, + "entry_time": "2020-05-25T00:00:00", + "exit_price": 99.08066364611346, + "exit_reason": "signal", + "exit_time": "2020-05-26T00:00:00", + "pnl": -10.209122243633828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86355002974182, + "entry_time": "2020-05-28T00:00:00", + "exit_price": 98.8079829991331, + "exit_reason": "signal", + "exit_time": "2020-05-29T00:00:00", + "pnl": -5.556703060870859, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50774498473834, + "entry_time": "2020-05-31T00:00:00", + "exit_price": 98.15500147527054, + "exit_reason": "signal", + "exit_time": "2020-06-01T00:00:00", + "pnl": -35.27435094678003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25388112126257, + "entry_time": "2020-06-03T00:00:00", + "exit_price": 98.46869004462158, + "exit_reason": "signal", + "exit_time": "2020-06-04T00:00:00", + "pnl": 21.480892335901444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.49982930970904, + "entry_time": "2020-06-06T00:00:00", + "exit_price": 98.64941137818613, + "exit_reason": "signal", + "exit_time": "2020-06-07T00:00:00", + "pnl": 14.958206847708425, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08181708620197, + "entry_time": "2020-06-09T00:00:00", + "exit_price": 98.89782993828217, + "exit_reason": "signal", + "exit_time": "2020-06-10T00:00:00", + "pnl": -18.398714791979728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.34821493675021, + "entry_time": "2020-06-12T00:00:00", + "exit_price": 99.0511570084608, + "exit_reason": "signal", + "exit_time": "2020-06-13T00:00:00", + "pnl": -29.705792828939593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36636841676064, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 99.22802936588096, + "exit_reason": "signal", + "exit_time": "2020-06-16T00:00:00", + "pnl": -13.83390508796765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.13124547885464, + "entry_time": "2020-06-18T00:00:00", + "exit_price": 98.97034570188329, + "exit_reason": "signal", + "exit_time": "2020-06-19T00:00:00", + "pnl": -16.0899776971346, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84675502390373, + "entry_time": "2020-06-21T00:00:00", + "exit_price": 98.82877025439984, + "exit_reason": "signal", + "exit_time": "2020-06-22T00:00:00", + "pnl": -1.7984769503891584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83150510044737, + "entry_time": "2020-06-24T00:00:00", + "exit_price": 98.80556016637114, + "exit_reason": "signal", + "exit_time": "2020-06-25T00:00:00", + "pnl": -2.594493407623304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.10675350799055, + "entry_time": "2020-06-27T00:00:00", + "exit_price": 98.84453919660923, + "exit_reason": "signal", + "exit_time": "2020-06-28T00:00:00", + "pnl": -26.221431138130356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88147160830762, + "entry_time": "2020-06-30T00:00:00", + "exit_price": 98.95771616416846, + "exit_reason": "signal", + "exit_time": "2020-07-01T00:00:00", + "pnl": 7.624455586083059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25900520967262, + "entry_time": "2020-07-03T00:00:00", + "exit_price": 99.28214715432236, + "exit_reason": "signal", + "exit_time": "2020-07-04T00:00:00", + "pnl": 2.314194464974207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.64410132782972, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 98.78845498147822, + "exit_reason": "signal", + "exit_time": "2020-07-07T00:00:00", + "pnl": 14.43536536485044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96240900085823, + "entry_time": "2020-07-09T00:00:00", + "exit_price": 99.01654413042846, + "exit_reason": "signal", + "exit_time": "2020-07-10T00:00:00", + "pnl": 5.413512957024068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08257869239384, + "entry_time": "2020-07-12T00:00:00", + "exit_price": 98.92270971634117, + "exit_reason": "signal", + "exit_time": "2020-07-13T00:00:00", + "pnl": -15.986897605265767, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9249177043285, + "entry_time": "2020-07-15T00:00:00", + "exit_price": 98.5475977762062, + "exit_reason": "signal", + "exit_time": "2020-07-16T00:00:00", + "pnl": -37.73199281222878, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85856446370276, + "entry_time": "2020-07-18T00:00:00", + "exit_price": 98.8876461806366, + "exit_reason": "signal", + "exit_time": "2020-07-19T00:00:00", + "pnl": 2.9081716933833377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.75554506700362, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 98.4712342394787, + "exit_reason": "signal", + "exit_time": "2020-07-22T00:00:00", + "pnl": -28.43108275249142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.13596092844963, + "entry_time": "2020-07-24T00:00:00", + "exit_price": 98.29084433077668, + "exit_reason": "signal", + "exit_time": "2020-07-25T00:00:00", + "pnl": 15.488340232703194, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50946620110103, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 98.42209873300993, + "exit_reason": "signal", + "exit_time": "2020-07-28T00:00:00", + "pnl": -8.736746809110628, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16470383307056, + "entry_time": "2020-07-30T00:00:00", + "exit_price": 98.10251353436806, + "exit_reason": "signal", + "exit_time": "2020-07-31T00:00:00", + "pnl": -6.219029870249869, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16007736983093, + "entry_time": "2020-08-02T00:00:00", + "exit_price": 98.25346405776058, + "exit_reason": "signal", + "exit_time": "2020-08-03T00:00:00", + "pnl": 9.338668792965109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.02466944517249, + "entry_time": "2020-08-05T00:00:00", + "exit_price": 98.03234873384025, + "exit_reason": "signal", + "exit_time": "2020-08-06T00:00:00", + "pnl": 0.767928866775037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11031617256702, + "entry_time": "2020-08-08T00:00:00", + "exit_price": 98.14530663460309, + "exit_reason": "signal", + "exit_time": "2020-08-09T00:00:00", + "pnl": 3.499046203607577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.4442900442657, + "entry_time": "2020-08-11T00:00:00", + "exit_price": 98.39955675926143, + "exit_reason": "signal", + "exit_time": "2020-08-12T00:00:00", + "pnl": -4.4733285004258505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19954612220634, + "entry_time": "2020-08-14T00:00:00", + "exit_price": 98.33374471974878, + "exit_reason": "signal", + "exit_time": "2020-08-15T00:00:00", + "pnl": 13.41985975424359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.17850638089598, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.31970147221125, + "exit_reason": "signal", + "exit_time": "2020-08-18T00:00:00", + "pnl": 14.119509131527593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19274532121113, + "entry_time": "2020-08-20T00:00:00", + "exit_price": 98.3840327772038, + "exit_reason": "signal", + "exit_time": "2020-08-21T00:00:00", + "pnl": 19.12874559926604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48120231354616, + "entry_time": "2020-08-23T00:00:00", + "exit_price": 98.7121932598933, + "exit_reason": "signal", + "exit_time": "2020-08-24T00:00:00", + "pnl": 23.099094634713765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86988580253298, + "entry_time": "2020-08-26T00:00:00", + "exit_price": 98.76604202197464, + "exit_reason": "signal", + "exit_time": "2020-08-27T00:00:00", + "pnl": -10.384378055832713, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.79597689506201, + "entry_time": "2020-08-29T00:00:00", + "exit_price": 98.42129188541651, + "exit_reason": "signal", + "exit_time": "2020-08-30T00:00:00", + "pnl": -37.46850096455091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67647877199742, + "entry_time": "2020-09-01T00:00:00", + "exit_price": 98.82191220927734, + "exit_reason": "signal", + "exit_time": "2020-09-02T00:00:00", + "pnl": 14.543343727991669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84470059887572, + "entry_time": "2020-09-04T00:00:00", + "exit_price": 98.72847566121298, + "exit_reason": "signal", + "exit_time": "2020-09-05T00:00:00", + "pnl": -11.622493766273692, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43094423441607, + "entry_time": "2020-09-07T00:00:00", + "exit_price": 98.39808368032986, + "exit_reason": "signal", + "exit_time": "2020-09-08T00:00:00", + "pnl": -3.2860554086219054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31641481415083, + "entry_time": "2020-09-10T00:00:00", + "exit_price": 98.40267706340073, + "exit_reason": "signal", + "exit_time": "2020-09-11T00:00:00", + "pnl": 8.62622492499031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60680412325432, + "entry_time": "2020-09-13T00:00:00", + "exit_price": 98.51452016846274, + "exit_reason": "signal", + "exit_time": "2020-09-14T00:00:00", + "pnl": -9.22839547915828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31471449163298, + "entry_time": "2020-09-16T00:00:00", + "exit_price": 98.43834781075664, + "exit_reason": "signal", + "exit_time": "2020-09-17T00:00:00", + "pnl": 12.363331912365538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84446638005844, + "entry_time": "2020-09-19T00:00:00", + "exit_price": 98.49607372712997, + "exit_reason": "signal", + "exit_time": "2020-09-20T00:00:00", + "pnl": -34.8392652928469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85869892480143, + "entry_time": "2020-09-22T00:00:00", + "exit_price": 98.87107213537678, + "exit_reason": "signal", + "exit_time": "2020-09-23T00:00:00", + "pnl": 1.237321057535155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83017137699973, + "entry_time": "2020-09-25T00:00:00", + "exit_price": 98.73075043509533, + "exit_reason": "signal", + "exit_time": "2020-09-26T00:00:00", + "pnl": -9.942094190440912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85446221431528, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.13025477242799, + "exit_reason": "signal", + "exit_time": "2020-09-29T00:00:00", + "pnl": 27.57925581127165, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08577867542596, + "entry_time": "2020-10-01T00:00:00", + "exit_price": 99.20567187514531, + "exit_reason": "signal", + "exit_time": "2020-10-02T00:00:00", + "pnl": 11.989319971935402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27862593574773, + "entry_time": "2020-10-04T00:00:00", + "exit_price": 99.19411735771268, + "exit_reason": "signal", + "exit_time": "2020-10-05T00:00:00", + "pnl": -8.450857803505642, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.916410701528, + "entry_time": "2020-10-07T00:00:00", + "exit_price": 98.80020190906805, + "exit_reason": "signal", + "exit_time": "2020-10-08T00:00:00", + "pnl": -11.620879245994729, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.03429888110497, + "entry_time": "2020-10-10T00:00:00", + "exit_price": 97.99059510104857, + "exit_reason": "signal", + "exit_time": "2020-10-11T00:00:00", + "pnl": -4.370378005640305, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.12230359240208, + "entry_time": "2020-10-13T00:00:00", + "exit_price": 98.21493112615859, + "exit_reason": "signal", + "exit_time": "2020-10-14T00:00:00", + "pnl": 9.2627533756513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7362497471537, + "entry_time": "2020-10-16T00:00:00", + "exit_price": 97.90953724611552, + "exit_reason": "signal", + "exit_time": "2020-10-17T00:00:00", + "pnl": 17.328749896181762, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99997604721491, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.25158859302469, + "exit_reason": "signal", + "exit_time": "2020-10-20T00:00:00", + "pnl": 25.161254580978493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98246224229298, + "entry_time": "2020-10-22T00:00:00", + "exit_price": 98.18380160087476, + "exit_reason": "signal", + "exit_time": "2020-10-23T00:00:00", + "pnl": 20.13393585817721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.54700954481861, + "entry_time": "2020-10-25T00:00:00", + "exit_price": 98.87858935796136, + "exit_reason": "signal", + "exit_time": "2020-10-26T00:00:00", + "pnl": 33.157981314274366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.82466366840129, + "entry_time": "2020-10-28T00:00:00", + "exit_price": 98.79031352535364, + "exit_reason": "signal", + "exit_time": "2020-10-29T00:00:00", + "pnl": -3.435014304764991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.52782616930364, + "entry_time": "2020-10-31T00:00:00", + "exit_price": 98.71180131795903, + "exit_reason": "signal", + "exit_time": "2020-11-01T00:00:00", + "pnl": 18.39751486553905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.66862984653359, + "entry_time": "2020-11-03T00:00:00", + "exit_price": 98.94388954493733, + "exit_reason": "signal", + "exit_time": "2020-11-04T00:00:00", + "pnl": 27.525969840375183, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.40172293508901, + "entry_time": "2020-11-06T00:00:00", + "exit_price": 98.27308992706585, + "exit_reason": "signal", + "exit_time": "2020-11-07T00:00:00", + "pnl": -12.863300802317099, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30251070708916, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 98.36341600243385, + "exit_reason": "signal", + "exit_time": "2020-11-10T00:00:00", + "pnl": 6.090529534470988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07297082017436, + "entry_time": "2020-11-12T00:00:00", + "exit_price": 98.63576619816114, + "exit_reason": "signal", + "exit_time": "2020-11-13T00:00:00", + "pnl": 56.279537798676756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.36545808934646, + "entry_time": "2020-11-15T00:00:00", + "exit_price": 98.425342939227, + "exit_reason": "signal", + "exit_time": "2020-11-16T00:00:00", + "pnl": 5.988484988052733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.59476724765915, + "entry_time": "2020-11-18T00:00:00", + "exit_price": 98.41575843731752, + "exit_reason": "signal", + "exit_time": "2020-11-19T00:00:00", + "pnl": -17.900881034162012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30499551372479, + "entry_time": "2020-11-21T00:00:00", + "exit_price": 98.2943417590765, + "exit_reason": "signal", + "exit_time": "2020-11-22T00:00:00", + "pnl": -1.0653754648283211, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.20190364871404, + "entry_time": "2020-11-24T00:00:00", + "exit_price": 98.35429934455371, + "exit_reason": "signal", + "exit_time": "2020-11-25T00:00:00", + "pnl": 15.23956958396775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25575482738782, + "entry_time": "2020-11-27T00:00:00", + "exit_price": 98.30124986928953, + "exit_reason": "signal", + "exit_time": "2020-11-28T00:00:00", + "pnl": 4.54950419017041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.90191386326036, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.96508444596826, + "exit_reason": "signal", + "exit_time": "2020-12-01T00:00:00", + "pnl": 6.3170582707898575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.75989432781597, + "entry_time": "2020-12-03T00:00:00", + "exit_price": 97.47851546822666, + "exit_reason": "signal", + "exit_time": "2020-12-04T00:00:00", + "pnl": -28.137885958929473, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.43273982617148, + "entry_time": "2020-12-06T00:00:00", + "exit_price": 97.78073270556935, + "exit_reason": "signal", + "exit_time": "2020-12-07T00:00:00", + "pnl": 34.799287939786154, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.29707161405977, + "entry_time": "2020-12-09T00:00:00", + "exit_price": 97.17141051171173, + "exit_reason": "signal", + "exit_time": "2020-12-10T00:00:00", + "pnl": -12.566110234804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.83897503233364, + "entry_time": "2020-12-12T00:00:00", + "exit_price": 96.92050920813638, + "exit_reason": "signal", + "exit_time": "2020-12-13T00:00:00", + "pnl": 8.153417580273526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.39298906893524, + "entry_time": "2020-12-15T00:00:00", + "exit_price": 97.24960092613485, + "exit_reason": "signal", + "exit_time": "2020-12-16T00:00:00", + "pnl": -14.338814280039514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.15249367428707, + "entry_time": "2020-12-18T00:00:00", + "exit_price": 98.11254847884746, + "exit_reason": "signal", + "exit_time": "2020-12-19T00:00:00", + "pnl": -3.99451954396136, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6477102979142, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 97.66187174327492, + "exit_reason": "signal", + "exit_time": "2020-12-22T00:00:00", + "pnl": 1.4161445360714424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.22816086359947, + "entry_time": "2020-12-24T00:00:00", + "exit_price": 97.18924739108921, + "exit_reason": "signal", + "exit_time": "2020-12-25T00:00:00", + "pnl": -3.891347251026673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.15833017318171, + "entry_time": "2020-12-27T00:00:00", + "exit_price": 97.35388264537053, + "exit_reason": "signal", + "exit_time": "2020-12-28T00:00:00", + "pnl": 19.55524721888287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30391448349607, + "entry_time": "2020-12-30T00:00:00", + "exit_price": 97.1765702619787, + "exit_reason": "signal", + "exit_time": "2020-12-31T00:00:00", + "pnl": -12.734422151735998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.03923857682982, + "entry_time": "2021-01-02T00:00:00", + "exit_price": 97.14087662618776, + "exit_reason": "signal", + "exit_time": "2021-01-03T00:00:00", + "pnl": 10.16380493579527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.60285889768487, + "entry_time": "2021-01-05T00:00:00", + "exit_price": 96.71610220194758, + "exit_reason": "signal", + "exit_time": "2021-01-06T00:00:00", + "pnl": 11.324330426270535, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.43129513858887, + "entry_time": "2021-01-08T00:00:00", + "exit_price": 96.7750138677335, + "exit_reason": "signal", + "exit_time": "2021-01-09T00:00:00", + "pnl": 34.37187291446389, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.5417619126041, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.26004415392279, + "exit_reason": "signal", + "exit_time": "2021-01-12T00:00:00", + "pnl": -28.17177586813159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.48237494714664, + "entry_time": "2021-01-14T00:00:00", + "exit_price": 96.58658168452075, + "exit_reason": "signal", + "exit_time": "2021-01-15T00:00:00", + "pnl": 10.420673737411562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.75620116852377, + "entry_time": "2021-01-17T00:00:00", + "exit_price": 96.69650084660127, + "exit_reason": "signal", + "exit_time": "2021-01-18T00:00:00", + "pnl": -5.970032192250073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.92028780826493, + "entry_time": "2021-01-20T00:00:00", + "exit_price": 95.62951533581877, + "exit_reason": "signal", + "exit_time": "2021-01-21T00:00:00", + "pnl": -29.077247244616956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.58269597074072, + "entry_time": "2021-01-23T00:00:00", + "exit_price": 95.65987379372794, + "exit_reason": "signal", + "exit_time": "2021-01-24T00:00:00", + "pnl": 7.71778229872325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.66612454309691, + "entry_time": "2021-01-26T00:00:00", + "exit_price": 95.8169746660663, + "exit_reason": "signal", + "exit_time": "2021-01-27T00:00:00", + "pnl": 15.085012296938658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5926039176473, + "entry_time": "2021-01-29T00:00:00", + "exit_price": 95.28582192646724, + "exit_reason": "signal", + "exit_time": "2021-01-30T00:00:00", + "pnl": -30.678199118006887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.47874410921285, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.57232514477201, + "exit_reason": "signal", + "exit_time": "2021-02-02T00:00:00", + "pnl": 9.358103555914568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.07482838670386, + "entry_time": "2021-02-04T00:00:00", + "exit_price": 96.06329982176626, + "exit_reason": "signal", + "exit_time": "2021-02-05T00:00:00", + "pnl": -1.1528564937580086, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.939646337063, + "entry_time": "2021-02-07T00:00:00", + "exit_price": 96.02294071169972, + "exit_reason": "signal", + "exit_time": "2021-02-08T00:00:00", + "pnl": 8.329437463671638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.73925579999096, + "entry_time": "2021-02-10T00:00:00", + "exit_price": 95.99566659891293, + "exit_reason": "signal", + "exit_time": "2021-02-11T00:00:00", + "pnl": 25.64107989219883, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.99166395939717, + "entry_time": "2021-02-13T00:00:00", + "exit_price": 95.91107729961162, + "exit_reason": "signal", + "exit_time": "2021-02-14T00:00:00", + "pnl": -8.058665978554927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.35440315345551, + "entry_time": "2021-02-16T00:00:00", + "exit_price": 96.19457800884426, + "exit_reason": "signal", + "exit_time": "2021-02-17T00:00:00", + "pnl": -15.982514461125902, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87539474258334, + "entry_time": "2021-02-19T00:00:00", + "exit_price": 96.03831344319956, + "exit_reason": "signal", + "exit_time": "2021-02-20T00:00:00", + "pnl": 16.29187006162101, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.84933568810729, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.942984467456, + "exit_reason": "signal", + "exit_time": "2021-02-23T00:00:00", + "pnl": 9.364877934871402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28778584744732, + "entry_time": "2021-02-25T00:00:00", + "exit_price": 95.02443267142746, + "exit_reason": "signal", + "exit_time": "2021-02-26T00:00:00", + "pnl": -26.33531760198639, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94057536205155, + "entry_time": "2021-02-28T00:00:00", + "exit_price": 94.72906200441219, + "exit_reason": "signal", + "exit_time": "2021-03-01T00:00:00", + "pnl": -21.151335763936004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38445225202611, + "entry_time": "2021-03-03T00:00:00", + "exit_price": 94.38197492987447, + "exit_reason": "signal", + "exit_time": "2021-03-04T00:00:00", + "pnl": -0.247732215164433, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18213638354725, + "entry_time": "2021-03-06T00:00:00", + "exit_price": 94.04715001455901, + "exit_reason": "signal", + "exit_time": "2021-03-07T00:00:00", + "pnl": -13.498636898822951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19838818284391, + "entry_time": "2021-03-09T00:00:00", + "exit_price": 94.29725636974986, + "exit_reason": "signal", + "exit_time": "2021-03-10T00:00:00", + "pnl": 9.886818690594737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23572569098852, + "entry_time": "2021-03-12T00:00:00", + "exit_price": 94.3432106471416, + "exit_reason": "signal", + "exit_time": "2021-03-13T00:00:00", + "pnl": 10.748495615309366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46834681822006, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.39304905252162, + "exit_reason": "signal", + "exit_time": "2021-03-16T00:00:00", + "pnl": -7.529776569843307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4607924127623, + "entry_time": "2021-03-18T00:00:00", + "exit_price": 94.87391242777782, + "exit_reason": "signal", + "exit_time": "2021-03-19T00:00:00", + "pnl": 41.31200150155382, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81782457593818, + "entry_time": "2021-03-21T00:00:00", + "exit_price": 94.74839547168068, + "exit_reason": "signal", + "exit_time": "2021-03-22T00:00:00", + "pnl": -6.942910425748778, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9804659897062, + "entry_time": "2021-03-24T00:00:00", + "exit_price": 95.1820620687209, + "exit_reason": "signal", + "exit_time": "2021-03-25T00:00:00", + "pnl": 20.159607901468917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53780103937676, + "entry_time": "2021-03-27T00:00:00", + "exit_price": 94.35114383691389, + "exit_reason": "signal", + "exit_time": "2021-03-28T00:00:00", + "pnl": -18.665720246286583, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19430169329608, + "entry_time": "2021-03-30T00:00:00", + "exit_price": 94.0736265695374, + "exit_reason": "signal", + "exit_time": "2021-03-31T00:00:00", + "pnl": -12.067512375868318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.56101740773187, + "entry_time": "2021-04-02T00:00:00", + "exit_price": 94.02847405275406, + "exit_reason": "signal", + "exit_time": "2021-04-03T00:00:00", + "pnl": -53.25433549778063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02877565620591, + "entry_time": "2021-04-05T00:00:00", + "exit_price": 94.02966575553104, + "exit_reason": "signal", + "exit_time": "2021-04-06T00:00:00", + "pnl": 0.08900993251336331, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71076966315076, + "entry_time": "2021-04-08T00:00:00", + "exit_price": 93.5342590029927, + "exit_reason": "signal", + "exit_time": "2021-04-09T00:00:00", + "pnl": -17.651066015805554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87172892779671, + "entry_time": "2021-04-11T00:00:00", + "exit_price": 93.8898807030855, + "exit_reason": "signal", + "exit_time": "2021-04-12T00:00:00", + "pnl": 1.8151775288788485, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7509399436349, + "entry_time": "2021-04-14T00:00:00", + "exit_price": 93.70594283596789, + "exit_reason": "signal", + "exit_time": "2021-04-15T00:00:00", + "pnl": -4.499710766702265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83044892913243, + "entry_time": "2021-04-17T00:00:00", + "exit_price": 93.71383587412238, + "exit_reason": "signal", + "exit_time": "2021-04-18T00:00:00", + "pnl": -11.6613055010057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52870331564132, + "entry_time": "2021-04-20T00:00:00", + "exit_price": 93.68221846843574, + "exit_reason": "signal", + "exit_time": "2021-04-21T00:00:00", + "pnl": 15.351515279440719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68293629394864, + "entry_time": "2021-04-23T00:00:00", + "exit_price": 93.76185935158753, + "exit_reason": "signal", + "exit_time": "2021-04-24T00:00:00", + "pnl": 7.892305763889453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77694161620539, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.94666597863043, + "exit_reason": "signal", + "exit_time": "2021-04-27T00:00:00", + "pnl": 16.972436242504045, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09046839544105, + "entry_time": "2021-04-29T00:00:00", + "exit_price": 94.0093802192737, + "exit_reason": "signal", + "exit_time": "2021-04-30T00:00:00", + "pnl": -8.108817616735905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.78182814117551, + "entry_time": "2021-05-02T00:00:00", + "exit_price": 93.75541337031265, + "exit_reason": "signal", + "exit_time": "2021-05-03T00:00:00", + "pnl": -2.6414770862847945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72371690451082, + "entry_time": "2021-05-05T00:00:00", + "exit_price": 93.60849664049482, + "exit_reason": "signal", + "exit_time": "2021-05-06T00:00:00", + "pnl": -11.52202640160067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94340121095276, + "entry_time": "2021-05-08T00:00:00", + "exit_price": 93.85028148090369, + "exit_reason": "signal", + "exit_time": "2021-05-09T00:00:00", + "pnl": -9.311973004907486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7183641880944, + "entry_time": "2021-05-11T00:00:00", + "exit_price": 93.93201467581261, + "exit_reason": "signal", + "exit_time": "2021-05-12T00:00:00", + "pnl": 21.36504877182051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6600503714477, + "entry_time": "2021-05-14T00:00:00", + "exit_price": 93.71003338575711, + "exit_reason": "signal", + "exit_time": "2021-05-15T00:00:00", + "pnl": 4.998301430941865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64414870400898, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 93.73370138654631, + "exit_reason": "signal", + "exit_time": "2021-05-18T00:00:00", + "pnl": 8.955268253732356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.51475031329109, + "entry_time": "2021-05-20T00:00:00", + "exit_price": 93.60797476194675, + "exit_reason": "signal", + "exit_time": "2021-05-21T00:00:00", + "pnl": 9.322444865565558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42059367470232, + "entry_time": "2021-05-23T00:00:00", + "exit_price": 93.66628705381636, + "exit_reason": "signal", + "exit_time": "2021-05-24T00:00:00", + "pnl": 24.569337911403636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53531464201514, + "entry_time": "2021-05-26T00:00:00", + "exit_price": 93.2030497935449, + "exit_reason": "signal", + "exit_time": "2021-05-27T00:00:00", + "pnl": -33.22648484702404, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62268440600192, + "entry_time": "2021-05-29T00:00:00", + "exit_price": 92.91948342162647, + "exit_reason": "signal", + "exit_time": "2021-05-30T00:00:00", + "pnl": 29.67990156245469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67919849510083, + "entry_time": "2021-06-01T00:00:00", + "exit_price": 92.43887673234494, + "exit_reason": "signal", + "exit_time": "2021-06-02T00:00:00", + "pnl": -24.032176275588427, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.17984056111294, + "entry_time": "2021-06-04T00:00:00", + "exit_price": 91.94368190633774, + "exit_reason": "signal", + "exit_time": "2021-06-05T00:00:00", + "pnl": -23.615865477519037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.11465699863811, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.97059505880482, + "exit_reason": "signal", + "exit_time": "2021-06-08T00:00:00", + "pnl": -14.406193983330013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29459604644765, + "entry_time": "2021-06-10T00:00:00", + "exit_price": 92.53931157007439, + "exit_reason": "signal", + "exit_time": "2021-06-11T00:00:00", + "pnl": 24.47155236267281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49631090115352, + "entry_time": "2021-06-13T00:00:00", + "exit_price": 92.52393358151217, + "exit_reason": "signal", + "exit_time": "2021-06-14T00:00:00", + "pnl": 2.762268035865418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66942128922241, + "entry_time": "2021-06-16T00:00:00", + "exit_price": 92.4946582273999, + "exit_reason": "signal", + "exit_time": "2021-06-17T00:00:00", + "pnl": -17.4763061822523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29424834791328, + "entry_time": "2021-06-19T00:00:00", + "exit_price": 92.07603918687664, + "exit_reason": "signal", + "exit_time": "2021-06-20T00:00:00", + "pnl": -21.820916103664786, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.33479567014805, + "entry_time": "2021-06-22T00:00:00", + "exit_price": 92.14550463966849, + "exit_reason": "signal", + "exit_time": "2021-06-23T00:00:00", + "pnl": -18.929103047956232, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9928646204638, + "entry_time": "2021-06-25T00:00:00", + "exit_price": 91.96872153502625, + "exit_reason": "signal", + "exit_time": "2021-06-26T00:00:00", + "pnl": -2.4143085437553964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87705988155102, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.53452507075421, + "exit_reason": "signal", + "exit_time": "2021-06-29T00:00:00", + "pnl": -34.25348107968057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.56396146367423, + "entry_time": "2021-07-01T00:00:00", + "exit_price": 91.59385740536969, + "exit_reason": "signal", + "exit_time": "2021-07-02T00:00:00", + "pnl": 2.9895941695449437, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64213975217385, + "entry_time": "2021-07-04T00:00:00", + "exit_price": 91.78882758292927, + "exit_reason": "signal", + "exit_time": "2021-07-05T00:00:00", + "pnl": 14.668783075543615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63683672368549, + "entry_time": "2021-07-07T00:00:00", + "exit_price": 91.48470633760584, + "exit_reason": "signal", + "exit_time": "2021-07-08T00:00:00", + "pnl": -15.213038607964336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39062489567554, + "entry_time": "2021-07-10T00:00:00", + "exit_price": 91.494696351115, + "exit_reason": "signal", + "exit_time": "2021-07-11T00:00:00", + "pnl": 10.407145543946172, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93573503075692, + "entry_time": "2021-07-13T00:00:00", + "exit_price": 90.98885415853535, + "exit_reason": "signal", + "exit_time": "2021-07-14T00:00:00", + "pnl": 5.3119127778427355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06245234985892, + "entry_time": "2021-07-16T00:00:00", + "exit_price": 91.0289821017493, + "exit_reason": "signal", + "exit_time": "2021-07-17T00:00:00", + "pnl": -3.3470248109606473, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22900373831216, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.3157346032948, + "exit_reason": "signal", + "exit_time": "2021-07-20T00:00:00", + "pnl": 8.673086498263729, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59973514861235, + "entry_time": "2021-07-22T00:00:00", + "exit_price": 91.77086454804387, + "exit_reason": "signal", + "exit_time": "2021-07-23T00:00:00", + "pnl": 17.112939943153833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82096590563263, + "entry_time": "2021-07-25T00:00:00", + "exit_price": 91.95769963997635, + "exit_reason": "signal", + "exit_time": "2021-07-26T00:00:00", + "pnl": 13.673373434372479, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.21106339352885, + "entry_time": "2021-07-28T00:00:00", + "exit_price": 92.07551182524406, + "exit_reason": "signal", + "exit_time": "2021-07-29T00:00:00", + "pnl": -13.555156828477266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09759300944572, + "entry_time": "2021-07-31T00:00:00", + "exit_price": 92.33359941396125, + "exit_reason": "signal", + "exit_time": "2021-08-01T00:00:00", + "pnl": 23.600640451553772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2288848699624, + "entry_time": "2021-08-03T00:00:00", + "exit_price": 92.2069451450579, + "exit_reason": "signal", + "exit_time": "2021-08-04T00:00:00", + "pnl": -2.193972490449596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46522997402728, + "entry_time": "2021-08-06T00:00:00", + "exit_price": 92.63157812424986, + "exit_reason": "signal", + "exit_time": "2021-08-07T00:00:00", + "pnl": 16.634815022258408, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92215275507255, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 92.81904355011355, + "exit_reason": "signal", + "exit_time": "2021-08-10T00:00:00", + "pnl": -10.310920495900064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34536862719393, + "entry_time": "2021-08-12T00:00:00", + "exit_price": 93.4540782896955, + "exit_reason": "signal", + "exit_time": "2021-08-13T00:00:00", + "pnl": 10.870966250156926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65179701007457, + "entry_time": "2021-08-15T00:00:00", + "exit_price": 93.58231165488735, + "exit_reason": "signal", + "exit_time": "2021-08-16T00:00:00", + "pnl": -6.948535518722565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59222373899847, + "entry_time": "2021-08-18T00:00:00", + "exit_price": 93.41076247699506, + "exit_reason": "signal", + "exit_time": "2021-08-19T00:00:00", + "pnl": -18.146126200341314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57987210255567, + "entry_time": "2021-08-21T00:00:00", + "exit_price": 93.93696117180936, + "exit_reason": "signal", + "exit_time": "2021-08-22T00:00:00", + "pnl": 35.708906925368865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88875391692817, + "entry_time": "2021-08-24T00:00:00", + "exit_price": 93.67494277755462, + "exit_reason": "signal", + "exit_time": "2021-08-25T00:00:00", + "pnl": -21.381113937353803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99358787892747, + "entry_time": "2021-08-27T00:00:00", + "exit_price": 93.07975990716614, + "exit_reason": "signal", + "exit_time": "2021-08-28T00:00:00", + "pnl": 8.617202823867046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07047992178705, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.33559891886243, + "exit_reason": "signal", + "exit_time": "2021-08-31T00:00:00", + "pnl": 26.51189970753876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59225467831386, + "entry_time": "2021-09-02T00:00:00", + "exit_price": 93.63479260217548, + "exit_reason": "signal", + "exit_time": "2021-09-03T00:00:00", + "pnl": 4.2537923861618765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80334597318698, + "entry_time": "2021-09-05T00:00:00", + "exit_price": 93.98346554786147, + "exit_reason": "signal", + "exit_time": "2021-09-06T00:00:00", + "pnl": 18.011957467449975, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92321614880655, + "entry_time": "2021-09-08T00:00:00", + "exit_price": 93.83699346593512, + "exit_reason": "signal", + "exit_time": "2021-09-09T00:00:00", + "pnl": -8.622268287143015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93109508241774, + "entry_time": "2021-09-11T00:00:00", + "exit_price": 93.96354668527802, + "exit_reason": "signal", + "exit_time": "2021-09-12T00:00:00", + "pnl": 3.245160286027385, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08641930356686, + "entry_time": "2021-09-14T00:00:00", + "exit_price": 94.23768236549668, + "exit_reason": "signal", + "exit_time": "2021-09-15T00:00:00", + "pnl": 15.126306192982156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08211844013991, + "entry_time": "2021-09-17T00:00:00", + "exit_price": 94.20846159911048, + "exit_reason": "signal", + "exit_time": "2021-09-18T00:00:00", + "pnl": 12.634315897057604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.13954155854589, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 93.89054598561034, + "exit_reason": "signal", + "exit_time": "2021-09-21T00:00:00", + "pnl": -24.89955729355279, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11646823351487, + "entry_time": "2021-09-23T00:00:00", + "exit_price": 94.10168176297485, + "exit_reason": "signal", + "exit_time": "2021-09-24T00:00:00", + "pnl": -1.4786470540020673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30038009222437, + "entry_time": "2021-09-26T00:00:00", + "exit_price": 94.41339845504724, + "exit_reason": "signal", + "exit_time": "2021-09-27T00:00:00", + "pnl": 11.301836282287695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10852951715277, + "entry_time": "2021-09-29T00:00:00", + "exit_price": 93.84680988625497, + "exit_reason": "signal", + "exit_time": "2021-09-30T00:00:00", + "pnl": -26.171963089780547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00138088356287, + "entry_time": "2021-10-02T00:00:00", + "exit_price": 94.04342924144086, + "exit_reason": "signal", + "exit_time": "2021-10-03T00:00:00", + "pnl": 4.204835787799311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01673785551608, + "entry_time": "2021-10-05T00:00:00", + "exit_price": 93.8508081374985, + "exit_reason": "signal", + "exit_time": "2021-10-06T00:00:00", + "pnl": -16.592971801757812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87089994615239, + "entry_time": "2021-10-08T00:00:00", + "exit_price": 93.9378403552245, + "exit_reason": "signal", + "exit_time": "2021-10-09T00:00:00", + "pnl": 6.694040907210365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05201413714099, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.0235397935625, + "exit_reason": "signal", + "exit_time": "2021-10-12T00:00:00", + "pnl": -2.8474343578473054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26517251606933, + "entry_time": "2021-10-14T00:00:00", + "exit_price": 94.15470785076896, + "exit_reason": "signal", + "exit_time": "2021-10-15T00:00:00", + "pnl": -11.046466530036923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4932600250258, + "entry_time": "2021-10-17T00:00:00", + "exit_price": 94.51252060274227, + "exit_reason": "signal", + "exit_time": "2021-10-18T00:00:00", + "pnl": 1.9260577716468106, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53140073996916, + "entry_time": "2021-10-20T00:00:00", + "exit_price": 94.90203063702091, + "exit_reason": "signal", + "exit_time": "2021-10-21T00:00:00", + "pnl": 37.062989705174914, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26191114348926, + "entry_time": "2021-10-23T00:00:00", + "exit_price": 94.0634456423351, + "exit_reason": "signal", + "exit_time": "2021-10-24T00:00:00", + "pnl": -19.846550115415084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43521818420996, + "entry_time": "2021-10-26T00:00:00", + "exit_price": 94.38568536751181, + "exit_reason": "signal", + "exit_time": "2021-10-27T00:00:00", + "pnl": -4.953281669813805, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21262216293847, + "entry_time": "2021-10-29T00:00:00", + "exit_price": 94.23411145607675, + "exit_reason": "signal", + "exit_time": "2021-10-30T00:00:00", + "pnl": 2.148929313827466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82330133886903, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 93.61660062265747, + "exit_reason": "signal", + "exit_time": "2021-11-02T00:00:00", + "pnl": -20.67007162115442, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71484163940588, + "entry_time": "2021-11-04T00:00:00", + "exit_price": 93.72855192282307, + "exit_reason": "signal", + "exit_time": "2021-11-05T00:00:00", + "pnl": 1.3710283417203755, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3692642985158, + "entry_time": "2021-11-07T00:00:00", + "exit_price": 93.37837200951205, + "exit_reason": "signal", + "exit_time": "2021-11-08T00:00:00", + "pnl": 0.9107710996231617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19352686807355, + "entry_time": "2021-11-10T00:00:00", + "exit_price": 93.28024660066703, + "exit_reason": "signal", + "exit_time": "2021-11-11T00:00:00", + "pnl": 8.671973259348306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96384685743692, + "entry_time": "2021-11-13T00:00:00", + "exit_price": 93.14877036790756, + "exit_reason": "signal", + "exit_time": "2021-11-14T00:00:00", + "pnl": 18.492351047065313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09572264391801, + "entry_time": "2021-11-16T00:00:00", + "exit_price": 92.53876217367774, + "exit_reason": "signal", + "exit_time": "2021-11-17T00:00:00", + "pnl": -55.6960470240283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.64617178108719, + "entry_time": "2021-11-19T00:00:00", + "exit_price": 92.85422093876446, + "exit_reason": "signal", + "exit_time": "2021-11-20T00:00:00", + "pnl": 20.804915767725106, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60924422208079, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 92.52724603055836, + "exit_reason": "signal", + "exit_time": "2021-11-23T00:00:00", + "pnl": -8.199819152243435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46494136842418, + "entry_time": "2021-11-25T00:00:00", + "exit_price": 92.44406941275119, + "exit_reason": "signal", + "exit_time": "2021-11-26T00:00:00", + "pnl": -2.0871955672973854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32264147745168, + "entry_time": "2021-11-28T00:00:00", + "exit_price": 92.0360221167863, + "exit_reason": "signal", + "exit_time": "2021-11-29T00:00:00", + "pnl": -28.661936066539056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01384655286363, + "entry_time": "2021-12-01T00:00:00", + "exit_price": 91.97262653583181, + "exit_reason": "signal", + "exit_time": "2021-12-02T00:00:00", + "pnl": -4.122001703182832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.28024889847717, + "entry_time": "2021-12-04T00:00:00", + "exit_price": 91.96758302287454, + "exit_reason": "signal", + "exit_time": "2021-12-05T00:00:00", + "pnl": -31.26658756026336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25528568314509, + "entry_time": "2021-12-07T00:00:00", + "exit_price": 92.20092793334622, + "exit_reason": "signal", + "exit_time": "2021-12-08T00:00:00", + "pnl": -5.435774979885537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49508373939167, + "entry_time": "2021-12-10T00:00:00", + "exit_price": 92.73466658206335, + "exit_reason": "signal", + "exit_time": "2021-12-11T00:00:00", + "pnl": 23.958284267167983, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46436704586412, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.69111891541637, + "exit_reason": "signal", + "exit_time": "2021-12-14T00:00:00", + "pnl": 22.67518695522449, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21128313549013, + "entry_time": "2021-12-16T00:00:00", + "exit_price": 93.37756823246967, + "exit_reason": "signal", + "exit_time": "2021-12-17T00:00:00", + "pnl": 16.628509697953632, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04218716563325, + "entry_time": "2021-12-19T00:00:00", + "exit_price": 93.00014735551822, + "exit_reason": "signal", + "exit_time": "2021-12-20T00:00:00", + "pnl": -4.203981011503856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.93318531635457, + "entry_time": "2021-12-22T00:00:00", + "exit_price": 92.84116622880475, + "exit_reason": "signal", + "exit_time": "2021-12-23T00:00:00", + "pnl": -9.20190875498156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50637869144556, + "entry_time": "2021-12-25T00:00:00", + "exit_price": 92.66826656058106, + "exit_reason": "signal", + "exit_time": "2021-12-26T00:00:00", + "pnl": 16.188786913549848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36257300920573, + "entry_time": "2021-12-28T00:00:00", + "exit_price": 92.60779676375832, + "exit_reason": "signal", + "exit_time": "2021-12-29T00:00:00", + "pnl": 24.522375455258953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36220969555443, + "entry_time": "2021-12-31T00:00:00", + "exit_price": 92.1193839744838, + "exit_reason": "signal", + "exit_time": "2022-01-01T00:00:00", + "pnl": -24.28257210706397, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89096232869592, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.75394086603562, + "exit_reason": "signal", + "exit_time": "2022-01-04T00:00:00", + "pnl": -13.702146266028649, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.10653141004636, + "entry_time": "2022-01-06T00:00:00", + "exit_price": 91.98502552303084, + "exit_reason": "signal", + "exit_time": "2022-01-07T00:00:00", + "pnl": -12.150588701551897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03115476672883, + "entry_time": "2022-01-09T00:00:00", + "exit_price": 92.05866288388766, + "exit_reason": "signal", + "exit_time": "2022-01-10T00:00:00", + "pnl": 2.7508117158831737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.80506699745925, + "entry_time": "2022-01-12T00:00:00", + "exit_price": 91.97004409317438, + "exit_reason": "signal", + "exit_time": "2022-01-13T00:00:00", + "pnl": 16.49770957151304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39339911911829, + "entry_time": "2022-01-15T00:00:00", + "exit_price": 91.28070286679336, + "exit_reason": "signal", + "exit_time": "2022-01-16T00:00:00", + "pnl": -11.269625232493127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74175784445059, + "entry_time": "2022-01-18T00:00:00", + "exit_price": 91.6733758391721, + "exit_reason": "signal", + "exit_time": "2022-01-19T00:00:00", + "pnl": -6.83820052784904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81901224922302, + "entry_time": "2022-01-21T00:00:00", + "exit_price": 91.84844274508458, + "exit_reason": "signal", + "exit_time": "2022-01-22T00:00:00", + "pnl": 2.9430495861561212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.60313885279771, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.41938832519848, + "exit_reason": "signal", + "exit_time": "2022-01-25T00:00:00", + "pnl": -18.375052759922255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64052127057325, + "entry_time": "2022-01-27T00:00:00", + "exit_price": 91.54200410559555, + "exit_reason": "signal", + "exit_time": "2022-01-28T00:00:00", + "pnl": -9.851716497769303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73590345101391, + "entry_time": "2022-01-30T00:00:00", + "exit_price": 91.62782637305553, + "exit_reason": "signal", + "exit_time": "2022-01-31T00:00:00", + "pnl": -10.807707795838724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79185882856454, + "entry_time": "2022-02-02T00:00:00", + "exit_price": 91.8357946573913, + "exit_reason": "signal", + "exit_time": "2022-02-03T00:00:00", + "pnl": 4.393582882676128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79563500808236, + "entry_time": "2022-02-05T00:00:00", + "exit_price": 92.09144139124615, + "exit_reason": "signal", + "exit_time": "2022-02-06T00:00:00", + "pnl": 29.58063831637992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.91260250945975, + "entry_time": "2022-02-08T00:00:00", + "exit_price": 91.67552176869381, + "exit_reason": "signal", + "exit_time": "2022-02-09T00:00:00", + "pnl": -23.70807407659231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66062267455895, + "entry_time": "2022-02-11T00:00:00", + "exit_price": 91.64149069106048, + "exit_reason": "signal", + "exit_time": "2022-02-12T00:00:00", + "pnl": -1.9131983498464251, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37359630109037, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.51652219716766, + "exit_reason": "signal", + "exit_time": "2022-02-15T00:00:00", + "pnl": 14.292589607728587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.54575759654936, + "entry_time": "2022-02-17T00:00:00", + "exit_price": 91.58821852619887, + "exit_reason": "signal", + "exit_time": "2022-02-18T00:00:00", + "pnl": 4.246092964951458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76782809841714, + "entry_time": "2022-02-20T00:00:00", + "exit_price": 91.6119124553235, + "exit_reason": "signal", + "exit_time": "2022-02-21T00:00:00", + "pnl": -15.591564309363093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74629736846254, + "entry_time": "2022-02-23T00:00:00", + "exit_price": 91.61327551923173, + "exit_reason": "signal", + "exit_time": "2022-02-24T00:00:00", + "pnl": -13.30218492307904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.32896871135786, + "entry_time": "2022-02-26T00:00:00", + "exit_price": 91.13780861275266, + "exit_reason": "signal", + "exit_time": "2022-02-27T00:00:00", + "pnl": -19.116009860519625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12507835931243, + "entry_time": "2022-03-01T00:00:00", + "exit_price": 91.13114200203424, + "exit_reason": "signal", + "exit_time": "2022-03-02T00:00:00", + "pnl": 0.6063642721801443, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37230639398891, + "entry_time": "2022-03-04T00:00:00", + "exit_price": 91.298526480022, + "exit_reason": "signal", + "exit_time": "2022-03-05T00:00:00", + "pnl": -7.377991396690049, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14580661294434, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.26371087049277, + "exit_reason": "signal", + "exit_time": "2022-03-08T00:00:00", + "pnl": 11.790425754843454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.19265250778471, + "entry_time": "2022-03-10T00:00:00", + "exit_price": 91.34688434505053, + "exit_reason": "signal", + "exit_time": "2022-03-11T00:00:00", + "pnl": 15.423183726581556, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.27944969864926, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 91.00376526097061, + "exit_reason": "signal", + "exit_time": "2022-03-14T00:00:00", + "pnl": -27.568443767864665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12691845430324, + "entry_time": "2022-03-16T00:00:00", + "exit_price": 91.13627424638673, + "exit_reason": "signal", + "exit_time": "2022-03-17T00:00:00", + "pnl": 0.9355792083497363, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.90552697963446, + "entry_time": "2022-03-19T00:00:00", + "exit_price": 90.86432013057937, + "exit_reason": "signal", + "exit_time": "2022-03-20T00:00:00", + "pnl": -4.120684905507005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88314466139805, + "entry_time": "2022-03-22T00:00:00", + "exit_price": 90.85684478131836, + "exit_reason": "signal", + "exit_time": "2022-03-23T00:00:00", + "pnl": -2.6299880079695868, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8333575750649, + "entry_time": "2022-03-25T00:00:00", + "exit_price": 90.87580958070879, + "exit_reason": "signal", + "exit_time": "2022-03-26T00:00:00", + "pnl": 4.245200564389961, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87723690769735, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.02118341969194, + "exit_reason": "signal", + "exit_time": "2022-03-29T00:00:00", + "pnl": 14.394651199458167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14559411024791, + "entry_time": "2022-03-31T00:00:00", + "exit_price": 91.1102070847533, + "exit_reason": "signal", + "exit_time": "2022-04-01T00:00:00", + "pnl": -3.5387025494619593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.03652679668627, + "entry_time": "2022-04-03T00:00:00", + "exit_price": 90.64848582455738, + "exit_reason": "signal", + "exit_time": "2022-04-04T00:00:00", + "pnl": -38.80409721288743, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.5160908672533, + "entry_time": "2022-04-06T00:00:00", + "exit_price": 90.67122680039915, + "exit_reason": "signal", + "exit_time": "2022-04-07T00:00:00", + "pnl": 15.513593314586615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49638519206744, + "entry_time": "2022-04-09T00:00:00", + "exit_price": 90.23851904732544, + "exit_reason": "signal", + "exit_time": "2022-04-10T00:00:00", + "pnl": -25.78661447419836, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.12623758622358, + "entry_time": "2022-04-12T00:00:00", + "exit_price": 90.13616044249197, + "exit_reason": "signal", + "exit_time": "2022-04-13T00:00:00", + "pnl": 0.9922856268385658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.97730849654188, + "entry_time": "2022-04-15T00:00:00", + "exit_price": 89.93950245741028, + "exit_reason": "signal", + "exit_time": "2022-04-16T00:00:00", + "pnl": -3.7806039131592115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.92103698222829, + "entry_time": "2022-04-18T00:00:00", + "exit_price": 89.92708766921471, + "exit_reason": "signal", + "exit_time": "2022-04-19T00:00:00", + "pnl": 0.6050686986418441, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.318742774315, + "entry_time": "2022-04-21T00:00:00", + "exit_price": 90.23642124916759, + "exit_reason": "signal", + "exit_time": "2022-04-22T00:00:00", + "pnl": -8.232152514739937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.21999028274801, + "entry_time": "2022-04-24T00:00:00", + "exit_price": 90.22126197659611, + "exit_reason": "signal", + "exit_time": "2022-04-25T00:00:00", + "pnl": 0.12716938480843964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84560909030802, + "entry_time": "2022-04-27T00:00:00", + "exit_price": 90.53569591871245, + "exit_reason": "signal", + "exit_time": "2022-04-28T00:00:00", + "pnl": -30.991317159558093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0165686304024, + "entry_time": "2022-04-30T00:00:00", + "exit_price": 90.91735297539282, + "exit_reason": "signal", + "exit_time": "2022-05-01T00:00:00", + "pnl": -9.921565500957513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2390830156373, + "entry_time": "2022-05-03T00:00:00", + "exit_price": 91.14925296519219, + "exit_reason": "signal", + "exit_time": "2022-05-04T00:00:00", + "pnl": -8.983005044510719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22089116397768, + "entry_time": "2022-05-06T00:00:00", + "exit_price": 90.87029928541635, + "exit_reason": "signal", + "exit_time": "2022-05-07T00:00:00", + "pnl": -35.059187856133576, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89974631246403, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.06863681183862, + "exit_reason": "signal", + "exit_time": "2022-05-10T00:00:00", + "pnl": 16.889049937459276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.57589026049908, + "entry_time": "2022-05-12T00:00:00", + "exit_price": 91.50862549547844, + "exit_reason": "signal", + "exit_time": "2022-05-13T00:00:00", + "pnl": -6.726476502062724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62801821971621, + "entry_time": "2022-05-15T00:00:00", + "exit_price": 91.81567744205196, + "exit_reason": "signal", + "exit_time": "2022-05-16T00:00:00", + "pnl": 18.76592223357511, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.33854066905738, + "entry_time": "2022-05-18T00:00:00", + "exit_price": 90.96569574948703, + "exit_reason": "signal", + "exit_time": "2022-05-19T00:00:00", + "pnl": -37.28449195703615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07274851876403, + "entry_time": "2022-05-21T00:00:00", + "exit_price": 90.95622489428452, + "exit_reason": "signal", + "exit_time": "2022-05-22T00:00:00", + "pnl": -11.652362447952328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.72051069276088, + "entry_time": "2022-05-24T00:00:00", + "exit_price": 90.55232295814028, + "exit_reason": "signal", + "exit_time": "2022-05-25T00:00:00", + "pnl": -16.818773462060562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.40473126616526, + "entry_time": "2022-05-27T00:00:00", + "exit_price": 90.65640141611814, + "exit_reason": "signal", + "exit_time": "2022-05-28T00:00:00", + "pnl": 25.16701499528972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56665701011867, + "entry_time": "2022-05-30T00:00:00", + "exit_price": 90.46095751045398, + "exit_reason": "signal", + "exit_time": "2022-05-31T00:00:00", + "pnl": -10.569949966469721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.76022002087706, + "entry_time": "2022-06-02T00:00:00", + "exit_price": 90.81381751472117, + "exit_reason": "signal", + "exit_time": "2022-06-03T00:00:00", + "pnl": 5.359749384409952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23375682446748, + "entry_time": "2022-06-05T00:00:00", + "exit_price": 91.01190578025698, + "exit_reason": "signal", + "exit_time": "2022-06-06T00:00:00", + "pnl": -22.18510442104889, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56046438309357, + "entry_time": "2022-06-08T00:00:00", + "exit_price": 90.6501420569037, + "exit_reason": "signal", + "exit_time": "2022-06-09T00:00:00", + "pnl": 8.96776738101289, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45985538510016, + "entry_time": "2022-06-11T00:00:00", + "exit_price": 90.32205823485288, + "exit_reason": "signal", + "exit_time": "2022-06-12T00:00:00", + "pnl": -13.77971502472792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.4213362857644, + "entry_time": "2022-06-14T00:00:00", + "exit_price": 90.3254460973393, + "exit_reason": "signal", + "exit_time": "2022-06-15T00:00:00", + "pnl": -9.589018842509176, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.36326200776878, + "entry_time": "2022-06-17T00:00:00", + "exit_price": 90.1350438366559, + "exit_reason": "signal", + "exit_time": "2022-06-18T00:00:00", + "pnl": -22.82181711128942, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.53738507774712, + "entry_time": "2022-06-20T00:00:00", + "exit_price": 90.43902960493799, + "exit_reason": "signal", + "exit_time": "2022-06-21T00:00:00", + "pnl": -9.835547280912579, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28282897059066, + "entry_time": "2022-06-23T00:00:00", + "exit_price": 90.42427634098117, + "exit_reason": "signal", + "exit_time": "2022-06-24T00:00:00", + "pnl": 14.144737039050597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.65923583486823, + "entry_time": "2022-06-26T00:00:00", + "exit_price": 90.60873415539405, + "exit_reason": "signal", + "exit_time": "2022-06-27T00:00:00", + "pnl": -5.050167947418231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.39024714619487, + "entry_time": "2022-06-29T00:00:00", + "exit_price": 90.66523349021156, + "exit_reason": "signal", + "exit_time": "2022-06-30T00:00:00", + "pnl": 27.498634401668824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82876323237488, + "entry_time": "2022-07-02T00:00:00", + "exit_price": 90.97466728886246, + "exit_reason": "signal", + "exit_time": "2022-07-03T00:00:00", + "pnl": 14.590405648757951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89452843928451, + "entry_time": "2022-07-05T00:00:00", + "exit_price": 90.67041116090726, + "exit_reason": "signal", + "exit_time": "2022-07-06T00:00:00", + "pnl": -22.411727837725266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63870699300467, + "entry_time": "2022-07-08T00:00:00", + "exit_price": 90.60806866533521, + "exit_reason": "signal", + "exit_time": "2022-07-09T00:00:00", + "pnl": -3.0638327669457794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09022889967974, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 91.33132395141395, + "exit_reason": "signal", + "exit_time": "2022-07-12T00:00:00", + "pnl": 24.109505173419166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1422566167072, + "entry_time": "2022-07-14T00:00:00", + "exit_price": 91.02336448195068, + "exit_reason": "signal", + "exit_time": "2022-07-15T00:00:00", + "pnl": -11.889213475651559, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.85171345155105, + "entry_time": "2022-07-17T00:00:00", + "exit_price": 90.92826438920278, + "exit_reason": "signal", + "exit_time": "2022-07-18T00:00:00", + "pnl": 7.65509376517366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9967936460588, + "entry_time": "2022-07-20T00:00:00", + "exit_price": 91.02558962193989, + "exit_reason": "signal", + "exit_time": "2022-07-21T00:00:00", + "pnl": 2.879597588107572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86654130293297, + "entry_time": "2022-07-23T00:00:00", + "exit_price": 91.1805076876075, + "exit_reason": "signal", + "exit_time": "2022-07-24T00:00:00", + "pnl": 31.39663846745316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20590970247865, + "entry_time": "2022-07-26T00:00:00", + "exit_price": 91.04093233048125, + "exit_reason": "signal", + "exit_time": "2022-07-27T00:00:00", + "pnl": -16.497737199741096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.94025278141096, + "entry_time": "2022-07-29T00:00:00", + "exit_price": 91.1695372755258, + "exit_reason": "signal", + "exit_time": "2022-07-30T00:00:00", + "pnl": 22.928449411483598, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55006804279205, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.74946747581956, + "exit_reason": "signal", + "exit_time": "2022-08-02T00:00:00", + "pnl": 19.939943302752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.08829699168929, + "entry_time": "2022-08-04T00:00:00", + "exit_price": 92.17204398025235, + "exit_reason": "signal", + "exit_time": "2022-08-05T00:00:00", + "pnl": 8.374698856305258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82928257766983, + "entry_time": "2022-08-07T00:00:00", + "exit_price": 91.80555288724541, + "exit_reason": "signal", + "exit_time": "2022-08-08T00:00:00", + "pnl": -2.3729690424424916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03756487304749, + "entry_time": "2022-08-10T00:00:00", + "exit_price": 91.92246232242579, + "exit_reason": "signal", + "exit_time": "2022-08-11T00:00:00", + "pnl": -11.510255062170472, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12455329081938, + "entry_time": "2022-08-13T00:00:00", + "exit_price": 92.03614640032846, + "exit_reason": "signal", + "exit_time": "2022-08-14T00:00:00", + "pnl": -8.840689049091452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43863634543025, + "entry_time": "2022-08-16T00:00:00", + "exit_price": 92.57880144701099, + "exit_reason": "signal", + "exit_time": "2022-08-17T00:00:00", + "pnl": 14.016510158073288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5662997648947, + "entry_time": "2022-08-19T00:00:00", + "exit_price": 92.63602712862732, + "exit_reason": "signal", + "exit_time": "2022-08-20T00:00:00", + "pnl": 6.972736373261796, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99359531127284, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.20326657631179, + "exit_reason": "signal", + "exit_time": "2022-08-23T00:00:00", + "pnl": 20.967126503895997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36371229951278, + "entry_time": "2022-08-25T00:00:00", + "exit_price": 93.15013947578183, + "exit_reason": "signal", + "exit_time": "2022-08-26T00:00:00", + "pnl": -21.357282373095586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39786147444195, + "entry_time": "2022-08-28T00:00:00", + "exit_price": 93.32525340472, + "exit_reason": "signal", + "exit_time": "2022-08-29T00:00:00", + "pnl": -7.260806972195496, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1699951830038, + "entry_time": "2022-08-31T00:00:00", + "exit_price": 92.94415449917722, + "exit_reason": "signal", + "exit_time": "2022-09-01T00:00:00", + "pnl": -22.584068382659098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06237685823791, + "entry_time": "2022-09-03T00:00:00", + "exit_price": 92.88599230986543, + "exit_reason": "signal", + "exit_time": "2022-09-04T00:00:00", + "pnl": -17.63845483724799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09341138541605, + "entry_time": "2022-09-06T00:00:00", + "exit_price": 93.29146577709628, + "exit_reason": "signal", + "exit_time": "2022-09-07T00:00:00", + "pnl": 19.80543916802344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.45209900958335, + "entry_time": "2022-09-09T00:00:00", + "exit_price": 93.38892182999521, + "exit_reason": "signal", + "exit_time": "2022-09-10T00:00:00", + "pnl": -6.317717958812864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42662435004, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 93.86711355565461, + "exit_reason": "signal", + "exit_time": "2022-09-13T00:00:00", + "pnl": 44.04892056146127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43026737045712, + "entry_time": "2022-09-15T00:00:00", + "exit_price": 94.68555551249223, + "exit_reason": "signal", + "exit_time": "2022-09-16T00:00:00", + "pnl": 25.5288142035115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.34275603824345, + "entry_time": "2022-09-18T00:00:00", + "exit_price": 94.26115762602807, + "exit_reason": "signal", + "exit_time": "2022-09-19T00:00:00", + "pnl": -8.159841221537135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81665975574816, + "entry_time": "2022-09-21T00:00:00", + "exit_price": 94.69084237577945, + "exit_reason": "signal", + "exit_time": "2022-09-22T00:00:00", + "pnl": -12.581737996872107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.80375023000443, + "entry_time": "2022-09-24T00:00:00", + "exit_price": 94.71118042427594, + "exit_reason": "signal", + "exit_time": "2022-09-25T00:00:00", + "pnl": -9.256980572848988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46412500503037, + "entry_time": "2022-09-27T00:00:00", + "exit_price": 94.6314533607136, + "exit_reason": "signal", + "exit_time": "2022-09-28T00:00:00", + "pnl": 16.732835568323935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6742741594175, + "entry_time": "2022-09-30T00:00:00", + "exit_price": 94.69072074935896, + "exit_reason": "signal", + "exit_time": "2022-10-01T00:00:00", + "pnl": 1.6446589941460843, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.12667461230008, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 94.99949417466048, + "exit_reason": "signal", + "exit_time": "2022-10-04T00:00:00", + "pnl": -12.71804376395994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92543412582965, + "entry_time": "2022-10-06T00:00:00", + "exit_price": 94.72977842157017, + "exit_reason": "signal", + "exit_time": "2022-10-07T00:00:00", + "pnl": -19.565570425947953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5701038761525, + "entry_time": "2022-10-09T00:00:00", + "exit_price": 94.59977663872266, + "exit_reason": "signal", + "exit_time": "2022-10-10T00:00:00", + "pnl": 2.967276257015328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2927331361965, + "entry_time": "2022-10-12T00:00:00", + "exit_price": 94.40263092608106, + "exit_reason": "signal", + "exit_time": "2022-10-13T00:00:00", + "pnl": 10.989778988454418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28632878234235, + "entry_time": "2022-10-15T00:00:00", + "exit_price": 94.53250654562353, + "exit_reason": "signal", + "exit_time": "2022-10-16T00:00:00", + "pnl": 24.617776328117543, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49417223286694, + "entry_time": "2022-10-18T00:00:00", + "exit_price": 94.21737477440588, + "exit_reason": "signal", + "exit_time": "2022-10-19T00:00:00", + "pnl": -27.679745846106016, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21700275153675, + "entry_time": "2022-10-21T00:00:00", + "exit_price": 94.24257812297434, + "exit_reason": "signal", + "exit_time": "2022-10-22T00:00:00", + "pnl": 2.557537143758964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33447437173405, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.36500808099656, + "exit_reason": "signal", + "exit_time": "2022-10-25T00:00:00", + "pnl": 3.0533709262508637, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62192540785213, + "entry_time": "2022-10-27T00:00:00", + "exit_price": 94.95467067184597, + "exit_reason": "signal", + "exit_time": "2022-10-28T00:00:00", + "pnl": 33.27452639938383, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32280422773096, + "entry_time": "2022-10-30T00:00:00", + "exit_price": 95.27797141913928, + "exit_reason": "signal", + "exit_time": "2022-10-31T00:00:00", + "pnl": -4.48328085916728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.85159096418194, + "entry_time": "2022-11-02T00:00:00", + "exit_price": 95.9332147424965, + "exit_reason": "signal", + "exit_time": "2022-11-03T00:00:00", + "pnl": 8.162377831456979, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87171080557967, + "entry_time": "2022-11-05T00:00:00", + "exit_price": 95.72359330386428, + "exit_reason": "signal", + "exit_time": "2022-11-06T00:00:00", + "pnl": -14.811750171538733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38266657654837, + "entry_time": "2022-11-08T00:00:00", + "exit_price": 95.28429001378173, + "exit_reason": "signal", + "exit_time": "2022-11-09T00:00:00", + "pnl": -9.837656276666166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01211175536163, + "entry_time": "2022-11-11T00:00:00", + "exit_price": 94.84310882657518, + "exit_reason": "signal", + "exit_time": "2022-11-12T00:00:00", + "pnl": -16.900292878646724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.59049236660378, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.35514007446828, + "exit_reason": "signal", + "exit_time": "2022-11-15T00:00:00", + "pnl": -23.535229213550338, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9357580237877, + "entry_time": "2022-11-17T00:00:00", + "exit_price": 94.05072699188574, + "exit_reason": "signal", + "exit_time": "2022-11-18T00:00:00", + "pnl": 11.49689680980373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00889117962727, + "entry_time": "2022-11-20T00:00:00", + "exit_price": 94.18219892584725, + "exit_reason": "signal", + "exit_time": "2022-11-21T00:00:00", + "pnl": 17.33077462199799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96556912199465, + "entry_time": "2022-11-23T00:00:00", + "exit_price": 93.87607469195584, + "exit_reason": "signal", + "exit_time": "2022-11-24T00:00:00", + "pnl": -8.949443003881242, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60138099475903, + "entry_time": "2022-11-26T00:00:00", + "exit_price": 93.55643441032785, + "exit_reason": "signal", + "exit_time": "2022-11-27T00:00:00", + "pnl": -4.49465844311635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88066522817982, + "entry_time": "2022-11-29T00:00:00", + "exit_price": 93.67510822228188, + "exit_reason": "signal", + "exit_time": "2022-11-30T00:00:00", + "pnl": -20.55570058979538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69837663925773, + "entry_time": "2022-12-02T00:00:00", + "exit_price": 93.91860336977558, + "exit_reason": "signal", + "exit_time": "2022-12-03T00:00:00", + "pnl": 22.022673051784295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.70107216756422, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.66971331829183, + "exit_reason": "signal", + "exit_time": "2022-12-06T00:00:00", + "pnl": -3.135884927238294, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87708149049162, + "entry_time": "2022-12-08T00:00:00", + "exit_price": 93.72163687944706, + "exit_reason": "signal", + "exit_time": "2022-12-09T00:00:00", + "pnl": -15.544461104454967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94898877051006, + "entry_time": "2022-12-11T00:00:00", + "exit_price": 93.95474043698636, + "exit_reason": "signal", + "exit_time": "2022-12-12T00:00:00", + "pnl": 0.5751666476298851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6415881902333, + "entry_time": "2022-12-14T00:00:00", + "exit_price": 93.34129447656329, + "exit_reason": "signal", + "exit_time": "2022-12-15T00:00:00", + "pnl": -30.02937136700166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9434543592522, + "entry_time": "2022-12-17T00:00:00", + "exit_price": 92.60307524718807, + "exit_reason": "signal", + "exit_time": "2022-12-18T00:00:00", + "pnl": -34.0379112064129, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.18983136258927, + "entry_time": "2022-12-20T00:00:00", + "exit_price": 92.07720168711411, + "exit_reason": "signal", + "exit_time": "2022-12-21T00:00:00", + "pnl": -11.262967547514563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00591795170635, + "entry_time": "2022-12-23T00:00:00", + "exit_price": 91.73390898252362, + "exit_reason": "signal", + "exit_time": "2022-12-24T00:00:00", + "pnl": -27.200896918275248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87915537734213, + "entry_time": "2022-12-26T00:00:00", + "exit_price": 92.05356230153482, + "exit_reason": "signal", + "exit_time": "2022-12-27T00:00:00", + "pnl": 17.440692419269908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.19249105693204, + "entry_time": "2022-12-29T00:00:00", + "exit_price": 92.35715717263174, + "exit_reason": "signal", + "exit_time": "2022-12-30T00:00:00", + "pnl": 16.466611569969245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92376356586935, + "entry_time": "2023-01-01T00:00:00", + "exit_price": 92.8642597181964, + "exit_reason": "signal", + "exit_time": "2023-01-02T00:00:00", + "pnl": -5.950384767296782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08761417167571, + "entry_time": "2023-01-04T00:00:00", + "exit_price": 93.3787010770275, + "exit_reason": "signal", + "exit_time": "2023-01-05T00:00:00", + "pnl": 29.108690535180358, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22887351223902, + "entry_time": "2023-01-07T00:00:00", + "exit_price": 93.18791972112416, + "exit_reason": "signal", + "exit_time": "2023-01-08T00:00:00", + "pnl": -4.0953791114861815, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71839956451682, + "entry_time": "2023-01-10T00:00:00", + "exit_price": 92.72871333258459, + "exit_reason": "signal", + "exit_time": "2023-01-11T00:00:00", + "pnl": 1.031376806777189, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71285525012034, + "entry_time": "2023-01-13T00:00:00", + "exit_price": 92.95484908903208, + "exit_reason": "signal", + "exit_time": "2023-01-14T00:00:00", + "pnl": 24.199383891174875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09252551101909, + "entry_time": "2023-01-16T00:00:00", + "exit_price": 93.19565426763862, + "exit_reason": "signal", + "exit_time": "2023-01-17T00:00:00", + "pnl": 10.312875661953512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34851063541004, + "entry_time": "2023-01-19T00:00:00", + "exit_price": 93.36918149511725, + "exit_reason": "signal", + "exit_time": "2023-01-20T00:00:00", + "pnl": 2.0670859707206546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.29871325433136, + "entry_time": "2023-01-22T00:00:00", + "exit_price": 93.43191348926673, + "exit_reason": "signal", + "exit_time": "2023-01-23T00:00:00", + "pnl": 13.32002349353752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54163438380152, + "entry_time": "2023-01-25T00:00:00", + "exit_price": 93.70996022231523, + "exit_reason": "signal", + "exit_time": "2023-01-26T00:00:00", + "pnl": 16.832583851371965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44351635290319, + "entry_time": "2023-01-28T00:00:00", + "exit_price": 93.3607156455027, + "exit_reason": "signal", + "exit_time": "2023-01-29T00:00:00", + "pnl": -8.280070740049268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25194927165909, + "entry_time": "2023-01-31T00:00:00", + "exit_price": 93.09482587993352, + "exit_reason": "signal", + "exit_time": "2023-02-01T00:00:00", + "pnl": -15.712339172556312, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05964578316673, + "entry_time": "2023-02-03T00:00:00", + "exit_price": 93.1247824238807, + "exit_reason": "signal", + "exit_time": "2023-02-04T00:00:00", + "pnl": 6.513664071397216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60195304694001, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.5077083162264, + "exit_reason": "signal", + "exit_time": "2023-02-07T00:00:00", + "pnl": -9.424473071361717, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32915625849455, + "entry_time": "2023-02-09T00:00:00", + "exit_price": 93.41904859018952, + "exit_reason": "signal", + "exit_time": "2023-02-10T00:00:00", + "pnl": 8.98923316949731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86240170807343, + "entry_time": "2023-02-12T00:00:00", + "exit_price": 93.74311994285968, + "exit_reason": "signal", + "exit_time": "2023-02-13T00:00:00", + "pnl": -11.928176521374553, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92758592270172, + "entry_time": "2023-02-15T00:00:00", + "exit_price": 93.91004727072426, + "exit_reason": "signal", + "exit_time": "2023-02-16T00:00:00", + "pnl": -1.7538651977465634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.90746519420465, + "entry_time": "2023-02-18T00:00:00", + "exit_price": 94.16764239198312, + "exit_reason": "signal", + "exit_time": "2023-02-19T00:00:00", + "pnl": 26.01771977784665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.44892482562022, + "entry_time": "2023-02-21T00:00:00", + "exit_price": 94.29820349772235, + "exit_reason": "signal", + "exit_time": "2023-02-22T00:00:00", + "pnl": -15.072132789788157, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29660996193417, + "entry_time": "2023-02-24T00:00:00", + "exit_price": 94.34630077913107, + "exit_reason": "signal", + "exit_time": "2023-02-25T00:00:00", + "pnl": 4.9690817196897115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28533190136021, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.32163037675376, + "exit_reason": "signal", + "exit_time": "2023-02-28T00:00:00", + "pnl": 3.6298475393559784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20619082469412, + "entry_time": "2023-03-02T00:00:00", + "exit_price": 93.94806731557186, + "exit_reason": "signal", + "exit_time": "2023-03-03T00:00:00", + "pnl": -25.812350912225156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5296456958934, + "entry_time": "2023-03-05T00:00:00", + "exit_price": 93.2046797163239, + "exit_reason": "signal", + "exit_time": "2023-03-06T00:00:00", + "pnl": -32.4965979569497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32570812965447, + "entry_time": "2023-03-08T00:00:00", + "exit_price": 93.27835226241817, + "exit_reason": "signal", + "exit_time": "2023-03-09T00:00:00", + "pnl": -4.73558672362924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18052001757422, + "entry_time": "2023-03-11T00:00:00", + "exit_price": 93.21374473155299, + "exit_reason": "signal", + "exit_time": "2023-03-12T00:00:00", + "pnl": 3.322471397877962, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13943605219035, + "entry_time": "2023-03-14T00:00:00", + "exit_price": 93.26046795573633, + "exit_reason": "signal", + "exit_time": "2023-03-15T00:00:00", + "pnl": 12.103190354599064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21960702536101, + "entry_time": "2023-03-17T00:00:00", + "exit_price": 92.64774686400108, + "exit_reason": "signal", + "exit_time": "2023-03-18T00:00:00", + "pnl": -57.18601613599458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31556350692, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.46149005259649, + "exit_reason": "signal", + "exit_time": "2023-03-21T00:00:00", + "pnl": 14.592654567648424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52377288657563, + "entry_time": "2023-03-23T00:00:00", + "exit_price": 92.23839203319807, + "exit_reason": "signal", + "exit_time": "2023-03-24T00:00:00", + "pnl": -28.538085337755547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6963758650249, + "entry_time": "2023-03-26T00:00:00", + "exit_price": 92.70207115016164, + "exit_reason": "signal", + "exit_time": "2023-03-27T00:00:00", + "pnl": 0.5695285136735038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1906639429263, + "entry_time": "2023-03-29T00:00:00", + "exit_price": 93.35726613372299, + "exit_reason": "signal", + "exit_time": "2023-03-30T00:00:00", + "pnl": 16.660219079667513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1634420410312, + "entry_time": "2023-04-01T00:00:00", + "exit_price": 93.2066382813918, + "exit_reason": "signal", + "exit_time": "2023-04-02T00:00:00", + "pnl": 4.319624036061214, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0471045722787, + "entry_time": "2023-04-04T00:00:00", + "exit_price": 92.82199720210754, + "exit_reason": "signal", + "exit_time": "2023-04-05T00:00:00", + "pnl": -22.51073701711539, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8989666578373, + "entry_time": "2023-04-07T00:00:00", + "exit_price": 92.77857374465485, + "exit_reason": "signal", + "exit_time": "2023-04-08T00:00:00", + "pnl": -12.039291318245887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.70919453056075, + "entry_time": "2023-04-10T00:00:00", + "exit_price": 92.74465000028516, + "exit_reason": "signal", + "exit_time": "2023-04-11T00:00:00", + "pnl": 3.5455469724420254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60934516564298, + "entry_time": "2023-04-13T00:00:00", + "exit_price": 92.96618622577306, + "exit_reason": "signal", + "exit_time": "2023-04-14T00:00:00", + "pnl": 35.684106013008204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78501792806425, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.76326607151933, + "exit_reason": "signal", + "exit_time": "2023-04-17T00:00:00", + "pnl": -2.175185654492452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62556378625803, + "entry_time": "2023-04-19T00:00:00", + "exit_price": 92.65556548612001, + "exit_reason": "signal", + "exit_time": "2023-04-20T00:00:00", + "pnl": 3.000169986198671, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68684981308908, + "entry_time": "2023-04-22T00:00:00", + "exit_price": 92.58597625405771, + "exit_reason": "signal", + "exit_time": "2023-04-23T00:00:00", + "pnl": -10.087355903136995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86536967969084, + "entry_time": "2023-04-25T00:00:00", + "exit_price": 92.75020367672924, + "exit_reason": "signal", + "exit_time": "2023-04-26T00:00:00", + "pnl": -11.516600296161414, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75062990936559, + "entry_time": "2023-04-28T00:00:00", + "exit_price": 92.98349381034318, + "exit_reason": "signal", + "exit_time": "2023-04-29T00:00:00", + "pnl": 23.286390097759067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04847278769076, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 93.06193871613516, + "exit_reason": "signal", + "exit_time": "2023-05-02T00:00:00", + "pnl": 1.346592844440238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60529611931622, + "entry_time": "2023-05-04T00:00:00", + "exit_price": 92.60807864200518, + "exit_reason": "signal", + "exit_time": "2023-05-05T00:00:00", + "pnl": 0.27825226889581245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90198815097345, + "entry_time": "2023-05-07T00:00:00", + "exit_price": 92.84425841280351, + "exit_reason": "signal", + "exit_time": "2023-05-08T00:00:00", + "pnl": -5.772973816992817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66689924421028, + "entry_time": "2023-05-10T00:00:00", + "exit_price": 92.6348345250126, + "exit_reason": "signal", + "exit_time": "2023-05-11T00:00:00", + "pnl": -3.206471919769683, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74311085652141, + "entry_time": "2023-05-13T00:00:00", + "exit_price": 92.87596365908365, + "exit_reason": "signal", + "exit_time": "2023-05-14T00:00:00", + "pnl": 13.285280256222904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15467982049428, + "entry_time": "2023-05-16T00:00:00", + "exit_price": 93.06917346679761, + "exit_reason": "signal", + "exit_time": "2023-05-17T00:00:00", + "pnl": -8.550635369667361, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16088604193162, + "entry_time": "2023-05-19T00:00:00", + "exit_price": 93.1767131466551, + "exit_reason": "signal", + "exit_time": "2023-05-20T00:00:00", + "pnl": 1.5827104723484808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59084973064017, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.3728256379574, + "exit_reason": "signal", + "exit_time": "2023-05-23T00:00:00", + "pnl": -21.80240926827537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83907971020484, + "entry_time": "2023-05-25T00:00:00", + "exit_price": 94.05336598759212, + "exit_reason": "signal", + "exit_time": "2023-05-26T00:00:00", + "pnl": 21.4286277387273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15556945611712, + "entry_time": "2023-05-28T00:00:00", + "exit_price": 94.11170249260897, + "exit_reason": "signal", + "exit_time": "2023-05-29T00:00:00", + "pnl": -4.386696350815328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26806948858284, + "entry_time": "2023-05-31T00:00:00", + "exit_price": 94.19864576006458, + "exit_reason": "signal", + "exit_time": "2023-06-01T00:00:00", + "pnl": -6.9423728518268035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02469106007196, + "entry_time": "2023-06-03T00:00:00", + "exit_price": 94.37555658552148, + "exit_reason": "signal", + "exit_time": "2023-06-04T00:00:00", + "pnl": 35.0865525449517, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4719110379968, + "entry_time": "2023-06-06T00:00:00", + "exit_price": 94.46329135212792, + "exit_reason": "signal", + "exit_time": "2023-06-07T00:00:00", + "pnl": -0.8619685868870874, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.72605970139526, + "entry_time": "2023-06-09T00:00:00", + "exit_price": 94.42143976779836, + "exit_reason": "signal", + "exit_time": "2023-06-10T00:00:00", + "pnl": -30.461993359689586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5510290269881, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.42138738037778, + "exit_reason": "signal", + "exit_time": "2023-06-13T00:00:00", + "pnl": -12.964164661032555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49725923626676, + "entry_time": "2023-06-15T00:00:00", + "exit_price": 94.83017838441384, + "exit_reason": "signal", + "exit_time": "2023-06-16T00:00:00", + "pnl": 33.291914814708434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.96394971087318, + "entry_time": "2023-06-18T00:00:00", + "exit_price": 94.80946954515628, + "exit_reason": "signal", + "exit_time": "2023-06-19T00:00:00", + "pnl": -15.44801657169046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.05895494780962, + "entry_time": "2023-06-21T00:00:00", + "exit_price": 94.7764741456602, + "exit_reason": "signal", + "exit_time": "2023-06-22T00:00:00", + "pnl": -28.248080214942092, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.82916340306784, + "entry_time": "2023-06-24T00:00:00", + "exit_price": 94.49615933800648, + "exit_reason": "signal", + "exit_time": "2023-06-25T00:00:00", + "pnl": -33.300406506135914, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53903204926397, + "entry_time": "2023-06-27T00:00:00", + "exit_price": 94.2199238563033, + "exit_reason": "signal", + "exit_time": "2023-06-28T00:00:00", + "pnl": -31.91081929606662, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15553425915469, + "entry_time": "2023-06-30T00:00:00", + "exit_price": 94.3233546324033, + "exit_reason": "signal", + "exit_time": "2023-07-01T00:00:00", + "pnl": 16.78203732486145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29143609072966, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.34909878462929, + "exit_reason": "signal", + "exit_time": "2023-07-04T00:00:00", + "pnl": 5.766269389963782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79549173605427, + "entry_time": "2023-07-06T00:00:00", + "exit_price": 94.86012460829116, + "exit_reason": "signal", + "exit_time": "2023-07-07T00:00:00", + "pnl": 6.463287223687075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62257045149929, + "entry_time": "2023-07-09T00:00:00", + "exit_price": 94.36740770267758, + "exit_reason": "signal", + "exit_time": "2023-07-10T00:00:00", + "pnl": -25.516274882171274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1123342756572, + "entry_time": "2023-07-12T00:00:00", + "exit_price": 94.28815691102787, + "exit_reason": "signal", + "exit_time": "2023-07-13T00:00:00", + "pnl": 17.582263537065955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89234388227695, + "entry_time": "2023-07-15T00:00:00", + "exit_price": 93.64456440149245, + "exit_reason": "signal", + "exit_time": "2023-07-16T00:00:00", + "pnl": -24.77794807845021, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.62943347351336, + "entry_time": "2023-07-18T00:00:00", + "exit_price": 93.64788638508941, + "exit_reason": "signal", + "exit_time": "2023-07-19T00:00:00", + "pnl": 1.8452911576041515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1774162868962, + "entry_time": "2023-07-21T00:00:00", + "exit_price": 94.00402666791075, + "exit_reason": "signal", + "exit_time": "2023-07-22T00:00:00", + "pnl": -17.338961898545676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.04453321057154, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.96838361247781, + "exit_reason": "signal", + "exit_time": "2023-07-25T00:00:00", + "pnl": -7.614959809372522, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88321586599363, + "entry_time": "2023-07-27T00:00:00", + "exit_price": 93.90884833929827, + "exit_reason": "signal", + "exit_time": "2023-07-28T00:00:00", + "pnl": 2.5632473304649466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7179718780841, + "entry_time": "2023-07-30T00:00:00", + "exit_price": 93.74821494678119, + "exit_reason": "signal", + "exit_time": "2023-07-31T00:00:00", + "pnl": 3.0243068697091076, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9038655497103, + "entry_time": "2023-08-02T00:00:00", + "exit_price": 93.83750554707963, + "exit_reason": "signal", + "exit_time": "2023-08-03T00:00:00", + "pnl": -6.6360002630663075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88584036004717, + "entry_time": "2023-08-05T00:00:00", + "exit_price": 93.9446210717662, + "exit_reason": "signal", + "exit_time": "2023-08-06T00:00:00", + "pnl": 5.878071171904594, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10339943212905, + "entry_time": "2023-08-08T00:00:00", + "exit_price": 94.0848941093554, + "exit_reason": "signal", + "exit_time": "2023-08-09T00:00:00", + "pnl": -1.850532277363527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.14949796034026, + "entry_time": "2023-08-11T00:00:00", + "exit_price": 93.8874166822761, + "exit_reason": "signal", + "exit_time": "2023-08-12T00:00:00", + "pnl": -26.208127806416087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75795965886634, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 93.82124488293752, + "exit_reason": "signal", + "exit_time": "2023-08-15T00:00:00", + "pnl": 6.328522407116907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65346951457661, + "entry_time": "2023-08-17T00:00:00", + "exit_price": 93.61396660096294, + "exit_reason": "signal", + "exit_time": "2023-08-18T00:00:00", + "pnl": -3.950291361366908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54800539421142, + "entry_time": "2023-08-20T00:00:00", + "exit_price": 93.46513172439276, + "exit_reason": "signal", + "exit_time": "2023-08-21T00:00:00", + "pnl": -8.287366981865489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04018712803396, + "entry_time": "2023-08-23T00:00:00", + "exit_price": 93.2845186523261, + "exit_reason": "signal", + "exit_time": "2023-08-24T00:00:00", + "pnl": 24.433152429213806, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80052936345987, + "entry_time": "2023-08-26T00:00:00", + "exit_price": 93.65349927893294, + "exit_reason": "signal", + "exit_time": "2023-08-27T00:00:00", + "pnl": -14.703008452692302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93158855841354, + "entry_time": "2023-08-29T00:00:00", + "exit_price": 93.79425107834362, + "exit_reason": "signal", + "exit_time": "2023-08-30T00:00:00", + "pnl": -13.733748006990936, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55284494377143, + "entry_time": "2023-09-01T00:00:00", + "exit_price": 93.33529354683158, + "exit_reason": "signal", + "exit_time": "2023-09-02T00:00:00", + "pnl": -21.755139693985257, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67881964988702, + "entry_time": "2023-09-04T00:00:00", + "exit_price": 93.76309874382866, + "exit_reason": "signal", + "exit_time": "2023-09-05T00:00:00", + "pnl": 8.427909394165908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.06380422690371, + "entry_time": "2023-09-07T00:00:00", + "exit_price": 94.34837478850592, + "exit_reason": "signal", + "exit_time": "2023-09-08T00:00:00", + "pnl": 28.45705616021951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28272356925105, + "entry_time": "2023-09-10T00:00:00", + "exit_price": 94.08986442511201, + "exit_reason": "signal", + "exit_time": "2023-09-11T00:00:00", + "pnl": -19.28591441390381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19668777653186, + "entry_time": "2023-09-13T00:00:00", + "exit_price": 93.9155347262711, + "exit_reason": "signal", + "exit_time": "2023-09-14T00:00:00", + "pnl": -28.115305026074566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86963033561574, + "entry_time": "2023-09-16T00:00:00", + "exit_price": 94.02605497205086, + "exit_reason": "signal", + "exit_time": "2023-09-17T00:00:00", + "pnl": 15.64246364351311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07735953777274, + "entry_time": "2023-09-19T00:00:00", + "exit_price": 93.92691564488518, + "exit_reason": "signal", + "exit_time": "2023-09-20T00:00:00", + "pnl": -15.044389288754246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.63814938665311, + "entry_time": "2023-09-22T00:00:00", + "exit_price": 93.6176086632684, + "exit_reason": "signal", + "exit_time": "2023-09-23T00:00:00", + "pnl": -2.0540723384710873, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71204578933798, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.41015509320589, + "exit_reason": "signal", + "exit_time": "2023-09-26T00:00:00", + "pnl": -30.18906961320863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42767992948878, + "entry_time": "2023-09-28T00:00:00", + "exit_price": 93.23852235526199, + "exit_reason": "signal", + "exit_time": "2023-09-29T00:00:00", + "pnl": -18.915757422677416, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49442961672796, + "entry_time": "2023-10-01T00:00:00", + "exit_price": 93.43422929731483, + "exit_reason": "signal", + "exit_time": "2023-10-02T00:00:00", + "pnl": -6.020031941312482, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.28736530415493, + "entry_time": "2023-10-04T00:00:00", + "exit_price": 93.12218377264868, + "exit_reason": "signal", + "exit_time": "2023-10-05T00:00:00", + "pnl": -16.51815315062595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10919349920911, + "entry_time": "2023-10-07T00:00:00", + "exit_price": 92.97579394436632, + "exit_reason": "signal", + "exit_time": "2023-10-08T00:00:00", + "pnl": -13.339955484278107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87630575654731, + "entry_time": "2023-10-10T00:00:00", + "exit_price": 92.64709318534976, + "exit_reason": "signal", + "exit_time": "2023-10-11T00:00:00", + "pnl": -22.921257119754955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49382854321888, + "entry_time": "2023-10-13T00:00:00", + "exit_price": 92.15699292788067, + "exit_reason": "signal", + "exit_time": "2023-10-14T00:00:00", + "pnl": -33.683561533820466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04266303105983, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.9313781112256, + "exit_reason": "signal", + "exit_time": "2023-10-17T00:00:00", + "pnl": -11.128491983423373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.69530603069572, + "entry_time": "2023-10-19T00:00:00", + "exit_price": 91.82075180753827, + "exit_reason": "signal", + "exit_time": "2023-10-20T00:00:00", + "pnl": 12.544577684255273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00003866180036, + "entry_time": "2023-10-22T00:00:00", + "exit_price": 91.769068469798, + "exit_reason": "signal", + "exit_time": "2023-10-23T00:00:00", + "pnl": -23.09701920023508, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62148930928706, + "entry_time": "2023-10-25T00:00:00", + "exit_price": 92.0232146586156, + "exit_reason": "signal", + "exit_time": "2023-10-26T00:00:00", + "pnl": 40.17253493285352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05026787864644, + "entry_time": "2023-10-28T00:00:00", + "exit_price": 91.7648966725291, + "exit_reason": "signal", + "exit_time": "2023-10-29T00:00:00", + "pnl": -28.53712061173428, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45047976504434, + "entry_time": "2023-10-31T00:00:00", + "exit_price": 91.57906184617835, + "exit_reason": "signal", + "exit_time": "2023-11-01T00:00:00", + "pnl": 12.858208113402725, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73227416508321, + "entry_time": "2023-11-03T00:00:00", + "exit_price": 91.39276167792192, + "exit_reason": "signal", + "exit_time": "2023-11-04T00:00:00", + "pnl": -33.95124871613007, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43027834183452, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.72614964359053, + "exit_reason": "signal", + "exit_time": "2023-11-07T00:00:00", + "pnl": 29.58713017559967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22140030401876, + "entry_time": "2023-11-09T00:00:00", + "exit_price": 92.40388767907393, + "exit_reason": "signal", + "exit_time": "2023-11-10T00:00:00", + "pnl": 18.248737505517056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6481057355818, + "entry_time": "2023-11-12T00:00:00", + "exit_price": 92.68848188004498, + "exit_reason": "signal", + "exit_time": "2023-11-13T00:00:00", + "pnl": 4.037614446318912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71473698288804, + "entry_time": "2023-11-15T00:00:00", + "exit_price": 92.70268409440689, + "exit_reason": "signal", + "exit_time": "2023-11-16T00:00:00", + "pnl": -1.2052888481157424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43854075921617, + "entry_time": "2023-11-18T00:00:00", + "exit_price": 92.44140071332018, + "exit_reason": "signal", + "exit_time": "2023-11-19T00:00:00", + "pnl": 0.28599541040057375, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74726961853332, + "entry_time": "2023-11-21T00:00:00", + "exit_price": 92.8365056762946, + "exit_reason": "signal", + "exit_time": "2023-11-22T00:00:00", + "pnl": 8.92360577612817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88893089201021, + "entry_time": "2023-11-24T00:00:00", + "exit_price": 93.26317095880032, + "exit_reason": "signal", + "exit_time": "2023-11-25T00:00:00", + "pnl": 37.424006679009835, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37686063355893, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 93.01130398358468, + "exit_reason": "signal", + "exit_time": "2023-11-28T00:00:00", + "pnl": -36.55566499742599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92441725059159, + "entry_time": "2023-11-30T00:00:00", + "exit_price": 92.89449208176279, + "exit_reason": "signal", + "exit_time": "2023-12-01T00:00:00", + "pnl": -2.9925168828794995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93827683979755, + "entry_time": "2023-12-03T00:00:00", + "exit_price": 93.6532995649937, + "exit_reason": "signal", + "exit_time": "2023-12-04T00:00:00", + "pnl": -28.49772748038413, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.4263959037515, + "entry_time": "2023-12-06T00:00:00", + "exit_price": 93.75213347979019, + "exit_reason": "signal", + "exit_time": "2023-12-07T00:00:00", + "pnl": 32.573757603870035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.0270700566813, + "entry_time": "2023-12-09T00:00:00", + "exit_price": 93.76146992741955, + "exit_reason": "signal", + "exit_time": "2023-12-10T00:00:00", + "pnl": -26.56001292617475, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10225140410179, + "entry_time": "2023-12-12T00:00:00", + "exit_price": 92.81690399898379, + "exit_reason": "signal", + "exit_time": "2023-12-13T00:00:00", + "pnl": -28.5347405117991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0438108934807, + "entry_time": "2023-12-15T00:00:00", + "exit_price": 92.80207795946215, + "exit_reason": "signal", + "exit_time": "2023-12-16T00:00:00", + "pnl": -24.173293401854608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12592905184013, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 93.15713134695487, + "exit_reason": "signal", + "exit_time": "2023-12-19T00:00:00", + "pnl": 3.120229511472644, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21575520670791, + "entry_time": "2023-12-21T00:00:00", + "exit_price": 93.31507102860735, + "exit_reason": "signal", + "exit_time": "2023-12-22T00:00:00", + "pnl": 9.931582189943583, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2320901589937, + "entry_time": "2023-12-24T00:00:00", + "exit_price": 93.15393731859652, + "exit_reason": "signal", + "exit_time": "2023-12-25T00:00:00", + "pnl": -7.815284039717881, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07037591089997, + "entry_time": "2023-12-27T00:00:00", + "exit_price": 93.3198194947649, + "exit_reason": "signal", + "exit_time": "2023-12-28T00:00:00", + "pnl": 24.94435838649406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69216760463115, + "entry_time": "2023-12-30T00:00:00", + "exit_price": 94.07388089953058, + "exit_reason": "signal", + "exit_time": "2023-12-31T00:00:00", + "pnl": 38.171329489941854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.64149353573187, + "entry_time": "2024-01-02T00:00:00", + "exit_price": 94.71271228263036, + "exit_reason": "signal", + "exit_time": "2024-01-03T00:00:00", + "pnl": 7.121874689850301, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.11471503048601, + "entry_time": "2024-01-05T00:00:00", + "exit_price": 94.98751858071931, + "exit_reason": "signal", + "exit_time": "2024-01-06T00:00:00", + "pnl": -12.71964497666886, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7067835294734, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.74844014533139, + "exit_reason": "signal", + "exit_time": "2024-01-09T00:00:00", + "pnl": 4.165661585799171, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.02489656616589, + "entry_time": "2024-01-11T00:00:00", + "exit_price": 94.98294992874101, + "exit_reason": "signal", + "exit_time": "2024-01-12T00:00:00", + "pnl": -4.194663742489865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.71598064705562, + "entry_time": "2024-01-14T00:00:00", + "exit_price": 94.90144093756582, + "exit_reason": "signal", + "exit_time": "2024-01-15T00:00:00", + "pnl": 18.546029051020014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88369269337046, + "entry_time": "2024-01-17T00:00:00", + "exit_price": 94.99127786199946, + "exit_reason": "signal", + "exit_time": "2024-01-18T00:00:00", + "pnl": 10.758516862899342, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.25279588129149, + "entry_time": "2024-01-20T00:00:00", + "exit_price": 94.98339215080473, + "exit_reason": "signal", + "exit_time": "2024-01-21T00:00:00", + "pnl": -26.94037304867561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84625570624047, + "entry_time": "2024-01-23T00:00:00", + "exit_price": 94.50594333071952, + "exit_reason": "signal", + "exit_time": "2024-01-24T00:00:00", + "pnl": -34.03123755209526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50759103681195, + "entry_time": "2024-01-26T00:00:00", + "exit_price": 94.60423833142119, + "exit_reason": "signal", + "exit_time": "2024-01-27T00:00:00", + "pnl": 9.664729460924718, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.58324904624199, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.89219195707862, + "exit_reason": "signal", + "exit_time": "2024-01-30T00:00:00", + "pnl": 30.89429108366494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65911048978346, + "entry_time": "2024-02-01T00:00:00", + "exit_price": 94.7149396953146, + "exit_reason": "signal", + "exit_time": "2024-02-02T00:00:00", + "pnl": 5.5829205531154, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.87432845164757, + "entry_time": "2024-02-04T00:00:00", + "exit_price": 94.68840177129488, + "exit_reason": "signal", + "exit_time": "2024-02-05T00:00:00", + "pnl": -18.592668035269526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.93449198055023, + "entry_time": "2024-02-07T00:00:00", + "exit_price": 95.32948554144308, + "exit_reason": "signal", + "exit_time": "2024-02-08T00:00:00", + "pnl": 39.49935608928536, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32849848634218, + "entry_time": "2024-02-10T00:00:00", + "exit_price": 95.22062659109166, + "exit_reason": "signal", + "exit_time": "2024-02-11T00:00:00", + "pnl": -10.787189525051872, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95224360650606, + "entry_time": "2024-02-13T00:00:00", + "exit_price": 95.11404601693097, + "exit_reason": "signal", + "exit_time": "2024-02-14T00:00:00", + "pnl": 16.180241042491616, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79369852289173, + "entry_time": "2024-02-16T00:00:00", + "exit_price": 94.57121837540416, + "exit_reason": "signal", + "exit_time": "2024-02-17T00:00:00", + "pnl": -22.248014748758578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70539792020504, + "entry_time": "2024-02-19T00:00:00", + "exit_price": 94.81536726931864, + "exit_reason": "signal", + "exit_time": "2024-02-20T00:00:00", + "pnl": 10.996934911359858, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.66590107949516, + "entry_time": "2024-02-22T00:00:00", + "exit_price": 94.54759559550845, + "exit_reason": "signal", + "exit_time": "2024-02-23T00:00:00", + "pnl": -11.830548398671453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11939973938362, + "entry_time": "2024-02-25T00:00:00", + "exit_price": 94.21880305870137, + "exit_reason": "signal", + "exit_time": "2024-02-26T00:00:00", + "pnl": 9.940331931773471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79422563292844, + "entry_time": "2024-02-28T00:00:00", + "exit_price": 93.71312689925841, + "exit_reason": "signal", + "exit_time": "2024-02-29T00:00:00", + "pnl": -8.109873367004184, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46426831854224, + "entry_time": "2024-03-02T00:00:00", + "exit_price": 93.10239283352094, + "exit_reason": "signal", + "exit_time": "2024-03-03T00:00:00", + "pnl": -36.187548502130085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37028780606191, + "entry_time": "2024-03-05T00:00:00", + "exit_price": 93.13498012432488, + "exit_reason": "signal", + "exit_time": "2024-03-06T00:00:00", + "pnl": -23.53076817370311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.38863630293943, + "entry_time": "2024-03-08T00:00:00", + "exit_price": 93.41150008980253, + "exit_reason": "signal", + "exit_time": "2024-03-09T00:00:00", + "pnl": 2.2863786863108544, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.14488289984781, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.17802365337732, + "exit_reason": "signal", + "exit_time": "2024-03-12T00:00:00", + "pnl": 3.314075352951477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27104619189048, + "entry_time": "2024-03-14T00:00:00", + "exit_price": 92.98787909982833, + "exit_reason": "signal", + "exit_time": "2024-03-15T00:00:00", + "pnl": -28.316709206214, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11321145433928, + "entry_time": "2024-03-17T00:00:00", + "exit_price": 93.23295576374296, + "exit_reason": "signal", + "exit_time": "2024-03-18T00:00:00", + "pnl": 11.97443094036862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.85697546574279, + "entry_time": "2024-03-20T00:00:00", + "exit_price": 92.7517321560528, + "exit_reason": "signal", + "exit_time": "2024-03-21T00:00:00", + "pnl": -10.524330968999493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50551757491745, + "entry_time": "2024-03-23T00:00:00", + "exit_price": 92.62546167858358, + "exit_reason": "signal", + "exit_time": "2024-03-24T00:00:00", + "pnl": 11.99441036661301, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86332633060258, + "entry_time": "2024-03-26T00:00:00", + "exit_price": 92.76299264885851, + "exit_reason": "signal", + "exit_time": "2024-03-27T00:00:00", + "pnl": -10.03336817440686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78913797285577, + "entry_time": "2024-03-29T00:00:00", + "exit_price": 93.00024160373006, + "exit_reason": "signal", + "exit_time": "2024-03-30T00:00:00", + "pnl": 21.110363087429505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9168412948554, + "entry_time": "2024-04-01T00:00:00", + "exit_price": 92.7772709282975, + "exit_reason": "signal", + "exit_time": "2024-04-02T00:00:00", + "pnl": -13.957036655790944, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99344762670124, + "entry_time": "2024-04-04T00:00:00", + "exit_price": 92.45458704231757, + "exit_reason": "signal", + "exit_time": "2024-04-05T00:00:00", + "pnl": -53.8860584383674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.40001356367094, + "entry_time": "2024-04-07T00:00:00", + "exit_price": 91.97082046191717, + "exit_reason": "signal", + "exit_time": "2024-04-08T00:00:00", + "pnl": -42.91931017537718, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01206001173375, + "entry_time": "2024-04-10T00:00:00", + "exit_price": 92.08005345968613, + "exit_reason": "signal", + "exit_time": "2024-04-11T00:00:00", + "pnl": 6.79934479523763, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22217203577799, + "entry_time": "2024-04-13T00:00:00", + "exit_price": 92.2425856744218, + "exit_reason": "signal", + "exit_time": "2024-04-14T00:00:00", + "pnl": 2.0413638643822196, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46073627278375, + "entry_time": "2024-04-16T00:00:00", + "exit_price": 92.58143591458905, + "exit_reason": "signal", + "exit_time": "2024-04-17T00:00:00", + "pnl": 12.069964180531315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95177802714637, + "entry_time": "2024-04-19T00:00:00", + "exit_price": 92.56745694254103, + "exit_reason": "signal", + "exit_time": "2024-04-20T00:00:00", + "pnl": -38.43210846053444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81253269752307, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 92.86554139490539, + "exit_reason": "signal", + "exit_time": "2024-04-23T00:00:00", + "pnl": 5.300869738231995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90464875740813, + "entry_time": "2024-04-25T00:00:00", + "exit_price": 92.96373746132312, + "exit_reason": "signal", + "exit_time": "2024-04-26T00:00:00", + "pnl": 5.908870391500386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09789228558353, + "entry_time": "2024-04-28T00:00:00", + "exit_price": 93.19003786584736, + "exit_reason": "signal", + "exit_time": "2024-04-29T00:00:00", + "pnl": 9.214558026382292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66999752477344, + "entry_time": "2024-05-01T00:00:00", + "exit_price": 92.45706703230238, + "exit_reason": "signal", + "exit_time": "2024-05-02T00:00:00", + "pnl": -21.293049247105955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2209401021726, + "entry_time": "2024-05-04T00:00:00", + "exit_price": 93.26995519560073, + "exit_reason": "signal", + "exit_time": "2024-05-05T00:00:00", + "pnl": 4.901509342811551, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23034844043512, + "entry_time": "2024-05-07T00:00:00", + "exit_price": 93.41387280572972, + "exit_reason": "signal", + "exit_time": "2024-05-08T00:00:00", + "pnl": 18.352436529459737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33303611955198, + "entry_time": "2024-05-10T00:00:00", + "exit_price": 93.52307299324875, + "exit_reason": "signal", + "exit_time": "2024-05-11T00:00:00", + "pnl": 19.00368736967721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67190914597171, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.29815694731651, + "exit_reason": "signal", + "exit_time": "2024-05-14T00:00:00", + "pnl": -37.375219865520194, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11959184333037, + "entry_time": "2024-05-16T00:00:00", + "exit_price": 92.78483612314953, + "exit_reason": "signal", + "exit_time": "2024-05-17T00:00:00", + "pnl": -33.47557201808377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92001295323621, + "entry_time": "2024-05-19T00:00:00", + "exit_price": 92.94709162208174, + "exit_reason": "signal", + "exit_time": "2024-05-20T00:00:00", + "pnl": 2.7078668845515494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06260774305197, + "entry_time": "2024-05-22T00:00:00", + "exit_price": 93.1459174166961, + "exit_reason": "signal", + "exit_time": "2024-05-23T00:00:00", + "pnl": 8.330967364412572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06618787236135, + "entry_time": "2024-05-25T00:00:00", + "exit_price": 93.61303967582782, + "exit_reason": "signal", + "exit_time": "2024-05-26T00:00:00", + "pnl": 54.68518034664703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.941078352886, + "entry_time": "2024-05-28T00:00:00", + "exit_price": 94.01481054814181, + "exit_reason": "signal", + "exit_time": "2024-05-29T00:00:00", + "pnl": 7.3732195255815896, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92069860353018, + "entry_time": "2024-05-31T00:00:00", + "exit_price": 93.87432907187284, + "exit_reason": "signal", + "exit_time": "2024-06-01T00:00:00", + "pnl": -4.636953165734667, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88014313205952, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.43750435674885, + "exit_reason": "signal", + "exit_time": "2024-06-04T00:00:00", + "pnl": -44.2638775310661, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46298718335747, + "entry_time": "2024-06-06T00:00:00", + "exit_price": 93.92373570713617, + "exit_reason": "signal", + "exit_time": "2024-06-07T00:00:00", + "pnl": 46.07485237786932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93253015033825, + "entry_time": "2024-06-09T00:00:00", + "exit_price": 93.89138819536463, + "exit_reason": "signal", + "exit_time": "2024-06-10T00:00:00", + "pnl": -4.1141954973609245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6779918521803, + "entry_time": "2024-06-12T00:00:00", + "exit_price": 93.51002812881958, + "exit_reason": "signal", + "exit_time": "2024-06-13T00:00:00", + "pnl": -16.796372336071727, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.285974590119, + "entry_time": "2024-06-15T00:00:00", + "exit_price": 93.32248822367578, + "exit_reason": "signal", + "exit_time": "2024-06-16T00:00:00", + "pnl": 3.651363355676949, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35524577583958, + "entry_time": "2024-06-18T00:00:00", + "exit_price": 93.73566009456992, + "exit_reason": "signal", + "exit_time": "2024-06-19T00:00:00", + "pnl": 38.041431873034526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6866778828559, + "entry_time": "2024-06-21T00:00:00", + "exit_price": 93.84911622521342, + "exit_reason": "signal", + "exit_time": "2024-06-22T00:00:00", + "pnl": 16.24383423575091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68254626297609, + "entry_time": "2024-06-24T00:00:00", + "exit_price": 93.53753290340698, + "exit_reason": "signal", + "exit_time": "2024-06-25T00:00:00", + "pnl": -14.501335956909315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.40541279646611, + "entry_time": "2024-06-27T00:00:00", + "exit_price": 93.71834890975212, + "exit_reason": "signal", + "exit_time": "2024-06-28T00:00:00", + "pnl": 31.2936113286014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75716070422646, + "entry_time": "2024-06-30T00:00:00", + "exit_price": 93.82803454081426, + "exit_reason": "signal", + "exit_time": "2024-07-01T00:00:00", + "pnl": 7.0873836587798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73900139072163, + "entry_time": "2024-07-03T00:00:00", + "exit_price": 93.58423325500644, + "exit_reason": "signal", + "exit_time": "2024-07-04T00:00:00", + "pnl": -15.476813571518505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16188235681071, + "entry_time": "2024-07-06T00:00:00", + "exit_price": 93.02650792631081, + "exit_reason": "signal", + "exit_time": "2024-07-07T00:00:00", + "pnl": -13.537443049990543, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00049424696184, + "entry_time": "2024-07-09T00:00:00", + "exit_price": 93.27869714616556, + "exit_reason": "signal", + "exit_time": "2024-07-10T00:00:00", + "pnl": 27.82028992037158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18595899862997, + "entry_time": "2024-07-12T00:00:00", + "exit_price": 93.03056917274476, + "exit_reason": "signal", + "exit_time": "2024-07-13T00:00:00", + "pnl": -15.538982588521321, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6959315804981, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.29325844026822, + "exit_reason": "signal", + "exit_time": "2024-07-16T00:00:00", + "pnl": -40.26731402298719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24617524245163, + "entry_time": "2024-07-18T00:00:00", + "exit_price": 92.27923511016385, + "exit_reason": "signal", + "exit_time": "2024-07-19T00:00:00", + "pnl": 3.3059867712217965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24377176084563, + "entry_time": "2024-07-21T00:00:00", + "exit_price": 91.84290901749984, + "exit_reason": "signal", + "exit_time": "2024-07-22T00:00:00", + "pnl": -40.086274334578775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45792359801233, + "entry_time": "2024-07-24T00:00:00", + "exit_price": 91.61079046047253, + "exit_reason": "signal", + "exit_time": "2024-07-25T00:00:00", + "pnl": 15.286686246019599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59272403631071, + "entry_time": "2024-07-27T00:00:00", + "exit_price": 91.6658144632232, + "exit_reason": "signal", + "exit_time": "2024-07-28T00:00:00", + "pnl": 7.309042691247669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76765880138052, + "entry_time": "2024-07-30T00:00:00", + "exit_price": 91.83153611139085, + "exit_reason": "signal", + "exit_time": "2024-07-31T00:00:00", + "pnl": 6.387731001033899, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47875371686978, + "entry_time": "2024-08-02T00:00:00", + "exit_price": 91.54124524065837, + "exit_reason": "signal", + "exit_time": "2024-08-03T00:00:00", + "pnl": 6.249152378859435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.99233076398606, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.9529292158228, + "exit_reason": "signal", + "exit_time": "2024-08-06T00:00:00", + "pnl": -3.9401548163259577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9845811375129, + "entry_time": "2024-08-08T00:00:00", + "exit_price": 92.0553452779518, + "exit_reason": "signal", + "exit_time": "2024-08-09T00:00:00", + "pnl": 7.076414043889599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96933895446485, + "entry_time": "2024-08-11T00:00:00", + "exit_price": 92.33843538273938, + "exit_reason": "signal", + "exit_time": "2024-08-12T00:00:00", + "pnl": 36.909642827453354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7587929540311, + "entry_time": "2024-08-14T00:00:00", + "exit_price": 92.61541170919818, + "exit_reason": "signal", + "exit_time": "2024-08-15T00:00:00", + "pnl": -14.338124483290812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.48109292079488, + "entry_time": "2024-08-17T00:00:00", + "exit_price": 92.584127260661, + "exit_reason": "signal", + "exit_time": "2024-08-18T00:00:00", + "pnl": 10.303433986613527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73326548896145, + "entry_time": "2024-08-20T00:00:00", + "exit_price": 92.63121700232358, + "exit_reason": "signal", + "exit_time": "2024-08-21T00:00:00", + "pnl": -10.204848663786834, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06360781499562, + "entry_time": "2024-08-23T00:00:00", + "exit_price": 92.8561585876055, + "exit_reason": "signal", + "exit_time": "2024-08-24T00:00:00", + "pnl": -20.74492273900978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92284538933916, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.11237349539573, + "exit_reason": "signal", + "exit_time": "2024-08-27T00:00:00", + "pnl": 18.95281060565685, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07021236134935, + "entry_time": "2024-08-29T00:00:00", + "exit_price": 93.17184698357968, + "exit_reason": "signal", + "exit_time": "2024-08-30T00:00:00", + "pnl": 10.163462223034003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31228518791787, + "entry_time": "2024-09-01T00:00:00", + "exit_price": 92.33590023205818, + "exit_reason": "signal", + "exit_time": "2024-09-02T00:00:00", + "pnl": 2.361504414031515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50027778498863, + "entry_time": "2024-09-04T00:00:00", + "exit_price": 92.54209415864854, + "exit_reason": "signal", + "exit_time": "2024-09-05T00:00:00", + "pnl": 4.181637365991264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3677893725537, + "entry_time": "2024-09-07T00:00:00", + "exit_price": 92.22925202091126, + "exit_reason": "signal", + "exit_time": "2024-09-08T00:00:00", + "pnl": -13.853735164244426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09309676612556, + "entry_time": "2024-09-10T00:00:00", + "exit_price": 92.15732000186526, + "exit_reason": "signal", + "exit_time": "2024-09-11T00:00:00", + "pnl": 6.422323573970061, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68995738997093, + "entry_time": "2024-09-13T00:00:00", + "exit_price": 91.28297081793372, + "exit_reason": "signal", + "exit_time": "2024-09-14T00:00:00", + "pnl": -40.69865720372218, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.49225030811706, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.33431283007668, + "exit_reason": "signal", + "exit_time": "2024-09-17T00:00:00", + "pnl": -15.793747804038503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00621404043055, + "entry_time": "2024-09-19T00:00:00", + "exit_price": 90.92641929792215, + "exit_reason": "signal", + "exit_time": "2024-09-20T00:00:00", + "pnl": -7.979474250840212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07027528339762, + "entry_time": "2024-09-22T00:00:00", + "exit_price": 91.13008155599323, + "exit_reason": "signal", + "exit_time": "2024-09-23T00:00:00", + "pnl": 5.9806272595615155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00907183642319, + "entry_time": "2024-09-25T00:00:00", + "exit_price": 91.23094904986101, + "exit_reason": "signal", + "exit_time": "2024-09-26T00:00:00", + "pnl": 22.18772134378196, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2825480931582, + "entry_time": "2024-09-28T00:00:00", + "exit_price": 90.91271666538603, + "exit_reason": "signal", + "exit_time": "2024-09-29T00:00:00", + "pnl": -36.983142777216926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05360990148436, + "entry_time": "2024-10-01T00:00:00", + "exit_price": 91.28838235720163, + "exit_reason": "signal", + "exit_time": "2024-10-02T00:00:00", + "pnl": 23.4772455717266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79116186423771, + "entry_time": "2024-10-04T00:00:00", + "exit_price": 90.76779759668747, + "exit_reason": "signal", + "exit_time": "2024-10-05T00:00:00", + "pnl": -2.3364267550241493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66567440561238, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 90.70161264561204, + "exit_reason": "signal", + "exit_time": "2024-10-08T00:00:00", + "pnl": 3.593823999966844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83214429583118, + "entry_time": "2024-10-10T00:00:00", + "exit_price": 90.77606667466077, + "exit_reason": "signal", + "exit_time": "2024-10-11T00:00:00", + "pnl": -5.607762117042512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66108486881463, + "entry_time": "2024-10-13T00:00:00", + "exit_price": 90.66515259357669, + "exit_reason": "signal", + "exit_time": "2024-10-14T00:00:00", + "pnl": 0.4067724762062426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.16857543076497, + "entry_time": "2024-10-16T00:00:00", + "exit_price": 90.40982511738886, + "exit_reason": "signal", + "exit_time": "2024-10-17T00:00:00", + "pnl": 24.12496866238871, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.06344300783007, + "entry_time": "2024-10-19T00:00:00", + "exit_price": 89.82444237040852, + "exit_reason": "signal", + "exit_time": "2024-10-20T00:00:00", + "pnl": -23.90006374215409, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.59077974741996, + "entry_time": "2024-10-22T00:00:00", + "exit_price": 89.57824858967784, + "exit_reason": "signal", + "exit_time": "2024-10-23T00:00:00", + "pnl": -1.2531157742123469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.18599707786814, + "entry_time": "2024-10-25T00:00:00", + "exit_price": 89.23587599762591, + "exit_reason": "signal", + "exit_time": "2024-10-26T00:00:00", + "pnl": 4.987891975777529, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.52520755360774, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.53896573427002, + "exit_reason": "signal", + "exit_time": "2024-10-29T00:00:00", + "pnl": 1.375818066228021, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32372356389571, + "entry_time": "2024-10-31T00:00:00", + "exit_price": 89.39723460318574, + "exit_reason": "signal", + "exit_time": "2024-11-01T00:00:00", + "pnl": 7.35110392900242, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.42867761884308, + "entry_time": "2024-11-03T00:00:00", + "exit_price": 89.41468909557778, + "exit_reason": "signal", + "exit_time": "2024-11-04T00:00:00", + "pnl": -1.3988523265306867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37521291073797, + "entry_time": "2024-11-06T00:00:00", + "exit_price": 89.28061929510595, + "exit_reason": "signal", + "exit_time": "2024-11-07T00:00:00", + "pnl": -9.459361563202037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37421531457154, + "entry_time": "2024-11-09T00:00:00", + "exit_price": 89.42880794685172, + "exit_reason": "signal", + "exit_time": "2024-11-10T00:00:00", + "pnl": 5.459263228018244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.10075544827296, + "entry_time": "2024-11-12T00:00:00", + "exit_price": 89.08909178471053, + "exit_reason": "signal", + "exit_time": "2024-11-13T00:00:00", + "pnl": -1.1663663562430884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.9283105563295, + "entry_time": "2024-11-15T00:00:00", + "exit_price": 88.97631673436179, + "exit_reason": "signal", + "exit_time": "2024-11-16T00:00:00", + "pnl": 4.800617803228306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.83969795208085, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.97701708069182, + "exit_reason": "signal", + "exit_time": "2024-11-19T00:00:00", + "pnl": 13.731912861096134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.24948915106788, + "entry_time": "2024-11-21T00:00:00", + "exit_price": 89.31081866218918, + "exit_reason": "signal", + "exit_time": "2024-11-22T00:00:00", + "pnl": 6.132951112129376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.15663810787721, + "entry_time": "2024-11-24T00:00:00", + "exit_price": 89.05359196348086, + "exit_reason": "signal", + "exit_time": "2024-11-25T00:00:00", + "pnl": -10.30461443963577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.89974340615646, + "entry_time": "2024-11-27T00:00:00", + "exit_price": 88.86736216937868, + "exit_reason": "signal", + "exit_time": "2024-11-28T00:00:00", + "pnl": -3.238123677778276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.02917974715604, + "entry_time": "2024-11-30T00:00:00", + "exit_price": 89.10061155400963, + "exit_reason": "signal", + "exit_time": "2024-12-01T00:00:00", + "pnl": 7.143180685359766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.71230009060692, + "entry_time": "2024-12-03T00:00:00", + "exit_price": 88.55956047576315, + "exit_reason": "signal", + "exit_time": "2024-12-04T00:00:00", + "pnl": -15.273961484375832, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33867736091129, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 100.24521783497416, + "exit_time": "2020-01-03T00:00:00", + "pnl": -9.345952593713491, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33353996675463, + "entry_time": "2020-01-05T00:00:00", + "exit_price": 100.17535391574476, + "exit_time": "2020-01-06T00:00:00", + "pnl": -15.81860510098636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.17558936557836, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 99.82464445421311, + "exit_time": "2020-01-09T00:00:00", + "pnl": -35.09449113652465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.14823158528606, + "entry_time": "2020-01-11T00:00:00", + "exit_price": 100.02303868942406, + "exit_time": "2020-01-12T00:00:00", + "pnl": -12.519289586199989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0898265784532, + "entry_time": "2020-01-14T00:00:00", + "exit_price": 100.0375220132344, + "exit_time": "2020-01-15T00:00:00", + "pnl": -5.2304565218804555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.69877148351581, + "entry_time": "2020-01-17T00:00:00", + "exit_price": 99.8094147843381, + "exit_time": "2020-01-18T00:00:00", + "pnl": 11.064330082228935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.88896279741591, + "entry_time": "2020-01-20T00:00:00", + "exit_price": 99.58446195759505, + "exit_time": "2020-01-21T00:00:00", + "pnl": -30.450083982086085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.94461858556683, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 99.86726342876044, + "exit_time": "2020-01-24T00:00:00", + "pnl": -7.735515680639082, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.264261049502, + "entry_time": "2020-01-26T00:00:00", + "exit_price": 99.97378019208324, + "exit_time": "2020-01-27T00:00:00", + "pnl": -29.048085741875695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43666090180685, + "entry_time": "2020-01-29T00:00:00", + "exit_price": 99.64557703864863, + "exit_time": "2020-01-30T00:00:00", + "pnl": 20.891613684177912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.41486055220747, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 99.62832834535065, + "exit_time": "2020-02-02T00:00:00", + "pnl": 21.3467793143181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.40627623062987, + "entry_time": "2020-02-04T00:00:00", + "exit_price": 98.9966907903866, + "exit_time": "2020-02-05T00:00:00", + "pnl": -40.95854402432764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.62784889129782, + "entry_time": "2020-02-07T00:00:00", + "exit_price": 98.91665393395704, + "exit_time": "2020-02-08T00:00:00", + "pnl": 28.880504265922013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20129913778622, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 99.36824311350031, + "exit_time": "2020-02-11T00:00:00", + "pnl": 16.69439757140907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.44539780996692, + "entry_time": "2020-02-13T00:00:00", + "exit_price": 99.29577808855632, + "exit_time": "2020-02-14T00:00:00", + "pnl": -14.961972141060187, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60087912978423, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 98.67646038571121, + "exit_time": "2020-02-17T00:00:00", + "pnl": 7.5581255926977065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17445140133515, + "entry_time": "2020-02-19T00:00:00", + "exit_price": 99.07045121918839, + "exit_time": "2020-02-20T00:00:00", + "pnl": -10.400018214676265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.49723620471183, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 99.5174230546468, + "exit_time": "2020-02-23T00:00:00", + "pnl": 2.0186849934972884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5413500261472, + "entry_time": "2020-02-25T00:00:00", + "exit_price": 99.47975770399327, + "exit_time": "2020-02-26T00:00:00", + "pnl": -6.1592322153927626, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.29423417091141, + "entry_time": "2020-02-28T00:00:00", + "exit_price": 99.27541464305773, + "exit_time": "2020-02-29T00:00:00", + "pnl": -1.8819527853679574, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.4392086025175, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.06079463387583, + "exit_time": "2020-03-03T00:00:00", + "pnl": -37.841396864166654, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.37828233356667, + "entry_time": "2020-03-05T00:00:00", + "exit_price": 99.30210368322795, + "exit_time": "2020-03-06T00:00:00", + "pnl": -7.617865033871851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.8891828858322, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 98.6817301819728, + "exit_time": "2020-03-09T00:00:00", + "pnl": -20.745270385940273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.39002953943762, + "entry_time": "2020-03-11T00:00:00", + "exit_price": 98.68517685658658, + "exit_time": "2020-03-12T00:00:00", + "pnl": 29.51473171489596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.65084298157255, + "entry_time": "2020-03-14T00:00:00", + "exit_price": 98.93501858046714, + "exit_time": "2020-03-15T00:00:00", + "pnl": 28.4175598894592, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.19071665014789, + "entry_time": "2020-03-17T00:00:00", + "exit_price": 99.25659603867345, + "exit_time": "2020-03-18T00:00:00", + "pnl": 6.587938852555908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36428253311259, + "entry_time": "2020-03-20T00:00:00", + "exit_price": 99.01156809266551, + "exit_time": "2020-03-21T00:00:00", + "pnl": -35.27144404470732, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31879308123833, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.40136182036203, + "exit_time": "2020-03-24T00:00:00", + "pnl": 8.25687391237011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17903686528695, + "entry_time": "2020-03-26T00:00:00", + "exit_price": 99.0619221034904, + "exit_time": "2020-03-27T00:00:00", + "pnl": -11.711476179654312, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25968317752123, + "entry_time": "2020-03-29T00:00:00", + "exit_price": 99.56379928977212, + "exit_time": "2020-03-30T00:00:00", + "pnl": 30.41161122508953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.80666495491704, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 99.94182055020374, + "exit_time": "2020-04-02T00:00:00", + "pnl": 13.515559528670451, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.92425119368045, + "entry_time": "2020-04-04T00:00:00", + "exit_price": 99.78971486194605, + "exit_time": "2020-04-05T00:00:00", + "pnl": -13.453633173439528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.23057477534162, + "entry_time": "2020-04-07T00:00:00", + "exit_price": 100.4049348801832, + "exit_time": "2020-04-08T00:00:00", + "pnl": 17.43601048415826, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.24159987362269, + "entry_time": "2020-04-10T00:00:00", + "exit_price": 100.06843389735158, + "exit_time": "2020-04-11T00:00:00", + "pnl": -17.316597627110752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.22183940097844, + "entry_time": "2020-04-13T00:00:00", + "exit_price": 99.93299182979392, + "exit_time": "2020-04-14T00:00:00", + "pnl": -28.884757118451887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91637693821662, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 100.20188970935105, + "exit_time": "2020-04-17T00:00:00", + "pnl": 28.55127711344352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.57826653579691, + "entry_time": "2020-04-19T00:00:00", + "exit_price": 100.48615354430639, + "exit_time": "2020-04-20T00:00:00", + "pnl": -9.211299149052365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.48852996658735, + "entry_time": "2020-04-22T00:00:00", + "exit_price": 100.70097560384337, + "exit_time": "2020-04-23T00:00:00", + "pnl": 21.24456372560246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.56660104606993, + "entry_time": "2020-04-25T00:00:00", + "exit_price": 100.60339517911308, + "exit_time": "2020-04-26T00:00:00", + "pnl": 3.679413304314494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5215727488348, + "entry_time": "2020-04-28T00:00:00", + "exit_price": 100.3913600319206, + "exit_time": "2020-04-29T00:00:00", + "pnl": -13.021271691420111, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.6642306539015, + "entry_time": "2020-05-01T00:00:00", + "exit_price": 100.49406633741951, + "exit_time": "2020-05-02T00:00:00", + "pnl": -17.016431648198704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64849065100934, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.63323070552582, + "exit_time": "2020-05-05T00:00:00", + "pnl": -1.5259945483521165, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88914932519062, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 100.96225788336264, + "exit_time": "2020-05-08T00:00:00", + "pnl": 7.310855817202366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.21454142458283, + "entry_time": "2020-05-10T00:00:00", + "exit_price": 101.08973549159177, + "exit_time": "2020-05-11T00:00:00", + "pnl": -12.480593299106602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.91131718633395, + "entry_time": "2020-05-13T00:00:00", + "exit_price": 100.95365272243404, + "exit_time": "2020-05-14T00:00:00", + "pnl": 4.2335536100097215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3677264483084, + "entry_time": "2020-05-16T00:00:00", + "exit_price": 100.38542382708798, + "exit_time": "2020-05-17T00:00:00", + "pnl": 1.7697378779573114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.727355594576, + "entry_time": "2020-05-19T00:00:00", + "exit_price": 99.80184598433505, + "exit_time": "2020-05-20T00:00:00", + "pnl": 7.449038975904898, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.75895482632264, + "entry_time": "2020-05-22T00:00:00", + "exit_price": 99.65309620079978, + "exit_time": "2020-05-23T00:00:00", + "pnl": -10.585862552285619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.18275486854981, + "entry_time": "2020-05-25T00:00:00", + "exit_price": 99.08066364611346, + "exit_time": "2020-05-26T00:00:00", + "pnl": -10.209122243634283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86355002974182, + "entry_time": "2020-05-28T00:00:00", + "exit_price": 98.8079829991331, + "exit_time": "2020-05-29T00:00:00", + "pnl": -5.556703060871371, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50774498473835, + "entry_time": "2020-05-31T00:00:00", + "exit_price": 98.15500147527054, + "exit_time": "2020-06-01T00:00:00", + "pnl": -35.2743509467814, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25388112126257, + "entry_time": "2020-06-03T00:00:00", + "exit_price": 98.46869004462158, + "exit_time": "2020-06-04T00:00:00", + "pnl": 21.480892335901558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.49982930970904, + "entry_time": "2020-06-06T00:00:00", + "exit_price": 98.64941137818613, + "exit_time": "2020-06-07T00:00:00", + "pnl": 14.958206847708766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08181708620197, + "entry_time": "2020-06-09T00:00:00", + "exit_price": 98.89782993828217, + "exit_time": "2020-06-10T00:00:00", + "pnl": -18.398714791979387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.34821493675021, + "entry_time": "2020-06-12T00:00:00", + "exit_price": 99.0511570084608, + "exit_time": "2020-06-13T00:00:00", + "pnl": -29.705792828940503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36636841676064, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 99.22802936588096, + "exit_time": "2020-06-16T00:00:00", + "pnl": -13.833905087967935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.13124547885464, + "entry_time": "2020-06-18T00:00:00", + "exit_price": 98.97034570188329, + "exit_time": "2020-06-19T00:00:00", + "pnl": -16.089977697134827, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84675502390374, + "entry_time": "2020-06-21T00:00:00", + "exit_price": 98.82877025439984, + "exit_time": "2020-06-22T00:00:00", + "pnl": -1.7984769503897269, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83150510044737, + "entry_time": "2020-06-24T00:00:00", + "exit_price": 98.80556016637114, + "exit_time": "2020-06-25T00:00:00", + "pnl": -2.594493407623588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.10675350799055, + "entry_time": "2020-06-27T00:00:00", + "exit_price": 98.84453919660923, + "exit_time": "2020-06-28T00:00:00", + "pnl": -26.22143113813138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88147160830762, + "entry_time": "2020-06-30T00:00:00", + "exit_price": 98.95771616416846, + "exit_time": "2020-07-01T00:00:00", + "pnl": 7.624455586083911, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25900520967261, + "entry_time": "2020-07-03T00:00:00", + "exit_price": 99.28214715432236, + "exit_time": "2020-07-04T00:00:00", + "pnl": 2.3141944649751167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.64410132782972, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 98.78845498147822, + "exit_time": "2020-07-07T00:00:00", + "pnl": 14.435365364850838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96240900085823, + "entry_time": "2020-07-09T00:00:00", + "exit_price": 99.01654413042846, + "exit_time": "2020-07-10T00:00:00", + "pnl": 5.413512957022704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08257869239384, + "entry_time": "2020-07-12T00:00:00", + "exit_price": 98.92270971634117, + "exit_time": "2020-07-13T00:00:00", + "pnl": -15.986897605266392, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9249177043285, + "entry_time": "2020-07-15T00:00:00", + "exit_price": 98.5475977762062, + "exit_time": "2020-07-16T00:00:00", + "pnl": -37.73199281222901, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85856446370276, + "entry_time": "2020-07-18T00:00:00", + "exit_price": 98.8876461806366, + "exit_time": "2020-07-19T00:00:00", + "pnl": 2.9081716933831103, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.75554506700362, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 98.4712342394787, + "exit_time": "2020-07-22T00:00:00", + "pnl": -28.431082752491932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.13596092844963, + "entry_time": "2020-07-24T00:00:00", + "exit_price": 98.29084433077668, + "exit_time": "2020-07-25T00:00:00", + "pnl": 15.488340232704445, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50946620110103, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 98.42209873300993, + "exit_time": "2020-07-28T00:00:00", + "pnl": -8.73674680911023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16470383307056, + "entry_time": "2020-07-30T00:00:00", + "exit_price": 98.10251353436806, + "exit_time": "2020-07-31T00:00:00", + "pnl": -6.219029870250381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16007736983093, + "entry_time": "2020-08-02T00:00:00", + "exit_price": 98.25346405776058, + "exit_time": "2020-08-03T00:00:00", + "pnl": 9.338668792965166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.02466944517249, + "entry_time": "2020-08-05T00:00:00", + "exit_price": 98.03234873384025, + "exit_time": "2020-08-06T00:00:00", + "pnl": 0.7679288667759465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11031617256702, + "entry_time": "2020-08-08T00:00:00", + "exit_price": 98.14530663460309, + "exit_time": "2020-08-09T00:00:00", + "pnl": 3.4990462036063263, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.44429004426568, + "entry_time": "2020-08-11T00:00:00", + "exit_price": 98.39955675926143, + "exit_time": "2020-08-12T00:00:00", + "pnl": -4.473328500425566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19954612220634, + "entry_time": "2020-08-14T00:00:00", + "exit_price": 98.33374471974878, + "exit_time": "2020-08-15T00:00:00", + "pnl": 13.419859754243646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.17850638089598, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.31970147221125, + "exit_time": "2020-08-18T00:00:00", + "pnl": 14.119509131526797, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19274532121113, + "entry_time": "2020-08-20T00:00:00", + "exit_price": 98.3840327772038, + "exit_time": "2020-08-21T00:00:00", + "pnl": 19.128745599266495, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48120231354616, + "entry_time": "2020-08-23T00:00:00", + "exit_price": 98.7121932598933, + "exit_time": "2020-08-24T00:00:00", + "pnl": 23.099094634713424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86988580253298, + "entry_time": "2020-08-26T00:00:00", + "exit_price": 98.76604202197464, + "exit_time": "2020-08-27T00:00:00", + "pnl": -10.384378055833565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.79597689506201, + "entry_time": "2020-08-29T00:00:00", + "exit_price": 98.42129188541651, + "exit_time": "2020-08-30T00:00:00", + "pnl": -37.468500964550344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67647877199742, + "entry_time": "2020-09-01T00:00:00", + "exit_price": 98.82191220927734, + "exit_time": "2020-09-02T00:00:00", + "pnl": 14.543343727991953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84470059887572, + "entry_time": "2020-09-04T00:00:00", + "exit_price": 98.72847566121298, + "exit_time": "2020-09-05T00:00:00", + "pnl": -11.622493766273578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43094423441607, + "entry_time": "2020-09-07T00:00:00", + "exit_price": 98.39808368032986, + "exit_time": "2020-09-08T00:00:00", + "pnl": -3.28605540862128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31641481415083, + "entry_time": "2020-09-10T00:00:00", + "exit_price": 98.40267706340073, + "exit_time": "2020-09-11T00:00:00", + "pnl": 8.626224924989856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60680412325432, + "entry_time": "2020-09-13T00:00:00", + "exit_price": 98.51452016846274, + "exit_time": "2020-09-14T00:00:00", + "pnl": -9.22839547915828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31471449163298, + "entry_time": "2020-09-16T00:00:00", + "exit_price": 98.43834781075664, + "exit_time": "2020-09-17T00:00:00", + "pnl": 12.363331912365538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84446638005844, + "entry_time": "2020-09-19T00:00:00", + "exit_price": 98.49607372712997, + "exit_time": "2020-09-20T00:00:00", + "pnl": -34.83926529284673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85869892480143, + "entry_time": "2020-09-22T00:00:00", + "exit_price": 98.87107213537678, + "exit_time": "2020-09-23T00:00:00", + "pnl": 1.237321057534757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83017137699973, + "entry_time": "2020-09-25T00:00:00", + "exit_price": 98.73075043509533, + "exit_time": "2020-09-26T00:00:00", + "pnl": -9.942094190439832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85446221431528, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.13025477242799, + "exit_time": "2020-09-29T00:00:00", + "pnl": 27.579255811271253, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08577867542596, + "entry_time": "2020-10-01T00:00:00", + "exit_price": 99.20567187514531, + "exit_time": "2020-10-02T00:00:00", + "pnl": 11.989319971935686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27862593574773, + "entry_time": "2020-10-04T00:00:00", + "exit_price": 99.19411735771268, + "exit_time": "2020-10-05T00:00:00", + "pnl": -8.450857803504164, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.91641070152801, + "entry_time": "2020-10-07T00:00:00", + "exit_price": 98.80020190906805, + "exit_time": "2020-10-08T00:00:00", + "pnl": -11.620879245995752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.03429888110497, + "entry_time": "2020-10-10T00:00:00", + "exit_price": 97.99059510104857, + "exit_time": "2020-10-11T00:00:00", + "pnl": -4.3703780056404185, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.12230359240208, + "entry_time": "2020-10-13T00:00:00", + "exit_price": 98.21493112615859, + "exit_time": "2020-10-14T00:00:00", + "pnl": 9.2627533756513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7362497471537, + "entry_time": "2020-10-16T00:00:00", + "exit_price": 97.90953724611552, + "exit_time": "2020-10-17T00:00:00", + "pnl": 17.32874989618125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99997604721491, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.25158859302469, + "exit_time": "2020-10-20T00:00:00", + "pnl": 25.161254580977754, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98246224229298, + "entry_time": "2020-10-22T00:00:00", + "exit_price": 98.18380160087476, + "exit_time": "2020-10-23T00:00:00", + "pnl": 20.133935858177665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.54700954481861, + "entry_time": "2020-10-25T00:00:00", + "exit_price": 98.87858935796136, + "exit_time": "2020-10-26T00:00:00", + "pnl": 33.157981314275276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.82466366840129, + "entry_time": "2020-10-28T00:00:00", + "exit_price": 98.79031352535364, + "exit_time": "2020-10-29T00:00:00", + "pnl": -3.4350143047646498, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.52782616930364, + "entry_time": "2020-10-31T00:00:00", + "exit_price": 98.71180131795903, + "exit_time": "2020-11-01T00:00:00", + "pnl": 18.39751486553922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.66862984653359, + "entry_time": "2020-11-03T00:00:00", + "exit_price": 98.94388954493733, + "exit_time": "2020-11-04T00:00:00", + "pnl": 27.525969840374387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.40172293508903, + "entry_time": "2020-11-06T00:00:00", + "exit_price": 98.27308992706585, + "exit_time": "2020-11-07T00:00:00", + "pnl": -12.863300802317212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30251070708916, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 98.36341600243385, + "exit_time": "2020-11-10T00:00:00", + "pnl": 6.090529534469624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07297082017436, + "entry_time": "2020-11-12T00:00:00", + "exit_price": 98.63576619816114, + "exit_time": "2020-11-13T00:00:00", + "pnl": 56.27953779867738, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.36545808934646, + "entry_time": "2020-11-15T00:00:00", + "exit_price": 98.425342939227, + "exit_time": "2020-11-16T00:00:00", + "pnl": 5.988484988053244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.59476724765915, + "entry_time": "2020-11-18T00:00:00", + "exit_price": 98.41575843731752, + "exit_time": "2020-11-19T00:00:00", + "pnl": -17.900881034162808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30499551372479, + "entry_time": "2020-11-21T00:00:00", + "exit_price": 98.2943417590765, + "exit_time": "2020-11-22T00:00:00", + "pnl": -1.0653754648288327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.20190364871404, + "entry_time": "2020-11-24T00:00:00", + "exit_price": 98.35429934455371, + "exit_time": "2020-11-25T00:00:00", + "pnl": 15.239569583967238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25575482738783, + "entry_time": "2020-11-27T00:00:00", + "exit_price": 98.30124986928953, + "exit_time": "2020-11-28T00:00:00", + "pnl": 4.549504190170239, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.90191386326036, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.96508444596826, + "exit_time": "2020-12-01T00:00:00", + "pnl": 6.317058270789744, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.75989432781597, + "entry_time": "2020-12-03T00:00:00", + "exit_price": 97.47851546822666, + "exit_time": "2020-12-04T00:00:00", + "pnl": -28.137885958931008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.43273982617148, + "entry_time": "2020-12-06T00:00:00", + "exit_price": 97.78073270556935, + "exit_time": "2020-12-07T00:00:00", + "pnl": 34.79928793978644, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.29707161405977, + "entry_time": "2020-12-09T00:00:00", + "exit_price": 97.17141051171173, + "exit_time": "2020-12-10T00:00:00", + "pnl": -12.56611023480474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.83897503233364, + "entry_time": "2020-12-12T00:00:00", + "exit_price": 96.92050920813638, + "exit_time": "2020-12-13T00:00:00", + "pnl": 8.153417580274436, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.39298906893524, + "entry_time": "2020-12-15T00:00:00", + "exit_price": 97.24960092613485, + "exit_time": "2020-12-16T00:00:00", + "pnl": -14.338814280039003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.15249367428707, + "entry_time": "2020-12-18T00:00:00", + "exit_price": 98.11254847884746, + "exit_time": "2020-12-19T00:00:00", + "pnl": -3.9945195439614167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6477102979142, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 97.66187174327492, + "exit_time": "2020-12-22T00:00:00", + "pnl": 1.4161445360713287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.22816086359948, + "entry_time": "2020-12-24T00:00:00", + "exit_price": 97.18924739108921, + "exit_time": "2020-12-25T00:00:00", + "pnl": -3.891347251027355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.15833017318171, + "entry_time": "2020-12-27T00:00:00", + "exit_price": 97.35388264537053, + "exit_time": "2020-12-28T00:00:00", + "pnl": 19.555247218882243, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30391448349606, + "entry_time": "2020-12-30T00:00:00", + "exit_price": 97.1765702619787, + "exit_time": "2020-12-31T00:00:00", + "pnl": -12.734422151736169, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.03923857682982, + "entry_time": "2021-01-02T00:00:00", + "exit_price": 97.14087662618776, + "exit_time": "2021-01-03T00:00:00", + "pnl": 10.163804935794474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.60285889768487, + "entry_time": "2021-01-05T00:00:00", + "exit_price": 96.71610220194758, + "exit_time": "2021-01-06T00:00:00", + "pnl": 11.32433042627099, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.43129513858887, + "entry_time": "2021-01-08T00:00:00", + "exit_price": 96.7750138677335, + "exit_time": "2021-01-09T00:00:00", + "pnl": 34.37187291446406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.5417619126041, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.26004415392279, + "exit_time": "2021-01-12T00:00:00", + "pnl": -28.17177586813102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.48237494714664, + "entry_time": "2021-01-14T00:00:00", + "exit_price": 96.58658168452075, + "exit_time": "2021-01-15T00:00:00", + "pnl": 10.420673737411335, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.75620116852377, + "entry_time": "2021-01-17T00:00:00", + "exit_price": 96.69650084660127, + "exit_time": "2021-01-18T00:00:00", + "pnl": -5.970032192250585, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.92028780826493, + "entry_time": "2021-01-20T00:00:00", + "exit_price": 95.62951533581877, + "exit_time": "2021-01-21T00:00:00", + "pnl": -29.077247244616444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.58269597074072, + "entry_time": "2021-01-23T00:00:00", + "exit_price": 95.65987379372794, + "exit_time": "2021-01-24T00:00:00", + "pnl": 7.717782298722398, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.66612454309693, + "entry_time": "2021-01-26T00:00:00", + "exit_price": 95.8169746660663, + "exit_time": "2021-01-27T00:00:00", + "pnl": 15.08501229693735, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5926039176473, + "entry_time": "2021-01-29T00:00:00", + "exit_price": 95.28582192646724, + "exit_time": "2021-01-30T00:00:00", + "pnl": -30.678199118005978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.47874410921285, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.57232514477201, + "exit_time": "2021-02-02T00:00:00", + "pnl": 9.35810355591542, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.07482838670384, + "entry_time": "2021-02-04T00:00:00", + "exit_price": 96.06329982176626, + "exit_time": "2021-02-05T00:00:00", + "pnl": -1.1528564937577812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.93964633706301, + "entry_time": "2021-02-07T00:00:00", + "exit_price": 96.02294071169972, + "exit_time": "2021-02-08T00:00:00", + "pnl": 8.329437463670786, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.73925579999096, + "entry_time": "2021-02-10T00:00:00", + "exit_price": 95.99566659891293, + "exit_time": "2021-02-11T00:00:00", + "pnl": 25.641079892197638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.99166395939717, + "entry_time": "2021-02-13T00:00:00", + "exit_price": 95.91107729961162, + "exit_time": "2021-02-14T00:00:00", + "pnl": -8.058665978555268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.35440315345551, + "entry_time": "2021-02-16T00:00:00", + "exit_price": 96.19457800884426, + "exit_time": "2021-02-17T00:00:00", + "pnl": -15.982514461124708, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87539474258334, + "entry_time": "2021-02-19T00:00:00", + "exit_price": 96.03831344319956, + "exit_time": "2021-02-20T00:00:00", + "pnl": 16.291870061621694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.84933568810729, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.942984467456, + "exit_time": "2021-02-23T00:00:00", + "pnl": 9.364877934871174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28778584744732, + "entry_time": "2021-02-25T00:00:00", + "exit_price": 95.02443267142746, + "exit_time": "2021-02-26T00:00:00", + "pnl": -26.33531760198622, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94057536205155, + "entry_time": "2021-02-28T00:00:00", + "exit_price": 94.72906200441219, + "exit_time": "2021-03-01T00:00:00", + "pnl": -21.151335763936174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38445225202611, + "entry_time": "2021-03-03T00:00:00", + "exit_price": 94.38197492987447, + "exit_time": "2021-03-04T00:00:00", + "pnl": -0.24773221516340982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18213638354725, + "entry_time": "2021-03-06T00:00:00", + "exit_price": 94.04715001455901, + "exit_time": "2021-03-07T00:00:00", + "pnl": -13.49863689882369, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19838818284391, + "entry_time": "2021-03-09T00:00:00", + "exit_price": 94.29725636974986, + "exit_time": "2021-03-10T00:00:00", + "pnl": 9.886818690594623, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23572569098852, + "entry_time": "2021-03-12T00:00:00", + "exit_price": 94.3432106471416, + "exit_time": "2021-03-13T00:00:00", + "pnl": 10.748495615308684, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46834681822006, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.39304905252162, + "exit_time": "2021-03-16T00:00:00", + "pnl": -7.529776569843705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46079241276229, + "entry_time": "2021-03-18T00:00:00", + "exit_price": 94.87391242777782, + "exit_time": "2021-03-19T00:00:00", + "pnl": 41.31200150155365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81782457593818, + "entry_time": "2021-03-21T00:00:00", + "exit_price": 94.74839547168068, + "exit_time": "2021-03-22T00:00:00", + "pnl": -6.94291042574946, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9804659897062, + "entry_time": "2021-03-24T00:00:00", + "exit_price": 95.1820620687209, + "exit_time": "2021-03-25T00:00:00", + "pnl": 20.1596079014692, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53780103937676, + "entry_time": "2021-03-27T00:00:00", + "exit_price": 94.35114383691389, + "exit_time": "2021-03-28T00:00:00", + "pnl": -18.66572024628681, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19430169329607, + "entry_time": "2021-03-30T00:00:00", + "exit_price": 94.0736265695374, + "exit_time": "2021-03-31T00:00:00", + "pnl": -12.067512375867295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.56101740773187, + "entry_time": "2021-04-02T00:00:00", + "exit_price": 94.02847405275406, + "exit_time": "2021-04-03T00:00:00", + "pnl": -53.2543354977804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02877565620591, + "entry_time": "2021-04-05T00:00:00", + "exit_price": 94.02966575553104, + "exit_time": "2021-04-06T00:00:00", + "pnl": 0.08900993251330647, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71076966315076, + "entry_time": "2021-04-08T00:00:00", + "exit_price": 93.5342590029927, + "exit_time": "2021-04-09T00:00:00", + "pnl": -17.65106601580584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87172892779671, + "entry_time": "2021-04-11T00:00:00", + "exit_price": 93.8898807030855, + "exit_time": "2021-04-12T00:00:00", + "pnl": 1.8151775288785643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75093994363492, + "entry_time": "2021-04-14T00:00:00", + "exit_price": 93.70594283596789, + "exit_time": "2021-04-15T00:00:00", + "pnl": -4.499710766702947, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83044892913243, + "entry_time": "2021-04-17T00:00:00", + "exit_price": 93.71383587412238, + "exit_time": "2021-04-18T00:00:00", + "pnl": -11.661305501004904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52870331564132, + "entry_time": "2021-04-20T00:00:00", + "exit_price": 93.68221846843574, + "exit_time": "2021-04-21T00:00:00", + "pnl": 15.35151527944123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68293629394864, + "entry_time": "2021-04-23T00:00:00", + "exit_price": 93.76185935158753, + "exit_time": "2021-04-24T00:00:00", + "pnl": 7.892305763888885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77694161620539, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.94666597863043, + "exit_time": "2021-04-27T00:00:00", + "pnl": 16.97243624250433, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09046839544106, + "entry_time": "2021-04-29T00:00:00", + "exit_price": 94.0093802192737, + "exit_time": "2021-04-30T00:00:00", + "pnl": -8.108817616736985, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7818281411755, + "entry_time": "2021-05-02T00:00:00", + "exit_price": 93.75541337031265, + "exit_time": "2021-05-03T00:00:00", + "pnl": -2.641477086284283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72371690451082, + "entry_time": "2021-05-05T00:00:00", + "exit_price": 93.60849664049482, + "exit_time": "2021-05-06T00:00:00", + "pnl": -11.522026401600272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94340121095276, + "entry_time": "2021-05-08T00:00:00", + "exit_price": 93.85028148090369, + "exit_time": "2021-05-09T00:00:00", + "pnl": -9.311973004906804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7183641880944, + "entry_time": "2021-05-11T00:00:00", + "exit_price": 93.93201467581261, + "exit_time": "2021-05-12T00:00:00", + "pnl": 21.365048771821193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66005037144768, + "entry_time": "2021-05-14T00:00:00", + "exit_price": 93.71003338575711, + "exit_time": "2021-05-15T00:00:00", + "pnl": 4.998301430943286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64414870400898, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 93.73370138654631, + "exit_time": "2021-05-18T00:00:00", + "pnl": 8.955268253733095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5147503132911, + "entry_time": "2021-05-20T00:00:00", + "exit_price": 93.60797476194675, + "exit_time": "2021-05-21T00:00:00", + "pnl": 9.322444865564705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42059367470232, + "entry_time": "2021-05-23T00:00:00", + "exit_price": 93.66628705381636, + "exit_time": "2021-05-24T00:00:00", + "pnl": 24.569337911404432, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53531464201515, + "entry_time": "2021-05-26T00:00:00", + "exit_price": 93.2030497935449, + "exit_time": "2021-05-27T00:00:00", + "pnl": -33.22648484702455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62268440600192, + "entry_time": "2021-05-29T00:00:00", + "exit_price": 92.91948342162647, + "exit_time": "2021-05-30T00:00:00", + "pnl": 29.679901562454347, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67919849510082, + "entry_time": "2021-06-01T00:00:00", + "exit_price": 92.43887673234494, + "exit_time": "2021-06-02T00:00:00", + "pnl": -24.032176275588313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.17984056111294, + "entry_time": "2021-06-04T00:00:00", + "exit_price": 91.94368190633774, + "exit_time": "2021-06-05T00:00:00", + "pnl": -23.61586547751955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.11465699863811, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.97059505880482, + "exit_time": "2021-06-08T00:00:00", + "pnl": -14.406193983329274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29459604644767, + "entry_time": "2021-06-10T00:00:00", + "exit_price": 92.53931157007439, + "exit_time": "2021-06-11T00:00:00", + "pnl": 24.471552362672355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49631090115352, + "entry_time": "2021-06-13T00:00:00", + "exit_price": 92.52393358151217, + "exit_time": "2021-06-14T00:00:00", + "pnl": 2.762268035864679, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66942128922241, + "entry_time": "2021-06-16T00:00:00", + "exit_price": 92.4946582273999, + "exit_time": "2021-06-17T00:00:00", + "pnl": -17.476306182251733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2942483479133, + "entry_time": "2021-06-19T00:00:00", + "exit_price": 92.07603918687664, + "exit_time": "2021-06-20T00:00:00", + "pnl": -21.82091610366541, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.33479567014805, + "entry_time": "2021-06-22T00:00:00", + "exit_price": 92.14550463966849, + "exit_time": "2021-06-23T00:00:00", + "pnl": -18.92910304795663, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9928646204638, + "entry_time": "2021-06-25T00:00:00", + "exit_price": 91.96872153502625, + "exit_time": "2021-06-26T00:00:00", + "pnl": -2.4143085437557943, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87705988155102, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.53452507075421, + "exit_time": "2021-06-29T00:00:00", + "pnl": -34.253481079680625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.56396146367425, + "entry_time": "2021-07-01T00:00:00", + "exit_price": 91.59385740536969, + "exit_time": "2021-07-02T00:00:00", + "pnl": 2.9895941695443184, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64213975217385, + "entry_time": "2021-07-04T00:00:00", + "exit_price": 91.78882758292927, + "exit_time": "2021-07-05T00:00:00", + "pnl": 14.668783075542535, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63683672368548, + "entry_time": "2021-07-07T00:00:00", + "exit_price": 91.48470633760584, + "exit_time": "2021-07-08T00:00:00", + "pnl": -15.21303860796337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39062489567554, + "entry_time": "2021-07-10T00:00:00", + "exit_price": 91.494696351115, + "exit_time": "2021-07-11T00:00:00", + "pnl": 10.407145543945262, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93573503075692, + "entry_time": "2021-07-13T00:00:00", + "exit_price": 90.98885415853535, + "exit_time": "2021-07-14T00:00:00", + "pnl": 5.31191277784302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06245234985892, + "entry_time": "2021-07-16T00:00:00", + "exit_price": 91.0289821017493, + "exit_time": "2021-07-17T00:00:00", + "pnl": -3.3470248109608747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22900373831217, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.3157346032948, + "exit_time": "2021-07-20T00:00:00", + "pnl": 8.673086498262705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59973514861234, + "entry_time": "2021-07-22T00:00:00", + "exit_price": 91.77086454804387, + "exit_time": "2021-07-23T00:00:00", + "pnl": 17.11293994315355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82096590563263, + "entry_time": "2021-07-25T00:00:00", + "exit_price": 91.95769963997635, + "exit_time": "2021-07-26T00:00:00", + "pnl": 13.673373434372138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.21106339352883, + "entry_time": "2021-07-28T00:00:00", + "exit_price": 92.07551182524406, + "exit_time": "2021-07-29T00:00:00", + "pnl": -13.555156828476811, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09759300944572, + "entry_time": "2021-07-31T00:00:00", + "exit_price": 92.33359941396125, + "exit_time": "2021-08-01T00:00:00", + "pnl": 23.600640451553545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2288848699624, + "entry_time": "2021-08-03T00:00:00", + "exit_price": 92.2069451450579, + "exit_time": "2021-08-04T00:00:00", + "pnl": -2.1939724904498803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46522997402728, + "entry_time": "2021-08-06T00:00:00", + "exit_price": 92.63157812424986, + "exit_time": "2021-08-07T00:00:00", + "pnl": 16.6348150222575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92215275507255, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 92.81904355011355, + "exit_time": "2021-08-10T00:00:00", + "pnl": -10.310920495899722, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34536862719393, + "entry_time": "2021-08-12T00:00:00", + "exit_price": 93.4540782896955, + "exit_time": "2021-08-13T00:00:00", + "pnl": 10.870966250156755, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65179701007457, + "entry_time": "2021-08-15T00:00:00", + "exit_price": 93.58231165488735, + "exit_time": "2021-08-16T00:00:00", + "pnl": -6.948535518722565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59222373899847, + "entry_time": "2021-08-18T00:00:00", + "exit_price": 93.41076247699506, + "exit_time": "2021-08-19T00:00:00", + "pnl": -18.146126200340973, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57987210255567, + "entry_time": "2021-08-21T00:00:00", + "exit_price": 93.93696117180936, + "exit_time": "2021-08-22T00:00:00", + "pnl": 35.70890692536892, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88875391692817, + "entry_time": "2021-08-24T00:00:00", + "exit_price": 93.67494277755462, + "exit_time": "2021-08-25T00:00:00", + "pnl": -21.381113937354712, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99358787892747, + "entry_time": "2021-08-27T00:00:00", + "exit_price": 93.07975990716614, + "exit_time": "2021-08-28T00:00:00", + "pnl": 8.617202823866421, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07047992178704, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.33559891886243, + "exit_time": "2021-08-31T00:00:00", + "pnl": 26.511899707539044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59225467831385, + "entry_time": "2021-09-02T00:00:00", + "exit_price": 93.63479260217548, + "exit_time": "2021-09-03T00:00:00", + "pnl": 4.253792386163013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80334597318696, + "entry_time": "2021-09-05T00:00:00", + "exit_price": 93.98346554786147, + "exit_time": "2021-09-06T00:00:00", + "pnl": 18.011957467450657, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92321614880655, + "entry_time": "2021-09-08T00:00:00", + "exit_price": 93.83699346593512, + "exit_time": "2021-09-09T00:00:00", + "pnl": -8.622268287142276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93109508241774, + "entry_time": "2021-09-11T00:00:00", + "exit_price": 93.96354668527802, + "exit_time": "2021-09-12T00:00:00", + "pnl": 3.245160286027726, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08641930356686, + "entry_time": "2021-09-14T00:00:00", + "exit_price": 94.23768236549668, + "exit_time": "2021-09-15T00:00:00", + "pnl": 15.126306192982497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08211844013991, + "entry_time": "2021-09-17T00:00:00", + "exit_price": 94.20846159911048, + "exit_time": "2021-09-18T00:00:00", + "pnl": 12.634315897057036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.13954155854589, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 93.89054598561034, + "exit_time": "2021-09-21T00:00:00", + "pnl": -24.899557293554153, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11646823351487, + "entry_time": "2021-09-23T00:00:00", + "exit_price": 94.10168176297485, + "exit_time": "2021-09-24T00:00:00", + "pnl": -1.4786470540016694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30038009222437, + "entry_time": "2021-09-26T00:00:00", + "exit_price": 94.41339845504724, + "exit_time": "2021-09-27T00:00:00", + "pnl": 11.30183628228707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10852951715279, + "entry_time": "2021-09-29T00:00:00", + "exit_price": 93.84680988625497, + "exit_time": "2021-09-30T00:00:00", + "pnl": -26.171963089781514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00138088356287, + "entry_time": "2021-10-02T00:00:00", + "exit_price": 94.04342924144086, + "exit_time": "2021-10-03T00:00:00", + "pnl": 4.2048357877988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01673785551607, + "entry_time": "2021-10-05T00:00:00", + "exit_price": 93.8508081374985, + "exit_time": "2021-10-06T00:00:00", + "pnl": -16.592971801756562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87089994615239, + "entry_time": "2021-10-08T00:00:00", + "exit_price": 93.9378403552245, + "exit_time": "2021-10-09T00:00:00", + "pnl": 6.694040907210308, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05201413714097, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.0235397935625, + "exit_time": "2021-10-12T00:00:00", + "pnl": -2.8474343578466232, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26517251606933, + "entry_time": "2021-10-14T00:00:00", + "exit_price": 94.15470785076896, + "exit_time": "2021-10-15T00:00:00", + "pnl": -11.04646653003698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4932600250258, + "entry_time": "2021-10-17T00:00:00", + "exit_price": 94.51252060274227, + "exit_time": "2021-10-18T00:00:00", + "pnl": 1.9260577716465832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53140073996916, + "entry_time": "2021-10-20T00:00:00", + "exit_price": 94.90203063702091, + "exit_time": "2021-10-21T00:00:00", + "pnl": 37.06298970517565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26191114348926, + "entry_time": "2021-10-23T00:00:00", + "exit_price": 94.0634456423351, + "exit_time": "2021-10-24T00:00:00", + "pnl": -19.84655011541605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43521818420996, + "entry_time": "2021-10-26T00:00:00", + "exit_price": 94.38568536751181, + "exit_time": "2021-10-27T00:00:00", + "pnl": -4.953281669814658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21262216293847, + "entry_time": "2021-10-29T00:00:00", + "exit_price": 94.23411145607675, + "exit_time": "2021-10-30T00:00:00", + "pnl": 2.1489293138273524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82330133886903, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 93.61660062265747, + "exit_time": "2021-11-02T00:00:00", + "pnl": -20.670071621155728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71484163940588, + "entry_time": "2021-11-04T00:00:00", + "exit_price": 93.72855192282307, + "exit_time": "2021-11-05T00:00:00", + "pnl": 1.3710283417196933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36926429851582, + "entry_time": "2021-11-07T00:00:00", + "exit_price": 93.37837200951205, + "exit_time": "2021-11-08T00:00:00", + "pnl": 0.9107710996232754, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19352686807355, + "entry_time": "2021-11-10T00:00:00", + "exit_price": 93.28024660066703, + "exit_time": "2021-11-11T00:00:00", + "pnl": 8.671973259347965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9638468574369, + "entry_time": "2021-11-13T00:00:00", + "exit_price": 93.14877036790756, + "exit_time": "2021-11-14T00:00:00", + "pnl": 18.49235104706537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09572264391801, + "entry_time": "2021-11-16T00:00:00", + "exit_price": 92.53876217367774, + "exit_time": "2021-11-17T00:00:00", + "pnl": -55.696047024026996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.64617178108719, + "entry_time": "2021-11-19T00:00:00", + "exit_price": 92.85422093876446, + "exit_time": "2021-11-20T00:00:00", + "pnl": 20.804915767726584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6092442220808, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 92.52724603055836, + "exit_time": "2021-11-23T00:00:00", + "pnl": -8.199819152244459, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46494136842416, + "entry_time": "2021-11-25T00:00:00", + "exit_price": 92.44406941275119, + "exit_time": "2021-11-26T00:00:00", + "pnl": -2.0871955672973286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32264147745168, + "entry_time": "2021-11-28T00:00:00", + "exit_price": 92.0360221167863, + "exit_time": "2021-11-29T00:00:00", + "pnl": -28.661936066538374, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01384655286364, + "entry_time": "2021-12-01T00:00:00", + "exit_price": 91.97262653583181, + "exit_time": "2021-12-02T00:00:00", + "pnl": -4.122001703183287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.28024889847717, + "entry_time": "2021-12-04T00:00:00", + "exit_price": 91.96758302287454, + "exit_time": "2021-12-05T00:00:00", + "pnl": -31.266587560263304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25528568314509, + "entry_time": "2021-12-07T00:00:00", + "exit_price": 92.20092793334622, + "exit_time": "2021-12-08T00:00:00", + "pnl": -5.435774979886787, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49508373939166, + "entry_time": "2021-12-10T00:00:00", + "exit_price": 92.73466658206335, + "exit_time": "2021-12-11T00:00:00", + "pnl": 23.95828426716946, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46436704586412, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.69111891541637, + "exit_time": "2021-12-14T00:00:00", + "pnl": 22.675186955224547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21128313549013, + "entry_time": "2021-12-16T00:00:00", + "exit_price": 93.37756823246967, + "exit_time": "2021-12-17T00:00:00", + "pnl": 16.628509697953575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04218716563327, + "entry_time": "2021-12-19T00:00:00", + "exit_price": 93.00014735551822, + "exit_time": "2021-12-20T00:00:00", + "pnl": -4.203981011504254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.93318531635458, + "entry_time": "2021-12-22T00:00:00", + "exit_price": 92.84116622880475, + "exit_time": "2021-12-23T00:00:00", + "pnl": -9.201908754982924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50637869144558, + "entry_time": "2021-12-25T00:00:00", + "exit_price": 92.66826656058106, + "exit_time": "2021-12-26T00:00:00", + "pnl": 16.18878691354837, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36257300920573, + "entry_time": "2021-12-28T00:00:00", + "exit_price": 92.60779676375832, + "exit_time": "2021-12-29T00:00:00", + "pnl": 24.522375455258327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36220969555443, + "entry_time": "2021-12-31T00:00:00", + "exit_price": 92.1193839744838, + "exit_time": "2022-01-01T00:00:00", + "pnl": -24.28257210706306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89096232869592, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.75394086603562, + "exit_time": "2022-01-04T00:00:00", + "pnl": -13.702146266030013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.10653141004636, + "entry_time": "2022-01-06T00:00:00", + "exit_price": 91.98502552303084, + "exit_time": "2022-01-07T00:00:00", + "pnl": -12.150588701551612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03115476672883, + "entry_time": "2022-01-09T00:00:00", + "exit_price": 92.05866288388766, + "exit_time": "2022-01-10T00:00:00", + "pnl": 2.750811715883117, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.80506699745925, + "entry_time": "2022-01-12T00:00:00", + "exit_price": 91.97004409317438, + "exit_time": "2022-01-13T00:00:00", + "pnl": 16.49770957151304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.3933991191183, + "entry_time": "2022-01-15T00:00:00", + "exit_price": 91.28070286679336, + "exit_time": "2022-01-16T00:00:00", + "pnl": -11.269625232493752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74175784445059, + "entry_time": "2022-01-18T00:00:00", + "exit_price": 91.6733758391721, + "exit_time": "2022-01-19T00:00:00", + "pnl": -6.838200527849381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81901224922302, + "entry_time": "2022-01-21T00:00:00", + "exit_price": 91.84844274508458, + "exit_time": "2022-01-22T00:00:00", + "pnl": 2.9430495861561212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.60313885279771, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.41938832519848, + "exit_time": "2022-01-25T00:00:00", + "pnl": -18.375052759922994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64052127057325, + "entry_time": "2022-01-27T00:00:00", + "exit_price": 91.54200410559555, + "exit_time": "2022-01-28T00:00:00", + "pnl": -9.851716497769303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73590345101391, + "entry_time": "2022-01-30T00:00:00", + "exit_price": 91.62782637305553, + "exit_time": "2022-01-31T00:00:00", + "pnl": -10.80770779583844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79185882856454, + "entry_time": "2022-02-02T00:00:00", + "exit_price": 91.8357946573913, + "exit_time": "2022-02-03T00:00:00", + "pnl": 4.393582882676128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79563500808236, + "entry_time": "2022-02-05T00:00:00", + "exit_price": 92.09144139124615, + "exit_time": "2022-02-06T00:00:00", + "pnl": 29.580638316379293, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.91260250945975, + "entry_time": "2022-02-08T00:00:00", + "exit_price": 91.67552176869381, + "exit_time": "2022-02-09T00:00:00", + "pnl": -23.708074076593277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66062267455895, + "entry_time": "2022-02-11T00:00:00", + "exit_price": 91.64149069106048, + "exit_time": "2022-02-12T00:00:00", + "pnl": -1.913198349846823, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37359630109036, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.51652219716766, + "exit_time": "2022-02-15T00:00:00", + "pnl": 14.292589607730122, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.54575759654935, + "entry_time": "2022-02-17T00:00:00", + "exit_price": 91.58821852619887, + "exit_time": "2022-02-18T00:00:00", + "pnl": 4.246092964952197, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76782809841714, + "entry_time": "2022-02-20T00:00:00", + "exit_price": 91.6119124553235, + "exit_time": "2022-02-21T00:00:00", + "pnl": -15.591564309363548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74629736846254, + "entry_time": "2022-02-23T00:00:00", + "exit_price": 91.61327551923173, + "exit_time": "2022-02-24T00:00:00", + "pnl": -13.302184923080063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.32896871135786, + "entry_time": "2022-02-26T00:00:00", + "exit_price": 91.13780861275266, + "exit_time": "2022-02-27T00:00:00", + "pnl": -19.11600986051951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12507835931243, + "entry_time": "2022-03-01T00:00:00", + "exit_price": 91.13114200203424, + "exit_time": "2022-03-02T00:00:00", + "pnl": 0.6063642721812812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37230639398891, + "entry_time": "2022-03-04T00:00:00", + "exit_price": 91.298526480022, + "exit_time": "2022-03-05T00:00:00", + "pnl": -7.37799139669022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14580661294434, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.26371087049277, + "exit_time": "2022-03-08T00:00:00", + "pnl": 11.79042575484317, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.19265250778471, + "entry_time": "2022-03-10T00:00:00", + "exit_price": 91.34688434505053, + "exit_time": "2022-03-11T00:00:00", + "pnl": 15.423183726581158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.27944969864926, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 91.00376526097061, + "exit_time": "2022-03-14T00:00:00", + "pnl": -27.568443767864892, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12691845430324, + "entry_time": "2022-03-16T00:00:00", + "exit_price": 91.13627424638673, + "exit_time": "2022-03-17T00:00:00", + "pnl": 0.9355792083496794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.90552697963444, + "entry_time": "2022-03-19T00:00:00", + "exit_price": 90.86432013057937, + "exit_time": "2022-03-20T00:00:00", + "pnl": -4.1206849055072325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88314466139805, + "entry_time": "2022-03-22T00:00:00", + "exit_price": 90.85684478131836, + "exit_time": "2022-03-23T00:00:00", + "pnl": -2.629988007969075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8333575750649, + "entry_time": "2022-03-25T00:00:00", + "exit_price": 90.87580958070879, + "exit_time": "2022-03-26T00:00:00", + "pnl": 4.245200564389506, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87723690769735, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.02118341969194, + "exit_time": "2022-03-29T00:00:00", + "pnl": 14.394651199458508, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14559411024791, + "entry_time": "2022-03-31T00:00:00", + "exit_price": 91.1102070847533, + "exit_time": "2022-04-01T00:00:00", + "pnl": -3.5387025494614477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.03652679668626, + "entry_time": "2022-04-03T00:00:00", + "exit_price": 90.64848582455738, + "exit_time": "2022-04-04T00:00:00", + "pnl": -38.80409721288771, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.5160908672533, + "entry_time": "2022-04-06T00:00:00", + "exit_price": 90.67122680039915, + "exit_time": "2022-04-07T00:00:00", + "pnl": 15.513593314585705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49638519206742, + "entry_time": "2022-04-09T00:00:00", + "exit_price": 90.23851904732544, + "exit_time": "2022-04-10T00:00:00", + "pnl": -25.78661447419819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.12623758622358, + "entry_time": "2022-04-12T00:00:00", + "exit_price": 90.13616044249197, + "exit_time": "2022-04-13T00:00:00", + "pnl": 0.9922856268389069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.97730849654188, + "entry_time": "2022-04-15T00:00:00", + "exit_price": 89.93950245741028, + "exit_time": "2022-04-16T00:00:00", + "pnl": -3.7806039131595526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.92103698222829, + "entry_time": "2022-04-18T00:00:00", + "exit_price": 89.92708766921471, + "exit_time": "2022-04-19T00:00:00", + "pnl": 0.6050686986426967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.318742774315, + "entry_time": "2022-04-21T00:00:00", + "exit_price": 90.23642124916759, + "exit_time": "2022-04-22T00:00:00", + "pnl": -8.232152514740676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.21999028274803, + "entry_time": "2022-04-24T00:00:00", + "exit_price": 90.22126197659611, + "exit_time": "2022-04-25T00:00:00", + "pnl": 0.12716938480821227, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84560909030803, + "entry_time": "2022-04-27T00:00:00", + "exit_price": 90.53569591871245, + "exit_time": "2022-04-28T00:00:00", + "pnl": -30.991317159558207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0165686304024, + "entry_time": "2022-04-30T00:00:00", + "exit_price": 90.91735297539282, + "exit_time": "2022-05-01T00:00:00", + "pnl": -9.921565500958707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23908301563729, + "entry_time": "2022-05-03T00:00:00", + "exit_price": 91.14925296519219, + "exit_time": "2022-05-04T00:00:00", + "pnl": -8.98300504451015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22089116397768, + "entry_time": "2022-05-06T00:00:00", + "exit_price": 90.87029928541635, + "exit_time": "2022-05-07T00:00:00", + "pnl": -35.05918785613318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89974631246403, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.06863681183862, + "exit_time": "2022-05-10T00:00:00", + "pnl": 16.889049937458367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.57589026049908, + "entry_time": "2022-05-12T00:00:00", + "exit_price": 91.50862549547844, + "exit_time": "2022-05-13T00:00:00", + "pnl": -6.726476502063861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62801821971621, + "entry_time": "2022-05-15T00:00:00", + "exit_price": 91.81567744205196, + "exit_time": "2022-05-16T00:00:00", + "pnl": 18.76592223357534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.33854066905738, + "entry_time": "2022-05-18T00:00:00", + "exit_price": 90.96569574948703, + "exit_time": "2022-05-19T00:00:00", + "pnl": -37.28449195703547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07274851876404, + "entry_time": "2022-05-21T00:00:00", + "exit_price": 90.95622489428452, + "exit_time": "2022-05-22T00:00:00", + "pnl": -11.652362447952669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.7205106927609, + "entry_time": "2022-05-24T00:00:00", + "exit_price": 90.55232295814028, + "exit_time": "2022-05-25T00:00:00", + "pnl": -16.818773462061642, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.40473126616526, + "entry_time": "2022-05-27T00:00:00", + "exit_price": 90.65640141611814, + "exit_time": "2022-05-28T00:00:00", + "pnl": 25.16701499528864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56665701011867, + "entry_time": "2022-05-30T00:00:00", + "exit_price": 90.46095751045398, + "exit_time": "2022-05-31T00:00:00", + "pnl": -10.569949966469494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.76022002087706, + "entry_time": "2022-06-02T00:00:00", + "exit_price": 90.81381751472117, + "exit_time": "2022-06-03T00:00:00", + "pnl": 5.359749384410861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23375682446748, + "entry_time": "2022-06-05T00:00:00", + "exit_price": 91.01190578025698, + "exit_time": "2022-06-06T00:00:00", + "pnl": -22.185104421049573, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56046438309357, + "entry_time": "2022-06-08T00:00:00", + "exit_price": 90.6501420569037, + "exit_time": "2022-06-09T00:00:00", + "pnl": 8.967767381012948, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45985538510017, + "entry_time": "2022-06-11T00:00:00", + "exit_price": 90.32205823485288, + "exit_time": "2022-06-12T00:00:00", + "pnl": -13.779715024729455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.4213362857644, + "entry_time": "2022-06-14T00:00:00", + "exit_price": 90.3254460973393, + "exit_time": "2022-06-15T00:00:00", + "pnl": -9.5890188425102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.3632620077688, + "entry_time": "2022-06-17T00:00:00", + "exit_price": 90.1350438366559, + "exit_time": "2022-06-18T00:00:00", + "pnl": -22.821817111289988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.53738507774712, + "entry_time": "2022-06-20T00:00:00", + "exit_price": 90.43902960493799, + "exit_time": "2022-06-21T00:00:00", + "pnl": -9.835547280913204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28282897059066, + "entry_time": "2022-06-23T00:00:00", + "exit_price": 90.42427634098117, + "exit_time": "2022-06-24T00:00:00", + "pnl": 14.14473703905088, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.65923583486823, + "entry_time": "2022-06-26T00:00:00", + "exit_price": 90.60873415539405, + "exit_time": "2022-06-27T00:00:00", + "pnl": -5.0501679474180605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.39024714619487, + "entry_time": "2022-06-29T00:00:00", + "exit_price": 90.66523349021156, + "exit_time": "2022-06-30T00:00:00", + "pnl": 27.49863440166962, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82876323237488, + "entry_time": "2022-07-02T00:00:00", + "exit_price": 90.97466728886246, + "exit_time": "2022-07-03T00:00:00", + "pnl": 14.590405648758065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89452843928451, + "entry_time": "2022-07-05T00:00:00", + "exit_price": 90.67041116090726, + "exit_time": "2022-07-06T00:00:00", + "pnl": -22.411727837724982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63870699300467, + "entry_time": "2022-07-08T00:00:00", + "exit_price": 90.60806866533521, + "exit_time": "2022-07-09T00:00:00", + "pnl": -3.0638327669464616, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09022889967974, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 91.33132395141395, + "exit_time": "2022-07-12T00:00:00", + "pnl": 24.109505173420587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1422566167072, + "entry_time": "2022-07-14T00:00:00", + "exit_price": 91.02336448195068, + "exit_time": "2022-07-15T00:00:00", + "pnl": -11.889213475652127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.85171345155103, + "entry_time": "2022-07-17T00:00:00", + "exit_price": 90.92826438920278, + "exit_time": "2022-07-18T00:00:00", + "pnl": 7.65509376517457, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.99679364605882, + "entry_time": "2022-07-20T00:00:00", + "exit_price": 91.02558962193989, + "exit_time": "2022-07-21T00:00:00", + "pnl": 2.8795975881067193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86654130293296, + "entry_time": "2022-07-23T00:00:00", + "exit_price": 91.1805076876075, + "exit_time": "2022-07-24T00:00:00", + "pnl": 31.396638467454352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20590970247866, + "entry_time": "2022-07-26T00:00:00", + "exit_price": 91.04093233048125, + "exit_time": "2022-07-27T00:00:00", + "pnl": -16.497737199740925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.94025278141096, + "entry_time": "2022-07-29T00:00:00", + "exit_price": 91.1695372755258, + "exit_time": "2022-07-30T00:00:00", + "pnl": 22.928449411483598, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55006804279205, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.74946747581956, + "exit_time": "2022-08-02T00:00:00", + "pnl": 19.939943302750862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.08829699168929, + "entry_time": "2022-08-04T00:00:00", + "exit_price": 92.17204398025235, + "exit_time": "2022-08-05T00:00:00", + "pnl": 8.374698856306395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82928257766984, + "entry_time": "2022-08-07T00:00:00", + "exit_price": 91.80555288724541, + "exit_time": "2022-08-08T00:00:00", + "pnl": -2.3729690424431737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03756487304749, + "entry_time": "2022-08-10T00:00:00", + "exit_price": 91.92246232242579, + "exit_time": "2022-08-11T00:00:00", + "pnl": -11.51025506216996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12455329081939, + "entry_time": "2022-08-13T00:00:00", + "exit_price": 92.03614640032846, + "exit_time": "2022-08-14T00:00:00", + "pnl": -8.840689049092987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43863634543025, + "entry_time": "2022-08-16T00:00:00", + "exit_price": 92.57880144701099, + "exit_time": "2022-08-17T00:00:00", + "pnl": 14.016510158073459, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56629976489471, + "entry_time": "2022-08-19T00:00:00", + "exit_price": 92.63602712862732, + "exit_time": "2022-08-20T00:00:00", + "pnl": 6.972736373261057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99359531127284, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.20326657631179, + "exit_time": "2022-08-23T00:00:00", + "pnl": 20.967126503894917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36371229951278, + "entry_time": "2022-08-25T00:00:00", + "exit_price": 93.15013947578183, + "exit_time": "2022-08-26T00:00:00", + "pnl": -21.357282373095643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39786147444197, + "entry_time": "2022-08-28T00:00:00", + "exit_price": 93.32525340472, + "exit_time": "2022-08-29T00:00:00", + "pnl": -7.260806972196576, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1699951830038, + "entry_time": "2022-08-31T00:00:00", + "exit_price": 92.94415449917722, + "exit_time": "2022-09-01T00:00:00", + "pnl": -22.584068382658984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06237685823791, + "entry_time": "2022-09-03T00:00:00", + "exit_price": 92.88599230986543, + "exit_time": "2022-09-04T00:00:00", + "pnl": -17.63845483724822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09341138541603, + "entry_time": "2022-09-06T00:00:00", + "exit_price": 93.29146577709628, + "exit_time": "2022-09-07T00:00:00", + "pnl": 19.805439168024463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.45209900958335, + "entry_time": "2022-09-09T00:00:00", + "exit_price": 93.38892182999521, + "exit_time": "2022-09-10T00:00:00", + "pnl": -6.317717958813773, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42662435004, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 93.86711355565461, + "exit_time": "2022-09-13T00:00:00", + "pnl": 44.0489205614611, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43026737045712, + "entry_time": "2022-09-15T00:00:00", + "exit_price": 94.68555551249223, + "exit_time": "2022-09-16T00:00:00", + "pnl": 25.528814203511274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.34275603824344, + "entry_time": "2022-09-18T00:00:00", + "exit_price": 94.26115762602807, + "exit_time": "2022-09-19T00:00:00", + "pnl": -8.159841221537079, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81665975574816, + "entry_time": "2022-09-21T00:00:00", + "exit_price": 94.69084237577945, + "exit_time": "2022-09-22T00:00:00", + "pnl": -12.581737996870856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.80375023000443, + "entry_time": "2022-09-24T00:00:00", + "exit_price": 94.71118042427594, + "exit_time": "2022-09-25T00:00:00", + "pnl": -9.25698057284876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46412500503037, + "entry_time": "2022-09-27T00:00:00", + "exit_price": 94.6314533607136, + "exit_time": "2022-09-28T00:00:00", + "pnl": 16.73283556832388, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6742741594175, + "entry_time": "2022-09-30T00:00:00", + "exit_price": 94.69072074935896, + "exit_time": "2022-10-01T00:00:00", + "pnl": 1.6446589941466527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.12667461230008, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 94.99949417466048, + "exit_time": "2022-10-04T00:00:00", + "pnl": -12.718043763959486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92543412582965, + "entry_time": "2022-10-06T00:00:00", + "exit_price": 94.72977842157017, + "exit_time": "2022-10-07T00:00:00", + "pnl": -19.565570425947953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5701038761525, + "entry_time": "2022-10-09T00:00:00", + "exit_price": 94.59977663872266, + "exit_time": "2022-10-10T00:00:00", + "pnl": 2.967276257015783, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29273313619652, + "entry_time": "2022-10-12T00:00:00", + "exit_price": 94.40263092608106, + "exit_time": "2022-10-13T00:00:00", + "pnl": 10.98977898845419, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28632878234235, + "entry_time": "2022-10-15T00:00:00", + "exit_price": 94.53250654562353, + "exit_time": "2022-10-16T00:00:00", + "pnl": 24.61777632811817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49417223286694, + "entry_time": "2022-10-18T00:00:00", + "exit_price": 94.21737477440588, + "exit_time": "2022-10-19T00:00:00", + "pnl": -27.67974584610613, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21700275153675, + "entry_time": "2022-10-21T00:00:00", + "exit_price": 94.24257812297434, + "exit_time": "2022-10-22T00:00:00", + "pnl": 2.5575371437582817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33447437173405, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.36500808099656, + "exit_time": "2022-10-25T00:00:00", + "pnl": 3.0533709262513753, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62192540785215, + "entry_time": "2022-10-27T00:00:00", + "exit_price": 94.95467067184597, + "exit_time": "2022-10-28T00:00:00", + "pnl": 33.274526399382864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32280422773096, + "entry_time": "2022-10-30T00:00:00", + "exit_price": 95.27797141913928, + "exit_time": "2022-10-31T00:00:00", + "pnl": -4.483280859167849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.85159096418194, + "entry_time": "2022-11-02T00:00:00", + "exit_price": 95.9332147424965, + "exit_time": "2022-11-03T00:00:00", + "pnl": 8.162377831456524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87171080557965, + "entry_time": "2022-11-05T00:00:00", + "exit_price": 95.72359330386428, + "exit_time": "2022-11-06T00:00:00", + "pnl": -14.811750171537597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38266657654839, + "entry_time": "2022-11-08T00:00:00", + "exit_price": 95.28429001378173, + "exit_time": "2022-11-09T00:00:00", + "pnl": -9.837656276665996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01211175536164, + "entry_time": "2022-11-11T00:00:00", + "exit_price": 94.84310882657518, + "exit_time": "2022-11-12T00:00:00", + "pnl": -16.900292878646894, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.59049236660377, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.35514007446828, + "exit_time": "2022-11-15T00:00:00", + "pnl": -23.535229213548803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9357580237877, + "entry_time": "2022-11-17T00:00:00", + "exit_price": 94.05072699188574, + "exit_time": "2022-11-18T00:00:00", + "pnl": 11.496896809804014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00889117962726, + "entry_time": "2022-11-20T00:00:00", + "exit_price": 94.18219892584725, + "exit_time": "2022-11-21T00:00:00", + "pnl": 17.330774621999012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96556912199465, + "entry_time": "2022-11-23T00:00:00", + "exit_price": 93.87607469195584, + "exit_time": "2022-11-24T00:00:00", + "pnl": -8.949443003881186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60138099475903, + "entry_time": "2022-11-26T00:00:00", + "exit_price": 93.55643441032785, + "exit_time": "2022-11-27T00:00:00", + "pnl": -4.494658443117316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88066522817982, + "entry_time": "2022-11-29T00:00:00", + "exit_price": 93.67510822228188, + "exit_time": "2022-11-30T00:00:00", + "pnl": -20.555700589794412, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69837663925773, + "entry_time": "2022-12-02T00:00:00", + "exit_price": 93.91860336977558, + "exit_time": "2022-12-03T00:00:00", + "pnl": 22.02267305178509, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.70107216756422, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.66971331829183, + "exit_time": "2022-12-06T00:00:00", + "pnl": -3.135884927239374, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87708149049162, + "entry_time": "2022-12-08T00:00:00", + "exit_price": 93.72163687944706, + "exit_time": "2022-12-09T00:00:00", + "pnl": -15.54446110445582, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94898877051006, + "entry_time": "2022-12-11T00:00:00", + "exit_price": 93.95474043698636, + "exit_time": "2022-12-12T00:00:00", + "pnl": 0.5751666476299988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6415881902333, + "entry_time": "2022-12-14T00:00:00", + "exit_price": 93.34129447656329, + "exit_time": "2022-12-15T00:00:00", + "pnl": -30.029371367001545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94345435925221, + "entry_time": "2022-12-17T00:00:00", + "exit_price": 92.60307524718807, + "exit_time": "2022-12-18T00:00:00", + "pnl": -34.03791120641415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.18983136258926, + "entry_time": "2022-12-20T00:00:00", + "exit_price": 92.07720168711411, + "exit_time": "2022-12-21T00:00:00", + "pnl": -11.26296754751479, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00591795170637, + "entry_time": "2022-12-23T00:00:00", + "exit_price": 91.73390898252362, + "exit_time": "2022-12-24T00:00:00", + "pnl": -27.200896918274964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87915537734212, + "entry_time": "2022-12-26T00:00:00", + "exit_price": 92.05356230153482, + "exit_time": "2022-12-27T00:00:00", + "pnl": 17.44069241927093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.19249105693206, + "entry_time": "2022-12-29T00:00:00", + "exit_price": 92.35715717263174, + "exit_time": "2022-12-30T00:00:00", + "pnl": 16.466611569968848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92376356586936, + "entry_time": "2023-01-01T00:00:00", + "exit_price": 92.8642597181964, + "exit_time": "2023-01-02T00:00:00", + "pnl": -5.950384767297123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08761417167571, + "entry_time": "2023-01-04T00:00:00", + "exit_price": 93.3787010770275, + "exit_time": "2023-01-05T00:00:00", + "pnl": 29.108690535178994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22887351223902, + "entry_time": "2023-01-07T00:00:00", + "exit_price": 93.18791972112416, + "exit_time": "2023-01-08T00:00:00", + "pnl": -4.095379111485897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71839956451682, + "entry_time": "2023-01-10T00:00:00", + "exit_price": 92.72871333258459, + "exit_time": "2023-01-11T00:00:00", + "pnl": 1.0313768067774731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71285525012034, + "entry_time": "2023-01-13T00:00:00", + "exit_price": 92.95484908903208, + "exit_time": "2023-01-14T00:00:00", + "pnl": 24.19938389117391, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09252551101909, + "entry_time": "2023-01-16T00:00:00", + "exit_price": 93.19565426763862, + "exit_time": "2023-01-17T00:00:00", + "pnl": 10.312875661952603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34851063541004, + "entry_time": "2023-01-19T00:00:00", + "exit_price": 93.36918149511725, + "exit_time": "2023-01-20T00:00:00", + "pnl": 2.067085970720939, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.29871325433136, + "entry_time": "2023-01-22T00:00:00", + "exit_price": 93.43191348926673, + "exit_time": "2023-01-23T00:00:00", + "pnl": 13.320023493537292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54163438380152, + "entry_time": "2023-01-25T00:00:00", + "exit_price": 93.70996022231523, + "exit_time": "2023-01-26T00:00:00", + "pnl": 16.83258385137094, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44351635290319, + "entry_time": "2023-01-28T00:00:00", + "exit_price": 93.3607156455027, + "exit_time": "2023-01-29T00:00:00", + "pnl": -8.280070740049439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25194927165909, + "entry_time": "2023-01-31T00:00:00", + "exit_price": 93.09482587993352, + "exit_time": "2023-02-01T00:00:00", + "pnl": -15.712339172556256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05964578316673, + "entry_time": "2023-02-03T00:00:00", + "exit_price": 93.1247824238807, + "exit_time": "2023-02-04T00:00:00", + "pnl": 6.513664071397329, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60195304694001, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.5077083162264, + "exit_time": "2023-02-07T00:00:00", + "pnl": -9.424473071361206, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32915625849455, + "entry_time": "2023-02-09T00:00:00", + "exit_price": 93.41904859018952, + "exit_time": "2023-02-10T00:00:00", + "pnl": 8.989233169496913, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86240170807343, + "entry_time": "2023-02-12T00:00:00", + "exit_price": 93.74311994285968, + "exit_time": "2023-02-13T00:00:00", + "pnl": -11.928176521375633, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92758592270172, + "entry_time": "2023-02-15T00:00:00", + "exit_price": 93.91004727072426, + "exit_time": "2023-02-16T00:00:00", + "pnl": -1.7538651977460518, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.90746519420465, + "entry_time": "2023-02-18T00:00:00", + "exit_price": 94.16764239198312, + "exit_time": "2023-02-19T00:00:00", + "pnl": 26.017719777847503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.44892482562024, + "entry_time": "2023-02-21T00:00:00", + "exit_price": 94.29820349772235, + "exit_time": "2023-02-22T00:00:00", + "pnl": -15.072132789788384, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29660996193417, + "entry_time": "2023-02-24T00:00:00", + "exit_price": 94.34630077913107, + "exit_time": "2023-02-25T00:00:00", + "pnl": 4.969081719690394, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28533190136021, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.32163037675376, + "exit_time": "2023-02-28T00:00:00", + "pnl": 3.629847539355069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20619082469412, + "entry_time": "2023-03-02T00:00:00", + "exit_price": 93.94806731557186, + "exit_time": "2023-03-03T00:00:00", + "pnl": -25.812350912225668, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5296456958934, + "entry_time": "2023-03-05T00:00:00", + "exit_price": 93.2046797163239, + "exit_time": "2023-03-06T00:00:00", + "pnl": -32.49659795694981, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32570812965447, + "entry_time": "2023-03-08T00:00:00", + "exit_price": 93.27835226241817, + "exit_time": "2023-03-09T00:00:00", + "pnl": -4.735586723630547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18052001757422, + "entry_time": "2023-03-11T00:00:00", + "exit_price": 93.21374473155299, + "exit_time": "2023-03-12T00:00:00", + "pnl": 3.322471397876825, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13943605219033, + "entry_time": "2023-03-14T00:00:00", + "exit_price": 93.26046795573633, + "exit_time": "2023-03-15T00:00:00", + "pnl": 12.103190354599747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21960702536101, + "entry_time": "2023-03-17T00:00:00", + "exit_price": 92.64774686400108, + "exit_time": "2023-03-18T00:00:00", + "pnl": -57.18601613599361, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31556350692, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.46149005259649, + "exit_time": "2023-03-21T00:00:00", + "pnl": 14.592654567648822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52377288657563, + "entry_time": "2023-03-23T00:00:00", + "exit_price": 92.23839203319807, + "exit_time": "2023-03-24T00:00:00", + "pnl": -28.53808533775606, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6963758650249, + "entry_time": "2023-03-26T00:00:00", + "exit_price": 92.70207115016164, + "exit_time": "2023-03-27T00:00:00", + "pnl": 0.5695285136738448, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1906639429263, + "entry_time": "2023-03-29T00:00:00", + "exit_price": 93.35726613372299, + "exit_time": "2023-03-30T00:00:00", + "pnl": 16.66021907966808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16344204103119, + "entry_time": "2023-04-01T00:00:00", + "exit_price": 93.2066382813918, + "exit_time": "2023-04-02T00:00:00", + "pnl": 4.319624036061498, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0471045722787, + "entry_time": "2023-04-04T00:00:00", + "exit_price": 92.82199720210754, + "exit_time": "2023-04-05T00:00:00", + "pnl": -22.5107370171159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8989666578373, + "entry_time": "2023-04-07T00:00:00", + "exit_price": 92.77857374465485, + "exit_time": "2023-04-08T00:00:00", + "pnl": -12.03929131824566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.70919453056075, + "entry_time": "2023-04-10T00:00:00", + "exit_price": 92.74465000028516, + "exit_time": "2023-04-11T00:00:00", + "pnl": 3.545546972441116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60934516564298, + "entry_time": "2023-04-13T00:00:00", + "exit_price": 92.96618622577306, + "exit_time": "2023-04-14T00:00:00", + "pnl": 35.68410601300798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78501792806425, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.76326607151933, + "exit_time": "2023-04-17T00:00:00", + "pnl": -2.1751856544923953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62556378625803, + "entry_time": "2023-04-19T00:00:00", + "exit_price": 92.65556548612001, + "exit_time": "2023-04-20T00:00:00", + "pnl": 3.0001699861983866, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68684981308908, + "entry_time": "2023-04-22T00:00:00", + "exit_price": 92.58597625405771, + "exit_time": "2023-04-23T00:00:00", + "pnl": -10.087355903137052, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86536967969084, + "entry_time": "2023-04-25T00:00:00", + "exit_price": 92.75020367672924, + "exit_time": "2023-04-26T00:00:00", + "pnl": -11.516600296160107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75062990936559, + "entry_time": "2023-04-28T00:00:00", + "exit_price": 92.98349381034318, + "exit_time": "2023-04-29T00:00:00", + "pnl": 23.286390097759124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04847278769076, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 93.06193871613516, + "exit_time": "2023-05-02T00:00:00", + "pnl": 1.3465928444404085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60529611931622, + "entry_time": "2023-05-04T00:00:00", + "exit_price": 92.60807864200518, + "exit_time": "2023-05-05T00:00:00", + "pnl": 0.2782522688960398, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90198815097345, + "entry_time": "2023-05-07T00:00:00", + "exit_price": 92.84425841280351, + "exit_time": "2023-05-08T00:00:00", + "pnl": -5.772973816993954, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66689924421028, + "entry_time": "2023-05-10T00:00:00", + "exit_price": 92.6348345250126, + "exit_time": "2023-05-11T00:00:00", + "pnl": -3.2064719197691716, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74311085652141, + "entry_time": "2023-05-13T00:00:00", + "exit_price": 92.87596365908365, + "exit_time": "2023-05-14T00:00:00", + "pnl": 13.285280256224041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15467982049428, + "entry_time": "2023-05-16T00:00:00", + "exit_price": 93.06917346679761, + "exit_time": "2023-05-17T00:00:00", + "pnl": -8.550635369667248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16088604193163, + "entry_time": "2023-05-19T00:00:00", + "exit_price": 93.1767131466551, + "exit_time": "2023-05-20T00:00:00", + "pnl": 1.5827104723470597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59084973064017, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.3728256379574, + "exit_time": "2023-05-23T00:00:00", + "pnl": -21.80240926827679, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83907971020484, + "entry_time": "2023-05-25T00:00:00", + "exit_price": 94.05336598759212, + "exit_time": "2023-05-26T00:00:00", + "pnl": 21.428627738727357, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15556945611712, + "entry_time": "2023-05-28T00:00:00", + "exit_price": 94.11170249260897, + "exit_time": "2023-05-29T00:00:00", + "pnl": -4.3866963508151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26806948858284, + "entry_time": "2023-05-31T00:00:00", + "exit_price": 94.19864576006458, + "exit_time": "2023-06-01T00:00:00", + "pnl": -6.942372851825951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02469106007196, + "entry_time": "2023-06-03T00:00:00", + "exit_price": 94.37555658552148, + "exit_time": "2023-06-04T00:00:00", + "pnl": 35.0865525449521, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.47191103799679, + "entry_time": "2023-06-06T00:00:00", + "exit_price": 94.46329135212792, + "exit_time": "2023-06-07T00:00:00", + "pnl": -0.861968586886519, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.72605970139526, + "entry_time": "2023-06-09T00:00:00", + "exit_price": 94.42143976779836, + "exit_time": "2023-06-10T00:00:00", + "pnl": -30.461993359689643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5510290269881, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.42138738037778, + "exit_time": "2023-06-13T00:00:00", + "pnl": -12.964164661032385, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49725923626676, + "entry_time": "2023-06-15T00:00:00", + "exit_price": 94.83017838441384, + "exit_time": "2023-06-16T00:00:00", + "pnl": 33.291914814708434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.96394971087318, + "entry_time": "2023-06-18T00:00:00", + "exit_price": 94.80946954515628, + "exit_time": "2023-06-19T00:00:00", + "pnl": -15.44801657169046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.05895494780961, + "entry_time": "2023-06-21T00:00:00", + "exit_price": 94.7764741456602, + "exit_time": "2023-06-22T00:00:00", + "pnl": -28.248080214940785, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.82916340306784, + "entry_time": "2023-06-24T00:00:00", + "exit_price": 94.49615933800648, + "exit_time": "2023-06-25T00:00:00", + "pnl": -33.30040650613597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53903204926397, + "entry_time": "2023-06-27T00:00:00", + "exit_price": 94.2199238563033, + "exit_time": "2023-06-28T00:00:00", + "pnl": -31.91081929606696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15553425915468, + "entry_time": "2023-06-30T00:00:00", + "exit_price": 94.3233546324033, + "exit_time": "2023-07-01T00:00:00", + "pnl": 16.782037324861676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29143609072966, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.34909878462929, + "exit_time": "2023-07-04T00:00:00", + "pnl": 5.766269389962986, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79549173605429, + "entry_time": "2023-07-06T00:00:00", + "exit_price": 94.86012460829116, + "exit_time": "2023-07-07T00:00:00", + "pnl": 6.463287223687075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62257045149929, + "entry_time": "2023-07-09T00:00:00", + "exit_price": 94.36740770267758, + "exit_time": "2023-07-10T00:00:00", + "pnl": -25.516274882170364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11233427565722, + "entry_time": "2023-07-12T00:00:00", + "exit_price": 94.28815691102787, + "exit_time": "2023-07-13T00:00:00", + "pnl": 17.582263537065046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89234388227695, + "entry_time": "2023-07-15T00:00:00", + "exit_price": 93.64456440149245, + "exit_time": "2023-07-16T00:00:00", + "pnl": -24.77794807845015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.62943347351336, + "entry_time": "2023-07-18T00:00:00", + "exit_price": 93.64788638508941, + "exit_time": "2023-07-19T00:00:00", + "pnl": 1.8452911576048336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1774162868962, + "entry_time": "2023-07-21T00:00:00", + "exit_price": 94.00402666791075, + "exit_time": "2023-07-22T00:00:00", + "pnl": -17.338961898545335, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.04453321057153, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.96838361247781, + "exit_time": "2023-07-25T00:00:00", + "pnl": -7.614959809372124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88321586599362, + "entry_time": "2023-07-27T00:00:00", + "exit_price": 93.90884833929827, + "exit_time": "2023-07-28T00:00:00", + "pnl": 2.5632473304654013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7179718780841, + "entry_time": "2023-07-30T00:00:00", + "exit_price": 93.74821494678119, + "exit_time": "2023-07-31T00:00:00", + "pnl": 3.024306869708937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9038655497103, + "entry_time": "2023-08-02T00:00:00", + "exit_price": 93.83750554707963, + "exit_time": "2023-08-03T00:00:00", + "pnl": -6.6360002630673876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88584036004717, + "entry_time": "2023-08-05T00:00:00", + "exit_price": 93.9446210717662, + "exit_time": "2023-08-06T00:00:00", + "pnl": 5.878071171903798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10339943212904, + "entry_time": "2023-08-08T00:00:00", + "exit_price": 94.0848941093554, + "exit_time": "2023-08-09T00:00:00", + "pnl": -1.8505322773634703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.14949796034026, + "entry_time": "2023-08-11T00:00:00", + "exit_price": 93.8874166822761, + "exit_time": "2023-08-12T00:00:00", + "pnl": -26.20812780641586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75795965886635, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 93.82124488293752, + "exit_time": "2023-08-15T00:00:00", + "pnl": 6.328522407116566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65346951457661, + "entry_time": "2023-08-17T00:00:00", + "exit_price": 93.61396660096294, + "exit_time": "2023-08-18T00:00:00", + "pnl": -3.9502913613674195, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54800539421142, + "entry_time": "2023-08-20T00:00:00", + "exit_price": 93.46513172439276, + "exit_time": "2023-08-21T00:00:00", + "pnl": -8.287366981865318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04018712803396, + "entry_time": "2023-08-23T00:00:00", + "exit_price": 93.2845186523261, + "exit_time": "2023-08-24T00:00:00", + "pnl": 24.433152429213578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80052936345986, + "entry_time": "2023-08-26T00:00:00", + "exit_price": 93.65349927893294, + "exit_time": "2023-08-27T00:00:00", + "pnl": -14.70300845269179, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93158855841354, + "entry_time": "2023-08-29T00:00:00", + "exit_price": 93.79425107834362, + "exit_time": "2023-08-30T00:00:00", + "pnl": -13.733748006991675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55284494377143, + "entry_time": "2023-09-01T00:00:00", + "exit_price": 93.33529354683158, + "exit_time": "2023-09-02T00:00:00", + "pnl": -21.75513969398537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.678819649887, + "entry_time": "2023-09-04T00:00:00", + "exit_price": 93.76309874382866, + "exit_time": "2023-09-05T00:00:00", + "pnl": 8.427909394166022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.06380422690373, + "entry_time": "2023-09-07T00:00:00", + "exit_price": 94.34837478850592, + "exit_time": "2023-09-08T00:00:00", + "pnl": 28.45705616021945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28272356925105, + "entry_time": "2023-09-10T00:00:00", + "exit_price": 94.08986442511201, + "exit_time": "2023-09-11T00:00:00", + "pnl": -19.285914413903527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19668777653186, + "entry_time": "2023-09-13T00:00:00", + "exit_price": 93.9155347262711, + "exit_time": "2023-09-14T00:00:00", + "pnl": -28.115305026075532, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86963033561572, + "entry_time": "2023-09-16T00:00:00", + "exit_price": 94.02605497205086, + "exit_time": "2023-09-17T00:00:00", + "pnl": 15.642463643513338, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07735953777274, + "entry_time": "2023-09-19T00:00:00", + "exit_price": 93.92691564488518, + "exit_time": "2023-09-20T00:00:00", + "pnl": -15.044389288755156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.63814938665311, + "entry_time": "2023-09-22T00:00:00", + "exit_price": 93.6176086632684, + "exit_time": "2023-09-23T00:00:00", + "pnl": -2.054072338471258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71204578933798, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.41015509320589, + "exit_time": "2023-09-26T00:00:00", + "pnl": -30.189069613209085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42767992948876, + "entry_time": "2023-09-28T00:00:00", + "exit_price": 93.23852235526199, + "exit_time": "2023-09-29T00:00:00", + "pnl": -18.915757422676904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49442961672796, + "entry_time": "2023-10-01T00:00:00", + "exit_price": 93.43422929731483, + "exit_time": "2023-10-02T00:00:00", + "pnl": -6.020031941312709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.28736530415493, + "entry_time": "2023-10-04T00:00:00", + "exit_price": 93.12218377264868, + "exit_time": "2023-10-05T00:00:00", + "pnl": -16.518153150624926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1091934992091, + "entry_time": "2023-10-07T00:00:00", + "exit_price": 92.97579394436632, + "exit_time": "2023-10-08T00:00:00", + "pnl": -13.33995548427822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87630575654731, + "entry_time": "2023-10-10T00:00:00", + "exit_price": 92.64709318534976, + "exit_time": "2023-10-11T00:00:00", + "pnl": -22.921257119755012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49382854321888, + "entry_time": "2023-10-13T00:00:00", + "exit_price": 92.15699292788067, + "exit_time": "2023-10-14T00:00:00", + "pnl": -33.68356153382166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04266303105983, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.9313781112256, + "exit_time": "2023-10-17T00:00:00", + "pnl": -11.128491983423316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.69530603069572, + "entry_time": "2023-10-19T00:00:00", + "exit_price": 91.82075180753827, + "exit_time": "2023-10-20T00:00:00", + "pnl": 12.544577684255387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00003866180036, + "entry_time": "2023-10-22T00:00:00", + "exit_price": 91.769068469798, + "exit_time": "2023-10-23T00:00:00", + "pnl": -23.09701920023599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62148930928706, + "entry_time": "2023-10-25T00:00:00", + "exit_price": 92.0232146586156, + "exit_time": "2023-10-26T00:00:00", + "pnl": 40.172534932854376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05026787864645, + "entry_time": "2023-10-28T00:00:00", + "exit_price": 91.7648966725291, + "exit_time": "2023-10-29T00:00:00", + "pnl": -28.53712061173468, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45047976504434, + "entry_time": "2023-10-31T00:00:00", + "exit_price": 91.57906184617835, + "exit_time": "2023-11-01T00:00:00", + "pnl": 12.858208113401304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73227416508321, + "entry_time": "2023-11-03T00:00:00", + "exit_price": 91.39276167792192, + "exit_time": "2023-11-04T00:00:00", + "pnl": -33.951248716128646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43027834183452, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.72614964359053, + "exit_time": "2023-11-07T00:00:00", + "pnl": 29.587130175600862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22140030401876, + "entry_time": "2023-11-09T00:00:00", + "exit_price": 92.40388767907393, + "exit_time": "2023-11-10T00:00:00", + "pnl": 18.248737505517454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6481057355818, + "entry_time": "2023-11-12T00:00:00", + "exit_price": 92.68848188004498, + "exit_time": "2023-11-13T00:00:00", + "pnl": 4.037614446318116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71473698288804, + "entry_time": "2023-11-15T00:00:00", + "exit_price": 92.70268409440689, + "exit_time": "2023-11-16T00:00:00", + "pnl": -1.2052888481150603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43854075921618, + "entry_time": "2023-11-18T00:00:00", + "exit_price": 92.44140071332018, + "exit_time": "2023-11-19T00:00:00", + "pnl": 0.28599541039966425, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74726961853332, + "entry_time": "2023-11-21T00:00:00", + "exit_price": 92.8365056762946, + "exit_time": "2023-11-22T00:00:00", + "pnl": 8.92360577612834, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88893089201021, + "entry_time": "2023-11-24T00:00:00", + "exit_price": 93.26317095880032, + "exit_time": "2023-11-25T00:00:00", + "pnl": 37.4240066790108, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37686063355893, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 93.01130398358468, + "exit_time": "2023-11-28T00:00:00", + "pnl": -36.5556649974252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9244172505916, + "entry_time": "2023-11-30T00:00:00", + "exit_price": 92.89449208176279, + "exit_time": "2023-12-01T00:00:00", + "pnl": -2.992516882881091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93827683979754, + "entry_time": "2023-12-03T00:00:00", + "exit_price": 93.6532995649937, + "exit_time": "2023-12-04T00:00:00", + "pnl": -28.497727480383617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42639590375148, + "entry_time": "2023-12-06T00:00:00", + "exit_price": 93.75213347979019, + "exit_time": "2023-12-07T00:00:00", + "pnl": 32.57375760387049, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.0270700566813, + "entry_time": "2023-12-09T00:00:00", + "exit_price": 93.76146992741955, + "exit_time": "2023-12-10T00:00:00", + "pnl": -26.56001292617418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10225140410179, + "entry_time": "2023-12-12T00:00:00", + "exit_price": 92.81690399898379, + "exit_time": "2023-12-13T00:00:00", + "pnl": -28.534740511800294, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0438108934807, + "entry_time": "2023-12-15T00:00:00", + "exit_price": 92.80207795946215, + "exit_time": "2023-12-16T00:00:00", + "pnl": -24.173293401854323, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12592905184015, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 93.15713134695487, + "exit_time": "2023-12-19T00:00:00", + "pnl": 3.1202295114724166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21575520670791, + "entry_time": "2023-12-21T00:00:00", + "exit_price": 93.31507102860735, + "exit_time": "2023-12-22T00:00:00", + "pnl": 9.93158218994381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2320901589937, + "entry_time": "2023-12-24T00:00:00", + "exit_price": 93.15393731859652, + "exit_time": "2023-12-25T00:00:00", + "pnl": -7.815284039718051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07037591089997, + "entry_time": "2023-12-27T00:00:00", + "exit_price": 93.3198194947649, + "exit_time": "2023-12-28T00:00:00", + "pnl": 24.944358386493093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69216760463115, + "entry_time": "2023-12-30T00:00:00", + "exit_price": 94.07388089953058, + "exit_time": "2023-12-31T00:00:00", + "pnl": 38.17132948994271, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.64149353573185, + "entry_time": "2024-01-02T00:00:00", + "exit_price": 94.71271228263036, + "exit_time": "2024-01-03T00:00:00", + "pnl": 7.121874689850927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.11471503048601, + "entry_time": "2024-01-05T00:00:00", + "exit_price": 94.98751858071931, + "exit_time": "2024-01-06T00:00:00", + "pnl": -12.719644976669997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7067835294734, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.74844014533139, + "exit_time": "2024-01-09T00:00:00", + "pnl": 4.16566158579883, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.02489656616589, + "entry_time": "2024-01-11T00:00:00", + "exit_price": 94.98294992874101, + "exit_time": "2024-01-12T00:00:00", + "pnl": -4.194663742488558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.71598064705562, + "entry_time": "2024-01-14T00:00:00", + "exit_price": 94.90144093756582, + "exit_time": "2024-01-15T00:00:00", + "pnl": 18.546029051020696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88369269337046, + "entry_time": "2024-01-17T00:00:00", + "exit_price": 94.99127786199946, + "exit_time": "2024-01-18T00:00:00", + "pnl": 10.75851686290008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.25279588129149, + "entry_time": "2024-01-20T00:00:00", + "exit_price": 94.98339215080473, + "exit_time": "2024-01-21T00:00:00", + "pnl": -26.94037304867578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84625570624047, + "entry_time": "2024-01-23T00:00:00", + "exit_price": 94.50594333071952, + "exit_time": "2024-01-24T00:00:00", + "pnl": -34.031237552095206, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50759103681193, + "entry_time": "2024-01-26T00:00:00", + "exit_price": 94.60423833142119, + "exit_time": "2024-01-27T00:00:00", + "pnl": 9.664729460925514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.58324904624197, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.89219195707862, + "exit_time": "2024-01-30T00:00:00", + "pnl": 30.894291083664882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65911048978346, + "entry_time": "2024-02-01T00:00:00", + "exit_price": 94.7149396953146, + "exit_time": "2024-02-02T00:00:00", + "pnl": 5.582920553113979, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.87432845164759, + "entry_time": "2024-02-04T00:00:00", + "exit_price": 94.68840177129488, + "exit_time": "2024-02-05T00:00:00", + "pnl": -18.592668035270776, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.93449198055023, + "entry_time": "2024-02-07T00:00:00", + "exit_price": 95.32948554144308, + "exit_time": "2024-02-08T00:00:00", + "pnl": 39.49935608928428, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32849848634218, + "entry_time": "2024-02-10T00:00:00", + "exit_price": 95.22062659109166, + "exit_time": "2024-02-11T00:00:00", + "pnl": -10.787189525052554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95224360650606, + "entry_time": "2024-02-13T00:00:00", + "exit_price": 95.11404601693097, + "exit_time": "2024-02-14T00:00:00", + "pnl": 16.18024104249116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79369852289173, + "entry_time": "2024-02-16T00:00:00", + "exit_price": 94.57121837540416, + "exit_time": "2024-02-17T00:00:00", + "pnl": -22.248014748757328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70539792020504, + "entry_time": "2024-02-19T00:00:00", + "exit_price": 94.81536726931864, + "exit_time": "2024-02-20T00:00:00", + "pnl": 10.996934911359801, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.66590107949516, + "entry_time": "2024-02-22T00:00:00", + "exit_price": 94.54759559550845, + "exit_time": "2024-02-23T00:00:00", + "pnl": -11.83054839867026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11939973938362, + "entry_time": "2024-02-25T00:00:00", + "exit_price": 94.21880305870137, + "exit_time": "2024-02-26T00:00:00", + "pnl": 9.940331931774438, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79422563292844, + "entry_time": "2024-02-28T00:00:00", + "exit_price": 93.71312689925841, + "exit_time": "2024-02-29T00:00:00", + "pnl": -8.109873367003217, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46426831854224, + "entry_time": "2024-03-02T00:00:00", + "exit_price": 93.10239283352094, + "exit_time": "2024-03-03T00:00:00", + "pnl": -36.187548502130085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37028780606191, + "entry_time": "2024-03-05T00:00:00", + "exit_price": 93.13498012432488, + "exit_time": "2024-03-06T00:00:00", + "pnl": -23.530768173702654, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.38863630293943, + "entry_time": "2024-03-08T00:00:00", + "exit_price": 93.41150008980253, + "exit_time": "2024-03-09T00:00:00", + "pnl": 2.286378686309831, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.14488289984781, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.17802365337732, + "exit_time": "2024-03-12T00:00:00", + "pnl": 3.3140753529508515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27104619189048, + "entry_time": "2024-03-14T00:00:00", + "exit_price": 92.98787909982833, + "exit_time": "2024-03-15T00:00:00", + "pnl": -28.31670920621434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11321145433926, + "entry_time": "2024-03-17T00:00:00", + "exit_price": 93.23295576374296, + "exit_time": "2024-03-18T00:00:00", + "pnl": 11.974430940369984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.85697546574279, + "entry_time": "2024-03-20T00:00:00", + "exit_price": 92.7517321560528, + "exit_time": "2024-03-21T00:00:00", + "pnl": -10.524330968999607, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50551757491745, + "entry_time": "2024-03-23T00:00:00", + "exit_price": 92.62546167858358, + "exit_time": "2024-03-24T00:00:00", + "pnl": 11.99441036661284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86332633060258, + "entry_time": "2024-03-26T00:00:00", + "exit_price": 92.76299264885851, + "exit_time": "2024-03-27T00:00:00", + "pnl": -10.033368174406121, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78913797285577, + "entry_time": "2024-03-29T00:00:00", + "exit_price": 93.00024160373006, + "exit_time": "2024-03-30T00:00:00", + "pnl": 21.110363087429107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9168412948554, + "entry_time": "2024-04-01T00:00:00", + "exit_price": 92.7772709282975, + "exit_time": "2024-04-02T00:00:00", + "pnl": -13.957036655790489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99344762670124, + "entry_time": "2024-04-04T00:00:00", + "exit_price": 92.45458704231757, + "exit_time": "2024-04-05T00:00:00", + "pnl": -53.886058438367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.40001356367094, + "entry_time": "2024-04-07T00:00:00", + "exit_price": 91.97082046191717, + "exit_time": "2024-04-08T00:00:00", + "pnl": -42.91931017537678, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01206001173375, + "entry_time": "2024-04-10T00:00:00", + "exit_price": 92.08005345968613, + "exit_time": "2024-04-11T00:00:00", + "pnl": 6.799344795237516, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22217203577799, + "entry_time": "2024-04-13T00:00:00", + "exit_price": 92.2425856744218, + "exit_time": "2024-04-14T00:00:00", + "pnl": 2.041363864381651, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46073627278375, + "entry_time": "2024-04-16T00:00:00", + "exit_price": 92.58143591458905, + "exit_time": "2024-04-17T00:00:00", + "pnl": 12.069964180530235, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95177802714637, + "entry_time": "2024-04-19T00:00:00", + "exit_price": 92.56745694254103, + "exit_time": "2024-04-20T00:00:00", + "pnl": -38.432108460534664, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81253269752307, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 92.86554139490539, + "exit_time": "2024-04-23T00:00:00", + "pnl": 5.30086973823245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90464875740813, + "entry_time": "2024-04-25T00:00:00", + "exit_price": 92.96373746132312, + "exit_time": "2024-04-26T00:00:00", + "pnl": 5.908870391499477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09789228558353, + "entry_time": "2024-04-28T00:00:00", + "exit_price": 93.19003786584736, + "exit_time": "2024-04-29T00:00:00", + "pnl": 9.214558026383202, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66999752477345, + "entry_time": "2024-05-01T00:00:00", + "exit_price": 92.45706703230238, + "exit_time": "2024-05-02T00:00:00", + "pnl": -21.293049247107376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2209401021726, + "entry_time": "2024-05-04T00:00:00", + "exit_price": 93.26995519560073, + "exit_time": "2024-05-05T00:00:00", + "pnl": 4.90150934281246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23034844043512, + "entry_time": "2024-05-07T00:00:00", + "exit_price": 93.41387280572972, + "exit_time": "2024-05-08T00:00:00", + "pnl": 18.352436529460192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33303611955198, + "entry_time": "2024-05-10T00:00:00", + "exit_price": 93.52307299324875, + "exit_time": "2024-05-11T00:00:00", + "pnl": 19.003687369676925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67190914597171, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.29815694731651, + "exit_time": "2024-05-14T00:00:00", + "pnl": -37.37521986551968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11959184333037, + "entry_time": "2024-05-16T00:00:00", + "exit_price": 92.78483612314953, + "exit_time": "2024-05-17T00:00:00", + "pnl": -33.47557201808371, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92001295323622, + "entry_time": "2024-05-19T00:00:00", + "exit_price": 92.94709162208174, + "exit_time": "2024-05-20T00:00:00", + "pnl": 2.7078668845518905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06260774305197, + "entry_time": "2024-05-22T00:00:00", + "exit_price": 93.1459174166961, + "exit_time": "2024-05-23T00:00:00", + "pnl": 8.330967364412345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06618787236135, + "entry_time": "2024-05-25T00:00:00", + "exit_price": 93.61303967582782, + "exit_time": "2024-05-26T00:00:00", + "pnl": 54.68518034664669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.941078352886, + "entry_time": "2024-05-28T00:00:00", + "exit_price": 94.01481054814181, + "exit_time": "2024-05-29T00:00:00", + "pnl": 7.373219525581476, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92069860353018, + "entry_time": "2024-05-31T00:00:00", + "exit_price": 93.87432907187284, + "exit_time": "2024-06-01T00:00:00", + "pnl": -4.636953165734781, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88014313205952, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.43750435674885, + "exit_time": "2024-06-04T00:00:00", + "pnl": -44.26387753106695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46298718335747, + "entry_time": "2024-06-06T00:00:00", + "exit_price": 93.92373570713617, + "exit_time": "2024-06-07T00:00:00", + "pnl": 46.07485237787046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93253015033824, + "entry_time": "2024-06-09T00:00:00", + "exit_price": 93.89138819536463, + "exit_time": "2024-06-10T00:00:00", + "pnl": -4.114195497361095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6779918521803, + "entry_time": "2024-06-12T00:00:00", + "exit_price": 93.51002812881958, + "exit_time": "2024-06-13T00:00:00", + "pnl": -16.796372336071386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.285974590119, + "entry_time": "2024-06-15T00:00:00", + "exit_price": 93.32248822367578, + "exit_time": "2024-06-16T00:00:00", + "pnl": 3.6513633556779723, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35524577583958, + "entry_time": "2024-06-18T00:00:00", + "exit_price": 93.73566009456992, + "exit_time": "2024-06-19T00:00:00", + "pnl": 38.041431873034526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68667788285592, + "entry_time": "2024-06-21T00:00:00", + "exit_price": 93.84911622521342, + "exit_time": "2024-06-22T00:00:00", + "pnl": 16.2438342357504, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68254626297609, + "entry_time": "2024-06-24T00:00:00", + "exit_price": 93.53753290340698, + "exit_time": "2024-06-25T00:00:00", + "pnl": -14.501335956910566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.40541279646612, + "entry_time": "2024-06-27T00:00:00", + "exit_price": 93.71834890975212, + "exit_time": "2024-06-28T00:00:00", + "pnl": 31.29361132859998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75716070422646, + "entry_time": "2024-06-30T00:00:00", + "exit_price": 93.82803454081426, + "exit_time": "2024-07-01T00:00:00", + "pnl": 7.087383658779345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73900139072163, + "entry_time": "2024-07-03T00:00:00", + "exit_price": 93.58423325500644, + "exit_time": "2024-07-04T00:00:00", + "pnl": -15.476813571518733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16188235681071, + "entry_time": "2024-07-06T00:00:00", + "exit_price": 93.02650792631081, + "exit_time": "2024-07-07T00:00:00", + "pnl": -13.537443049989406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00049424696185, + "entry_time": "2024-07-09T00:00:00", + "exit_price": 93.27869714616556, + "exit_time": "2024-07-10T00:00:00", + "pnl": 27.820289920370556, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18595899862997, + "entry_time": "2024-07-12T00:00:00", + "exit_price": 93.03056917274476, + "exit_time": "2024-07-13T00:00:00", + "pnl": -15.538982588520867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6959315804981, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.29325844026822, + "exit_time": "2024-07-16T00:00:00", + "pnl": -40.26731402298793, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24617524245163, + "entry_time": "2024-07-18T00:00:00", + "exit_price": 92.27923511016385, + "exit_time": "2024-07-19T00:00:00", + "pnl": 3.3059867712225355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24377176084563, + "entry_time": "2024-07-21T00:00:00", + "exit_price": 91.84290901749984, + "exit_time": "2024-07-22T00:00:00", + "pnl": -40.08627433457974, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45792359801233, + "entry_time": "2024-07-24T00:00:00", + "exit_price": 91.61079046047253, + "exit_time": "2024-07-25T00:00:00", + "pnl": 15.286686246020054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59272403631071, + "entry_time": "2024-07-27T00:00:00", + "exit_price": 91.6658144632232, + "exit_time": "2024-07-28T00:00:00", + "pnl": 7.309042691248635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.7676588013805, + "entry_time": "2024-07-30T00:00:00", + "exit_price": 91.83153611139085, + "exit_time": "2024-07-31T00:00:00", + "pnl": 6.387731001034069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47875371686978, + "entry_time": "2024-08-02T00:00:00", + "exit_price": 91.54124524065837, + "exit_time": "2024-08-03T00:00:00", + "pnl": 6.249152378859435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.99233076398606, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.9529292158228, + "exit_time": "2024-08-06T00:00:00", + "pnl": -3.940154816325503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9845811375129, + "entry_time": "2024-08-08T00:00:00", + "exit_price": 92.0553452779518, + "exit_time": "2024-08-09T00:00:00", + "pnl": 7.076414043889656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96933895446483, + "entry_time": "2024-08-11T00:00:00", + "exit_price": 92.33843538273938, + "exit_time": "2024-08-12T00:00:00", + "pnl": 36.90964282745455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7587929540311, + "entry_time": "2024-08-14T00:00:00", + "exit_price": 92.61541170919818, + "exit_time": "2024-08-15T00:00:00", + "pnl": -14.338124483290926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.48109292079488, + "entry_time": "2024-08-17T00:00:00", + "exit_price": 92.584127260661, + "exit_time": "2024-08-18T00:00:00", + "pnl": 10.303433986612731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73326548896144, + "entry_time": "2024-08-20T00:00:00", + "exit_price": 92.63121700232358, + "exit_time": "2024-08-21T00:00:00", + "pnl": -10.204848663785526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0636078149956, + "entry_time": "2024-08-23T00:00:00", + "exit_price": 92.8561585876055, + "exit_time": "2024-08-24T00:00:00", + "pnl": -20.744922739010008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92284538933916, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.11237349539573, + "exit_time": "2024-08-27T00:00:00", + "pnl": 18.952810605657078, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07021236134935, + "entry_time": "2024-08-29T00:00:00", + "exit_price": 93.17184698357968, + "exit_time": "2024-08-30T00:00:00", + "pnl": 10.163462223033548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31228518791787, + "entry_time": "2024-09-01T00:00:00", + "exit_price": 92.33590023205818, + "exit_time": "2024-09-02T00:00:00", + "pnl": 2.361504414031401, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50027778498863, + "entry_time": "2024-09-04T00:00:00", + "exit_price": 92.54209415864854, + "exit_time": "2024-09-05T00:00:00", + "pnl": 4.181637365991264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3677893725537, + "entry_time": "2024-09-07T00:00:00", + "exit_price": 92.22925202091126, + "exit_time": "2024-09-08T00:00:00", + "pnl": -13.853735164244085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09309676612557, + "entry_time": "2024-09-10T00:00:00", + "exit_price": 92.15732000186526, + "exit_time": "2024-09-11T00:00:00", + "pnl": 6.422323573968924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68995738997093, + "entry_time": "2024-09-13T00:00:00", + "exit_price": 91.28297081793372, + "exit_time": "2024-09-14T00:00:00", + "pnl": -40.69865720372121, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.49225030811708, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.33431283007668, + "exit_time": "2024-09-17T00:00:00", + "pnl": -15.793747804039526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00621404043055, + "entry_time": "2024-09-19T00:00:00", + "exit_price": 90.92641929792215, + "exit_time": "2024-09-20T00:00:00", + "pnl": -7.979474250839758, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07027528339762, + "entry_time": "2024-09-22T00:00:00", + "exit_price": 91.13008155599323, + "exit_time": "2024-09-23T00:00:00", + "pnl": 5.980627259560833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00907183642319, + "entry_time": "2024-09-25T00:00:00", + "exit_price": 91.23094904986101, + "exit_time": "2024-09-26T00:00:00", + "pnl": 22.18772134378213, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2825480931582, + "entry_time": "2024-09-28T00:00:00", + "exit_price": 90.91271666538603, + "exit_time": "2024-09-29T00:00:00", + "pnl": -36.983142777216926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05360990148436, + "entry_time": "2024-10-01T00:00:00", + "exit_price": 91.28838235720163, + "exit_time": "2024-10-02T00:00:00", + "pnl": 23.477245571726257, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79116186423771, + "entry_time": "2024-10-04T00:00:00", + "exit_price": 90.76779759668747, + "exit_time": "2024-10-05T00:00:00", + "pnl": -2.336426755023524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66567440561238, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 90.70161264561204, + "exit_time": "2024-10-08T00:00:00", + "pnl": 3.5938239999666166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83214429583118, + "entry_time": "2024-10-10T00:00:00", + "exit_price": 90.77606667466077, + "exit_time": "2024-10-11T00:00:00", + "pnl": -5.607762117041659, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66108486881463, + "entry_time": "2024-10-13T00:00:00", + "exit_price": 90.66515259357669, + "exit_time": "2024-10-14T00:00:00", + "pnl": 0.4067724762066405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.16857543076497, + "entry_time": "2024-10-16T00:00:00", + "exit_price": 90.40982511738886, + "exit_time": "2024-10-17T00:00:00", + "pnl": 24.124968662388824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.06344300783006, + "entry_time": "2024-10-19T00:00:00", + "exit_price": 89.82444237040852, + "exit_time": "2024-10-20T00:00:00", + "pnl": -23.900063742154032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.59077974741996, + "entry_time": "2024-10-22T00:00:00", + "exit_price": 89.57824858967784, + "exit_time": "2024-10-23T00:00:00", + "pnl": -1.2531157742117216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.18599707786814, + "entry_time": "2024-10-25T00:00:00", + "exit_price": 89.23587599762591, + "exit_time": "2024-10-26T00:00:00", + "pnl": 4.987891975777359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.52520755360774, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.53896573427002, + "exit_time": "2024-10-29T00:00:00", + "pnl": 1.3758180662279074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32372356389571, + "entry_time": "2024-10-31T00:00:00", + "exit_price": 89.39723460318574, + "exit_time": "2024-11-01T00:00:00", + "pnl": 7.351103929002534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.42867761884308, + "entry_time": "2024-11-03T00:00:00", + "exit_price": 89.41468909557778, + "exit_time": "2024-11-04T00:00:00", + "pnl": -1.3988523265297204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37521291073797, + "entry_time": "2024-11-06T00:00:00", + "exit_price": 89.28061929510595, + "exit_time": "2024-11-07T00:00:00", + "pnl": -9.459361563202151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37421531457154, + "entry_time": "2024-11-09T00:00:00", + "exit_price": 89.42880794685172, + "exit_time": "2024-11-10T00:00:00", + "pnl": 5.459263228017619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.10075544827296, + "entry_time": "2024-11-12T00:00:00", + "exit_price": 89.08909178471053, + "exit_time": "2024-11-13T00:00:00", + "pnl": -1.1663663562430315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.9283105563295, + "entry_time": "2024-11-15T00:00:00", + "exit_price": 88.97631673436179, + "exit_time": "2024-11-16T00:00:00", + "pnl": 4.8006178032281355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.83969795208085, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.97701708069182, + "exit_time": "2024-11-19T00:00:00", + "pnl": 13.731912861096873, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.24948915106788, + "entry_time": "2024-11-21T00:00:00", + "exit_price": 89.31081866218918, + "exit_time": "2024-11-22T00:00:00", + "pnl": 6.132951112130058, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.1566381078772, + "entry_time": "2024-11-24T00:00:00", + "exit_price": 89.05359196348086, + "exit_time": "2024-11-25T00:00:00", + "pnl": -10.304614439634463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.89974340615646, + "entry_time": "2024-11-27T00:00:00", + "exit_price": 88.86736216937868, + "exit_time": "2024-11-28T00:00:00", + "pnl": -3.2381236777780487, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.02917974715604, + "entry_time": "2024-11-30T00:00:00", + "exit_price": 89.10061155400963, + "exit_time": "2024-12-01T00:00:00", + "pnl": 7.143180685359596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.71230009060692, + "entry_time": "2024-12-03T00:00:00", + "exit_price": 88.55956047576315, + "exit_time": "2024-12-04T00:00:00", + "pnl": -15.273961484376741, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.33867736091129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.24521783497416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.33353996675463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.17535391574476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.17558936557836, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.82464445421311, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.14823158528606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.02303868942406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0898265784532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.0375220132344, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.69877148351581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.8094147843381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.88896279741591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.58446195759505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.94461858556683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.86726342876044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.264261049502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.97378019208324, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43666090180685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.64557703864863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.41486055220747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.62832834535065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.40627623062987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.9966907903866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.62784889129782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.91665393395704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.20129913778622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.36824311350031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.44539780996692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.29577808855632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.60087912978423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.67646038571121, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17445140133515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.07045121918839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.49723620471183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.5174230546468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5413500261472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.47975770399327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.29423417091141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.27541464305773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43920860251751, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.06079463387583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.37828233356667, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.30210368322795, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.8891828858322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.6817301819728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.39002953943762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.68517685658658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.65084298157255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.93501858046714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.1907166501479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.25659603867345, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36428253311259, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01156809266551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.31879308123833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.40136182036203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17903686528695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0619221034904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.25968317752123, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.56379928977212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.80666495491704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.94182055020374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.92425119368045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.78971486194605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.23057477534164, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.4049348801832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.24159987362269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.06843389735158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.22183940097844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.93299182979392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.91637693821662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.20188970935105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.57826653579693, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.48615354430639, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.48852996658736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.70097560384337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.56660104606993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.60339517911308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.5215727488348, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.3913600319206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.66423065390151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.49406633741951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.64849065100934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.63323070552582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.88914932519062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.96225788336264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.21454142458283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.08973549159177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.91131718633395, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.95365272243404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.3677264483084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.38542382708798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.727355594576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.80184598433505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.75895482632265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.65309620079978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.18275486854981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.08066364611346, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86355002974182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.8079829991331, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.50774498473834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.15500147527054, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.25388112126257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.46869004462158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.49982930970904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.64941137818613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08181708620197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.89782993828217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.34821493675021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0511570084608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36636841676064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.22802936588096, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.13124547885464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.97034570188329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84675502390373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82877025439984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.83150510044737, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.80556016637114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.10675350799055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.84453919660923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.88147160830762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.95771616416846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.25900520967262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.28214715432236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.64410132782972, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.78845498147822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.96240900085823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01654413042846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08257869239384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.92270971634117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.9249177043285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.5475977762062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85856446370276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.8876461806366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.75554506700362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.4712342394787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.13596092844963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.29084433077668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.50946620110103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42209873300993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16470383307056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.10251353436806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16007736983093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.25346405776058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.02466944517249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.03234873384025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.11031617256702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.14530663460309, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.4442900442657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39955675926143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.19954612220634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.33374471974878, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.17850638089598, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.31970147221125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.19274532121113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.3840327772038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.48120231354616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.7121932598933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86988580253298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.76604202197464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.79597689506201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42129188541651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.67647877199742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82191220927734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84470059887572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.72847566121298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.43094423441607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39808368032986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.31641481415083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.40267706340073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.60680412325432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.51452016846274, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.31471449163298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.43834781075664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84446638005844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.49607372712997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85869892480143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.87107213537678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.83017137699973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.73075043509533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85446221431528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.13025477242799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08577867542596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.20567187514531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.27862593574773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.19411735771268, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.916410701528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.80020190906805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.03429888110497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.99059510104857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.12230359240208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.21493112615859, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.7362497471537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.90953724611552, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.99997604721491, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.25158859302469, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98246224229298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.18380160087476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.54700954481861, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.87858935796136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.82466366840129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.79031352535364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.52782616930364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.71180131795903, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.66862984653359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.94388954493733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.40172293508901, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.27308992706585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.30251070708916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.36341600243385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.07297082017436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.63576619816114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.36545808934646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.425342939227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.59476724765915, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.41575843731752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.30499551372479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.2943417590765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.20190364871404, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.35429934455371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.25575482738782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.30124986928953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.90191386326036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.96508444596826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.75989432781597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.47851546822666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.43273982617148, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.78073270556935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.29707161405977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.17141051171173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.83897503233364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.92050920813638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.39298906893524, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.24960092613485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.15249367428707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.11254847884746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.6477102979142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.66187174327492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.22816086359947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.18924739108921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.15833017318171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.35388264537053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.30391448349607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.1765702619787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.03923857682982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.14087662618776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.60285889768487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.71610220194758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.43129513858887, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.7750138677335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.5417619126041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.26004415392279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.48237494714664, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.58658168452075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.75620116852377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.69650084660127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.92028780826493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.62951533581877, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.58269597074072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.65987379372794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.66612454309691, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.8169746660663, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.5926039176473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28582192646724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.47874410921285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.57232514477201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.07482838670386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.06329982176626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.939646337063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.02294071169972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.73925579999096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.99566659891293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.99166395939717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.91107729961162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.35440315345551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.19457800884426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.87539474258334, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.03831344319956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.84933568810729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.942984467456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.28778584744732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.02443267142746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.94057536205155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.72906200441219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.38445225202611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38197492987447, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.18213638354725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04715001455901, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19838818284391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.29725636974986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.23572569098852, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3432106471416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.46834681822006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.39304905252162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4607924127623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.87391242777782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.81782457593818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.74839547168068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.9804659897062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.1820620687209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53780103937676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.35114383691389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19430169329608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0736265695374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.56101740773187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02847405275406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02877565620591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02966575553104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71076966315076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5342590029927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87172892779671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8898807030855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7509399436349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70594283596789, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.83044892913243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71383587412238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.52870331564132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.68221846843574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68293629394864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76185935158753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.77694161620539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94666597863043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09046839544105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0093802192737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.78182814117551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.75541337031265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.72371690451082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60849664049482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.94340121095276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.85028148090369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7183641880944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.93201467581261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6600503714477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71003338575711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.64414870400898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73370138654631, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.51475031329109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60797476194675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42059367470232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66628705381636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.53531464201514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2030497935449, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62268440600192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.91948342162647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.67919849510083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.43887673234494, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.17984056111294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.94368190633774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.11465699863811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97059505880482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.29459604644765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53931157007439, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49631090115352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52393358151217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66942128922241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.4946582273999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.29424834791328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07603918687664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.33479567014805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.14550463966849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9928646204638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.96872153502625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87705988155102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.53452507075421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.56396146367423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.59385740536969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.64213975217385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78882758292927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.63683672368549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.48470633760584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39062489567554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.494696351115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.93573503075692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.98885415853535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.06245234985892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.0289821017493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.22900373831216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.3157346032948, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59973514861235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.77086454804387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82096590563263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.95769963997635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.21106339352885, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07551182524406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.09759300944572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33359941396125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2288848699624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2069451450579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46522997402728, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63157812424986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92215275507255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.81904355011355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34536862719393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.4540782896955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.65179701007457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58231165488735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59222373899847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41076247699506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.57987210255567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.93696117180936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88875391692817, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.67494277755462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99358787892747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.07975990716614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07047992178705, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33559891886243, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59225467831386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.63479260217548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80334597318698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.98346554786147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92321614880655, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83699346593512, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93109508241774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96354668527802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08641930356686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.23768236549668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08211844013991, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20846159911048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.13954155854589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.89054598561034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11646823351487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.10168176297485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.30038009222437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.41339845504724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.10852951715277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.84680988625497, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00138088356287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04342924144086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.01673785551608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8508081374985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87089994615239, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9378403552245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.05201413714099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0235397935625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26517251606933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.15470785076896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4932600250258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.51252060274227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53140073996916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90203063702091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26191114348926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0634456423351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.43521818420996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38568536751181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21262216293847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.23411145607675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.82330133886903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61660062265747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71484163940588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72855192282307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.3692642985158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37837200951205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.19352686807355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.28024660066703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.96384685743692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.14877036790756, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09572264391801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53876217367774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.64617178108719, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.85422093876446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60924422208079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52724603055836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46494136842418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44406941275119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.32264147745168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0360221167863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01384655286363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97262653583181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.28024889847717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.96758302287454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.25528568314509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.20092793334622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49508373939167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.73466658206335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46436704586412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.69111891541637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21128313549013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37756823246967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04218716563325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.00014735551822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.93318531635457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84116622880475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50637869144556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.66826656058106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36257300920573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60779676375832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36220969555443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.1193839744838, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.89096232869592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.75394086603562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.10653141004636, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.98502552303084, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03115476672883, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05866288388766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.80506699745925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97004409317438, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39339911911829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28070286679336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74175784445059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6733758391721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.81901224922302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.84844274508458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.60313885279771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.41938832519848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.64052127057325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54200410559555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73590345101391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.62782637305553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79185882856454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.8357946573913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79563500808236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.09144139124615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.91260250945975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.67552176869381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.66062267455895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64149069106048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37359630109037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.51652219716766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.54575759654936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58821852619887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76782809841714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6119124553235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74629736846254, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61327551923173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.32896871135786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13780861275266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.12507835931243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13114200203424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37230639398891, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.298526480022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.14580661294434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.26371087049277, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.19265250778471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.34688434505053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.27944969864926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.00376526097061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.12691845430324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13627424638673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.90552697963446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.86432013057937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.88314466139805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.85684478131836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.8333575750649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.87580958070879, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87723690769735, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02118341969194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.14559411024791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1102070847533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.03652679668627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.64848582455738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.5160908672533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.67122680039915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.49638519206744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.23851904732544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.12623758622358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.13616044249197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.97730849654188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.93950245741028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.92103698222829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.92708766921471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.318742774315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.23642124916759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.21999028274801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.22126197659611, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.84560909030802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.53569591871245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.0165686304024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91735297539282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.2390830156373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.14925296519219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.22089116397768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.87029928541635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.89974631246403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.06863681183862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.57589026049908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.50862549547844, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62801821971621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.81567744205196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.33854066905738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.96569574948703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.07274851876403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.95622489428452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.72051069276088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.55232295814028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.40473126616526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.65640141611814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56665701011867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.46095751045398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.76022002087706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.81381751472117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.23375682446748, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01190578025698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56046438309357, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.6501420569037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.45985538510016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.32205823485288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.4213362857644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.3254460973393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.36326200776878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1350438366559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.53738507774712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.43902960493799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.28282897059066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.42427634098117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.65923583486823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.60873415539405, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.39024714619487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.66523349021156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.82876323237488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.97466728886246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.89452843928451, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.67041116090726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.63870699300467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.60806866533521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.09022889967974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.33132395141395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.1422566167072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02336448195068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.85171345155105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92826438920278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.9967936460588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02558962193989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.86654130293297, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1805076876075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.20590970247865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.04093233048125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.94025278141096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1695372755258, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.55006804279205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.74946747581956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.08829699168929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.17204398025235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82928257766983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.80555288724541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03756487304749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.92246232242579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.12455329081938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.03614640032846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.43863634543025, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57880144701099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5662997648947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63602712862732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99359531127284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.20326657631179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.36371229951278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15013947578183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.39786147444195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32525340472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1699951830038, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94415449917722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06237685823791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.88599230986543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09341138541605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29146577709628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.45209900958335, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.38892182999521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42662435004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.86711355565461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.43026737045712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.68555551249223, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.34275603824345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26115762602807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.81665975574816, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69084237577945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.80375023000443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71118042427594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.46412500503037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.6314533607136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6742741594175, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69072074935896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.12667461230008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99949417466048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.92543412582965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.72977842157017, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5701038761525, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.59977663872266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.2927331361965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.40263092608106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28632878234235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.53250654562353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.49417223286694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21737477440588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21700275153675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.24257812297434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.33447437173405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.36500808099656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62192540785213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.95467067184597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.32280422773096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.27797141913928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.85159096418194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.9332147424965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.87171080557967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.72359330386428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.38266657654837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28429001378173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01211175536163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.84310882657518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.59049236660378, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.35514007446828, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9357580237877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05072699188574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00889117962727, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.18219892584725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.96556912199465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.87607469195584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60138099475903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55643441032785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88066522817982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.67510822228188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69837663925773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.91860336977558, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.70107216756422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66971331829183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87708149049162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72163687944706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.94898877051006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.95474043698636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6415881902333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.34129447656329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9434543592522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60307524718807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.18983136258927, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07720168711411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.00591795170635, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.73390898252362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87915537734213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05356230153482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.19249105693204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35715717263174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92376356586935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8642597181964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.08761417167571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3787010770275, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.22887351223902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.18791972112416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71839956451682, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.72871333258459, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71285525012034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.95484908903208, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09252551101909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19565426763862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34851063541004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.36918149511725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.29871325433136, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43191348926673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54163438380152, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70996022231523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.44351635290319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3607156455027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.25194927165909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.09482587993352, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.05964578316673, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1247824238807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60195304694001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5077083162264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32915625849455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41904859018952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86240170807343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74311994285968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92758592270172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.91004727072426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.90746519420465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.16764239198312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.44892482562022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.29820349772235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29660996193417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34630077913107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28533190136021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.32163037675376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.20619082469412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94806731557186, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.5296456958934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2046797163239, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32570812965447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.27835226241817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.18052001757422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.21374473155299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13943605219035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26046795573633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21960702536101, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64774686400108, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.31556350692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.46149005259649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.52377288657563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.23839203319807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6963758650249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70207115016164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1906639429263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.35726613372299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1634420410312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2066382813918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0471045722787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82199720210754, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8989666578373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.77857374465485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.70919453056075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.74465000028516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60934516564298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96618622577306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78501792806425, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.76326607151933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62556378625803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.65556548612001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68684981308908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.58597625405771, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86536967969084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.75020367672924, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75062990936559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.98349381034318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04847278769076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06193871613516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60529611931622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60807864200518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90198815097345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84425841280351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66689924421028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.6348345250126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74311085652141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.87596365908365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.15467982049428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06917346679761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16088604193162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1767131466551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59084973064017, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3728256379574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.83907971020484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05336598759212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.15556945611712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.11170249260897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26806948858284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.19864576006458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02469106007196, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.37555658552148, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4719110379968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.46329135212792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.72605970139526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42143976779836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5510290269881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42138738037778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.49725923626676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.83017838441384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.96394971087318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.80946954515628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.05895494780962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.7764741456602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.82916340306784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.49615933800648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53903204926397, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.2199238563033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.15553425915469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3233546324033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29143609072966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34909878462929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79549173605427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.86012460829116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62257045149929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.36740770267758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1123342756572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.28815691102787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.89234388227695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64456440149245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.62943347351336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64788638508941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1774162868962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.00402666791075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.04453321057154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96838361247781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88321586599363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.90884833929827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7179718780841, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74821494678119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9038655497103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83750554707963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88584036004717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9446210717662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.10339943212905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0848941093554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.14949796034026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8874166822761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.75795965886634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82124488293752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.65346951457661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61396660096294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54800539421142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.46513172439276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04018712803396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2845186523261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80052936345987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.65349927893294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93158855841354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.79425107834362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.55284494377143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33529354683158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.67881964988702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76309874382866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.06380422690371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34837478850592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28272356925105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.08986442511201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19668777653186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9155347262711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86963033561574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02605497205086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.07735953777274, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.92691564488518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.63814938665311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6176086632684, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71204578933798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41015509320589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42767992948878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.23852235526199, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.49442961672796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43422929731483, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.28736530415493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.12218377264868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10919349920911, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97579394436632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.87630575654731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64709318534976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49382854321888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15699292788067, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.04266303105983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9313781112256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.69530603069572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.82075180753827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.00003866180036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.769068469798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62148930928706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0232146586156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.05026787864644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.7648966725291, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.45047976504434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.57906184617835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73227416508321, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.39276167792192, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43027834183452, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.72614964359053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.22140030401876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.40388767907393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6481057355818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.68848188004498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71473698288804, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70268409440689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.43854075921617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44140071332018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74726961853332, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8365056762946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.88893089201021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26317095880032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.37686063355893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.01130398358468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92441725059159, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89449208176279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93827683979755, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6532995649937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.4263959037515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.75213347979019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.0270700566813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76146992741955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10225140410179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.81690399898379, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0438108934807, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.80207795946215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.12592905184013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15713134695487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21575520670791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.31507102860735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2320901589937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15393731859652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07037591089997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3198194947649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69216760463115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.07388089953058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.64149353573187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71271228263036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.11471503048601, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98751858071931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.7067835294734, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.74844014533139, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.02489656616589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98294992874101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.71598064705562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90144093756582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.88369269337046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99127786199946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.25279588129149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98339215080473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84625570624047, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.50594333071952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.50759103681195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.60423833142119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.58324904624199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.89219195707862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.65911048978346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.7149396953146, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.87432845164757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.68840177129488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.93449198055023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.32948554144308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.32849848634218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.22062659109166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.95224360650606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.11404601693097, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79369852289173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.57121837540416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.70539792020504, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.81536726931864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.66590107949516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.54759559550845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11939973938362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21880305870137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.79422563292844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71312689925841, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.46426831854224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.10239283352094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.37028780606191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.13498012432488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.38863630293943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41150008980253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.14488289984781, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.17802365337732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.27104619189048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.98787909982833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.11321145433928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.23295576374296, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.85697546574279, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7517321560528, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50551757491745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.62546167858358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86332633060258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.76299264885851, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78913797285577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.00024160373006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9168412948554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7772709282975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99344762670124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45458704231757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.40001356367094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97082046191717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01206001173375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.08005345968613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.22217203577799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2425856744218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46073627278375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.58143591458905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.95177802714637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.56745694254103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.81253269752307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.86554139490539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90464875740813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96373746132312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09789228558353, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19003786584736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66999752477344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45706703230238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2209401021726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26995519560073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.23034844043512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41387280572972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.33303611955198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.52307299324875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.67190914597171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29815694731651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.11959184333037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.78483612314953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92001295323621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94709162208174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06260774305197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1459174166961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06618787236135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61303967582782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.941078352886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.01481054814181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92069860353018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.87432907187284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88014313205952, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43750435674885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.46298718335747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.92373570713617, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93253015033825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.89138819536463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6779918521803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.51002812881958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.285974590119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32248822367578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35524577583958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73566009456992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6866778828559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.84911622521342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68254626297609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.53753290340698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.40541279646611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71834890975212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.75716070422646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82803454081426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73900139072163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58423325500644, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16188235681071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.02650792631081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.00049424696184, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.27869714616556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.18595899862997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.03056917274476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6959315804981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.29325844026822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24617524245163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.27923511016385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24377176084563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.84290901749984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.45792359801233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61079046047253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59272403631071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6658144632232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76765880138052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.83153611139085, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.47875371686978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54124524065837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.99233076398606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9529292158228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9845811375129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0553452779518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.96933895446485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33843538273938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.7587929540311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.61541170919818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.48109292079488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.584127260661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.73326548896145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63121700232358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06360781499562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8561585876055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92284538933916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11237349539573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07021236134935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.17184698357968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.31228518791787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33590023205818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50027778498863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.54209415864854, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3677893725537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.22925202091126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.09309676612556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15732000186526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.68995738997093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28297081793372, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.49225030811706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.33431283007668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.00621404043055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92641929792215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.07027528339762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13008155599323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.00907183642319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.23094904986101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.2825480931582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91271666538603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05360990148436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28838235720163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.79116186423771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.76779759668747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.66567440561238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.70161264561204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.83214429583118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.77606667466077, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.66108486881463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.66515259357669, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.16857543076497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.40982511738886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.06344300783007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.82444237040852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.59077974741996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.57824858967784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.18599707786814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.23587599762591, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.52520755360774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.53896573427002, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.32372356389571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.39723460318574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.42867761884308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.41468909557778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.37521291073797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.28061929510595, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.37421531457154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.42880794685172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.10075544827296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.08909178471053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.9283105563295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.97631673436179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.83969795208085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.97701708069182, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.24948915106788, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.31081866218918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.15663810787721, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.05359196348086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.89974340615646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.86736216937868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.02917974715604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.10061155400963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.71230009060692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.55956047576315, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.33867736091129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.24521783497416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.33353996675463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.17535391574476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.17558936557836, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.82464445421311, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.14823158528606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.02303868942406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0898265784532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0375220132344, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.69877148351581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.8094147843381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.88896279741591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.58446195759505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94461858556683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.86726342876044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.264261049502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.97378019208324, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43666090180685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.64557703864863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.41486055220747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.62832834535065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.40627623062987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9966907903866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.62784889129782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.91665393395704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20129913778622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36824311350031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.44539780996692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29577808855632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60087912978423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67646038571121, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17445140133515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.07045121918839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.49723620471183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5174230546468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5413500261472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.47975770399327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29423417091141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27541464305773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43920860251751, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.06079463387583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.37828233356667, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.30210368322795, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8891828858322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.6817301819728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39002953943762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68517685658658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.65084298157255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.93501858046714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.1907166501479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25659603867345, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36428253311259, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01156809266551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.31879308123833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.40136182036203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17903686528695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0619221034904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25968317752123, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.56379928977212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.80666495491704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94182055020374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.92425119368045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.78971486194605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.23057477534164, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4049348801832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.24159987362269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.06843389735158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.22183940097844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.93299182979392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.91637693821662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.20188970935105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.57826653579693, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48615354430639, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48852996658736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.70097560384337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.56660104606993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.60339517911308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.5215727488348, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3913600319206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.66423065390151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49406633741951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.64849065100934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.63323070552582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.88914932519062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.96225788336264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.21454142458283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.08973549159177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.91131718633395, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.95365272243404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3677264483084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.38542382708798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.727355594576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.80184598433505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.75895482632265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.65309620079978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18275486854981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08066364611346, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86355002974182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8079829991331, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.50774498473834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.15500147527054, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25388112126257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.46869004462158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.49982930970904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.64941137818613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08181708620197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89782993828217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.34821493675021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0511570084608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36636841676064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.22802936588096, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13124547885464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.97034570188329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84675502390373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82877025439984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.83150510044737, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.80556016637114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.10675350799055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84453919660923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.88147160830762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.95771616416846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25900520967262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.28214715432236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.64410132782972, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.78845498147822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.96240900085823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01654413042846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08257869239384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.92270971634117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9249177043285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.5475977762062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85856446370276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8876461806366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.75554506700362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4712342394787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.13596092844963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.29084433077668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.50946620110103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42209873300993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16470383307056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.10251353436806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16007736983093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25346405776058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.02466944517249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.03234873384025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11031617256702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.14530663460309, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4442900442657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39955675926143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.19954612220634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.33374471974878, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.17850638089598, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31970147221125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.19274532121113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3840327772038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.48120231354616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7121932598933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86988580253298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.76604202197464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79597689506201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42129188541651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67647877199742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82191220927734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84470059887572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.72847566121298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43094423441607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39808368032986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31641481415083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.40267706340073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60680412325432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.51452016846274, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31471449163298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43834781075664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84446638005844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.49607372712997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85869892480143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.87107213537678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.83017137699973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.73075043509533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85446221431528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13025477242799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08577867542596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20567187514531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27862593574773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.19411735771268, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.916410701528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.80020190906805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.03429888110497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99059510104857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.12230359240208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.21493112615859, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.7362497471537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.90953724611552, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99997604721491, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25158859302469, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98246224229298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.18380160087476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.54700954481861, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.87858935796136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82466366840129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79031352535364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.52782616930364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.71180131795903, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.66862984653359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.94388954493733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.40172293508901, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.27308992706585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30251070708916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.36341600243385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.07297082017436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.63576619816114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.36545808934646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.425342939227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.59476724765915, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.41575843731752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30499551372479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.2943417590765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.20190364871404, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.35429934455371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25575482738782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30124986928953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.90191386326036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.96508444596826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.75989432781597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.47851546822666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.43273982617148, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.78073270556935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.29707161405977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.17141051171173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.83897503233364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.92050920813638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.39298906893524, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.24960092613485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.15249367428707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11254847884746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.6477102979142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.66187174327492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.22816086359947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.18924739108921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.15833017318171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.35388264537053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.30391448349607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1765702619787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.03923857682982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.14087662618776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.60285889768487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.71610220194758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.43129513858887, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7750138677335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.5417619126041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.26004415392279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.48237494714664, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.58658168452075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.75620116852377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.69650084660127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.92028780826493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.62951533581877, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.58269597074072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.65987379372794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.66612454309691, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.8169746660663, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.5926039176473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28582192646724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.47874410921285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.57232514477201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.07482838670386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.06329982176626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.939646337063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.02294071169972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.73925579999096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.99566659891293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.99166395939717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.91107729961162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.35440315345551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.19457800884426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.87539474258334, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.03831344319956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.84933568810729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.942984467456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28778584744732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02443267142746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94057536205155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72906200441219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38445225202611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38197492987447, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18213638354725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04715001455901, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19838818284391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29725636974986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23572569098852, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3432106471416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46834681822006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.39304905252162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4607924127623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.87391242777782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81782457593818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.74839547168068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9804659897062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.1820620687209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53780103937676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.35114383691389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19430169329608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0736265695374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.56101740773187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02847405275406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02877565620591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02966575553104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71076966315076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5342590029927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87172892779671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8898807030855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7509399436349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70594283596789, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83044892913243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71383587412238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52870331564132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68221846843574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68293629394864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76185935158753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.77694161620539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94666597863043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09046839544105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0093802192737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.78182814117551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75541337031265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72371690451082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60849664049482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94340121095276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.85028148090369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7183641880944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93201467581261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6600503714477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71003338575711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64414870400898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73370138654631, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51475031329109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60797476194675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42059367470232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66628705381636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53531464201514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2030497935449, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62268440600192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.91948342162647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67919849510083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43887673234494, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17984056111294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94368190633774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.11465699863811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97059505880482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29459604644765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53931157007439, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49631090115352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52393358151217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66942128922241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.4946582273999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29424834791328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07603918687664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33479567014805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.14550463966849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9928646204638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96872153502625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.87705988155102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.53452507075421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.56396146367423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59385740536969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64213975217385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78882758292927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.63683672368549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.48470633760584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39062489567554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.494696351115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93573503075692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.98885415853535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06245234985892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0289821017493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.22900373831216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.3157346032948, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59973514861235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.77086454804387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82096590563263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.95769963997635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.21106339352885, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07551182524406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09759300944572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33359941396125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2288848699624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2069451450579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46522997402728, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63157812424986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92215275507255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81904355011355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34536862719393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4540782896955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65179701007457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58231165488735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59222373899847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41076247699506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.57987210255567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93696117180936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88875391692817, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67494277755462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99358787892747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07975990716614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07047992178705, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33559891886243, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59225467831386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63479260217548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80334597318698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.98346554786147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92321614880655, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83699346593512, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93109508241774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96354668527802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08641930356686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23768236549668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08211844013991, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20846159911048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.13954155854589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89054598561034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11646823351487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10168176297485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.30038009222437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.41339845504724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10852951715277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84680988625497, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00138088356287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04342924144086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01673785551608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8508081374985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87089994615239, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9378403552245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05201413714099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0235397935625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26517251606933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15470785076896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4932600250258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.51252060274227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53140073996916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90203063702091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26191114348926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0634456423351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43521818420996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38568536751181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21262216293847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23411145607675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82330133886903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61660062265747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71484163940588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72855192282307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3692642985158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37837200951205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19352686807355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28024660066703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96384685743692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14877036790756, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09572264391801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53876217367774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64617178108719, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85422093876446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60924422208079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52724603055836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46494136842418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44406941275119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32264147745168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0360221167863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01384655286363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97262653583181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.28024889847717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96758302287454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25528568314509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20092793334622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49508373939167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73466658206335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46436704586412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69111891541637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21128313549013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37756823246967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04218716563325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00014735551822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.93318531635457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84116622880475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50637869144556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66826656058106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36257300920573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60779676375832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36220969555443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.1193839744838, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.89096232869592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.75394086603562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.10653141004636, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.98502552303084, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03115476672883, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05866288388766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80506699745925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97004409317438, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39339911911829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28070286679336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74175784445059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6733758391721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81901224922302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84844274508458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.60313885279771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41938832519848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64052127057325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54200410559555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73590345101391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62782637305553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79185882856454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8357946573913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79563500808236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09144139124615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.91260250945975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.67552176869381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.66062267455895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64149069106048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37359630109037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.51652219716766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54575759654936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58821852619887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76782809841714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6119124553235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74629736846254, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61327551923173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.32896871135786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13780861275266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.12507835931243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13114200203424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37230639398891, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.298526480022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14580661294434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.26371087049277, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.19265250778471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.34688434505053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.27944969864926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00376526097061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.12691845430324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13627424638673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.90552697963446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86432013057937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.88314466139805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.85684478131836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.8333575750649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87580958070879, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87723690769735, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02118341969194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14559411024791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1102070847533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.03652679668627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.64848582455738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.5160908672533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.67122680039915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.49638519206744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.23851904732544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.12623758622358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.13616044249197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.97730849654188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.93950245741028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.92103698222829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.92708766921471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.318742774315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.23642124916759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.21999028274801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.22126197659611, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.84560909030802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.53569591871245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0165686304024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91735297539282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2390830156373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14925296519219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.22089116397768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87029928541635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.89974631246403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06863681183862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.57589026049908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.50862549547844, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62801821971621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81567744205196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33854066905738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.96569574948703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07274851876403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.95622489428452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.72051069276088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.55232295814028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.40473126616526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65640141611814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56665701011867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.46095751045398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.76022002087706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.81381751472117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23375682446748, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01190578025698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56046438309357, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.6501420569037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.45985538510016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.32205823485288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.4213362857644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.3254460973393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.36326200776878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1350438366559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.53738507774712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.43902960493799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.28282897059066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.42427634098117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65923583486823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60873415539405, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.39024714619487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66523349021156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.82876323237488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97466728886246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.89452843928451, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.67041116090726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.63870699300467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60806866533521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.09022889967974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33132395141395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1422566167072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02336448195068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.85171345155105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92826438920278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9967936460588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02558962193989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86654130293297, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1805076876075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20590970247865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.04093233048125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.94025278141096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1695372755258, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.55006804279205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74946747581956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.08829699168929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17204398025235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82928257766983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80555288724541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03756487304749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.92246232242579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12455329081938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03614640032846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43863634543025, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57880144701099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.5662997648947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63602712862732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99359531127284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20326657631179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36371229951278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15013947578183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.39786147444195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32525340472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1699951830038, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94415449917722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06237685823791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88599230986543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09341138541605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29146577709628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.45209900958335, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.38892182999521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42662435004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86711355565461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43026737045712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.68555551249223, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34275603824345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26115762602807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81665975574816, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69084237577945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80375023000443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71118042427594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46412500503037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6314533607136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6742741594175, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69072074935896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.12667461230008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99949417466048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.92543412582965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72977842157017, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5701038761525, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.59977663872266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2927331361965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40263092608106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28632878234235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53250654562353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49417223286694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21737477440588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21700275153675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.24257812297434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33447437173405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36500808099656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62192540785213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95467067184597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32280422773096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.27797141913928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.85159096418194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.9332147424965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.87171080557967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.72359330386428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.38266657654837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28429001378173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01211175536163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84310882657518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.59049236660378, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.35514007446828, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9357580237877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05072699188574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00889117962727, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18219892584725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96556912199465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87607469195584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60138099475903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55643441032785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88066522817982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67510822228188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69837663925773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91860336977558, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70107216756422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66971331829183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87708149049162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72163687944706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94898877051006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.95474043698636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6415881902333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34129447656329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9434543592522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60307524718807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.18983136258927, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07720168711411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00591795170635, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73390898252362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.87915537734213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05356230153482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.19249105693204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35715717263174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92376356586935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8642597181964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.08761417167571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3787010770275, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22887351223902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18791972112416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71839956451682, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72871333258459, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71285525012034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95484908903208, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09252551101909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19565426763862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34851063541004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36918149511725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29871325433136, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43191348926673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54163438380152, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70996022231523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.44351635290319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3607156455027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25194927165909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09482587993352, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.05964578316673, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1247824238807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60195304694001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5077083162264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32915625849455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41904859018952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86240170807343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74311994285968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92758592270172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91004727072426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.90746519420465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.16764239198312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.44892482562022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29820349772235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29660996193417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34630077913107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28533190136021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32163037675376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20619082469412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94806731557186, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5296456958934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2046797163239, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32570812965447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27835226241817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18052001757422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21374473155299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13943605219035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26046795573633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21960702536101, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64774686400108, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.31556350692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46149005259649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52377288657563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.23839203319807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6963758650249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70207115016164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1906639429263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35726613372299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1634420410312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2066382813918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0471045722787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82199720210754, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8989666578373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77857374465485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70919453056075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74465000028516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60934516564298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96618622577306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78501792806425, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76326607151933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62556378625803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.65556548612001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68684981308908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.58597625405771, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86536967969084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75020367672924, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75062990936559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98349381034318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04847278769076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06193871613516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60529611931622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60807864200518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90198815097345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84425841280351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66689924421028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6348345250126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74311085652141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87596365908365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15467982049428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06917346679761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16088604193162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1767131466551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59084973064017, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3728256379574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83907971020484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05336598759212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15556945611712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11170249260897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26806948858284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19864576006458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02469106007196, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37555658552148, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4719110379968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46329135212792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72605970139526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42143976779836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5510290269881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42138738037778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49725923626676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.83017838441384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.96394971087318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80946954515628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.05895494780962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7764741456602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.82916340306784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49615933800648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53903204926397, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2199238563033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15553425915469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3233546324033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29143609072966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34909878462929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79549173605427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.86012460829116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62257045149929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36740770267758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1123342756572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28815691102787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89234388227695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64456440149245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.62943347351336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64788638508941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1774162868962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00402666791075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04453321057154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96838361247781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88321586599363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.90884833929827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7179718780841, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74821494678119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9038655497103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83750554707963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88584036004717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9446210717662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10339943212905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0848941093554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14949796034026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8874166822761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75795965886634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82124488293752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65346951457661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61396660096294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54800539421142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46513172439276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04018712803396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2845186523261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80052936345987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65349927893294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93158855841354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79425107834362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55284494377143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33529354683158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67881964988702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76309874382866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.06380422690371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34837478850592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28272356925105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08986442511201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19668777653186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9155347262711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86963033561574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02605497205086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07735953777274, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92691564488518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63814938665311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6176086632684, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71204578933798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41015509320589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42767992948878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23852235526199, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49442961672796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43422929731483, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28736530415493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12218377264868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10919349920911, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97579394436632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87630575654731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64709318534976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49382854321888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15699292788067, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.04266303105983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9313781112256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.69530603069572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82075180753827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00003866180036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.769068469798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62148930928706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0232146586156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05026787864644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.7648966725291, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45047976504434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.57906184617835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73227416508321, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39276167792192, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43027834183452, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.72614964359053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22140030401876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40388767907393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6481057355818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68848188004498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71473698288804, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70268409440689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43854075921617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44140071332018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74726961853332, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8365056762946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88893089201021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26317095880032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37686063355893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.01130398358468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92441725059159, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89449208176279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93827683979755, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6532995649937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4263959037515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75213347979019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0270700566813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76146992741955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10225140410179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81690399898379, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0438108934807, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.80207795946215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12592905184013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15713134695487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21575520670791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31507102860735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2320901589937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15393731859652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07037591089997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3198194947649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69216760463115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07388089953058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.64149353573187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71271228263036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.11471503048601, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98751858071931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7067835294734, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.74844014533139, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02489656616589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98294992874101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71598064705562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90144093756582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.88369269337046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99127786199946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.25279588129149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98339215080473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84625570624047, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50594333071952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50759103681195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.60423833142119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58324904624199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.89219195707862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.65911048978346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7149396953146, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.87432845164757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.68840177129488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.93449198055023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32948554144308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32849848634218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.22062659109166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95224360650606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.11404601693097, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79369852289173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.57121837540416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.70539792020504, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81536726931864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.66590107949516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.54759559550845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11939973938362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21880305870137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79422563292844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71312689925841, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46426831854224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10239283352094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37028780606191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13498012432488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.38863630293943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41150008980253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14488289984781, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.17802365337732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27104619189048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98787909982833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11321145433928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23295576374296, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85697546574279, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7517321560528, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50551757491745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62546167858358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86332633060258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76299264885851, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78913797285577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00024160373006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9168412948554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7772709282975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99344762670124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45458704231757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40001356367094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97082046191717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01206001173375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.08005345968613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22217203577799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2425856744218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46073627278375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.58143591458905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95177802714637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56745694254103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81253269752307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86554139490539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90464875740813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96373746132312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09789228558353, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19003786584736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66999752477344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45706703230238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2209401021726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26995519560073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23034844043512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41387280572972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33303611955198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52307299324875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67190914597171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29815694731651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11959184333037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78483612314953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92001295323621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94709162208174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06260774305197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1459174166961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06618787236135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61303967582782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.941078352886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01481054814181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92069860353018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87432907187284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88014313205952, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43750435674885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46298718335747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92373570713617, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93253015033825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89138819536463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6779918521803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51002812881958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.285974590119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32248822367578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35524577583958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73566009456992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6866778828559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84911622521342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68254626297609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53753290340698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.40541279646611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71834890975212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75716070422646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82803454081426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73900139072163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58423325500644, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16188235681071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.02650792631081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00049424696184, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27869714616556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18595899862997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03056917274476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6959315804981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29325844026822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24617524245163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.27923511016385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24377176084563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84290901749984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45792359801233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61079046047253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59272403631071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6658144632232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76765880138052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.83153611139085, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47875371686978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54124524065837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.99233076398606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9529292158228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9845811375129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0553452779518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96933895446485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33843538273938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7587929540311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.61541170919818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.48109292079488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.584127260661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73326548896145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63121700232358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06360781499562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8561585876055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92284538933916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11237349539573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07021236134935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.17184698357968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.31228518791787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33590023205818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50027778498863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.54209415864854, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3677893725537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22925202091126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09309676612556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15732000186526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.68995738997093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28297081793372, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.49225030811706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33431283007668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00621404043055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92641929792215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07027528339762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13008155599323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00907183642319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23094904986101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2825480931582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91271666538603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05360990148436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28838235720163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.79116186423771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.76779759668747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66567440561238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.70161264561204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.83214429583118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.77606667466077, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66108486881463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66515259357669, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.16857543076497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.40982511738886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.06344300783007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.82444237040852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.59077974741996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.57824858967784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.18599707786814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.23587599762591, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.52520755360774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.53896573427002, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.32372356389571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.39723460318574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.42867761884308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.41468909557778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.37521291073797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.28061929510595, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.37421531457154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.42880794685172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.10075544827296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.08909178471053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.9283105563295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.97631673436179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.83969795208085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.97701708069182, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.24948915106788, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.31081866218918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.15663810787721, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.05359196348086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.89974340615646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.86736216937868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.02917974715604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.10061155400963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.71230009060692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.55956047576315, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT Pro", + "passed": true, + "scenario_id": "17" + }, + "detail": null, + "duration_seconds": 2.591943276114762, + "framework": "vectorbt_pro", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.33867736091129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.24521783497416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.33353996675463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.17535391574476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.17558936557836, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.82464445421311, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.14823158528606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.02303868942406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0898265784532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0375220132344, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.69877148351581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.8094147843381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.88896279741591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.58446195759505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94461858556683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.86726342876044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.264261049502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.97378019208324, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43666090180685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.64557703864863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.41486055220747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.62832834535065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.40627623062987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9966907903866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.62784889129782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.91665393395704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20129913778622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36824311350031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.44539780996692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29577808855632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60087912978423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67646038571121, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17445140133515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.07045121918839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.49723620471183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5174230546468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5413500261472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.47975770399327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29423417091141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27541464305773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43920860251751, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.06079463387583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.37828233356667, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.30210368322795, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8891828858322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.6817301819728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39002953943762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68517685658658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.65084298157255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.93501858046714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.1907166501479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25659603867345, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36428253311259, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01156809266551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.31879308123833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.40136182036203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17903686528695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0619221034904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25968317752123, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.56379928977212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.80666495491704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94182055020374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.92425119368045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.78971486194605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.23057477534164, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4049348801832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.24159987362269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.06843389735158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.22183940097844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.93299182979392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.91637693821662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.20188970935105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.57826653579693, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48615354430639, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48852996658736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.70097560384337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.56660104606993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.60339517911308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.5215727488348, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3913600319206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.66423065390151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49406633741951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.64849065100934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.63323070552582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.88914932519062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.96225788336264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.21454142458283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.08973549159177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.91131718633395, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.95365272243404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3677264483084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.38542382708798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.727355594576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.80184598433505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.75895482632265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.65309620079978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18275486854981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08066364611346, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86355002974182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8079829991331, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.50774498473834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.15500147527054, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25388112126257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.46869004462158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.49982930970904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.64941137818613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08181708620197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89782993828217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.34821493675021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0511570084608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36636841676064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.22802936588096, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13124547885464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.97034570188329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84675502390373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82877025439984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.83150510044737, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.80556016637114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.10675350799055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84453919660923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.88147160830762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.95771616416846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25900520967262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.28214715432236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.64410132782972, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.78845498147822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.96240900085823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01654413042846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08257869239384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.92270971634117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9249177043285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.5475977762062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85856446370276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8876461806366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.75554506700362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4712342394787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.13596092844963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.29084433077668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.50946620110103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42209873300993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16470383307056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.10251353436806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16007736983093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25346405776058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.02466944517249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.03234873384025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11031617256702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.14530663460309, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4442900442657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39955675926143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.19954612220634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.33374471974878, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.17850638089598, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31970147221125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.19274532121113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3840327772038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.48120231354616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7121932598933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86988580253298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.76604202197464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79597689506201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42129188541651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67647877199742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82191220927734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84470059887572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.72847566121298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43094423441607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39808368032986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31641481415083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.40267706340073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60680412325432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.51452016846274, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31471449163298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43834781075664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84446638005844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.49607372712997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85869892480143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.87107213537678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.83017137699973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.73075043509533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85446221431528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13025477242799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08577867542596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20567187514531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27862593574773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.19411735771268, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.916410701528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.80020190906805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.03429888110497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99059510104857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.12230359240208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.21493112615859, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.7362497471537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.90953724611552, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99997604721491, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25158859302469, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98246224229298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.18380160087476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.54700954481861, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.87858935796136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82466366840129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79031352535364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.52782616930364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.71180131795903, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.66862984653359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.94388954493733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.40172293508901, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.27308992706585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30251070708916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.36341600243385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.07297082017436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.63576619816114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.36545808934646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.425342939227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.59476724765915, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.41575843731752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30499551372479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.2943417590765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.20190364871404, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.35429934455371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25575482738782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30124986928953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.90191386326036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.96508444596826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.75989432781597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.47851546822666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.43273982617148, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.78073270556935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.29707161405977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.17141051171173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.83897503233364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.92050920813638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.39298906893524, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.24960092613485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.15249367428707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11254847884746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.6477102979142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.66187174327492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.22816086359947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.18924739108921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.15833017318171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.35388264537053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.30391448349607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1765702619787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.03923857682982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.14087662618776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.60285889768487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.71610220194758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.43129513858887, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7750138677335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.5417619126041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.26004415392279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.48237494714664, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.58658168452075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.75620116852377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.69650084660127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.92028780826493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.62951533581877, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.58269597074072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.65987379372794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.66612454309691, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.8169746660663, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.5926039176473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28582192646724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.47874410921285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.57232514477201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.07482838670386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.06329982176626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.939646337063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.02294071169972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.73925579999096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.99566659891293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.99166395939717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.91107729961162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.35440315345551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.19457800884426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.87539474258334, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.03831344319956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.84933568810729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.942984467456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28778584744732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02443267142746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94057536205155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72906200441219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38445225202611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38197492987447, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18213638354725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04715001455901, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19838818284391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29725636974986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23572569098852, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3432106471416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46834681822006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.39304905252162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4607924127623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.87391242777782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81782457593818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.74839547168068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9804659897062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.1820620687209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53780103937676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.35114383691389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19430169329608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0736265695374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.56101740773187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02847405275406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02877565620591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02966575553104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71076966315076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5342590029927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87172892779671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8898807030855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7509399436349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70594283596789, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83044892913243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71383587412238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52870331564132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68221846843574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68293629394864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76185935158753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.77694161620539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94666597863043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09046839544105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0093802192737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.78182814117551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75541337031265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72371690451082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60849664049482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94340121095276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.85028148090369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7183641880944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93201467581261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6600503714477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71003338575711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64414870400898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73370138654631, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51475031329109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60797476194675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42059367470232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66628705381636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53531464201514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2030497935449, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62268440600192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.91948342162647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67919849510083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43887673234494, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17984056111294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94368190633774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.11465699863811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97059505880482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29459604644765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53931157007439, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49631090115352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52393358151217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66942128922241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.4946582273999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29424834791328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07603918687664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33479567014805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.14550463966849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9928646204638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96872153502625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.87705988155102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.53452507075421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.56396146367423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59385740536969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64213975217385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78882758292927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.63683672368549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.48470633760584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39062489567554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.494696351115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93573503075692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.98885415853535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06245234985892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0289821017493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.22900373831216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.3157346032948, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59973514861235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.77086454804387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82096590563263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.95769963997635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.21106339352885, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07551182524406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09759300944572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33359941396125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2288848699624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2069451450579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46522997402728, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63157812424986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92215275507255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81904355011355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34536862719393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4540782896955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65179701007457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58231165488735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59222373899847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41076247699506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.57987210255567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93696117180936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88875391692817, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67494277755462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99358787892747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07975990716614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07047992178705, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33559891886243, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59225467831386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63479260217548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80334597318698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.98346554786147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92321614880655, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83699346593512, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93109508241774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96354668527802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08641930356686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23768236549668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08211844013991, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20846159911048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.13954155854589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89054598561034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11646823351487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10168176297485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.30038009222437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.41339845504724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10852951715277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84680988625497, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00138088356287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04342924144086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01673785551608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8508081374985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87089994615239, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9378403552245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05201413714099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0235397935625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26517251606933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15470785076896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4932600250258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.51252060274227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53140073996916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90203063702091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26191114348926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0634456423351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43521818420996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38568536751181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21262216293847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23411145607675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82330133886903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61660062265747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71484163940588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72855192282307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3692642985158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37837200951205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19352686807355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28024660066703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96384685743692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14877036790756, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09572264391801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53876217367774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64617178108719, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85422093876446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60924422208079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52724603055836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46494136842418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44406941275119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32264147745168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0360221167863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01384655286363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97262653583181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.28024889847717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96758302287454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25528568314509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20092793334622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49508373939167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73466658206335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46436704586412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69111891541637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21128313549013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37756823246967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04218716563325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00014735551822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.93318531635457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84116622880475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50637869144556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66826656058106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36257300920573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60779676375832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36220969555443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.1193839744838, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.89096232869592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.75394086603562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.10653141004636, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.98502552303084, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03115476672883, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05866288388766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80506699745925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97004409317438, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39339911911829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28070286679336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74175784445059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6733758391721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81901224922302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84844274508458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.60313885279771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41938832519848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64052127057325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54200410559555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73590345101391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62782637305553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79185882856454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8357946573913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79563500808236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09144139124615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.91260250945975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.67552176869381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.66062267455895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64149069106048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37359630109037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.51652219716766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54575759654936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58821852619887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76782809841714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6119124553235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74629736846254, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61327551923173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.32896871135786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13780861275266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.12507835931243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13114200203424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37230639398891, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.298526480022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14580661294434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.26371087049277, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.19265250778471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.34688434505053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.27944969864926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00376526097061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.12691845430324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13627424638673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.90552697963446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86432013057937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.88314466139805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.85684478131836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.8333575750649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87580958070879, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87723690769735, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02118341969194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14559411024791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1102070847533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.03652679668627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.64848582455738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.5160908672533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.67122680039915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.49638519206744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.23851904732544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.12623758622358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.13616044249197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.97730849654188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.93950245741028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.92103698222829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.92708766921471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.318742774315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.23642124916759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.21999028274801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.22126197659611, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.84560909030802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.53569591871245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0165686304024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91735297539282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2390830156373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14925296519219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.22089116397768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87029928541635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.89974631246403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06863681183862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.57589026049908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.50862549547844, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62801821971621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81567744205196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33854066905738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.96569574948703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07274851876403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.95622489428452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.72051069276088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.55232295814028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.40473126616526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65640141611814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56665701011867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.46095751045398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.76022002087706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.81381751472117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23375682446748, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01190578025698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56046438309357, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.6501420569037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.45985538510016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.32205823485288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.4213362857644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.3254460973393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.36326200776878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1350438366559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.53738507774712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.43902960493799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.28282897059066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.42427634098117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65923583486823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60873415539405, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.39024714619487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66523349021156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.82876323237488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97466728886246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.89452843928451, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.67041116090726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.63870699300467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60806866533521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.09022889967974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33132395141395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1422566167072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02336448195068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.85171345155105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92826438920278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9967936460588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02558962193989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86654130293297, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1805076876075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20590970247865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.04093233048125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.94025278141096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1695372755258, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.55006804279205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74946747581956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.08829699168929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17204398025235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82928257766983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80555288724541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03756487304749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.92246232242579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12455329081938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03614640032846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43863634543025, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57880144701099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.5662997648947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63602712862732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99359531127284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20326657631179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36371229951278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15013947578183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.39786147444195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32525340472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1699951830038, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94415449917722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06237685823791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88599230986543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09341138541605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29146577709628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.45209900958335, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.38892182999521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42662435004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86711355565461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43026737045712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.68555551249223, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34275603824345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26115762602807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81665975574816, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69084237577945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80375023000443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71118042427594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46412500503037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6314533607136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6742741594175, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69072074935896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.12667461230008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99949417466048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.92543412582965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72977842157017, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5701038761525, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.59977663872266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2927331361965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40263092608106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28632878234235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53250654562353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49417223286694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21737477440588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21700275153675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.24257812297434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33447437173405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36500808099656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62192540785213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95467067184597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32280422773096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.27797141913928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.85159096418194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.9332147424965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.87171080557967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.72359330386428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.38266657654837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28429001378173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01211175536163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84310882657518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.59049236660378, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.35514007446828, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9357580237877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05072699188574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00889117962727, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18219892584725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96556912199465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87607469195584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60138099475903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55643441032785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88066522817982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67510822228188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69837663925773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91860336977558, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70107216756422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66971331829183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87708149049162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72163687944706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94898877051006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.95474043698636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6415881902333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34129447656329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9434543592522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60307524718807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.18983136258927, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07720168711411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00591795170635, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73390898252362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.87915537734213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05356230153482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.19249105693204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35715717263174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92376356586935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8642597181964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.08761417167571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3787010770275, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22887351223902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18791972112416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71839956451682, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72871333258459, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71285525012034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95484908903208, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09252551101909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19565426763862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34851063541004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36918149511725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29871325433136, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43191348926673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54163438380152, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70996022231523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.44351635290319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3607156455027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25194927165909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09482587993352, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.05964578316673, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1247824238807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60195304694001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5077083162264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32915625849455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41904859018952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86240170807343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74311994285968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92758592270172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91004727072426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.90746519420465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.16764239198312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.44892482562022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29820349772235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29660996193417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34630077913107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28533190136021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32163037675376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20619082469412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94806731557186, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5296456958934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2046797163239, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32570812965447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27835226241817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18052001757422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21374473155299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13943605219035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26046795573633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21960702536101, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64774686400108, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.31556350692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46149005259649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52377288657563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.23839203319807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6963758650249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70207115016164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1906639429263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35726613372299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1634420410312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2066382813918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0471045722787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82199720210754, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8989666578373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77857374465485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70919453056075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74465000028516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60934516564298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96618622577306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78501792806425, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76326607151933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62556378625803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.65556548612001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68684981308908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.58597625405771, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86536967969084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75020367672924, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75062990936559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98349381034318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04847278769076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06193871613516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60529611931622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60807864200518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90198815097345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84425841280351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66689924421028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6348345250126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74311085652141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87596365908365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15467982049428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06917346679761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16088604193162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1767131466551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59084973064017, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3728256379574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83907971020484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05336598759212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15556945611712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11170249260897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26806948858284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19864576006458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02469106007196, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37555658552148, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4719110379968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46329135212792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72605970139526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42143976779836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5510290269881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42138738037778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49725923626676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.83017838441384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.96394971087318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80946954515628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.05895494780962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7764741456602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.82916340306784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49615933800648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53903204926397, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2199238563033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15553425915469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3233546324033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29143609072966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34909878462929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79549173605427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.86012460829116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62257045149929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36740770267758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1123342756572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28815691102787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89234388227695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64456440149245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.62943347351336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64788638508941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1774162868962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00402666791075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04453321057154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96838361247781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88321586599363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.90884833929827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7179718780841, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74821494678119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9038655497103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83750554707963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88584036004717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9446210717662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10339943212905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0848941093554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14949796034026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8874166822761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75795965886634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82124488293752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65346951457661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61396660096294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54800539421142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46513172439276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04018712803396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2845186523261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80052936345987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65349927893294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93158855841354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79425107834362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55284494377143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33529354683158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67881964988702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76309874382866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.06380422690371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34837478850592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28272356925105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08986442511201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19668777653186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9155347262711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86963033561574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02605497205086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07735953777274, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92691564488518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63814938665311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6176086632684, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71204578933798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41015509320589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42767992948878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23852235526199, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49442961672796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43422929731483, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28736530415493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12218377264868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10919349920911, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97579394436632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87630575654731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64709318534976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49382854321888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15699292788067, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.04266303105983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9313781112256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.69530603069572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82075180753827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00003866180036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.769068469798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62148930928706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0232146586156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05026787864644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.7648966725291, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45047976504434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.57906184617835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73227416508321, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39276167792192, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43027834183452, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.72614964359053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22140030401876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40388767907393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6481057355818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68848188004498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71473698288804, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70268409440689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43854075921617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44140071332018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74726961853332, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8365056762946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88893089201021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26317095880032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37686063355893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.01130398358468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92441725059159, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89449208176279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93827683979755, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6532995649937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4263959037515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75213347979019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0270700566813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76146992741955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10225140410179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81690399898379, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0438108934807, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.80207795946215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12592905184013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15713134695487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21575520670791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31507102860735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2320901589937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15393731859652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07037591089997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3198194947649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69216760463115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07388089953058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.64149353573187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71271228263036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.11471503048601, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98751858071931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7067835294734, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.74844014533139, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02489656616589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98294992874101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71598064705562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90144093756582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.88369269337046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99127786199946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.25279588129149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98339215080473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84625570624047, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50594333071952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50759103681195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.60423833142119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58324904624199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.89219195707862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.65911048978346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7149396953146, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.87432845164757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.68840177129488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.93449198055023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32948554144308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32849848634218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.22062659109166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95224360650606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.11404601693097, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79369852289173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.57121837540416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.70539792020504, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81536726931864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.66590107949516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.54759559550845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11939973938362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21880305870137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79422563292844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71312689925841, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46426831854224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10239283352094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37028780606191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13498012432488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.38863630293943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41150008980253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14488289984781, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.17802365337732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27104619189048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98787909982833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11321145433928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23295576374296, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85697546574279, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7517321560528, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50551757491745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62546167858358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86332633060258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76299264885851, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78913797285577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00024160373006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9168412948554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7772709282975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99344762670124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45458704231757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40001356367094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97082046191717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01206001173375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.08005345968613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22217203577799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2425856744218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46073627278375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.58143591458905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95177802714637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56745694254103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81253269752307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86554139490539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90464875740813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96373746132312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09789228558353, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19003786584736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66999752477344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45706703230238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2209401021726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26995519560073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23034844043512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41387280572972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33303611955198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52307299324875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67190914597171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29815694731651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11959184333037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78483612314953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92001295323621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94709162208174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06260774305197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1459174166961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06618787236135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61303967582782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.941078352886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01481054814181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92069860353018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87432907187284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88014313205952, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43750435674885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46298718335747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92373570713617, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93253015033825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89138819536463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6779918521803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51002812881958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.285974590119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32248822367578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35524577583958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73566009456992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6866778828559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84911622521342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68254626297609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53753290340698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.40541279646611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71834890975212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75716070422646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82803454081426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73900139072163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58423325500644, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16188235681071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.02650792631081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00049424696184, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27869714616556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18595899862997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03056917274476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6959315804981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29325844026822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24617524245163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.27923511016385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24377176084563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84290901749984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45792359801233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61079046047253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59272403631071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6658144632232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76765880138052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.83153611139085, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47875371686978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54124524065837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.99233076398606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9529292158228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9845811375129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0553452779518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96933895446485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33843538273938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7587929540311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.61541170919818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.48109292079488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.584127260661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73326548896145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63121700232358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06360781499562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8561585876055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92284538933916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11237349539573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07021236134935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.17184698357968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.31228518791787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33590023205818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50027778498863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.54209415864854, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3677893725537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22925202091126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09309676612556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15732000186526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.68995738997093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28297081793372, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.49225030811706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33431283007668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00621404043055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92641929792215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07027528339762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13008155599323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00907183642319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23094904986101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2825480931582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91271666538603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05360990148436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28838235720163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.79116186423771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.76779759668747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66567440561238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.70161264561204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.83214429583118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.77606667466077, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66108486881463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66515259357669, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.16857543076497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.40982511738886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.06344300783007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.82444237040852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.59077974741996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.57824858967784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.18599707786814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.23587599762591, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.52520755360774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.53896573427002, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.32372356389571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.39723460318574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.42867761884308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.41468909557778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.37521291073797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.28061929510595, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.37421531457154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.42880794685172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.10075544827296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.08909178471053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.9283105563295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.97631673436179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.83969795208085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.97701708069182, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.24948915106788, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.31081866218918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.15663810787721, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.05359196348086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.89974340615646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.86736216937868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.02917974715604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.10061155400963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.71230009060692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.55956047576315, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-04T00:00:00" + } + ], + "final_value": 99082.81840069561, + "framework": "VectorBT Pro", + "num_trades": 600, + "total_pnl": -917.1815993043856, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33867736091129, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 100.24521783497416, + "exit_time": "2020-01-03T00:00:00", + "pnl": -9.345952593713491, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33353996675463, + "entry_time": "2020-01-05T00:00:00", + "exit_price": 100.17535391574476, + "exit_time": "2020-01-06T00:00:00", + "pnl": -15.81860510098636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.17558936557836, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 99.82464445421311, + "exit_time": "2020-01-09T00:00:00", + "pnl": -35.09449113652465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.14823158528606, + "entry_time": "2020-01-11T00:00:00", + "exit_price": 100.02303868942406, + "exit_time": "2020-01-12T00:00:00", + "pnl": -12.519289586199989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0898265784532, + "entry_time": "2020-01-14T00:00:00", + "exit_price": 100.0375220132344, + "exit_time": "2020-01-15T00:00:00", + "pnl": -5.2304565218804555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.69877148351581, + "entry_time": "2020-01-17T00:00:00", + "exit_price": 99.8094147843381, + "exit_time": "2020-01-18T00:00:00", + "pnl": 11.064330082228935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.88896279741591, + "entry_time": "2020-01-20T00:00:00", + "exit_price": 99.58446195759505, + "exit_time": "2020-01-21T00:00:00", + "pnl": -30.450083982086085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.94461858556683, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 99.86726342876044, + "exit_time": "2020-01-24T00:00:00", + "pnl": -7.735515680639082, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.264261049502, + "entry_time": "2020-01-26T00:00:00", + "exit_price": 99.97378019208324, + "exit_time": "2020-01-27T00:00:00", + "pnl": -29.048085741875695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43666090180685, + "entry_time": "2020-01-29T00:00:00", + "exit_price": 99.64557703864863, + "exit_time": "2020-01-30T00:00:00", + "pnl": 20.891613684177912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.41486055220747, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 99.62832834535065, + "exit_time": "2020-02-02T00:00:00", + "pnl": 21.3467793143181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.40627623062987, + "entry_time": "2020-02-04T00:00:00", + "exit_price": 98.9966907903866, + "exit_time": "2020-02-05T00:00:00", + "pnl": -40.95854402432764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.62784889129782, + "entry_time": "2020-02-07T00:00:00", + "exit_price": 98.91665393395704, + "exit_time": "2020-02-08T00:00:00", + "pnl": 28.880504265922013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20129913778622, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 99.36824311350031, + "exit_time": "2020-02-11T00:00:00", + "pnl": 16.69439757140907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.44539780996692, + "entry_time": "2020-02-13T00:00:00", + "exit_price": 99.29577808855632, + "exit_time": "2020-02-14T00:00:00", + "pnl": -14.961972141060187, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60087912978423, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 98.67646038571121, + "exit_time": "2020-02-17T00:00:00", + "pnl": 7.5581255926977065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17445140133515, + "entry_time": "2020-02-19T00:00:00", + "exit_price": 99.07045121918839, + "exit_time": "2020-02-20T00:00:00", + "pnl": -10.400018214676265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.49723620471183, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 99.5174230546468, + "exit_time": "2020-02-23T00:00:00", + "pnl": 2.0186849934972884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5413500261472, + "entry_time": "2020-02-25T00:00:00", + "exit_price": 99.47975770399327, + "exit_time": "2020-02-26T00:00:00", + "pnl": -6.1592322153927626, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.29423417091141, + "entry_time": "2020-02-28T00:00:00", + "exit_price": 99.27541464305773, + "exit_time": "2020-02-29T00:00:00", + "pnl": -1.8819527853679574, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.4392086025175, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.06079463387583, + "exit_time": "2020-03-03T00:00:00", + "pnl": -37.841396864166654, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.37828233356667, + "entry_time": "2020-03-05T00:00:00", + "exit_price": 99.30210368322795, + "exit_time": "2020-03-06T00:00:00", + "pnl": -7.617865033871851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.8891828858322, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 98.6817301819728, + "exit_time": "2020-03-09T00:00:00", + "pnl": -20.745270385940273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.39002953943762, + "entry_time": "2020-03-11T00:00:00", + "exit_price": 98.68517685658658, + "exit_time": "2020-03-12T00:00:00", + "pnl": 29.51473171489596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.65084298157255, + "entry_time": "2020-03-14T00:00:00", + "exit_price": 98.93501858046714, + "exit_time": "2020-03-15T00:00:00", + "pnl": 28.4175598894592, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.19071665014789, + "entry_time": "2020-03-17T00:00:00", + "exit_price": 99.25659603867345, + "exit_time": "2020-03-18T00:00:00", + "pnl": 6.587938852555908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36428253311259, + "entry_time": "2020-03-20T00:00:00", + "exit_price": 99.01156809266551, + "exit_time": "2020-03-21T00:00:00", + "pnl": -35.27144404470732, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31879308123833, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.40136182036203, + "exit_time": "2020-03-24T00:00:00", + "pnl": 8.25687391237011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17903686528695, + "entry_time": "2020-03-26T00:00:00", + "exit_price": 99.0619221034904, + "exit_time": "2020-03-27T00:00:00", + "pnl": -11.711476179654312, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25968317752123, + "entry_time": "2020-03-29T00:00:00", + "exit_price": 99.56379928977212, + "exit_time": "2020-03-30T00:00:00", + "pnl": 30.41161122508953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.80666495491704, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 99.94182055020374, + "exit_time": "2020-04-02T00:00:00", + "pnl": 13.515559528670451, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.92425119368045, + "entry_time": "2020-04-04T00:00:00", + "exit_price": 99.78971486194605, + "exit_time": "2020-04-05T00:00:00", + "pnl": -13.453633173439528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.23057477534162, + "entry_time": "2020-04-07T00:00:00", + "exit_price": 100.4049348801832, + "exit_time": "2020-04-08T00:00:00", + "pnl": 17.43601048415826, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.24159987362269, + "entry_time": "2020-04-10T00:00:00", + "exit_price": 100.06843389735158, + "exit_time": "2020-04-11T00:00:00", + "pnl": -17.316597627110752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.22183940097844, + "entry_time": "2020-04-13T00:00:00", + "exit_price": 99.93299182979392, + "exit_time": "2020-04-14T00:00:00", + "pnl": -28.884757118451887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91637693821662, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 100.20188970935105, + "exit_time": "2020-04-17T00:00:00", + "pnl": 28.55127711344352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.57826653579691, + "entry_time": "2020-04-19T00:00:00", + "exit_price": 100.48615354430639, + "exit_time": "2020-04-20T00:00:00", + "pnl": -9.211299149052365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.48852996658735, + "entry_time": "2020-04-22T00:00:00", + "exit_price": 100.70097560384337, + "exit_time": "2020-04-23T00:00:00", + "pnl": 21.24456372560246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.56660104606993, + "entry_time": "2020-04-25T00:00:00", + "exit_price": 100.60339517911308, + "exit_time": "2020-04-26T00:00:00", + "pnl": 3.679413304314494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5215727488348, + "entry_time": "2020-04-28T00:00:00", + "exit_price": 100.3913600319206, + "exit_time": "2020-04-29T00:00:00", + "pnl": -13.021271691420111, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.6642306539015, + "entry_time": "2020-05-01T00:00:00", + "exit_price": 100.49406633741951, + "exit_time": "2020-05-02T00:00:00", + "pnl": -17.016431648198704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64849065100934, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.63323070552582, + "exit_time": "2020-05-05T00:00:00", + "pnl": -1.5259945483521165, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88914932519062, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 100.96225788336264, + "exit_time": "2020-05-08T00:00:00", + "pnl": 7.310855817202366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.21454142458283, + "entry_time": "2020-05-10T00:00:00", + "exit_price": 101.08973549159177, + "exit_time": "2020-05-11T00:00:00", + "pnl": -12.480593299106602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.91131718633395, + "entry_time": "2020-05-13T00:00:00", + "exit_price": 100.95365272243404, + "exit_time": "2020-05-14T00:00:00", + "pnl": 4.2335536100097215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3677264483084, + "entry_time": "2020-05-16T00:00:00", + "exit_price": 100.38542382708798, + "exit_time": "2020-05-17T00:00:00", + "pnl": 1.7697378779573114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.727355594576, + "entry_time": "2020-05-19T00:00:00", + "exit_price": 99.80184598433505, + "exit_time": "2020-05-20T00:00:00", + "pnl": 7.449038975904898, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.75895482632264, + "entry_time": "2020-05-22T00:00:00", + "exit_price": 99.65309620079978, + "exit_time": "2020-05-23T00:00:00", + "pnl": -10.585862552285619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.18275486854981, + "entry_time": "2020-05-25T00:00:00", + "exit_price": 99.08066364611346, + "exit_time": "2020-05-26T00:00:00", + "pnl": -10.209122243634283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86355002974182, + "entry_time": "2020-05-28T00:00:00", + "exit_price": 98.8079829991331, + "exit_time": "2020-05-29T00:00:00", + "pnl": -5.556703060871371, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50774498473835, + "entry_time": "2020-05-31T00:00:00", + "exit_price": 98.15500147527054, + "exit_time": "2020-06-01T00:00:00", + "pnl": -35.2743509467814, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25388112126257, + "entry_time": "2020-06-03T00:00:00", + "exit_price": 98.46869004462158, + "exit_time": "2020-06-04T00:00:00", + "pnl": 21.480892335901558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.49982930970904, + "entry_time": "2020-06-06T00:00:00", + "exit_price": 98.64941137818613, + "exit_time": "2020-06-07T00:00:00", + "pnl": 14.958206847708766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08181708620197, + "entry_time": "2020-06-09T00:00:00", + "exit_price": 98.89782993828217, + "exit_time": "2020-06-10T00:00:00", + "pnl": -18.398714791979387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.34821493675021, + "entry_time": "2020-06-12T00:00:00", + "exit_price": 99.0511570084608, + "exit_time": "2020-06-13T00:00:00", + "pnl": -29.705792828940503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36636841676064, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 99.22802936588096, + "exit_time": "2020-06-16T00:00:00", + "pnl": -13.833905087967935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.13124547885464, + "entry_time": "2020-06-18T00:00:00", + "exit_price": 98.97034570188329, + "exit_time": "2020-06-19T00:00:00", + "pnl": -16.089977697134827, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84675502390374, + "entry_time": "2020-06-21T00:00:00", + "exit_price": 98.82877025439984, + "exit_time": "2020-06-22T00:00:00", + "pnl": -1.7984769503897269, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83150510044737, + "entry_time": "2020-06-24T00:00:00", + "exit_price": 98.80556016637114, + "exit_time": "2020-06-25T00:00:00", + "pnl": -2.594493407623588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.10675350799055, + "entry_time": "2020-06-27T00:00:00", + "exit_price": 98.84453919660923, + "exit_time": "2020-06-28T00:00:00", + "pnl": -26.22143113813138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88147160830762, + "entry_time": "2020-06-30T00:00:00", + "exit_price": 98.95771616416846, + "exit_time": "2020-07-01T00:00:00", + "pnl": 7.624455586083911, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25900520967261, + "entry_time": "2020-07-03T00:00:00", + "exit_price": 99.28214715432236, + "exit_time": "2020-07-04T00:00:00", + "pnl": 2.3141944649751167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.64410132782972, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 98.78845498147822, + "exit_time": "2020-07-07T00:00:00", + "pnl": 14.435365364850838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96240900085823, + "entry_time": "2020-07-09T00:00:00", + "exit_price": 99.01654413042846, + "exit_time": "2020-07-10T00:00:00", + "pnl": 5.413512957022704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08257869239384, + "entry_time": "2020-07-12T00:00:00", + "exit_price": 98.92270971634117, + "exit_time": "2020-07-13T00:00:00", + "pnl": -15.986897605266392, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9249177043285, + "entry_time": "2020-07-15T00:00:00", + "exit_price": 98.5475977762062, + "exit_time": "2020-07-16T00:00:00", + "pnl": -37.73199281222901, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85856446370276, + "entry_time": "2020-07-18T00:00:00", + "exit_price": 98.8876461806366, + "exit_time": "2020-07-19T00:00:00", + "pnl": 2.9081716933831103, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.75554506700362, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 98.4712342394787, + "exit_time": "2020-07-22T00:00:00", + "pnl": -28.431082752491932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.13596092844963, + "entry_time": "2020-07-24T00:00:00", + "exit_price": 98.29084433077668, + "exit_time": "2020-07-25T00:00:00", + "pnl": 15.488340232704445, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50946620110103, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 98.42209873300993, + "exit_time": "2020-07-28T00:00:00", + "pnl": -8.73674680911023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16470383307056, + "entry_time": "2020-07-30T00:00:00", + "exit_price": 98.10251353436806, + "exit_time": "2020-07-31T00:00:00", + "pnl": -6.219029870250381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16007736983093, + "entry_time": "2020-08-02T00:00:00", + "exit_price": 98.25346405776058, + "exit_time": "2020-08-03T00:00:00", + "pnl": 9.338668792965166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.02466944517249, + "entry_time": "2020-08-05T00:00:00", + "exit_price": 98.03234873384025, + "exit_time": "2020-08-06T00:00:00", + "pnl": 0.7679288667759465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11031617256702, + "entry_time": "2020-08-08T00:00:00", + "exit_price": 98.14530663460309, + "exit_time": "2020-08-09T00:00:00", + "pnl": 3.4990462036063263, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.44429004426568, + "entry_time": "2020-08-11T00:00:00", + "exit_price": 98.39955675926143, + "exit_time": "2020-08-12T00:00:00", + "pnl": -4.473328500425566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19954612220634, + "entry_time": "2020-08-14T00:00:00", + "exit_price": 98.33374471974878, + "exit_time": "2020-08-15T00:00:00", + "pnl": 13.419859754243646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.17850638089598, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.31970147221125, + "exit_time": "2020-08-18T00:00:00", + "pnl": 14.119509131526797, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19274532121113, + "entry_time": "2020-08-20T00:00:00", + "exit_price": 98.3840327772038, + "exit_time": "2020-08-21T00:00:00", + "pnl": 19.128745599266495, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48120231354616, + "entry_time": "2020-08-23T00:00:00", + "exit_price": 98.7121932598933, + "exit_time": "2020-08-24T00:00:00", + "pnl": 23.099094634713424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86988580253298, + "entry_time": "2020-08-26T00:00:00", + "exit_price": 98.76604202197464, + "exit_time": "2020-08-27T00:00:00", + "pnl": -10.384378055833565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.79597689506201, + "entry_time": "2020-08-29T00:00:00", + "exit_price": 98.42129188541651, + "exit_time": "2020-08-30T00:00:00", + "pnl": -37.468500964550344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67647877199742, + "entry_time": "2020-09-01T00:00:00", + "exit_price": 98.82191220927734, + "exit_time": "2020-09-02T00:00:00", + "pnl": 14.543343727991953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84470059887572, + "entry_time": "2020-09-04T00:00:00", + "exit_price": 98.72847566121298, + "exit_time": "2020-09-05T00:00:00", + "pnl": -11.622493766273578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43094423441607, + "entry_time": "2020-09-07T00:00:00", + "exit_price": 98.39808368032986, + "exit_time": "2020-09-08T00:00:00", + "pnl": -3.28605540862128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31641481415083, + "entry_time": "2020-09-10T00:00:00", + "exit_price": 98.40267706340073, + "exit_time": "2020-09-11T00:00:00", + "pnl": 8.626224924989856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60680412325432, + "entry_time": "2020-09-13T00:00:00", + "exit_price": 98.51452016846274, + "exit_time": "2020-09-14T00:00:00", + "pnl": -9.22839547915828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31471449163298, + "entry_time": "2020-09-16T00:00:00", + "exit_price": 98.43834781075664, + "exit_time": "2020-09-17T00:00:00", + "pnl": 12.363331912365538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84446638005844, + "entry_time": "2020-09-19T00:00:00", + "exit_price": 98.49607372712997, + "exit_time": "2020-09-20T00:00:00", + "pnl": -34.83926529284673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85869892480143, + "entry_time": "2020-09-22T00:00:00", + "exit_price": 98.87107213537678, + "exit_time": "2020-09-23T00:00:00", + "pnl": 1.237321057534757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83017137699973, + "entry_time": "2020-09-25T00:00:00", + "exit_price": 98.73075043509533, + "exit_time": "2020-09-26T00:00:00", + "pnl": -9.942094190439832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85446221431528, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.13025477242799, + "exit_time": "2020-09-29T00:00:00", + "pnl": 27.579255811271253, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08577867542596, + "entry_time": "2020-10-01T00:00:00", + "exit_price": 99.20567187514531, + "exit_time": "2020-10-02T00:00:00", + "pnl": 11.989319971935686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27862593574773, + "entry_time": "2020-10-04T00:00:00", + "exit_price": 99.19411735771268, + "exit_time": "2020-10-05T00:00:00", + "pnl": -8.450857803504164, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.91641070152801, + "entry_time": "2020-10-07T00:00:00", + "exit_price": 98.80020190906805, + "exit_time": "2020-10-08T00:00:00", + "pnl": -11.620879245995752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.03429888110497, + "entry_time": "2020-10-10T00:00:00", + "exit_price": 97.99059510104857, + "exit_time": "2020-10-11T00:00:00", + "pnl": -4.3703780056404185, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.12230359240208, + "entry_time": "2020-10-13T00:00:00", + "exit_price": 98.21493112615859, + "exit_time": "2020-10-14T00:00:00", + "pnl": 9.2627533756513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7362497471537, + "entry_time": "2020-10-16T00:00:00", + "exit_price": 97.90953724611552, + "exit_time": "2020-10-17T00:00:00", + "pnl": 17.32874989618125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99997604721491, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.25158859302469, + "exit_time": "2020-10-20T00:00:00", + "pnl": 25.161254580977754, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98246224229298, + "entry_time": "2020-10-22T00:00:00", + "exit_price": 98.18380160087476, + "exit_time": "2020-10-23T00:00:00", + "pnl": 20.133935858177665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.54700954481861, + "entry_time": "2020-10-25T00:00:00", + "exit_price": 98.87858935796136, + "exit_time": "2020-10-26T00:00:00", + "pnl": 33.157981314275276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.82466366840129, + "entry_time": "2020-10-28T00:00:00", + "exit_price": 98.79031352535364, + "exit_time": "2020-10-29T00:00:00", + "pnl": -3.4350143047646498, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.52782616930364, + "entry_time": "2020-10-31T00:00:00", + "exit_price": 98.71180131795903, + "exit_time": "2020-11-01T00:00:00", + "pnl": 18.39751486553922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.66862984653359, + "entry_time": "2020-11-03T00:00:00", + "exit_price": 98.94388954493733, + "exit_time": "2020-11-04T00:00:00", + "pnl": 27.525969840374387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.40172293508903, + "entry_time": "2020-11-06T00:00:00", + "exit_price": 98.27308992706585, + "exit_time": "2020-11-07T00:00:00", + "pnl": -12.863300802317212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30251070708916, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 98.36341600243385, + "exit_time": "2020-11-10T00:00:00", + "pnl": 6.090529534469624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07297082017436, + "entry_time": "2020-11-12T00:00:00", + "exit_price": 98.63576619816114, + "exit_time": "2020-11-13T00:00:00", + "pnl": 56.27953779867738, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.36545808934646, + "entry_time": "2020-11-15T00:00:00", + "exit_price": 98.425342939227, + "exit_time": "2020-11-16T00:00:00", + "pnl": 5.988484988053244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.59476724765915, + "entry_time": "2020-11-18T00:00:00", + "exit_price": 98.41575843731752, + "exit_time": "2020-11-19T00:00:00", + "pnl": -17.900881034162808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30499551372479, + "entry_time": "2020-11-21T00:00:00", + "exit_price": 98.2943417590765, + "exit_time": "2020-11-22T00:00:00", + "pnl": -1.0653754648288327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.20190364871404, + "entry_time": "2020-11-24T00:00:00", + "exit_price": 98.35429934455371, + "exit_time": "2020-11-25T00:00:00", + "pnl": 15.239569583967238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25575482738783, + "entry_time": "2020-11-27T00:00:00", + "exit_price": 98.30124986928953, + "exit_time": "2020-11-28T00:00:00", + "pnl": 4.549504190170239, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.90191386326036, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.96508444596826, + "exit_time": "2020-12-01T00:00:00", + "pnl": 6.317058270789744, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.75989432781597, + "entry_time": "2020-12-03T00:00:00", + "exit_price": 97.47851546822666, + "exit_time": "2020-12-04T00:00:00", + "pnl": -28.137885958931008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.43273982617148, + "entry_time": "2020-12-06T00:00:00", + "exit_price": 97.78073270556935, + "exit_time": "2020-12-07T00:00:00", + "pnl": 34.79928793978644, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.29707161405977, + "entry_time": "2020-12-09T00:00:00", + "exit_price": 97.17141051171173, + "exit_time": "2020-12-10T00:00:00", + "pnl": -12.56611023480474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.83897503233364, + "entry_time": "2020-12-12T00:00:00", + "exit_price": 96.92050920813638, + "exit_time": "2020-12-13T00:00:00", + "pnl": 8.153417580274436, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.39298906893524, + "entry_time": "2020-12-15T00:00:00", + "exit_price": 97.24960092613485, + "exit_time": "2020-12-16T00:00:00", + "pnl": -14.338814280039003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.15249367428707, + "entry_time": "2020-12-18T00:00:00", + "exit_price": 98.11254847884746, + "exit_time": "2020-12-19T00:00:00", + "pnl": -3.9945195439614167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6477102979142, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 97.66187174327492, + "exit_time": "2020-12-22T00:00:00", + "pnl": 1.4161445360713287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.22816086359948, + "entry_time": "2020-12-24T00:00:00", + "exit_price": 97.18924739108921, + "exit_time": "2020-12-25T00:00:00", + "pnl": -3.891347251027355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.15833017318171, + "entry_time": "2020-12-27T00:00:00", + "exit_price": 97.35388264537053, + "exit_time": "2020-12-28T00:00:00", + "pnl": 19.555247218882243, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30391448349606, + "entry_time": "2020-12-30T00:00:00", + "exit_price": 97.1765702619787, + "exit_time": "2020-12-31T00:00:00", + "pnl": -12.734422151736169, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.03923857682982, + "entry_time": "2021-01-02T00:00:00", + "exit_price": 97.14087662618776, + "exit_time": "2021-01-03T00:00:00", + "pnl": 10.163804935794474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.60285889768487, + "entry_time": "2021-01-05T00:00:00", + "exit_price": 96.71610220194758, + "exit_time": "2021-01-06T00:00:00", + "pnl": 11.32433042627099, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.43129513858887, + "entry_time": "2021-01-08T00:00:00", + "exit_price": 96.7750138677335, + "exit_time": "2021-01-09T00:00:00", + "pnl": 34.37187291446406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.5417619126041, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.26004415392279, + "exit_time": "2021-01-12T00:00:00", + "pnl": -28.17177586813102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.48237494714664, + "entry_time": "2021-01-14T00:00:00", + "exit_price": 96.58658168452075, + "exit_time": "2021-01-15T00:00:00", + "pnl": 10.420673737411335, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.75620116852377, + "entry_time": "2021-01-17T00:00:00", + "exit_price": 96.69650084660127, + "exit_time": "2021-01-18T00:00:00", + "pnl": -5.970032192250585, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.92028780826493, + "entry_time": "2021-01-20T00:00:00", + "exit_price": 95.62951533581877, + "exit_time": "2021-01-21T00:00:00", + "pnl": -29.077247244616444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.58269597074072, + "entry_time": "2021-01-23T00:00:00", + "exit_price": 95.65987379372794, + "exit_time": "2021-01-24T00:00:00", + "pnl": 7.717782298722398, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.66612454309693, + "entry_time": "2021-01-26T00:00:00", + "exit_price": 95.8169746660663, + "exit_time": "2021-01-27T00:00:00", + "pnl": 15.08501229693735, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5926039176473, + "entry_time": "2021-01-29T00:00:00", + "exit_price": 95.28582192646724, + "exit_time": "2021-01-30T00:00:00", + "pnl": -30.678199118005978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.47874410921285, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.57232514477201, + "exit_time": "2021-02-02T00:00:00", + "pnl": 9.35810355591542, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.07482838670384, + "entry_time": "2021-02-04T00:00:00", + "exit_price": 96.06329982176626, + "exit_time": "2021-02-05T00:00:00", + "pnl": -1.1528564937577812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.93964633706301, + "entry_time": "2021-02-07T00:00:00", + "exit_price": 96.02294071169972, + "exit_time": "2021-02-08T00:00:00", + "pnl": 8.329437463670786, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.73925579999096, + "entry_time": "2021-02-10T00:00:00", + "exit_price": 95.99566659891293, + "exit_time": "2021-02-11T00:00:00", + "pnl": 25.641079892197638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.99166395939717, + "entry_time": "2021-02-13T00:00:00", + "exit_price": 95.91107729961162, + "exit_time": "2021-02-14T00:00:00", + "pnl": -8.058665978555268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.35440315345551, + "entry_time": "2021-02-16T00:00:00", + "exit_price": 96.19457800884426, + "exit_time": "2021-02-17T00:00:00", + "pnl": -15.982514461124708, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87539474258334, + "entry_time": "2021-02-19T00:00:00", + "exit_price": 96.03831344319956, + "exit_time": "2021-02-20T00:00:00", + "pnl": 16.291870061621694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.84933568810729, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.942984467456, + "exit_time": "2021-02-23T00:00:00", + "pnl": 9.364877934871174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28778584744732, + "entry_time": "2021-02-25T00:00:00", + "exit_price": 95.02443267142746, + "exit_time": "2021-02-26T00:00:00", + "pnl": -26.33531760198622, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94057536205155, + "entry_time": "2021-02-28T00:00:00", + "exit_price": 94.72906200441219, + "exit_time": "2021-03-01T00:00:00", + "pnl": -21.151335763936174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38445225202611, + "entry_time": "2021-03-03T00:00:00", + "exit_price": 94.38197492987447, + "exit_time": "2021-03-04T00:00:00", + "pnl": -0.24773221516340982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18213638354725, + "entry_time": "2021-03-06T00:00:00", + "exit_price": 94.04715001455901, + "exit_time": "2021-03-07T00:00:00", + "pnl": -13.49863689882369, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19838818284391, + "entry_time": "2021-03-09T00:00:00", + "exit_price": 94.29725636974986, + "exit_time": "2021-03-10T00:00:00", + "pnl": 9.886818690594623, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23572569098852, + "entry_time": "2021-03-12T00:00:00", + "exit_price": 94.3432106471416, + "exit_time": "2021-03-13T00:00:00", + "pnl": 10.748495615308684, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46834681822006, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.39304905252162, + "exit_time": "2021-03-16T00:00:00", + "pnl": -7.529776569843705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46079241276229, + "entry_time": "2021-03-18T00:00:00", + "exit_price": 94.87391242777782, + "exit_time": "2021-03-19T00:00:00", + "pnl": 41.31200150155365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81782457593818, + "entry_time": "2021-03-21T00:00:00", + "exit_price": 94.74839547168068, + "exit_time": "2021-03-22T00:00:00", + "pnl": -6.94291042574946, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9804659897062, + "entry_time": "2021-03-24T00:00:00", + "exit_price": 95.1820620687209, + "exit_time": "2021-03-25T00:00:00", + "pnl": 20.1596079014692, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53780103937676, + "entry_time": "2021-03-27T00:00:00", + "exit_price": 94.35114383691389, + "exit_time": "2021-03-28T00:00:00", + "pnl": -18.66572024628681, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19430169329607, + "entry_time": "2021-03-30T00:00:00", + "exit_price": 94.0736265695374, + "exit_time": "2021-03-31T00:00:00", + "pnl": -12.067512375867295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.56101740773187, + "entry_time": "2021-04-02T00:00:00", + "exit_price": 94.02847405275406, + "exit_time": "2021-04-03T00:00:00", + "pnl": -53.2543354977804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02877565620591, + "entry_time": "2021-04-05T00:00:00", + "exit_price": 94.02966575553104, + "exit_time": "2021-04-06T00:00:00", + "pnl": 0.08900993251330647, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71076966315076, + "entry_time": "2021-04-08T00:00:00", + "exit_price": 93.5342590029927, + "exit_time": "2021-04-09T00:00:00", + "pnl": -17.65106601580584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87172892779671, + "entry_time": "2021-04-11T00:00:00", + "exit_price": 93.8898807030855, + "exit_time": "2021-04-12T00:00:00", + "pnl": 1.8151775288785643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75093994363492, + "entry_time": "2021-04-14T00:00:00", + "exit_price": 93.70594283596789, + "exit_time": "2021-04-15T00:00:00", + "pnl": -4.499710766702947, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83044892913243, + "entry_time": "2021-04-17T00:00:00", + "exit_price": 93.71383587412238, + "exit_time": "2021-04-18T00:00:00", + "pnl": -11.661305501004904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52870331564132, + "entry_time": "2021-04-20T00:00:00", + "exit_price": 93.68221846843574, + "exit_time": "2021-04-21T00:00:00", + "pnl": 15.35151527944123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68293629394864, + "entry_time": "2021-04-23T00:00:00", + "exit_price": 93.76185935158753, + "exit_time": "2021-04-24T00:00:00", + "pnl": 7.892305763888885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77694161620539, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.94666597863043, + "exit_time": "2021-04-27T00:00:00", + "pnl": 16.97243624250433, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09046839544106, + "entry_time": "2021-04-29T00:00:00", + "exit_price": 94.0093802192737, + "exit_time": "2021-04-30T00:00:00", + "pnl": -8.108817616736985, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7818281411755, + "entry_time": "2021-05-02T00:00:00", + "exit_price": 93.75541337031265, + "exit_time": "2021-05-03T00:00:00", + "pnl": -2.641477086284283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72371690451082, + "entry_time": "2021-05-05T00:00:00", + "exit_price": 93.60849664049482, + "exit_time": "2021-05-06T00:00:00", + "pnl": -11.522026401600272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94340121095276, + "entry_time": "2021-05-08T00:00:00", + "exit_price": 93.85028148090369, + "exit_time": "2021-05-09T00:00:00", + "pnl": -9.311973004906804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7183641880944, + "entry_time": "2021-05-11T00:00:00", + "exit_price": 93.93201467581261, + "exit_time": "2021-05-12T00:00:00", + "pnl": 21.365048771821193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66005037144768, + "entry_time": "2021-05-14T00:00:00", + "exit_price": 93.71003338575711, + "exit_time": "2021-05-15T00:00:00", + "pnl": 4.998301430943286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64414870400898, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 93.73370138654631, + "exit_time": "2021-05-18T00:00:00", + "pnl": 8.955268253733095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5147503132911, + "entry_time": "2021-05-20T00:00:00", + "exit_price": 93.60797476194675, + "exit_time": "2021-05-21T00:00:00", + "pnl": 9.322444865564705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42059367470232, + "entry_time": "2021-05-23T00:00:00", + "exit_price": 93.66628705381636, + "exit_time": "2021-05-24T00:00:00", + "pnl": 24.569337911404432, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53531464201515, + "entry_time": "2021-05-26T00:00:00", + "exit_price": 93.2030497935449, + "exit_time": "2021-05-27T00:00:00", + "pnl": -33.22648484702455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62268440600192, + "entry_time": "2021-05-29T00:00:00", + "exit_price": 92.91948342162647, + "exit_time": "2021-05-30T00:00:00", + "pnl": 29.679901562454347, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67919849510082, + "entry_time": "2021-06-01T00:00:00", + "exit_price": 92.43887673234494, + "exit_time": "2021-06-02T00:00:00", + "pnl": -24.032176275588313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.17984056111294, + "entry_time": "2021-06-04T00:00:00", + "exit_price": 91.94368190633774, + "exit_time": "2021-06-05T00:00:00", + "pnl": -23.61586547751955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.11465699863811, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.97059505880482, + "exit_time": "2021-06-08T00:00:00", + "pnl": -14.406193983329274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29459604644767, + "entry_time": "2021-06-10T00:00:00", + "exit_price": 92.53931157007439, + "exit_time": "2021-06-11T00:00:00", + "pnl": 24.471552362672355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49631090115352, + "entry_time": "2021-06-13T00:00:00", + "exit_price": 92.52393358151217, + "exit_time": "2021-06-14T00:00:00", + "pnl": 2.762268035864679, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66942128922241, + "entry_time": "2021-06-16T00:00:00", + "exit_price": 92.4946582273999, + "exit_time": "2021-06-17T00:00:00", + "pnl": -17.476306182251733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2942483479133, + "entry_time": "2021-06-19T00:00:00", + "exit_price": 92.07603918687664, + "exit_time": "2021-06-20T00:00:00", + "pnl": -21.82091610366541, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.33479567014805, + "entry_time": "2021-06-22T00:00:00", + "exit_price": 92.14550463966849, + "exit_time": "2021-06-23T00:00:00", + "pnl": -18.92910304795663, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9928646204638, + "entry_time": "2021-06-25T00:00:00", + "exit_price": 91.96872153502625, + "exit_time": "2021-06-26T00:00:00", + "pnl": -2.4143085437557943, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87705988155102, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.53452507075421, + "exit_time": "2021-06-29T00:00:00", + "pnl": -34.253481079680625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.56396146367425, + "entry_time": "2021-07-01T00:00:00", + "exit_price": 91.59385740536969, + "exit_time": "2021-07-02T00:00:00", + "pnl": 2.9895941695443184, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64213975217385, + "entry_time": "2021-07-04T00:00:00", + "exit_price": 91.78882758292927, + "exit_time": "2021-07-05T00:00:00", + "pnl": 14.668783075542535, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63683672368548, + "entry_time": "2021-07-07T00:00:00", + "exit_price": 91.48470633760584, + "exit_time": "2021-07-08T00:00:00", + "pnl": -15.21303860796337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39062489567554, + "entry_time": "2021-07-10T00:00:00", + "exit_price": 91.494696351115, + "exit_time": "2021-07-11T00:00:00", + "pnl": 10.407145543945262, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93573503075692, + "entry_time": "2021-07-13T00:00:00", + "exit_price": 90.98885415853535, + "exit_time": "2021-07-14T00:00:00", + "pnl": 5.31191277784302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06245234985892, + "entry_time": "2021-07-16T00:00:00", + "exit_price": 91.0289821017493, + "exit_time": "2021-07-17T00:00:00", + "pnl": -3.3470248109608747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22900373831217, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.3157346032948, + "exit_time": "2021-07-20T00:00:00", + "pnl": 8.673086498262705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59973514861234, + "entry_time": "2021-07-22T00:00:00", + "exit_price": 91.77086454804387, + "exit_time": "2021-07-23T00:00:00", + "pnl": 17.11293994315355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82096590563263, + "entry_time": "2021-07-25T00:00:00", + "exit_price": 91.95769963997635, + "exit_time": "2021-07-26T00:00:00", + "pnl": 13.673373434372138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.21106339352883, + "entry_time": "2021-07-28T00:00:00", + "exit_price": 92.07551182524406, + "exit_time": "2021-07-29T00:00:00", + "pnl": -13.555156828476811, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09759300944572, + "entry_time": "2021-07-31T00:00:00", + "exit_price": 92.33359941396125, + "exit_time": "2021-08-01T00:00:00", + "pnl": 23.600640451553545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2288848699624, + "entry_time": "2021-08-03T00:00:00", + "exit_price": 92.2069451450579, + "exit_time": "2021-08-04T00:00:00", + "pnl": -2.1939724904498803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46522997402728, + "entry_time": "2021-08-06T00:00:00", + "exit_price": 92.63157812424986, + "exit_time": "2021-08-07T00:00:00", + "pnl": 16.6348150222575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92215275507255, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 92.81904355011355, + "exit_time": "2021-08-10T00:00:00", + "pnl": -10.310920495899722, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34536862719393, + "entry_time": "2021-08-12T00:00:00", + "exit_price": 93.4540782896955, + "exit_time": "2021-08-13T00:00:00", + "pnl": 10.870966250156755, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65179701007457, + "entry_time": "2021-08-15T00:00:00", + "exit_price": 93.58231165488735, + "exit_time": "2021-08-16T00:00:00", + "pnl": -6.948535518722565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59222373899847, + "entry_time": "2021-08-18T00:00:00", + "exit_price": 93.41076247699506, + "exit_time": "2021-08-19T00:00:00", + "pnl": -18.146126200340973, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57987210255567, + "entry_time": "2021-08-21T00:00:00", + "exit_price": 93.93696117180936, + "exit_time": "2021-08-22T00:00:00", + "pnl": 35.70890692536892, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88875391692817, + "entry_time": "2021-08-24T00:00:00", + "exit_price": 93.67494277755462, + "exit_time": "2021-08-25T00:00:00", + "pnl": -21.381113937354712, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99358787892747, + "entry_time": "2021-08-27T00:00:00", + "exit_price": 93.07975990716614, + "exit_time": "2021-08-28T00:00:00", + "pnl": 8.617202823866421, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07047992178704, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.33559891886243, + "exit_time": "2021-08-31T00:00:00", + "pnl": 26.511899707539044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59225467831385, + "entry_time": "2021-09-02T00:00:00", + "exit_price": 93.63479260217548, + "exit_time": "2021-09-03T00:00:00", + "pnl": 4.253792386163013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80334597318696, + "entry_time": "2021-09-05T00:00:00", + "exit_price": 93.98346554786147, + "exit_time": "2021-09-06T00:00:00", + "pnl": 18.011957467450657, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92321614880655, + "entry_time": "2021-09-08T00:00:00", + "exit_price": 93.83699346593512, + "exit_time": "2021-09-09T00:00:00", + "pnl": -8.622268287142276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93109508241774, + "entry_time": "2021-09-11T00:00:00", + "exit_price": 93.96354668527802, + "exit_time": "2021-09-12T00:00:00", + "pnl": 3.245160286027726, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08641930356686, + "entry_time": "2021-09-14T00:00:00", + "exit_price": 94.23768236549668, + "exit_time": "2021-09-15T00:00:00", + "pnl": 15.126306192982497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08211844013991, + "entry_time": "2021-09-17T00:00:00", + "exit_price": 94.20846159911048, + "exit_time": "2021-09-18T00:00:00", + "pnl": 12.634315897057036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.13954155854589, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 93.89054598561034, + "exit_time": "2021-09-21T00:00:00", + "pnl": -24.899557293554153, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11646823351487, + "entry_time": "2021-09-23T00:00:00", + "exit_price": 94.10168176297485, + "exit_time": "2021-09-24T00:00:00", + "pnl": -1.4786470540016694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30038009222437, + "entry_time": "2021-09-26T00:00:00", + "exit_price": 94.41339845504724, + "exit_time": "2021-09-27T00:00:00", + "pnl": 11.30183628228707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10852951715279, + "entry_time": "2021-09-29T00:00:00", + "exit_price": 93.84680988625497, + "exit_time": "2021-09-30T00:00:00", + "pnl": -26.171963089781514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00138088356287, + "entry_time": "2021-10-02T00:00:00", + "exit_price": 94.04342924144086, + "exit_time": "2021-10-03T00:00:00", + "pnl": 4.2048357877988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01673785551607, + "entry_time": "2021-10-05T00:00:00", + "exit_price": 93.8508081374985, + "exit_time": "2021-10-06T00:00:00", + "pnl": -16.592971801756562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87089994615239, + "entry_time": "2021-10-08T00:00:00", + "exit_price": 93.9378403552245, + "exit_time": "2021-10-09T00:00:00", + "pnl": 6.694040907210308, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05201413714097, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.0235397935625, + "exit_time": "2021-10-12T00:00:00", + "pnl": -2.8474343578466232, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26517251606933, + "entry_time": "2021-10-14T00:00:00", + "exit_price": 94.15470785076896, + "exit_time": "2021-10-15T00:00:00", + "pnl": -11.04646653003698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4932600250258, + "entry_time": "2021-10-17T00:00:00", + "exit_price": 94.51252060274227, + "exit_time": "2021-10-18T00:00:00", + "pnl": 1.9260577716465832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53140073996916, + "entry_time": "2021-10-20T00:00:00", + "exit_price": 94.90203063702091, + "exit_time": "2021-10-21T00:00:00", + "pnl": 37.06298970517565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26191114348926, + "entry_time": "2021-10-23T00:00:00", + "exit_price": 94.0634456423351, + "exit_time": "2021-10-24T00:00:00", + "pnl": -19.84655011541605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43521818420996, + "entry_time": "2021-10-26T00:00:00", + "exit_price": 94.38568536751181, + "exit_time": "2021-10-27T00:00:00", + "pnl": -4.953281669814658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21262216293847, + "entry_time": "2021-10-29T00:00:00", + "exit_price": 94.23411145607675, + "exit_time": "2021-10-30T00:00:00", + "pnl": 2.1489293138273524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82330133886903, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 93.61660062265747, + "exit_time": "2021-11-02T00:00:00", + "pnl": -20.670071621155728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71484163940588, + "entry_time": "2021-11-04T00:00:00", + "exit_price": 93.72855192282307, + "exit_time": "2021-11-05T00:00:00", + "pnl": 1.3710283417196933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36926429851582, + "entry_time": "2021-11-07T00:00:00", + "exit_price": 93.37837200951205, + "exit_time": "2021-11-08T00:00:00", + "pnl": 0.9107710996232754, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19352686807355, + "entry_time": "2021-11-10T00:00:00", + "exit_price": 93.28024660066703, + "exit_time": "2021-11-11T00:00:00", + "pnl": 8.671973259347965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9638468574369, + "entry_time": "2021-11-13T00:00:00", + "exit_price": 93.14877036790756, + "exit_time": "2021-11-14T00:00:00", + "pnl": 18.49235104706537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09572264391801, + "entry_time": "2021-11-16T00:00:00", + "exit_price": 92.53876217367774, + "exit_time": "2021-11-17T00:00:00", + "pnl": -55.696047024026996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.64617178108719, + "entry_time": "2021-11-19T00:00:00", + "exit_price": 92.85422093876446, + "exit_time": "2021-11-20T00:00:00", + "pnl": 20.804915767726584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6092442220808, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 92.52724603055836, + "exit_time": "2021-11-23T00:00:00", + "pnl": -8.199819152244459, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46494136842416, + "entry_time": "2021-11-25T00:00:00", + "exit_price": 92.44406941275119, + "exit_time": "2021-11-26T00:00:00", + "pnl": -2.0871955672973286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32264147745168, + "entry_time": "2021-11-28T00:00:00", + "exit_price": 92.0360221167863, + "exit_time": "2021-11-29T00:00:00", + "pnl": -28.661936066538374, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01384655286364, + "entry_time": "2021-12-01T00:00:00", + "exit_price": 91.97262653583181, + "exit_time": "2021-12-02T00:00:00", + "pnl": -4.122001703183287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.28024889847717, + "entry_time": "2021-12-04T00:00:00", + "exit_price": 91.96758302287454, + "exit_time": "2021-12-05T00:00:00", + "pnl": -31.266587560263304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25528568314509, + "entry_time": "2021-12-07T00:00:00", + "exit_price": 92.20092793334622, + "exit_time": "2021-12-08T00:00:00", + "pnl": -5.435774979886787, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49508373939166, + "entry_time": "2021-12-10T00:00:00", + "exit_price": 92.73466658206335, + "exit_time": "2021-12-11T00:00:00", + "pnl": 23.95828426716946, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46436704586412, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.69111891541637, + "exit_time": "2021-12-14T00:00:00", + "pnl": 22.675186955224547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21128313549013, + "entry_time": "2021-12-16T00:00:00", + "exit_price": 93.37756823246967, + "exit_time": "2021-12-17T00:00:00", + "pnl": 16.628509697953575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04218716563327, + "entry_time": "2021-12-19T00:00:00", + "exit_price": 93.00014735551822, + "exit_time": "2021-12-20T00:00:00", + "pnl": -4.203981011504254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.93318531635458, + "entry_time": "2021-12-22T00:00:00", + "exit_price": 92.84116622880475, + "exit_time": "2021-12-23T00:00:00", + "pnl": -9.201908754982924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50637869144558, + "entry_time": "2021-12-25T00:00:00", + "exit_price": 92.66826656058106, + "exit_time": "2021-12-26T00:00:00", + "pnl": 16.18878691354837, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36257300920573, + "entry_time": "2021-12-28T00:00:00", + "exit_price": 92.60779676375832, + "exit_time": "2021-12-29T00:00:00", + "pnl": 24.522375455258327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36220969555443, + "entry_time": "2021-12-31T00:00:00", + "exit_price": 92.1193839744838, + "exit_time": "2022-01-01T00:00:00", + "pnl": -24.28257210706306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89096232869592, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.75394086603562, + "exit_time": "2022-01-04T00:00:00", + "pnl": -13.702146266030013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.10653141004636, + "entry_time": "2022-01-06T00:00:00", + "exit_price": 91.98502552303084, + "exit_time": "2022-01-07T00:00:00", + "pnl": -12.150588701551612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03115476672883, + "entry_time": "2022-01-09T00:00:00", + "exit_price": 92.05866288388766, + "exit_time": "2022-01-10T00:00:00", + "pnl": 2.750811715883117, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.80506699745925, + "entry_time": "2022-01-12T00:00:00", + "exit_price": 91.97004409317438, + "exit_time": "2022-01-13T00:00:00", + "pnl": 16.49770957151304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.3933991191183, + "entry_time": "2022-01-15T00:00:00", + "exit_price": 91.28070286679336, + "exit_time": "2022-01-16T00:00:00", + "pnl": -11.269625232493752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74175784445059, + "entry_time": "2022-01-18T00:00:00", + "exit_price": 91.6733758391721, + "exit_time": "2022-01-19T00:00:00", + "pnl": -6.838200527849381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81901224922302, + "entry_time": "2022-01-21T00:00:00", + "exit_price": 91.84844274508458, + "exit_time": "2022-01-22T00:00:00", + "pnl": 2.9430495861561212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.60313885279771, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.41938832519848, + "exit_time": "2022-01-25T00:00:00", + "pnl": -18.375052759922994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64052127057325, + "entry_time": "2022-01-27T00:00:00", + "exit_price": 91.54200410559555, + "exit_time": "2022-01-28T00:00:00", + "pnl": -9.851716497769303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73590345101391, + "entry_time": "2022-01-30T00:00:00", + "exit_price": 91.62782637305553, + "exit_time": "2022-01-31T00:00:00", + "pnl": -10.80770779583844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79185882856454, + "entry_time": "2022-02-02T00:00:00", + "exit_price": 91.8357946573913, + "exit_time": "2022-02-03T00:00:00", + "pnl": 4.393582882676128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79563500808236, + "entry_time": "2022-02-05T00:00:00", + "exit_price": 92.09144139124615, + "exit_time": "2022-02-06T00:00:00", + "pnl": 29.580638316379293, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.91260250945975, + "entry_time": "2022-02-08T00:00:00", + "exit_price": 91.67552176869381, + "exit_time": "2022-02-09T00:00:00", + "pnl": -23.708074076593277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66062267455895, + "entry_time": "2022-02-11T00:00:00", + "exit_price": 91.64149069106048, + "exit_time": "2022-02-12T00:00:00", + "pnl": -1.913198349846823, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37359630109036, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.51652219716766, + "exit_time": "2022-02-15T00:00:00", + "pnl": 14.292589607730122, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.54575759654935, + "entry_time": "2022-02-17T00:00:00", + "exit_price": 91.58821852619887, + "exit_time": "2022-02-18T00:00:00", + "pnl": 4.246092964952197, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76782809841714, + "entry_time": "2022-02-20T00:00:00", + "exit_price": 91.6119124553235, + "exit_time": "2022-02-21T00:00:00", + "pnl": -15.591564309363548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74629736846254, + "entry_time": "2022-02-23T00:00:00", + "exit_price": 91.61327551923173, + "exit_time": "2022-02-24T00:00:00", + "pnl": -13.302184923080063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.32896871135786, + "entry_time": "2022-02-26T00:00:00", + "exit_price": 91.13780861275266, + "exit_time": "2022-02-27T00:00:00", + "pnl": -19.11600986051951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12507835931243, + "entry_time": "2022-03-01T00:00:00", + "exit_price": 91.13114200203424, + "exit_time": "2022-03-02T00:00:00", + "pnl": 0.6063642721812812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37230639398891, + "entry_time": "2022-03-04T00:00:00", + "exit_price": 91.298526480022, + "exit_time": "2022-03-05T00:00:00", + "pnl": -7.37799139669022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14580661294434, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.26371087049277, + "exit_time": "2022-03-08T00:00:00", + "pnl": 11.79042575484317, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.19265250778471, + "entry_time": "2022-03-10T00:00:00", + "exit_price": 91.34688434505053, + "exit_time": "2022-03-11T00:00:00", + "pnl": 15.423183726581158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.27944969864926, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 91.00376526097061, + "exit_time": "2022-03-14T00:00:00", + "pnl": -27.568443767864892, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12691845430324, + "entry_time": "2022-03-16T00:00:00", + "exit_price": 91.13627424638673, + "exit_time": "2022-03-17T00:00:00", + "pnl": 0.9355792083496794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.90552697963444, + "entry_time": "2022-03-19T00:00:00", + "exit_price": 90.86432013057937, + "exit_time": "2022-03-20T00:00:00", + "pnl": -4.1206849055072325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88314466139805, + "entry_time": "2022-03-22T00:00:00", + "exit_price": 90.85684478131836, + "exit_time": "2022-03-23T00:00:00", + "pnl": -2.629988007969075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8333575750649, + "entry_time": "2022-03-25T00:00:00", + "exit_price": 90.87580958070879, + "exit_time": "2022-03-26T00:00:00", + "pnl": 4.245200564389506, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87723690769735, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.02118341969194, + "exit_time": "2022-03-29T00:00:00", + "pnl": 14.394651199458508, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14559411024791, + "entry_time": "2022-03-31T00:00:00", + "exit_price": 91.1102070847533, + "exit_time": "2022-04-01T00:00:00", + "pnl": -3.5387025494614477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.03652679668626, + "entry_time": "2022-04-03T00:00:00", + "exit_price": 90.64848582455738, + "exit_time": "2022-04-04T00:00:00", + "pnl": -38.80409721288771, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.5160908672533, + "entry_time": "2022-04-06T00:00:00", + "exit_price": 90.67122680039915, + "exit_time": "2022-04-07T00:00:00", + "pnl": 15.513593314585705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49638519206742, + "entry_time": "2022-04-09T00:00:00", + "exit_price": 90.23851904732544, + "exit_time": "2022-04-10T00:00:00", + "pnl": -25.78661447419819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.12623758622358, + "entry_time": "2022-04-12T00:00:00", + "exit_price": 90.13616044249197, + "exit_time": "2022-04-13T00:00:00", + "pnl": 0.9922856268389069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.97730849654188, + "entry_time": "2022-04-15T00:00:00", + "exit_price": 89.93950245741028, + "exit_time": "2022-04-16T00:00:00", + "pnl": -3.7806039131595526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.92103698222829, + "entry_time": "2022-04-18T00:00:00", + "exit_price": 89.92708766921471, + "exit_time": "2022-04-19T00:00:00", + "pnl": 0.6050686986426967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.318742774315, + "entry_time": "2022-04-21T00:00:00", + "exit_price": 90.23642124916759, + "exit_time": "2022-04-22T00:00:00", + "pnl": -8.232152514740676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.21999028274803, + "entry_time": "2022-04-24T00:00:00", + "exit_price": 90.22126197659611, + "exit_time": "2022-04-25T00:00:00", + "pnl": 0.12716938480821227, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84560909030803, + "entry_time": "2022-04-27T00:00:00", + "exit_price": 90.53569591871245, + "exit_time": "2022-04-28T00:00:00", + "pnl": -30.991317159558207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0165686304024, + "entry_time": "2022-04-30T00:00:00", + "exit_price": 90.91735297539282, + "exit_time": "2022-05-01T00:00:00", + "pnl": -9.921565500958707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23908301563729, + "entry_time": "2022-05-03T00:00:00", + "exit_price": 91.14925296519219, + "exit_time": "2022-05-04T00:00:00", + "pnl": -8.98300504451015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22089116397768, + "entry_time": "2022-05-06T00:00:00", + "exit_price": 90.87029928541635, + "exit_time": "2022-05-07T00:00:00", + "pnl": -35.05918785613318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89974631246403, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.06863681183862, + "exit_time": "2022-05-10T00:00:00", + "pnl": 16.889049937458367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.57589026049908, + "entry_time": "2022-05-12T00:00:00", + "exit_price": 91.50862549547844, + "exit_time": "2022-05-13T00:00:00", + "pnl": -6.726476502063861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62801821971621, + "entry_time": "2022-05-15T00:00:00", + "exit_price": 91.81567744205196, + "exit_time": "2022-05-16T00:00:00", + "pnl": 18.76592223357534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.33854066905738, + "entry_time": "2022-05-18T00:00:00", + "exit_price": 90.96569574948703, + "exit_time": "2022-05-19T00:00:00", + "pnl": -37.28449195703547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07274851876404, + "entry_time": "2022-05-21T00:00:00", + "exit_price": 90.95622489428452, + "exit_time": "2022-05-22T00:00:00", + "pnl": -11.652362447952669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.7205106927609, + "entry_time": "2022-05-24T00:00:00", + "exit_price": 90.55232295814028, + "exit_time": "2022-05-25T00:00:00", + "pnl": -16.818773462061642, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.40473126616526, + "entry_time": "2022-05-27T00:00:00", + "exit_price": 90.65640141611814, + "exit_time": "2022-05-28T00:00:00", + "pnl": 25.16701499528864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56665701011867, + "entry_time": "2022-05-30T00:00:00", + "exit_price": 90.46095751045398, + "exit_time": "2022-05-31T00:00:00", + "pnl": -10.569949966469494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.76022002087706, + "entry_time": "2022-06-02T00:00:00", + "exit_price": 90.81381751472117, + "exit_time": "2022-06-03T00:00:00", + "pnl": 5.359749384410861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23375682446748, + "entry_time": "2022-06-05T00:00:00", + "exit_price": 91.01190578025698, + "exit_time": "2022-06-06T00:00:00", + "pnl": -22.185104421049573, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56046438309357, + "entry_time": "2022-06-08T00:00:00", + "exit_price": 90.6501420569037, + "exit_time": "2022-06-09T00:00:00", + "pnl": 8.967767381012948, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45985538510017, + "entry_time": "2022-06-11T00:00:00", + "exit_price": 90.32205823485288, + "exit_time": "2022-06-12T00:00:00", + "pnl": -13.779715024729455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.4213362857644, + "entry_time": "2022-06-14T00:00:00", + "exit_price": 90.3254460973393, + "exit_time": "2022-06-15T00:00:00", + "pnl": -9.5890188425102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.3632620077688, + "entry_time": "2022-06-17T00:00:00", + "exit_price": 90.1350438366559, + "exit_time": "2022-06-18T00:00:00", + "pnl": -22.821817111289988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.53738507774712, + "entry_time": "2022-06-20T00:00:00", + "exit_price": 90.43902960493799, + "exit_time": "2022-06-21T00:00:00", + "pnl": -9.835547280913204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28282897059066, + "entry_time": "2022-06-23T00:00:00", + "exit_price": 90.42427634098117, + "exit_time": "2022-06-24T00:00:00", + "pnl": 14.14473703905088, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.65923583486823, + "entry_time": "2022-06-26T00:00:00", + "exit_price": 90.60873415539405, + "exit_time": "2022-06-27T00:00:00", + "pnl": -5.0501679474180605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.39024714619487, + "entry_time": "2022-06-29T00:00:00", + "exit_price": 90.66523349021156, + "exit_time": "2022-06-30T00:00:00", + "pnl": 27.49863440166962, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82876323237488, + "entry_time": "2022-07-02T00:00:00", + "exit_price": 90.97466728886246, + "exit_time": "2022-07-03T00:00:00", + "pnl": 14.590405648758065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89452843928451, + "entry_time": "2022-07-05T00:00:00", + "exit_price": 90.67041116090726, + "exit_time": "2022-07-06T00:00:00", + "pnl": -22.411727837724982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63870699300467, + "entry_time": "2022-07-08T00:00:00", + "exit_price": 90.60806866533521, + "exit_time": "2022-07-09T00:00:00", + "pnl": -3.0638327669464616, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09022889967974, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 91.33132395141395, + "exit_time": "2022-07-12T00:00:00", + "pnl": 24.109505173420587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1422566167072, + "entry_time": "2022-07-14T00:00:00", + "exit_price": 91.02336448195068, + "exit_time": "2022-07-15T00:00:00", + "pnl": -11.889213475652127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.85171345155103, + "entry_time": "2022-07-17T00:00:00", + "exit_price": 90.92826438920278, + "exit_time": "2022-07-18T00:00:00", + "pnl": 7.65509376517457, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.99679364605882, + "entry_time": "2022-07-20T00:00:00", + "exit_price": 91.02558962193989, + "exit_time": "2022-07-21T00:00:00", + "pnl": 2.8795975881067193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86654130293296, + "entry_time": "2022-07-23T00:00:00", + "exit_price": 91.1805076876075, + "exit_time": "2022-07-24T00:00:00", + "pnl": 31.396638467454352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20590970247866, + "entry_time": "2022-07-26T00:00:00", + "exit_price": 91.04093233048125, + "exit_time": "2022-07-27T00:00:00", + "pnl": -16.497737199740925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.94025278141096, + "entry_time": "2022-07-29T00:00:00", + "exit_price": 91.1695372755258, + "exit_time": "2022-07-30T00:00:00", + "pnl": 22.928449411483598, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55006804279205, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.74946747581956, + "exit_time": "2022-08-02T00:00:00", + "pnl": 19.939943302750862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.08829699168929, + "entry_time": "2022-08-04T00:00:00", + "exit_price": 92.17204398025235, + "exit_time": "2022-08-05T00:00:00", + "pnl": 8.374698856306395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82928257766984, + "entry_time": "2022-08-07T00:00:00", + "exit_price": 91.80555288724541, + "exit_time": "2022-08-08T00:00:00", + "pnl": -2.3729690424431737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03756487304749, + "entry_time": "2022-08-10T00:00:00", + "exit_price": 91.92246232242579, + "exit_time": "2022-08-11T00:00:00", + "pnl": -11.51025506216996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12455329081939, + "entry_time": "2022-08-13T00:00:00", + "exit_price": 92.03614640032846, + "exit_time": "2022-08-14T00:00:00", + "pnl": -8.840689049092987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43863634543025, + "entry_time": "2022-08-16T00:00:00", + "exit_price": 92.57880144701099, + "exit_time": "2022-08-17T00:00:00", + "pnl": 14.016510158073459, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56629976489471, + "entry_time": "2022-08-19T00:00:00", + "exit_price": 92.63602712862732, + "exit_time": "2022-08-20T00:00:00", + "pnl": 6.972736373261057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99359531127284, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.20326657631179, + "exit_time": "2022-08-23T00:00:00", + "pnl": 20.967126503894917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36371229951278, + "entry_time": "2022-08-25T00:00:00", + "exit_price": 93.15013947578183, + "exit_time": "2022-08-26T00:00:00", + "pnl": -21.357282373095643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39786147444197, + "entry_time": "2022-08-28T00:00:00", + "exit_price": 93.32525340472, + "exit_time": "2022-08-29T00:00:00", + "pnl": -7.260806972196576, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1699951830038, + "entry_time": "2022-08-31T00:00:00", + "exit_price": 92.94415449917722, + "exit_time": "2022-09-01T00:00:00", + "pnl": -22.584068382658984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06237685823791, + "entry_time": "2022-09-03T00:00:00", + "exit_price": 92.88599230986543, + "exit_time": "2022-09-04T00:00:00", + "pnl": -17.63845483724822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09341138541603, + "entry_time": "2022-09-06T00:00:00", + "exit_price": 93.29146577709628, + "exit_time": "2022-09-07T00:00:00", + "pnl": 19.805439168024463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.45209900958335, + "entry_time": "2022-09-09T00:00:00", + "exit_price": 93.38892182999521, + "exit_time": "2022-09-10T00:00:00", + "pnl": -6.317717958813773, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42662435004, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 93.86711355565461, + "exit_time": "2022-09-13T00:00:00", + "pnl": 44.0489205614611, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43026737045712, + "entry_time": "2022-09-15T00:00:00", + "exit_price": 94.68555551249223, + "exit_time": "2022-09-16T00:00:00", + "pnl": 25.528814203511274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.34275603824344, + "entry_time": "2022-09-18T00:00:00", + "exit_price": 94.26115762602807, + "exit_time": "2022-09-19T00:00:00", + "pnl": -8.159841221537079, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81665975574816, + "entry_time": "2022-09-21T00:00:00", + "exit_price": 94.69084237577945, + "exit_time": "2022-09-22T00:00:00", + "pnl": -12.581737996870856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.80375023000443, + "entry_time": "2022-09-24T00:00:00", + "exit_price": 94.71118042427594, + "exit_time": "2022-09-25T00:00:00", + "pnl": -9.25698057284876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46412500503037, + "entry_time": "2022-09-27T00:00:00", + "exit_price": 94.6314533607136, + "exit_time": "2022-09-28T00:00:00", + "pnl": 16.73283556832388, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6742741594175, + "entry_time": "2022-09-30T00:00:00", + "exit_price": 94.69072074935896, + "exit_time": "2022-10-01T00:00:00", + "pnl": 1.6446589941466527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.12667461230008, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 94.99949417466048, + "exit_time": "2022-10-04T00:00:00", + "pnl": -12.718043763959486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92543412582965, + "entry_time": "2022-10-06T00:00:00", + "exit_price": 94.72977842157017, + "exit_time": "2022-10-07T00:00:00", + "pnl": -19.565570425947953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5701038761525, + "entry_time": "2022-10-09T00:00:00", + "exit_price": 94.59977663872266, + "exit_time": "2022-10-10T00:00:00", + "pnl": 2.967276257015783, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29273313619652, + "entry_time": "2022-10-12T00:00:00", + "exit_price": 94.40263092608106, + "exit_time": "2022-10-13T00:00:00", + "pnl": 10.98977898845419, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28632878234235, + "entry_time": "2022-10-15T00:00:00", + "exit_price": 94.53250654562353, + "exit_time": "2022-10-16T00:00:00", + "pnl": 24.61777632811817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49417223286694, + "entry_time": "2022-10-18T00:00:00", + "exit_price": 94.21737477440588, + "exit_time": "2022-10-19T00:00:00", + "pnl": -27.67974584610613, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21700275153675, + "entry_time": "2022-10-21T00:00:00", + "exit_price": 94.24257812297434, + "exit_time": "2022-10-22T00:00:00", + "pnl": 2.5575371437582817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33447437173405, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.36500808099656, + "exit_time": "2022-10-25T00:00:00", + "pnl": 3.0533709262513753, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62192540785215, + "entry_time": "2022-10-27T00:00:00", + "exit_price": 94.95467067184597, + "exit_time": "2022-10-28T00:00:00", + "pnl": 33.274526399382864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32280422773096, + "entry_time": "2022-10-30T00:00:00", + "exit_price": 95.27797141913928, + "exit_time": "2022-10-31T00:00:00", + "pnl": -4.483280859167849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.85159096418194, + "entry_time": "2022-11-02T00:00:00", + "exit_price": 95.9332147424965, + "exit_time": "2022-11-03T00:00:00", + "pnl": 8.162377831456524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87171080557965, + "entry_time": "2022-11-05T00:00:00", + "exit_price": 95.72359330386428, + "exit_time": "2022-11-06T00:00:00", + "pnl": -14.811750171537597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38266657654839, + "entry_time": "2022-11-08T00:00:00", + "exit_price": 95.28429001378173, + "exit_time": "2022-11-09T00:00:00", + "pnl": -9.837656276665996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01211175536164, + "entry_time": "2022-11-11T00:00:00", + "exit_price": 94.84310882657518, + "exit_time": "2022-11-12T00:00:00", + "pnl": -16.900292878646894, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.59049236660377, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.35514007446828, + "exit_time": "2022-11-15T00:00:00", + "pnl": -23.535229213548803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9357580237877, + "entry_time": "2022-11-17T00:00:00", + "exit_price": 94.05072699188574, + "exit_time": "2022-11-18T00:00:00", + "pnl": 11.496896809804014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00889117962726, + "entry_time": "2022-11-20T00:00:00", + "exit_price": 94.18219892584725, + "exit_time": "2022-11-21T00:00:00", + "pnl": 17.330774621999012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96556912199465, + "entry_time": "2022-11-23T00:00:00", + "exit_price": 93.87607469195584, + "exit_time": "2022-11-24T00:00:00", + "pnl": -8.949443003881186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60138099475903, + "entry_time": "2022-11-26T00:00:00", + "exit_price": 93.55643441032785, + "exit_time": "2022-11-27T00:00:00", + "pnl": -4.494658443117316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88066522817982, + "entry_time": "2022-11-29T00:00:00", + "exit_price": 93.67510822228188, + "exit_time": "2022-11-30T00:00:00", + "pnl": -20.555700589794412, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69837663925773, + "entry_time": "2022-12-02T00:00:00", + "exit_price": 93.91860336977558, + "exit_time": "2022-12-03T00:00:00", + "pnl": 22.02267305178509, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.70107216756422, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.66971331829183, + "exit_time": "2022-12-06T00:00:00", + "pnl": -3.135884927239374, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87708149049162, + "entry_time": "2022-12-08T00:00:00", + "exit_price": 93.72163687944706, + "exit_time": "2022-12-09T00:00:00", + "pnl": -15.54446110445582, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94898877051006, + "entry_time": "2022-12-11T00:00:00", + "exit_price": 93.95474043698636, + "exit_time": "2022-12-12T00:00:00", + "pnl": 0.5751666476299988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6415881902333, + "entry_time": "2022-12-14T00:00:00", + "exit_price": 93.34129447656329, + "exit_time": "2022-12-15T00:00:00", + "pnl": -30.029371367001545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94345435925221, + "entry_time": "2022-12-17T00:00:00", + "exit_price": 92.60307524718807, + "exit_time": "2022-12-18T00:00:00", + "pnl": -34.03791120641415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.18983136258926, + "entry_time": "2022-12-20T00:00:00", + "exit_price": 92.07720168711411, + "exit_time": "2022-12-21T00:00:00", + "pnl": -11.26296754751479, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00591795170637, + "entry_time": "2022-12-23T00:00:00", + "exit_price": 91.73390898252362, + "exit_time": "2022-12-24T00:00:00", + "pnl": -27.200896918274964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87915537734212, + "entry_time": "2022-12-26T00:00:00", + "exit_price": 92.05356230153482, + "exit_time": "2022-12-27T00:00:00", + "pnl": 17.44069241927093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.19249105693206, + "entry_time": "2022-12-29T00:00:00", + "exit_price": 92.35715717263174, + "exit_time": "2022-12-30T00:00:00", + "pnl": 16.466611569968848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92376356586936, + "entry_time": "2023-01-01T00:00:00", + "exit_price": 92.8642597181964, + "exit_time": "2023-01-02T00:00:00", + "pnl": -5.950384767297123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08761417167571, + "entry_time": "2023-01-04T00:00:00", + "exit_price": 93.3787010770275, + "exit_time": "2023-01-05T00:00:00", + "pnl": 29.108690535178994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22887351223902, + "entry_time": "2023-01-07T00:00:00", + "exit_price": 93.18791972112416, + "exit_time": "2023-01-08T00:00:00", + "pnl": -4.095379111485897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71839956451682, + "entry_time": "2023-01-10T00:00:00", + "exit_price": 92.72871333258459, + "exit_time": "2023-01-11T00:00:00", + "pnl": 1.0313768067774731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71285525012034, + "entry_time": "2023-01-13T00:00:00", + "exit_price": 92.95484908903208, + "exit_time": "2023-01-14T00:00:00", + "pnl": 24.19938389117391, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09252551101909, + "entry_time": "2023-01-16T00:00:00", + "exit_price": 93.19565426763862, + "exit_time": "2023-01-17T00:00:00", + "pnl": 10.312875661952603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34851063541004, + "entry_time": "2023-01-19T00:00:00", + "exit_price": 93.36918149511725, + "exit_time": "2023-01-20T00:00:00", + "pnl": 2.067085970720939, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.29871325433136, + "entry_time": "2023-01-22T00:00:00", + "exit_price": 93.43191348926673, + "exit_time": "2023-01-23T00:00:00", + "pnl": 13.320023493537292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54163438380152, + "entry_time": "2023-01-25T00:00:00", + "exit_price": 93.70996022231523, + "exit_time": "2023-01-26T00:00:00", + "pnl": 16.83258385137094, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44351635290319, + "entry_time": "2023-01-28T00:00:00", + "exit_price": 93.3607156455027, + "exit_time": "2023-01-29T00:00:00", + "pnl": -8.280070740049439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25194927165909, + "entry_time": "2023-01-31T00:00:00", + "exit_price": 93.09482587993352, + "exit_time": "2023-02-01T00:00:00", + "pnl": -15.712339172556256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05964578316673, + "entry_time": "2023-02-03T00:00:00", + "exit_price": 93.1247824238807, + "exit_time": "2023-02-04T00:00:00", + "pnl": 6.513664071397329, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60195304694001, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.5077083162264, + "exit_time": "2023-02-07T00:00:00", + "pnl": -9.424473071361206, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32915625849455, + "entry_time": "2023-02-09T00:00:00", + "exit_price": 93.41904859018952, + "exit_time": "2023-02-10T00:00:00", + "pnl": 8.989233169496913, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86240170807343, + "entry_time": "2023-02-12T00:00:00", + "exit_price": 93.74311994285968, + "exit_time": "2023-02-13T00:00:00", + "pnl": -11.928176521375633, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92758592270172, + "entry_time": "2023-02-15T00:00:00", + "exit_price": 93.91004727072426, + "exit_time": "2023-02-16T00:00:00", + "pnl": -1.7538651977460518, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.90746519420465, + "entry_time": "2023-02-18T00:00:00", + "exit_price": 94.16764239198312, + "exit_time": "2023-02-19T00:00:00", + "pnl": 26.017719777847503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.44892482562024, + "entry_time": "2023-02-21T00:00:00", + "exit_price": 94.29820349772235, + "exit_time": "2023-02-22T00:00:00", + "pnl": -15.072132789788384, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29660996193417, + "entry_time": "2023-02-24T00:00:00", + "exit_price": 94.34630077913107, + "exit_time": "2023-02-25T00:00:00", + "pnl": 4.969081719690394, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28533190136021, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.32163037675376, + "exit_time": "2023-02-28T00:00:00", + "pnl": 3.629847539355069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20619082469412, + "entry_time": "2023-03-02T00:00:00", + "exit_price": 93.94806731557186, + "exit_time": "2023-03-03T00:00:00", + "pnl": -25.812350912225668, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5296456958934, + "entry_time": "2023-03-05T00:00:00", + "exit_price": 93.2046797163239, + "exit_time": "2023-03-06T00:00:00", + "pnl": -32.49659795694981, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32570812965447, + "entry_time": "2023-03-08T00:00:00", + "exit_price": 93.27835226241817, + "exit_time": "2023-03-09T00:00:00", + "pnl": -4.735586723630547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18052001757422, + "entry_time": "2023-03-11T00:00:00", + "exit_price": 93.21374473155299, + "exit_time": "2023-03-12T00:00:00", + "pnl": 3.322471397876825, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13943605219033, + "entry_time": "2023-03-14T00:00:00", + "exit_price": 93.26046795573633, + "exit_time": "2023-03-15T00:00:00", + "pnl": 12.103190354599747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21960702536101, + "entry_time": "2023-03-17T00:00:00", + "exit_price": 92.64774686400108, + "exit_time": "2023-03-18T00:00:00", + "pnl": -57.18601613599361, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31556350692, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.46149005259649, + "exit_time": "2023-03-21T00:00:00", + "pnl": 14.592654567648822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52377288657563, + "entry_time": "2023-03-23T00:00:00", + "exit_price": 92.23839203319807, + "exit_time": "2023-03-24T00:00:00", + "pnl": -28.53808533775606, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6963758650249, + "entry_time": "2023-03-26T00:00:00", + "exit_price": 92.70207115016164, + "exit_time": "2023-03-27T00:00:00", + "pnl": 0.5695285136738448, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1906639429263, + "entry_time": "2023-03-29T00:00:00", + "exit_price": 93.35726613372299, + "exit_time": "2023-03-30T00:00:00", + "pnl": 16.66021907966808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16344204103119, + "entry_time": "2023-04-01T00:00:00", + "exit_price": 93.2066382813918, + "exit_time": "2023-04-02T00:00:00", + "pnl": 4.319624036061498, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0471045722787, + "entry_time": "2023-04-04T00:00:00", + "exit_price": 92.82199720210754, + "exit_time": "2023-04-05T00:00:00", + "pnl": -22.5107370171159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8989666578373, + "entry_time": "2023-04-07T00:00:00", + "exit_price": 92.77857374465485, + "exit_time": "2023-04-08T00:00:00", + "pnl": -12.03929131824566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.70919453056075, + "entry_time": "2023-04-10T00:00:00", + "exit_price": 92.74465000028516, + "exit_time": "2023-04-11T00:00:00", + "pnl": 3.545546972441116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60934516564298, + "entry_time": "2023-04-13T00:00:00", + "exit_price": 92.96618622577306, + "exit_time": "2023-04-14T00:00:00", + "pnl": 35.68410601300798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78501792806425, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.76326607151933, + "exit_time": "2023-04-17T00:00:00", + "pnl": -2.1751856544923953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62556378625803, + "entry_time": "2023-04-19T00:00:00", + "exit_price": 92.65556548612001, + "exit_time": "2023-04-20T00:00:00", + "pnl": 3.0001699861983866, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68684981308908, + "entry_time": "2023-04-22T00:00:00", + "exit_price": 92.58597625405771, + "exit_time": "2023-04-23T00:00:00", + "pnl": -10.087355903137052, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86536967969084, + "entry_time": "2023-04-25T00:00:00", + "exit_price": 92.75020367672924, + "exit_time": "2023-04-26T00:00:00", + "pnl": -11.516600296160107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75062990936559, + "entry_time": "2023-04-28T00:00:00", + "exit_price": 92.98349381034318, + "exit_time": "2023-04-29T00:00:00", + "pnl": 23.286390097759124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04847278769076, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 93.06193871613516, + "exit_time": "2023-05-02T00:00:00", + "pnl": 1.3465928444404085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60529611931622, + "entry_time": "2023-05-04T00:00:00", + "exit_price": 92.60807864200518, + "exit_time": "2023-05-05T00:00:00", + "pnl": 0.2782522688960398, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90198815097345, + "entry_time": "2023-05-07T00:00:00", + "exit_price": 92.84425841280351, + "exit_time": "2023-05-08T00:00:00", + "pnl": -5.772973816993954, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66689924421028, + "entry_time": "2023-05-10T00:00:00", + "exit_price": 92.6348345250126, + "exit_time": "2023-05-11T00:00:00", + "pnl": -3.2064719197691716, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74311085652141, + "entry_time": "2023-05-13T00:00:00", + "exit_price": 92.87596365908365, + "exit_time": "2023-05-14T00:00:00", + "pnl": 13.285280256224041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15467982049428, + "entry_time": "2023-05-16T00:00:00", + "exit_price": 93.06917346679761, + "exit_time": "2023-05-17T00:00:00", + "pnl": -8.550635369667248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16088604193163, + "entry_time": "2023-05-19T00:00:00", + "exit_price": 93.1767131466551, + "exit_time": "2023-05-20T00:00:00", + "pnl": 1.5827104723470597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59084973064017, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.3728256379574, + "exit_time": "2023-05-23T00:00:00", + "pnl": -21.80240926827679, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83907971020484, + "entry_time": "2023-05-25T00:00:00", + "exit_price": 94.05336598759212, + "exit_time": "2023-05-26T00:00:00", + "pnl": 21.428627738727357, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15556945611712, + "entry_time": "2023-05-28T00:00:00", + "exit_price": 94.11170249260897, + "exit_time": "2023-05-29T00:00:00", + "pnl": -4.3866963508151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26806948858284, + "entry_time": "2023-05-31T00:00:00", + "exit_price": 94.19864576006458, + "exit_time": "2023-06-01T00:00:00", + "pnl": -6.942372851825951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02469106007196, + "entry_time": "2023-06-03T00:00:00", + "exit_price": 94.37555658552148, + "exit_time": "2023-06-04T00:00:00", + "pnl": 35.0865525449521, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.47191103799679, + "entry_time": "2023-06-06T00:00:00", + "exit_price": 94.46329135212792, + "exit_time": "2023-06-07T00:00:00", + "pnl": -0.861968586886519, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.72605970139526, + "entry_time": "2023-06-09T00:00:00", + "exit_price": 94.42143976779836, + "exit_time": "2023-06-10T00:00:00", + "pnl": -30.461993359689643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5510290269881, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.42138738037778, + "exit_time": "2023-06-13T00:00:00", + "pnl": -12.964164661032385, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49725923626676, + "entry_time": "2023-06-15T00:00:00", + "exit_price": 94.83017838441384, + "exit_time": "2023-06-16T00:00:00", + "pnl": 33.291914814708434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.96394971087318, + "entry_time": "2023-06-18T00:00:00", + "exit_price": 94.80946954515628, + "exit_time": "2023-06-19T00:00:00", + "pnl": -15.44801657169046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.05895494780961, + "entry_time": "2023-06-21T00:00:00", + "exit_price": 94.7764741456602, + "exit_time": "2023-06-22T00:00:00", + "pnl": -28.248080214940785, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.82916340306784, + "entry_time": "2023-06-24T00:00:00", + "exit_price": 94.49615933800648, + "exit_time": "2023-06-25T00:00:00", + "pnl": -33.30040650613597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53903204926397, + "entry_time": "2023-06-27T00:00:00", + "exit_price": 94.2199238563033, + "exit_time": "2023-06-28T00:00:00", + "pnl": -31.91081929606696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15553425915468, + "entry_time": "2023-06-30T00:00:00", + "exit_price": 94.3233546324033, + "exit_time": "2023-07-01T00:00:00", + "pnl": 16.782037324861676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29143609072966, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.34909878462929, + "exit_time": "2023-07-04T00:00:00", + "pnl": 5.766269389962986, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79549173605429, + "entry_time": "2023-07-06T00:00:00", + "exit_price": 94.86012460829116, + "exit_time": "2023-07-07T00:00:00", + "pnl": 6.463287223687075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62257045149929, + "entry_time": "2023-07-09T00:00:00", + "exit_price": 94.36740770267758, + "exit_time": "2023-07-10T00:00:00", + "pnl": -25.516274882170364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11233427565722, + "entry_time": "2023-07-12T00:00:00", + "exit_price": 94.28815691102787, + "exit_time": "2023-07-13T00:00:00", + "pnl": 17.582263537065046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89234388227695, + "entry_time": "2023-07-15T00:00:00", + "exit_price": 93.64456440149245, + "exit_time": "2023-07-16T00:00:00", + "pnl": -24.77794807845015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.62943347351336, + "entry_time": "2023-07-18T00:00:00", + "exit_price": 93.64788638508941, + "exit_time": "2023-07-19T00:00:00", + "pnl": 1.8452911576048336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1774162868962, + "entry_time": "2023-07-21T00:00:00", + "exit_price": 94.00402666791075, + "exit_time": "2023-07-22T00:00:00", + "pnl": -17.338961898545335, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.04453321057153, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.96838361247781, + "exit_time": "2023-07-25T00:00:00", + "pnl": -7.614959809372124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88321586599362, + "entry_time": "2023-07-27T00:00:00", + "exit_price": 93.90884833929827, + "exit_time": "2023-07-28T00:00:00", + "pnl": 2.5632473304654013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7179718780841, + "entry_time": "2023-07-30T00:00:00", + "exit_price": 93.74821494678119, + "exit_time": "2023-07-31T00:00:00", + "pnl": 3.024306869708937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9038655497103, + "entry_time": "2023-08-02T00:00:00", + "exit_price": 93.83750554707963, + "exit_time": "2023-08-03T00:00:00", + "pnl": -6.6360002630673876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88584036004717, + "entry_time": "2023-08-05T00:00:00", + "exit_price": 93.9446210717662, + "exit_time": "2023-08-06T00:00:00", + "pnl": 5.878071171903798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10339943212904, + "entry_time": "2023-08-08T00:00:00", + "exit_price": 94.0848941093554, + "exit_time": "2023-08-09T00:00:00", + "pnl": -1.8505322773634703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.14949796034026, + "entry_time": "2023-08-11T00:00:00", + "exit_price": 93.8874166822761, + "exit_time": "2023-08-12T00:00:00", + "pnl": -26.20812780641586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75795965886635, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 93.82124488293752, + "exit_time": "2023-08-15T00:00:00", + "pnl": 6.328522407116566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65346951457661, + "entry_time": "2023-08-17T00:00:00", + "exit_price": 93.61396660096294, + "exit_time": "2023-08-18T00:00:00", + "pnl": -3.9502913613674195, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54800539421142, + "entry_time": "2023-08-20T00:00:00", + "exit_price": 93.46513172439276, + "exit_time": "2023-08-21T00:00:00", + "pnl": -8.287366981865318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04018712803396, + "entry_time": "2023-08-23T00:00:00", + "exit_price": 93.2845186523261, + "exit_time": "2023-08-24T00:00:00", + "pnl": 24.433152429213578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80052936345986, + "entry_time": "2023-08-26T00:00:00", + "exit_price": 93.65349927893294, + "exit_time": "2023-08-27T00:00:00", + "pnl": -14.70300845269179, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93158855841354, + "entry_time": "2023-08-29T00:00:00", + "exit_price": 93.79425107834362, + "exit_time": "2023-08-30T00:00:00", + "pnl": -13.733748006991675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55284494377143, + "entry_time": "2023-09-01T00:00:00", + "exit_price": 93.33529354683158, + "exit_time": "2023-09-02T00:00:00", + "pnl": -21.75513969398537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.678819649887, + "entry_time": "2023-09-04T00:00:00", + "exit_price": 93.76309874382866, + "exit_time": "2023-09-05T00:00:00", + "pnl": 8.427909394166022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.06380422690373, + "entry_time": "2023-09-07T00:00:00", + "exit_price": 94.34837478850592, + "exit_time": "2023-09-08T00:00:00", + "pnl": 28.45705616021945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28272356925105, + "entry_time": "2023-09-10T00:00:00", + "exit_price": 94.08986442511201, + "exit_time": "2023-09-11T00:00:00", + "pnl": -19.285914413903527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19668777653186, + "entry_time": "2023-09-13T00:00:00", + "exit_price": 93.9155347262711, + "exit_time": "2023-09-14T00:00:00", + "pnl": -28.115305026075532, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86963033561572, + "entry_time": "2023-09-16T00:00:00", + "exit_price": 94.02605497205086, + "exit_time": "2023-09-17T00:00:00", + "pnl": 15.642463643513338, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07735953777274, + "entry_time": "2023-09-19T00:00:00", + "exit_price": 93.92691564488518, + "exit_time": "2023-09-20T00:00:00", + "pnl": -15.044389288755156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.63814938665311, + "entry_time": "2023-09-22T00:00:00", + "exit_price": 93.6176086632684, + "exit_time": "2023-09-23T00:00:00", + "pnl": -2.054072338471258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71204578933798, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.41015509320589, + "exit_time": "2023-09-26T00:00:00", + "pnl": -30.189069613209085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42767992948876, + "entry_time": "2023-09-28T00:00:00", + "exit_price": 93.23852235526199, + "exit_time": "2023-09-29T00:00:00", + "pnl": -18.915757422676904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49442961672796, + "entry_time": "2023-10-01T00:00:00", + "exit_price": 93.43422929731483, + "exit_time": "2023-10-02T00:00:00", + "pnl": -6.020031941312709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.28736530415493, + "entry_time": "2023-10-04T00:00:00", + "exit_price": 93.12218377264868, + "exit_time": "2023-10-05T00:00:00", + "pnl": -16.518153150624926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1091934992091, + "entry_time": "2023-10-07T00:00:00", + "exit_price": 92.97579394436632, + "exit_time": "2023-10-08T00:00:00", + "pnl": -13.33995548427822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87630575654731, + "entry_time": "2023-10-10T00:00:00", + "exit_price": 92.64709318534976, + "exit_time": "2023-10-11T00:00:00", + "pnl": -22.921257119755012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49382854321888, + "entry_time": "2023-10-13T00:00:00", + "exit_price": 92.15699292788067, + "exit_time": "2023-10-14T00:00:00", + "pnl": -33.68356153382166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04266303105983, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.9313781112256, + "exit_time": "2023-10-17T00:00:00", + "pnl": -11.128491983423316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.69530603069572, + "entry_time": "2023-10-19T00:00:00", + "exit_price": 91.82075180753827, + "exit_time": "2023-10-20T00:00:00", + "pnl": 12.544577684255387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00003866180036, + "entry_time": "2023-10-22T00:00:00", + "exit_price": 91.769068469798, + "exit_time": "2023-10-23T00:00:00", + "pnl": -23.09701920023599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62148930928706, + "entry_time": "2023-10-25T00:00:00", + "exit_price": 92.0232146586156, + "exit_time": "2023-10-26T00:00:00", + "pnl": 40.172534932854376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05026787864645, + "entry_time": "2023-10-28T00:00:00", + "exit_price": 91.7648966725291, + "exit_time": "2023-10-29T00:00:00", + "pnl": -28.53712061173468, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45047976504434, + "entry_time": "2023-10-31T00:00:00", + "exit_price": 91.57906184617835, + "exit_time": "2023-11-01T00:00:00", + "pnl": 12.858208113401304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73227416508321, + "entry_time": "2023-11-03T00:00:00", + "exit_price": 91.39276167792192, + "exit_time": "2023-11-04T00:00:00", + "pnl": -33.951248716128646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43027834183452, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.72614964359053, + "exit_time": "2023-11-07T00:00:00", + "pnl": 29.587130175600862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22140030401876, + "entry_time": "2023-11-09T00:00:00", + "exit_price": 92.40388767907393, + "exit_time": "2023-11-10T00:00:00", + "pnl": 18.248737505517454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6481057355818, + "entry_time": "2023-11-12T00:00:00", + "exit_price": 92.68848188004498, + "exit_time": "2023-11-13T00:00:00", + "pnl": 4.037614446318116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71473698288804, + "entry_time": "2023-11-15T00:00:00", + "exit_price": 92.70268409440689, + "exit_time": "2023-11-16T00:00:00", + "pnl": -1.2052888481150603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43854075921618, + "entry_time": "2023-11-18T00:00:00", + "exit_price": 92.44140071332018, + "exit_time": "2023-11-19T00:00:00", + "pnl": 0.28599541039966425, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74726961853332, + "entry_time": "2023-11-21T00:00:00", + "exit_price": 92.8365056762946, + "exit_time": "2023-11-22T00:00:00", + "pnl": 8.92360577612834, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88893089201021, + "entry_time": "2023-11-24T00:00:00", + "exit_price": 93.26317095880032, + "exit_time": "2023-11-25T00:00:00", + "pnl": 37.4240066790108, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37686063355893, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 93.01130398358468, + "exit_time": "2023-11-28T00:00:00", + "pnl": -36.5556649974252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9244172505916, + "entry_time": "2023-11-30T00:00:00", + "exit_price": 92.89449208176279, + "exit_time": "2023-12-01T00:00:00", + "pnl": -2.992516882881091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93827683979754, + "entry_time": "2023-12-03T00:00:00", + "exit_price": 93.6532995649937, + "exit_time": "2023-12-04T00:00:00", + "pnl": -28.497727480383617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42639590375148, + "entry_time": "2023-12-06T00:00:00", + "exit_price": 93.75213347979019, + "exit_time": "2023-12-07T00:00:00", + "pnl": 32.57375760387049, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.0270700566813, + "entry_time": "2023-12-09T00:00:00", + "exit_price": 93.76146992741955, + "exit_time": "2023-12-10T00:00:00", + "pnl": -26.56001292617418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10225140410179, + "entry_time": "2023-12-12T00:00:00", + "exit_price": 92.81690399898379, + "exit_time": "2023-12-13T00:00:00", + "pnl": -28.534740511800294, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0438108934807, + "entry_time": "2023-12-15T00:00:00", + "exit_price": 92.80207795946215, + "exit_time": "2023-12-16T00:00:00", + "pnl": -24.173293401854323, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12592905184015, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 93.15713134695487, + "exit_time": "2023-12-19T00:00:00", + "pnl": 3.1202295114724166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21575520670791, + "entry_time": "2023-12-21T00:00:00", + "exit_price": 93.31507102860735, + "exit_time": "2023-12-22T00:00:00", + "pnl": 9.93158218994381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2320901589937, + "entry_time": "2023-12-24T00:00:00", + "exit_price": 93.15393731859652, + "exit_time": "2023-12-25T00:00:00", + "pnl": -7.815284039718051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07037591089997, + "entry_time": "2023-12-27T00:00:00", + "exit_price": 93.3198194947649, + "exit_time": "2023-12-28T00:00:00", + "pnl": 24.944358386493093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69216760463115, + "entry_time": "2023-12-30T00:00:00", + "exit_price": 94.07388089953058, + "exit_time": "2023-12-31T00:00:00", + "pnl": 38.17132948994271, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.64149353573185, + "entry_time": "2024-01-02T00:00:00", + "exit_price": 94.71271228263036, + "exit_time": "2024-01-03T00:00:00", + "pnl": 7.121874689850927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.11471503048601, + "entry_time": "2024-01-05T00:00:00", + "exit_price": 94.98751858071931, + "exit_time": "2024-01-06T00:00:00", + "pnl": -12.719644976669997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7067835294734, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.74844014533139, + "exit_time": "2024-01-09T00:00:00", + "pnl": 4.16566158579883, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.02489656616589, + "entry_time": "2024-01-11T00:00:00", + "exit_price": 94.98294992874101, + "exit_time": "2024-01-12T00:00:00", + "pnl": -4.194663742488558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.71598064705562, + "entry_time": "2024-01-14T00:00:00", + "exit_price": 94.90144093756582, + "exit_time": "2024-01-15T00:00:00", + "pnl": 18.546029051020696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88369269337046, + "entry_time": "2024-01-17T00:00:00", + "exit_price": 94.99127786199946, + "exit_time": "2024-01-18T00:00:00", + "pnl": 10.75851686290008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.25279588129149, + "entry_time": "2024-01-20T00:00:00", + "exit_price": 94.98339215080473, + "exit_time": "2024-01-21T00:00:00", + "pnl": -26.94037304867578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84625570624047, + "entry_time": "2024-01-23T00:00:00", + "exit_price": 94.50594333071952, + "exit_time": "2024-01-24T00:00:00", + "pnl": -34.031237552095206, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50759103681193, + "entry_time": "2024-01-26T00:00:00", + "exit_price": 94.60423833142119, + "exit_time": "2024-01-27T00:00:00", + "pnl": 9.664729460925514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.58324904624197, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.89219195707862, + "exit_time": "2024-01-30T00:00:00", + "pnl": 30.894291083664882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65911048978346, + "entry_time": "2024-02-01T00:00:00", + "exit_price": 94.7149396953146, + "exit_time": "2024-02-02T00:00:00", + "pnl": 5.582920553113979, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.87432845164759, + "entry_time": "2024-02-04T00:00:00", + "exit_price": 94.68840177129488, + "exit_time": "2024-02-05T00:00:00", + "pnl": -18.592668035270776, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.93449198055023, + "entry_time": "2024-02-07T00:00:00", + "exit_price": 95.32948554144308, + "exit_time": "2024-02-08T00:00:00", + "pnl": 39.49935608928428, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32849848634218, + "entry_time": "2024-02-10T00:00:00", + "exit_price": 95.22062659109166, + "exit_time": "2024-02-11T00:00:00", + "pnl": -10.787189525052554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95224360650606, + "entry_time": "2024-02-13T00:00:00", + "exit_price": 95.11404601693097, + "exit_time": "2024-02-14T00:00:00", + "pnl": 16.18024104249116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79369852289173, + "entry_time": "2024-02-16T00:00:00", + "exit_price": 94.57121837540416, + "exit_time": "2024-02-17T00:00:00", + "pnl": -22.248014748757328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70539792020504, + "entry_time": "2024-02-19T00:00:00", + "exit_price": 94.81536726931864, + "exit_time": "2024-02-20T00:00:00", + "pnl": 10.996934911359801, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.66590107949516, + "entry_time": "2024-02-22T00:00:00", + "exit_price": 94.54759559550845, + "exit_time": "2024-02-23T00:00:00", + "pnl": -11.83054839867026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11939973938362, + "entry_time": "2024-02-25T00:00:00", + "exit_price": 94.21880305870137, + "exit_time": "2024-02-26T00:00:00", + "pnl": 9.940331931774438, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79422563292844, + "entry_time": "2024-02-28T00:00:00", + "exit_price": 93.71312689925841, + "exit_time": "2024-02-29T00:00:00", + "pnl": -8.109873367003217, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46426831854224, + "entry_time": "2024-03-02T00:00:00", + "exit_price": 93.10239283352094, + "exit_time": "2024-03-03T00:00:00", + "pnl": -36.187548502130085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37028780606191, + "entry_time": "2024-03-05T00:00:00", + "exit_price": 93.13498012432488, + "exit_time": "2024-03-06T00:00:00", + "pnl": -23.530768173702654, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.38863630293943, + "entry_time": "2024-03-08T00:00:00", + "exit_price": 93.41150008980253, + "exit_time": "2024-03-09T00:00:00", + "pnl": 2.286378686309831, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.14488289984781, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.17802365337732, + "exit_time": "2024-03-12T00:00:00", + "pnl": 3.3140753529508515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27104619189048, + "entry_time": "2024-03-14T00:00:00", + "exit_price": 92.98787909982833, + "exit_time": "2024-03-15T00:00:00", + "pnl": -28.31670920621434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11321145433926, + "entry_time": "2024-03-17T00:00:00", + "exit_price": 93.23295576374296, + "exit_time": "2024-03-18T00:00:00", + "pnl": 11.974430940369984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.85697546574279, + "entry_time": "2024-03-20T00:00:00", + "exit_price": 92.7517321560528, + "exit_time": "2024-03-21T00:00:00", + "pnl": -10.524330968999607, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50551757491745, + "entry_time": "2024-03-23T00:00:00", + "exit_price": 92.62546167858358, + "exit_time": "2024-03-24T00:00:00", + "pnl": 11.99441036661284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86332633060258, + "entry_time": "2024-03-26T00:00:00", + "exit_price": 92.76299264885851, + "exit_time": "2024-03-27T00:00:00", + "pnl": -10.033368174406121, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78913797285577, + "entry_time": "2024-03-29T00:00:00", + "exit_price": 93.00024160373006, + "exit_time": "2024-03-30T00:00:00", + "pnl": 21.110363087429107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9168412948554, + "entry_time": "2024-04-01T00:00:00", + "exit_price": 92.7772709282975, + "exit_time": "2024-04-02T00:00:00", + "pnl": -13.957036655790489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99344762670124, + "entry_time": "2024-04-04T00:00:00", + "exit_price": 92.45458704231757, + "exit_time": "2024-04-05T00:00:00", + "pnl": -53.886058438367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.40001356367094, + "entry_time": "2024-04-07T00:00:00", + "exit_price": 91.97082046191717, + "exit_time": "2024-04-08T00:00:00", + "pnl": -42.91931017537678, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01206001173375, + "entry_time": "2024-04-10T00:00:00", + "exit_price": 92.08005345968613, + "exit_time": "2024-04-11T00:00:00", + "pnl": 6.799344795237516, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22217203577799, + "entry_time": "2024-04-13T00:00:00", + "exit_price": 92.2425856744218, + "exit_time": "2024-04-14T00:00:00", + "pnl": 2.041363864381651, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46073627278375, + "entry_time": "2024-04-16T00:00:00", + "exit_price": 92.58143591458905, + "exit_time": "2024-04-17T00:00:00", + "pnl": 12.069964180530235, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95177802714637, + "entry_time": "2024-04-19T00:00:00", + "exit_price": 92.56745694254103, + "exit_time": "2024-04-20T00:00:00", + "pnl": -38.432108460534664, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81253269752307, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 92.86554139490539, + "exit_time": "2024-04-23T00:00:00", + "pnl": 5.30086973823245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90464875740813, + "entry_time": "2024-04-25T00:00:00", + "exit_price": 92.96373746132312, + "exit_time": "2024-04-26T00:00:00", + "pnl": 5.908870391499477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09789228558353, + "entry_time": "2024-04-28T00:00:00", + "exit_price": 93.19003786584736, + "exit_time": "2024-04-29T00:00:00", + "pnl": 9.214558026383202, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66999752477345, + "entry_time": "2024-05-01T00:00:00", + "exit_price": 92.45706703230238, + "exit_time": "2024-05-02T00:00:00", + "pnl": -21.293049247107376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2209401021726, + "entry_time": "2024-05-04T00:00:00", + "exit_price": 93.26995519560073, + "exit_time": "2024-05-05T00:00:00", + "pnl": 4.90150934281246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23034844043512, + "entry_time": "2024-05-07T00:00:00", + "exit_price": 93.41387280572972, + "exit_time": "2024-05-08T00:00:00", + "pnl": 18.352436529460192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33303611955198, + "entry_time": "2024-05-10T00:00:00", + "exit_price": 93.52307299324875, + "exit_time": "2024-05-11T00:00:00", + "pnl": 19.003687369676925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67190914597171, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.29815694731651, + "exit_time": "2024-05-14T00:00:00", + "pnl": -37.37521986551968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11959184333037, + "entry_time": "2024-05-16T00:00:00", + "exit_price": 92.78483612314953, + "exit_time": "2024-05-17T00:00:00", + "pnl": -33.47557201808371, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92001295323622, + "entry_time": "2024-05-19T00:00:00", + "exit_price": 92.94709162208174, + "exit_time": "2024-05-20T00:00:00", + "pnl": 2.7078668845518905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06260774305197, + "entry_time": "2024-05-22T00:00:00", + "exit_price": 93.1459174166961, + "exit_time": "2024-05-23T00:00:00", + "pnl": 8.330967364412345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06618787236135, + "entry_time": "2024-05-25T00:00:00", + "exit_price": 93.61303967582782, + "exit_time": "2024-05-26T00:00:00", + "pnl": 54.68518034664669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.941078352886, + "entry_time": "2024-05-28T00:00:00", + "exit_price": 94.01481054814181, + "exit_time": "2024-05-29T00:00:00", + "pnl": 7.373219525581476, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92069860353018, + "entry_time": "2024-05-31T00:00:00", + "exit_price": 93.87432907187284, + "exit_time": "2024-06-01T00:00:00", + "pnl": -4.636953165734781, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88014313205952, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.43750435674885, + "exit_time": "2024-06-04T00:00:00", + "pnl": -44.26387753106695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46298718335747, + "entry_time": "2024-06-06T00:00:00", + "exit_price": 93.92373570713617, + "exit_time": "2024-06-07T00:00:00", + "pnl": 46.07485237787046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93253015033824, + "entry_time": "2024-06-09T00:00:00", + "exit_price": 93.89138819536463, + "exit_time": "2024-06-10T00:00:00", + "pnl": -4.114195497361095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6779918521803, + "entry_time": "2024-06-12T00:00:00", + "exit_price": 93.51002812881958, + "exit_time": "2024-06-13T00:00:00", + "pnl": -16.796372336071386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.285974590119, + "entry_time": "2024-06-15T00:00:00", + "exit_price": 93.32248822367578, + "exit_time": "2024-06-16T00:00:00", + "pnl": 3.6513633556779723, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35524577583958, + "entry_time": "2024-06-18T00:00:00", + "exit_price": 93.73566009456992, + "exit_time": "2024-06-19T00:00:00", + "pnl": 38.041431873034526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68667788285592, + "entry_time": "2024-06-21T00:00:00", + "exit_price": 93.84911622521342, + "exit_time": "2024-06-22T00:00:00", + "pnl": 16.2438342357504, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68254626297609, + "entry_time": "2024-06-24T00:00:00", + "exit_price": 93.53753290340698, + "exit_time": "2024-06-25T00:00:00", + "pnl": -14.501335956910566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.40541279646612, + "entry_time": "2024-06-27T00:00:00", + "exit_price": 93.71834890975212, + "exit_time": "2024-06-28T00:00:00", + "pnl": 31.29361132859998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75716070422646, + "entry_time": "2024-06-30T00:00:00", + "exit_price": 93.82803454081426, + "exit_time": "2024-07-01T00:00:00", + "pnl": 7.087383658779345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73900139072163, + "entry_time": "2024-07-03T00:00:00", + "exit_price": 93.58423325500644, + "exit_time": "2024-07-04T00:00:00", + "pnl": -15.476813571518733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16188235681071, + "entry_time": "2024-07-06T00:00:00", + "exit_price": 93.02650792631081, + "exit_time": "2024-07-07T00:00:00", + "pnl": -13.537443049989406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00049424696185, + "entry_time": "2024-07-09T00:00:00", + "exit_price": 93.27869714616556, + "exit_time": "2024-07-10T00:00:00", + "pnl": 27.820289920370556, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18595899862997, + "entry_time": "2024-07-12T00:00:00", + "exit_price": 93.03056917274476, + "exit_time": "2024-07-13T00:00:00", + "pnl": -15.538982588520867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6959315804981, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.29325844026822, + "exit_time": "2024-07-16T00:00:00", + "pnl": -40.26731402298793, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24617524245163, + "entry_time": "2024-07-18T00:00:00", + "exit_price": 92.27923511016385, + "exit_time": "2024-07-19T00:00:00", + "pnl": 3.3059867712225355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24377176084563, + "entry_time": "2024-07-21T00:00:00", + "exit_price": 91.84290901749984, + "exit_time": "2024-07-22T00:00:00", + "pnl": -40.08627433457974, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45792359801233, + "entry_time": "2024-07-24T00:00:00", + "exit_price": 91.61079046047253, + "exit_time": "2024-07-25T00:00:00", + "pnl": 15.286686246020054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59272403631071, + "entry_time": "2024-07-27T00:00:00", + "exit_price": 91.6658144632232, + "exit_time": "2024-07-28T00:00:00", + "pnl": 7.309042691248635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.7676588013805, + "entry_time": "2024-07-30T00:00:00", + "exit_price": 91.83153611139085, + "exit_time": "2024-07-31T00:00:00", + "pnl": 6.387731001034069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47875371686978, + "entry_time": "2024-08-02T00:00:00", + "exit_price": 91.54124524065837, + "exit_time": "2024-08-03T00:00:00", + "pnl": 6.249152378859435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.99233076398606, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.9529292158228, + "exit_time": "2024-08-06T00:00:00", + "pnl": -3.940154816325503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9845811375129, + "entry_time": "2024-08-08T00:00:00", + "exit_price": 92.0553452779518, + "exit_time": "2024-08-09T00:00:00", + "pnl": 7.076414043889656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96933895446483, + "entry_time": "2024-08-11T00:00:00", + "exit_price": 92.33843538273938, + "exit_time": "2024-08-12T00:00:00", + "pnl": 36.90964282745455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7587929540311, + "entry_time": "2024-08-14T00:00:00", + "exit_price": 92.61541170919818, + "exit_time": "2024-08-15T00:00:00", + "pnl": -14.338124483290926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.48109292079488, + "entry_time": "2024-08-17T00:00:00", + "exit_price": 92.584127260661, + "exit_time": "2024-08-18T00:00:00", + "pnl": 10.303433986612731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73326548896144, + "entry_time": "2024-08-20T00:00:00", + "exit_price": 92.63121700232358, + "exit_time": "2024-08-21T00:00:00", + "pnl": -10.204848663785526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0636078149956, + "entry_time": "2024-08-23T00:00:00", + "exit_price": 92.8561585876055, + "exit_time": "2024-08-24T00:00:00", + "pnl": -20.744922739010008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92284538933916, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.11237349539573, + "exit_time": "2024-08-27T00:00:00", + "pnl": 18.952810605657078, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07021236134935, + "entry_time": "2024-08-29T00:00:00", + "exit_price": 93.17184698357968, + "exit_time": "2024-08-30T00:00:00", + "pnl": 10.163462223033548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31228518791787, + "entry_time": "2024-09-01T00:00:00", + "exit_price": 92.33590023205818, + "exit_time": "2024-09-02T00:00:00", + "pnl": 2.361504414031401, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50027778498863, + "entry_time": "2024-09-04T00:00:00", + "exit_price": 92.54209415864854, + "exit_time": "2024-09-05T00:00:00", + "pnl": 4.181637365991264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3677893725537, + "entry_time": "2024-09-07T00:00:00", + "exit_price": 92.22925202091126, + "exit_time": "2024-09-08T00:00:00", + "pnl": -13.853735164244085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09309676612557, + "entry_time": "2024-09-10T00:00:00", + "exit_price": 92.15732000186526, + "exit_time": "2024-09-11T00:00:00", + "pnl": 6.422323573968924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68995738997093, + "entry_time": "2024-09-13T00:00:00", + "exit_price": 91.28297081793372, + "exit_time": "2024-09-14T00:00:00", + "pnl": -40.69865720372121, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.49225030811708, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.33431283007668, + "exit_time": "2024-09-17T00:00:00", + "pnl": -15.793747804039526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00621404043055, + "entry_time": "2024-09-19T00:00:00", + "exit_price": 90.92641929792215, + "exit_time": "2024-09-20T00:00:00", + "pnl": -7.979474250839758, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07027528339762, + "entry_time": "2024-09-22T00:00:00", + "exit_price": 91.13008155599323, + "exit_time": "2024-09-23T00:00:00", + "pnl": 5.980627259560833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00907183642319, + "entry_time": "2024-09-25T00:00:00", + "exit_price": 91.23094904986101, + "exit_time": "2024-09-26T00:00:00", + "pnl": 22.18772134378213, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2825480931582, + "entry_time": "2024-09-28T00:00:00", + "exit_price": 90.91271666538603, + "exit_time": "2024-09-29T00:00:00", + "pnl": -36.983142777216926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05360990148436, + "entry_time": "2024-10-01T00:00:00", + "exit_price": 91.28838235720163, + "exit_time": "2024-10-02T00:00:00", + "pnl": 23.477245571726257, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79116186423771, + "entry_time": "2024-10-04T00:00:00", + "exit_price": 90.76779759668747, + "exit_time": "2024-10-05T00:00:00", + "pnl": -2.336426755023524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66567440561238, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 90.70161264561204, + "exit_time": "2024-10-08T00:00:00", + "pnl": 3.5938239999666166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83214429583118, + "entry_time": "2024-10-10T00:00:00", + "exit_price": 90.77606667466077, + "exit_time": "2024-10-11T00:00:00", + "pnl": -5.607762117041659, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66108486881463, + "entry_time": "2024-10-13T00:00:00", + "exit_price": 90.66515259357669, + "exit_time": "2024-10-14T00:00:00", + "pnl": 0.4067724762066405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.16857543076497, + "entry_time": "2024-10-16T00:00:00", + "exit_price": 90.40982511738886, + "exit_time": "2024-10-17T00:00:00", + "pnl": 24.124968662388824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.06344300783006, + "entry_time": "2024-10-19T00:00:00", + "exit_price": 89.82444237040852, + "exit_time": "2024-10-20T00:00:00", + "pnl": -23.900063742154032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.59077974741996, + "entry_time": "2024-10-22T00:00:00", + "exit_price": 89.57824858967784, + "exit_time": "2024-10-23T00:00:00", + "pnl": -1.2531157742117216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.18599707786814, + "entry_time": "2024-10-25T00:00:00", + "exit_price": 89.23587599762591, + "exit_time": "2024-10-26T00:00:00", + "pnl": 4.987891975777359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.52520755360774, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.53896573427002, + "exit_time": "2024-10-29T00:00:00", + "pnl": 1.3758180662279074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32372356389571, + "entry_time": "2024-10-31T00:00:00", + "exit_price": 89.39723460318574, + "exit_time": "2024-11-01T00:00:00", + "pnl": 7.351103929002534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.42867761884308, + "entry_time": "2024-11-03T00:00:00", + "exit_price": 89.41468909557778, + "exit_time": "2024-11-04T00:00:00", + "pnl": -1.3988523265297204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37521291073797, + "entry_time": "2024-11-06T00:00:00", + "exit_price": 89.28061929510595, + "exit_time": "2024-11-07T00:00:00", + "pnl": -9.459361563202151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37421531457154, + "entry_time": "2024-11-09T00:00:00", + "exit_price": 89.42880794685172, + "exit_time": "2024-11-10T00:00:00", + "pnl": 5.459263228017619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.10075544827296, + "entry_time": "2024-11-12T00:00:00", + "exit_price": 89.08909178471053, + "exit_time": "2024-11-13T00:00:00", + "pnl": -1.1663663562430315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.9283105563295, + "entry_time": "2024-11-15T00:00:00", + "exit_price": 88.97631673436179, + "exit_time": "2024-11-16T00:00:00", + "pnl": 4.8006178032281355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.83969795208085, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.97701708069182, + "exit_time": "2024-11-19T00:00:00", + "pnl": 13.731912861096873, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.24948915106788, + "entry_time": "2024-11-21T00:00:00", + "exit_price": 89.31081866218918, + "exit_time": "2024-11-22T00:00:00", + "pnl": 6.132951112130058, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.1566381078772, + "entry_time": "2024-11-24T00:00:00", + "exit_price": 89.05359196348086, + "exit_time": "2024-11-25T00:00:00", + "pnl": -10.304614439634463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.89974340615646, + "entry_time": "2024-11-27T00:00:00", + "exit_price": 88.86736216937868, + "exit_time": "2024-11-28T00:00:00", + "pnl": -3.2381236777780487, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.02917974715604, + "entry_time": "2024-11-30T00:00:00", + "exit_price": 89.10061155400963, + "exit_time": "2024-12-01T00:00:00", + "pnl": 7.143180685359596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.71230009060692, + "entry_time": "2024-12-03T00:00:00", + "exit_price": 88.55956047576315, + "exit_time": "2024-12-04T00:00:00", + "pnl": -15.273961484376741, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.33867736091129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.24521783497416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.33353996675463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.17535391574476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.17558936557836, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.82464445421311, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.14823158528606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.02303868942406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0898265784532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.0375220132344, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.69877148351581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.8094147843381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.88896279741591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.58446195759505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.94461858556683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.86726342876044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.264261049502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.97378019208324, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43666090180685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.64557703864863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.41486055220747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.62832834535065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.40627623062987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.9966907903866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.62784889129782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.91665393395704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.20129913778622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.36824311350031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.44539780996692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.29577808855632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.60087912978423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.67646038571121, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17445140133515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.07045121918839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.49723620471183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.5174230546468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5413500261472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.47975770399327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.29423417091141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.27541464305773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43920860251751, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.06079463387583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.37828233356667, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.30210368322795, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.8891828858322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.6817301819728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.39002953943762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.68517685658658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.65084298157255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.93501858046714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.1907166501479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.25659603867345, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36428253311259, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01156809266551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.31879308123833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.40136182036203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17903686528695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0619221034904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.25968317752123, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.56379928977212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.80666495491704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.94182055020374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.92425119368045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.78971486194605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.23057477534164, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.4049348801832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.24159987362269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.06843389735158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.22183940097844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.93299182979392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.91637693821662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.20188970935105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.57826653579693, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.48615354430639, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.48852996658736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.70097560384337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.56660104606993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.60339517911308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.5215727488348, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.3913600319206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.66423065390151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.49406633741951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.64849065100934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.63323070552582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.88914932519062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.96225788336264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.21454142458283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.08973549159177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.91131718633395, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.95365272243404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.3677264483084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.38542382708798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.727355594576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.80184598433505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.75895482632265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.65309620079978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.18275486854981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.08066364611346, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86355002974182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.8079829991331, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.50774498473834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.15500147527054, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.25388112126257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.46869004462158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.49982930970904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.64941137818613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08181708620197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.89782993828217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.34821493675021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0511570084608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36636841676064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.22802936588096, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.13124547885464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.97034570188329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84675502390373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82877025439984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.83150510044737, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.80556016637114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.10675350799055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.84453919660923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.88147160830762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.95771616416846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.25900520967262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.28214715432236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.64410132782972, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.78845498147822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.96240900085823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01654413042846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08257869239384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.92270971634117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.9249177043285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.5475977762062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85856446370276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.8876461806366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.75554506700362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.4712342394787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.13596092844963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.29084433077668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.50946620110103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42209873300993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16470383307056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.10251353436806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16007736983093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.25346405776058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.02466944517249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.03234873384025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.11031617256702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.14530663460309, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.4442900442657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39955675926143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.19954612220634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.33374471974878, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.17850638089598, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.31970147221125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.19274532121113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.3840327772038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.48120231354616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.7121932598933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86988580253298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.76604202197464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.79597689506201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42129188541651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.67647877199742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82191220927734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84470059887572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.72847566121298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.43094423441607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39808368032986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.31641481415083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.40267706340073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.60680412325432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.51452016846274, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.31471449163298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.43834781075664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84446638005844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.49607372712997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85869892480143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.87107213537678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.83017137699973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.73075043509533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85446221431528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.13025477242799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08577867542596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.20567187514531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.27862593574773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.19411735771268, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.916410701528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.80020190906805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.03429888110497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.99059510104857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.12230359240208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.21493112615859, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.7362497471537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.90953724611552, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.99997604721491, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.25158859302469, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98246224229298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.18380160087476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.54700954481861, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.87858935796136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.82466366840129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.79031352535364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.52782616930364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.71180131795903, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.66862984653359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.94388954493733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.40172293508901, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.27308992706585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.30251070708916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.36341600243385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.07297082017436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.63576619816114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.36545808934646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.425342939227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.59476724765915, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.41575843731752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.30499551372479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.2943417590765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.20190364871404, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.35429934455371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.25575482738782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.30124986928953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.90191386326036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.96508444596826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.75989432781597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.47851546822666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.43273982617148, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.78073270556935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.29707161405977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.17141051171173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.83897503233364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.92050920813638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.39298906893524, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.24960092613485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.15249367428707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.11254847884746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.6477102979142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.66187174327492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.22816086359947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.18924739108921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.15833017318171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.35388264537053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.30391448349607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.1765702619787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.03923857682982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.14087662618776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.60285889768487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.71610220194758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.43129513858887, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.7750138677335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.5417619126041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.26004415392279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.48237494714664, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.58658168452075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.75620116852377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.69650084660127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.92028780826493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.62951533581877, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.58269597074072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.65987379372794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.66612454309691, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.8169746660663, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.5926039176473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28582192646724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.47874410921285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.57232514477201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.07482838670386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.06329982176626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.939646337063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.02294071169972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.73925579999096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.99566659891293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.99166395939717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.91107729961162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.35440315345551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.19457800884426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.87539474258334, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.03831344319956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.84933568810729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.942984467456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.28778584744732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.02443267142746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.94057536205155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.72906200441219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.38445225202611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38197492987447, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.18213638354725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04715001455901, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19838818284391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.29725636974986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.23572569098852, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3432106471416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.46834681822006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.39304905252162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4607924127623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.87391242777782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.81782457593818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.74839547168068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.9804659897062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.1820620687209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53780103937676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.35114383691389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19430169329608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0736265695374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.56101740773187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02847405275406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02877565620591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02966575553104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71076966315076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5342590029927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87172892779671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8898807030855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7509399436349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70594283596789, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.83044892913243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71383587412238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.52870331564132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.68221846843574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68293629394864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76185935158753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.77694161620539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94666597863043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09046839544105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0093802192737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.78182814117551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.75541337031265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.72371690451082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60849664049482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.94340121095276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.85028148090369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7183641880944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.93201467581261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6600503714477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71003338575711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.64414870400898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73370138654631, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.51475031329109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60797476194675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42059367470232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66628705381636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.53531464201514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2030497935449, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62268440600192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.91948342162647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.67919849510083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.43887673234494, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.17984056111294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.94368190633774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.11465699863811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97059505880482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.29459604644765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53931157007439, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49631090115352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52393358151217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66942128922241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.4946582273999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.29424834791328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07603918687664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.33479567014805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.14550463966849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9928646204638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.96872153502625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87705988155102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.53452507075421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.56396146367423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.59385740536969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.64213975217385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78882758292927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.63683672368549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.48470633760584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39062489567554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.494696351115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.93573503075692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.98885415853535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.06245234985892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.0289821017493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.22900373831216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.3157346032948, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59973514861235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.77086454804387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82096590563263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.95769963997635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.21106339352885, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07551182524406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.09759300944572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33359941396125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2288848699624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2069451450579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46522997402728, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63157812424986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92215275507255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.81904355011355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34536862719393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.4540782896955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.65179701007457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58231165488735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59222373899847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41076247699506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.57987210255567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.93696117180936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88875391692817, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.67494277755462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99358787892747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.07975990716614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07047992178705, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33559891886243, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59225467831386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.63479260217548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80334597318698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.98346554786147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92321614880655, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83699346593512, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93109508241774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96354668527802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08641930356686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.23768236549668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08211844013991, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20846159911048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.13954155854589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.89054598561034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11646823351487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.10168176297485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.30038009222437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.41339845504724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.10852951715277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.84680988625497, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00138088356287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04342924144086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.01673785551608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8508081374985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87089994615239, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9378403552245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.05201413714099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0235397935625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26517251606933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.15470785076896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4932600250258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.51252060274227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53140073996916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90203063702091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26191114348926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0634456423351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.43521818420996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38568536751181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21262216293847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.23411145607675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.82330133886903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61660062265747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71484163940588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72855192282307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.3692642985158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37837200951205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.19352686807355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.28024660066703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.96384685743692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.14877036790756, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09572264391801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53876217367774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.64617178108719, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.85422093876446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60924422208079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52724603055836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46494136842418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44406941275119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.32264147745168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0360221167863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01384655286363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97262653583181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.28024889847717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.96758302287454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.25528568314509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.20092793334622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49508373939167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.73466658206335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46436704586412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.69111891541637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21128313549013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37756823246967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04218716563325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.00014735551822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.93318531635457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84116622880475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50637869144556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.66826656058106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36257300920573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60779676375832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36220969555443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.1193839744838, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.89096232869592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.75394086603562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.10653141004636, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.98502552303084, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03115476672883, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05866288388766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.80506699745925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97004409317438, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39339911911829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28070286679336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74175784445059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6733758391721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.81901224922302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.84844274508458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.60313885279771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.41938832519848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.64052127057325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54200410559555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73590345101391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.62782637305553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79185882856454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.8357946573913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79563500808236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.09144139124615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.91260250945975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.67552176869381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.66062267455895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64149069106048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37359630109037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.51652219716766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.54575759654936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58821852619887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76782809841714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6119124553235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74629736846254, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61327551923173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.32896871135786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13780861275266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.12507835931243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13114200203424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37230639398891, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.298526480022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.14580661294434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.26371087049277, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.19265250778471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.34688434505053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.27944969864926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.00376526097061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.12691845430324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13627424638673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.90552697963446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.86432013057937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.88314466139805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.85684478131836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.8333575750649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.87580958070879, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87723690769735, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02118341969194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.14559411024791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1102070847533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.03652679668627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.64848582455738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.5160908672533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.67122680039915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.49638519206744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.23851904732544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.12623758622358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.13616044249197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.97730849654188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.93950245741028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.92103698222829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.92708766921471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.318742774315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.23642124916759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.21999028274801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.22126197659611, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.84560909030802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.53569591871245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.0165686304024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91735297539282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.2390830156373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.14925296519219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.22089116397768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.87029928541635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.89974631246403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.06863681183862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.57589026049908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.50862549547844, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62801821971621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.81567744205196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.33854066905738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.96569574948703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.07274851876403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.95622489428452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.72051069276088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.55232295814028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.40473126616526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.65640141611814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56665701011867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.46095751045398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.76022002087706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.81381751472117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.23375682446748, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01190578025698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56046438309357, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.6501420569037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.45985538510016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.32205823485288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.4213362857644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.3254460973393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.36326200776878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1350438366559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.53738507774712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.43902960493799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.28282897059066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.42427634098117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.65923583486823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.60873415539405, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.39024714619487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.66523349021156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.82876323237488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.97466728886246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.89452843928451, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.67041116090726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.63870699300467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.60806866533521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.09022889967974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.33132395141395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.1422566167072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02336448195068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.85171345155105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92826438920278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.9967936460588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02558962193989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.86654130293297, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1805076876075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.20590970247865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.04093233048125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.94025278141096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1695372755258, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.55006804279205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.74946747581956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.08829699168929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.17204398025235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82928257766983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.80555288724541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03756487304749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.92246232242579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.12455329081938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.03614640032846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.43863634543025, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57880144701099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5662997648947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63602712862732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99359531127284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.20326657631179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.36371229951278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15013947578183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.39786147444195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32525340472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1699951830038, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94415449917722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06237685823791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.88599230986543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09341138541605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29146577709628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.45209900958335, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.38892182999521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42662435004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.86711355565461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.43026737045712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.68555551249223, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.34275603824345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26115762602807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.81665975574816, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69084237577945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.80375023000443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71118042427594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.46412500503037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.6314533607136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6742741594175, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69072074935896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.12667461230008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99949417466048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.92543412582965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.72977842157017, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5701038761525, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.59977663872266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.2927331361965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.40263092608106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28632878234235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.53250654562353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.49417223286694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21737477440588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21700275153675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.24257812297434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.33447437173405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.36500808099656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62192540785213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.95467067184597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.32280422773096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.27797141913928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.85159096418194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.9332147424965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.87171080557967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.72359330386428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.38266657654837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28429001378173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01211175536163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.84310882657518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.59049236660378, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.35514007446828, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9357580237877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05072699188574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00889117962727, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.18219892584725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.96556912199465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.87607469195584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60138099475903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55643441032785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88066522817982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.67510822228188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69837663925773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.91860336977558, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.70107216756422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66971331829183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87708149049162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72163687944706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.94898877051006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.95474043698636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6415881902333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.34129447656329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9434543592522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60307524718807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.18983136258927, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07720168711411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.00591795170635, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.73390898252362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87915537734213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05356230153482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.19249105693204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35715717263174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92376356586935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8642597181964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.08761417167571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3787010770275, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.22887351223902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.18791972112416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71839956451682, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.72871333258459, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71285525012034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.95484908903208, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09252551101909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19565426763862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34851063541004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.36918149511725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.29871325433136, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43191348926673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54163438380152, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70996022231523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.44351635290319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3607156455027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.25194927165909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.09482587993352, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.05964578316673, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1247824238807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60195304694001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5077083162264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32915625849455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41904859018952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86240170807343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74311994285968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92758592270172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.91004727072426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.90746519420465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.16764239198312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.44892482562022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.29820349772235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29660996193417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34630077913107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28533190136021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.32163037675376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.20619082469412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94806731557186, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.5296456958934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2046797163239, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32570812965447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.27835226241817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.18052001757422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.21374473155299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13943605219035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26046795573633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21960702536101, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64774686400108, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.31556350692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.46149005259649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.52377288657563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.23839203319807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6963758650249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70207115016164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1906639429263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.35726613372299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1634420410312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2066382813918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0471045722787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82199720210754, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8989666578373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.77857374465485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.70919453056075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.74465000028516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60934516564298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96618622577306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78501792806425, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.76326607151933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62556378625803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.65556548612001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68684981308908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.58597625405771, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86536967969084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.75020367672924, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75062990936559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.98349381034318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04847278769076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06193871613516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60529611931622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60807864200518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90198815097345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84425841280351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66689924421028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.6348345250126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74311085652141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.87596365908365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.15467982049428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06917346679761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16088604193162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1767131466551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59084973064017, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3728256379574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.83907971020484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05336598759212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.15556945611712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.11170249260897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26806948858284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.19864576006458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02469106007196, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.37555658552148, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4719110379968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.46329135212792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.72605970139526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42143976779836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5510290269881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42138738037778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.49725923626676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.83017838441384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.96394971087318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.80946954515628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.05895494780962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.7764741456602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.82916340306784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.49615933800648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53903204926397, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.2199238563033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.15553425915469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3233546324033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29143609072966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34909878462929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79549173605427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.86012460829116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62257045149929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.36740770267758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1123342756572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.28815691102787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.89234388227695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64456440149245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.62943347351336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64788638508941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1774162868962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.00402666791075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.04453321057154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96838361247781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88321586599363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.90884833929827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7179718780841, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74821494678119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9038655497103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83750554707963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88584036004717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9446210717662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.10339943212905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0848941093554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.14949796034026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8874166822761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.75795965886634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82124488293752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.65346951457661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61396660096294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54800539421142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.46513172439276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04018712803396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2845186523261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80052936345987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.65349927893294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93158855841354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.79425107834362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.55284494377143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33529354683158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.67881964988702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76309874382866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.06380422690371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34837478850592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28272356925105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.08986442511201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19668777653186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9155347262711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86963033561574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02605497205086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.07735953777274, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.92691564488518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.63814938665311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6176086632684, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71204578933798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41015509320589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42767992948878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.23852235526199, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.49442961672796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43422929731483, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.28736530415493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.12218377264868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10919349920911, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97579394436632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.87630575654731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64709318534976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49382854321888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15699292788067, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.04266303105983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9313781112256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.69530603069572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.82075180753827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.00003866180036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.769068469798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62148930928706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0232146586156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.05026787864644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.7648966725291, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.45047976504434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.57906184617835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73227416508321, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.39276167792192, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43027834183452, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.72614964359053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.22140030401876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.40388767907393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6481057355818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.68848188004498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71473698288804, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70268409440689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.43854075921617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44140071332018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74726961853332, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8365056762946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.88893089201021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26317095880032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.37686063355893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.01130398358468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92441725059159, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89449208176279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93827683979755, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6532995649937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.4263959037515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.75213347979019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.0270700566813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76146992741955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10225140410179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.81690399898379, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0438108934807, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.80207795946215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.12592905184013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15713134695487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21575520670791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.31507102860735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2320901589937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15393731859652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07037591089997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3198194947649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69216760463115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.07388089953058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.64149353573187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71271228263036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.11471503048601, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98751858071931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.7067835294734, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.74844014533139, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.02489656616589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98294992874101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.71598064705562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90144093756582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.88369269337046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99127786199946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.25279588129149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98339215080473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84625570624047, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.50594333071952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.50759103681195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.60423833142119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.58324904624199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.89219195707862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.65911048978346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.7149396953146, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.87432845164757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.68840177129488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.93449198055023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.32948554144308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.32849848634218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.22062659109166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.95224360650606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.11404601693097, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79369852289173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.57121837540416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.70539792020504, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.81536726931864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.66590107949516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.54759559550845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11939973938362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21880305870137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.79422563292844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71312689925841, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.46426831854224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.10239283352094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.37028780606191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.13498012432488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.38863630293943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41150008980253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.14488289984781, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.17802365337732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.27104619189048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.98787909982833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.11321145433928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.23295576374296, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.85697546574279, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7517321560528, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50551757491745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.62546167858358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86332633060258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.76299264885851, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78913797285577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.00024160373006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9168412948554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7772709282975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99344762670124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45458704231757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.40001356367094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97082046191717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01206001173375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.08005345968613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.22217203577799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2425856744218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46073627278375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.58143591458905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.95177802714637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.56745694254103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.81253269752307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.86554139490539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90464875740813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96373746132312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09789228558353, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19003786584736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66999752477344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45706703230238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2209401021726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26995519560073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.23034844043512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41387280572972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.33303611955198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.52307299324875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.67190914597171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29815694731651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.11959184333037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.78483612314953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92001295323621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94709162208174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06260774305197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1459174166961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06618787236135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61303967582782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.941078352886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.01481054814181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92069860353018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.87432907187284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88014313205952, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43750435674885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.46298718335747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.92373570713617, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93253015033825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.89138819536463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6779918521803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.51002812881958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.285974590119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32248822367578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35524577583958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73566009456992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6866778828559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.84911622521342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68254626297609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.53753290340698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.40541279646611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71834890975212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.75716070422646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82803454081426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73900139072163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58423325500644, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16188235681071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.02650792631081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.00049424696184, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.27869714616556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.18595899862997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.03056917274476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6959315804981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.29325844026822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24617524245163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.27923511016385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24377176084563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.84290901749984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.45792359801233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61079046047253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59272403631071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6658144632232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76765880138052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.83153611139085, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.47875371686978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54124524065837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.99233076398606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9529292158228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9845811375129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0553452779518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.96933895446485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33843538273938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.7587929540311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.61541170919818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.48109292079488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.584127260661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.73326548896145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63121700232358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06360781499562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8561585876055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92284538933916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11237349539573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07021236134935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.17184698357968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.31228518791787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33590023205818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50027778498863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.54209415864854, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3677893725537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.22925202091126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.09309676612556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15732000186526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.68995738997093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28297081793372, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.49225030811706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.33431283007668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.00621404043055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92641929792215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.07027528339762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13008155599323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.00907183642319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.23094904986101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.2825480931582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91271666538603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05360990148436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28838235720163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.79116186423771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.76779759668747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.66567440561238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.70161264561204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.83214429583118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.77606667466077, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.66108486881463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.66515259357669, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.16857543076497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.40982511738886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.06344300783007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.82444237040852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.59077974741996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.57824858967784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.18599707786814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.23587599762591, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.52520755360774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.53896573427002, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.32372356389571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.39723460318574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.42867761884308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.41468909557778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.37521291073797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.28061929510595, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.37421531457154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.42880794685172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.10075544827296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.08909178471053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.9283105563295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.97631673436179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.83969795208085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.97701708069182, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.24948915106788, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.31081866218918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.15663810787721, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.05359196348086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.89974340615646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.86736216937868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.02917974715604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.10061155400963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.71230009060692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.55956047576315, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-04T00:00:00" + } + ], + "final_value": 99082.81840069593, + "framework": "ml4t.backtest", + "num_trades": 600, + "total_pnl": -917.1815993040655, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33867736091129, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 100.24521783497416, + "exit_reason": "signal", + "exit_time": "2020-01-03T00:00:00", + "pnl": -9.345952593714173, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33353996675463, + "entry_time": "2020-01-05T00:00:00", + "exit_price": 100.17535391574476, + "exit_reason": "signal", + "exit_time": "2020-01-06T00:00:00", + "pnl": -15.818605100987043, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.17558936557836, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 99.82464445421311, + "exit_reason": "signal", + "exit_time": "2020-01-09T00:00:00", + "pnl": -35.094491136524084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.14823158528606, + "entry_time": "2020-01-11T00:00:00", + "exit_price": 100.02303868942406, + "exit_reason": "signal", + "exit_time": "2020-01-12T00:00:00", + "pnl": -12.519289586200102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0898265784532, + "entry_time": "2020-01-14T00:00:00", + "exit_price": 100.0375220132344, + "exit_reason": "signal", + "exit_time": "2020-01-15T00:00:00", + "pnl": -5.2304565218801145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.69877148351581, + "entry_time": "2020-01-17T00:00:00", + "exit_price": 99.8094147843381, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": 11.06433008222848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.88896279741591, + "entry_time": "2020-01-20T00:00:00", + "exit_price": 99.58446195759505, + "exit_reason": "signal", + "exit_time": "2020-01-21T00:00:00", + "pnl": -30.450083982086653, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.94461858556683, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 99.86726342876044, + "exit_reason": "signal", + "exit_time": "2020-01-24T00:00:00", + "pnl": -7.735515680638855, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.264261049502, + "entry_time": "2020-01-26T00:00:00", + "exit_price": 99.97378019208324, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -29.048085741877003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43666090180685, + "entry_time": "2020-01-29T00:00:00", + "exit_price": 99.64557703864863, + "exit_reason": "signal", + "exit_time": "2020-01-30T00:00:00", + "pnl": 20.891613684178083, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.41486055220747, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 99.62832834535065, + "exit_reason": "signal", + "exit_time": "2020-02-02T00:00:00", + "pnl": 21.346779314319065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.40627623062987, + "entry_time": "2020-02-04T00:00:00", + "exit_price": 98.9966907903866, + "exit_reason": "signal", + "exit_time": "2020-02-05T00:00:00", + "pnl": -40.95854402432633, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.62784889129782, + "entry_time": "2020-02-07T00:00:00", + "exit_price": 98.91665393395704, + "exit_reason": "signal", + "exit_time": "2020-02-08T00:00:00", + "pnl": 28.880504265922355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20129913778622, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 99.36824311350031, + "exit_reason": "signal", + "exit_time": "2020-02-11T00:00:00", + "pnl": 16.694397571409354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.44539780996692, + "entry_time": "2020-02-13T00:00:00", + "exit_price": 99.29577808855632, + "exit_reason": "signal", + "exit_time": "2020-02-14T00:00:00", + "pnl": -14.96197214105996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60087912978423, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 98.67646038571121, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": 7.558125592699071, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17445140133515, + "entry_time": "2020-02-19T00:00:00", + "exit_price": 99.07045121918839, + "exit_reason": "signal", + "exit_time": "2020-02-20T00:00:00", + "pnl": -10.400018214677402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.49723620471183, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 99.5174230546468, + "exit_reason": "signal", + "exit_time": "2020-02-23T00:00:00", + "pnl": 2.0186849934980273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5413500261472, + "entry_time": "2020-02-25T00:00:00", + "exit_price": 99.47975770399327, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": -6.159232215391967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.29423417091141, + "entry_time": "2020-02-28T00:00:00", + "exit_price": 99.27541464305773, + "exit_reason": "signal", + "exit_time": "2020-02-29T00:00:00", + "pnl": -1.8819527853665932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43920860251751, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.06079463387583, + "exit_reason": "signal", + "exit_time": "2020-03-03T00:00:00", + "pnl": -37.84139686416711, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.37828233356667, + "entry_time": "2020-03-05T00:00:00", + "exit_price": 99.30210368322795, + "exit_reason": "signal", + "exit_time": "2020-03-06T00:00:00", + "pnl": -7.617865033871567, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.8891828858322, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 98.6817301819728, + "exit_reason": "signal", + "exit_time": "2020-03-09T00:00:00", + "pnl": -20.745270385939875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.39002953943762, + "entry_time": "2020-03-11T00:00:00", + "exit_price": 98.68517685658658, + "exit_reason": "signal", + "exit_time": "2020-03-12T00:00:00", + "pnl": 29.514731714896698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.65084298157255, + "entry_time": "2020-03-14T00:00:00", + "exit_price": 98.93501858046714, + "exit_reason": "signal", + "exit_time": "2020-03-15T00:00:00", + "pnl": 28.41755988945988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.1907166501479, + "entry_time": "2020-03-17T00:00:00", + "exit_price": 99.25659603867345, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 6.587938852555453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36428253311259, + "entry_time": "2020-03-20T00:00:00", + "exit_price": 99.01156809266551, + "exit_reason": "signal", + "exit_time": "2020-03-21T00:00:00", + "pnl": -35.271444044707096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31879308123833, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.40136182036203, + "exit_reason": "signal", + "exit_time": "2020-03-24T00:00:00", + "pnl": 8.256873912370793, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17903686528695, + "entry_time": "2020-03-26T00:00:00", + "exit_price": 99.0619221034904, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -11.71147617965471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25968317752123, + "entry_time": "2020-03-29T00:00:00", + "exit_price": 99.56379928977212, + "exit_reason": "signal", + "exit_time": "2020-03-30T00:00:00", + "pnl": 30.411611225090383, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.80666495491704, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 99.94182055020374, + "exit_reason": "signal", + "exit_time": "2020-04-02T00:00:00", + "pnl": 13.515559528670565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.92425119368045, + "entry_time": "2020-04-04T00:00:00", + "exit_price": 99.78971486194605, + "exit_reason": "signal", + "exit_time": "2020-04-05T00:00:00", + "pnl": -13.453633173439812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.23057477534164, + "entry_time": "2020-04-07T00:00:00", + "exit_price": 100.4049348801832, + "exit_reason": "signal", + "exit_time": "2020-04-08T00:00:00", + "pnl": 17.436010484158032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.24159987362269, + "entry_time": "2020-04-10T00:00:00", + "exit_price": 100.06843389735158, + "exit_reason": "signal", + "exit_time": "2020-04-11T00:00:00", + "pnl": -17.31659762711024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.22183940097844, + "entry_time": "2020-04-13T00:00:00", + "exit_price": 99.93299182979392, + "exit_reason": "signal", + "exit_time": "2020-04-14T00:00:00", + "pnl": -28.8847571184524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91637693821662, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 100.20188970935105, + "exit_reason": "signal", + "exit_time": "2020-04-17T00:00:00", + "pnl": 28.551277113443575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.57826653579693, + "entry_time": "2020-04-19T00:00:00", + "exit_price": 100.48615354430639, + "exit_reason": "signal", + "exit_time": "2020-04-20T00:00:00", + "pnl": -9.211299149052138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.48852996658736, + "entry_time": "2020-04-22T00:00:00", + "exit_price": 100.70097560384337, + "exit_reason": "signal", + "exit_time": "2020-04-23T00:00:00", + "pnl": 21.244563725602347, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.56660104606993, + "entry_time": "2020-04-25T00:00:00", + "exit_price": 100.60339517911308, + "exit_reason": "signal", + "exit_time": "2020-04-26T00:00:00", + "pnl": 3.6794133043149486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5215727488348, + "entry_time": "2020-04-28T00:00:00", + "exit_price": 100.3913600319206, + "exit_reason": "signal", + "exit_time": "2020-04-29T00:00:00", + "pnl": -13.021271691421134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.66423065390151, + "entry_time": "2020-05-01T00:00:00", + "exit_price": 100.49406633741951, + "exit_reason": "signal", + "exit_time": "2020-05-02T00:00:00", + "pnl": -17.016431648198704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64849065100934, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.63323070552582, + "exit_reason": "signal", + "exit_time": "2020-05-05T00:00:00", + "pnl": -1.5259945483521733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88914932519062, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 100.96225788336264, + "exit_reason": "signal", + "exit_time": "2020-05-08T00:00:00", + "pnl": 7.310855817202537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.21454142458283, + "entry_time": "2020-05-10T00:00:00", + "exit_price": 101.08973549159177, + "exit_reason": "signal", + "exit_time": "2020-05-11T00:00:00", + "pnl": -12.480593299107568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.91131718633395, + "entry_time": "2020-05-13T00:00:00", + "exit_price": 100.95365272243404, + "exit_reason": "signal", + "exit_time": "2020-05-14T00:00:00", + "pnl": 4.233553610009039, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3677264483084, + "entry_time": "2020-05-16T00:00:00", + "exit_price": 100.38542382708798, + "exit_reason": "signal", + "exit_time": "2020-05-17T00:00:00", + "pnl": 1.7697378779575956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.727355594576, + "entry_time": "2020-05-19T00:00:00", + "exit_price": 99.80184598433505, + "exit_reason": "signal", + "exit_time": "2020-05-20T00:00:00", + "pnl": 7.449038975904841, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.75895482632265, + "entry_time": "2020-05-22T00:00:00", + "exit_price": 99.65309620079978, + "exit_reason": "signal", + "exit_time": "2020-05-23T00:00:00", + "pnl": -10.585862552286926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.18275486854981, + "entry_time": "2020-05-25T00:00:00", + "exit_price": 99.08066364611346, + "exit_reason": "signal", + "exit_time": "2020-05-26T00:00:00", + "pnl": -10.209122243633828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86355002974182, + "entry_time": "2020-05-28T00:00:00", + "exit_price": 98.8079829991331, + "exit_reason": "signal", + "exit_time": "2020-05-29T00:00:00", + "pnl": -5.556703060870859, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50774498473834, + "entry_time": "2020-05-31T00:00:00", + "exit_price": 98.15500147527054, + "exit_reason": "signal", + "exit_time": "2020-06-01T00:00:00", + "pnl": -35.27435094678003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25388112126257, + "entry_time": "2020-06-03T00:00:00", + "exit_price": 98.46869004462158, + "exit_reason": "signal", + "exit_time": "2020-06-04T00:00:00", + "pnl": 21.480892335901444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.49982930970904, + "entry_time": "2020-06-06T00:00:00", + "exit_price": 98.64941137818613, + "exit_reason": "signal", + "exit_time": "2020-06-07T00:00:00", + "pnl": 14.958206847708425, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08181708620197, + "entry_time": "2020-06-09T00:00:00", + "exit_price": 98.89782993828217, + "exit_reason": "signal", + "exit_time": "2020-06-10T00:00:00", + "pnl": -18.398714791979728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.34821493675021, + "entry_time": "2020-06-12T00:00:00", + "exit_price": 99.0511570084608, + "exit_reason": "signal", + "exit_time": "2020-06-13T00:00:00", + "pnl": -29.705792828939593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36636841676064, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 99.22802936588096, + "exit_reason": "signal", + "exit_time": "2020-06-16T00:00:00", + "pnl": -13.83390508796765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.13124547885464, + "entry_time": "2020-06-18T00:00:00", + "exit_price": 98.97034570188329, + "exit_reason": "signal", + "exit_time": "2020-06-19T00:00:00", + "pnl": -16.0899776971346, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84675502390373, + "entry_time": "2020-06-21T00:00:00", + "exit_price": 98.82877025439984, + "exit_reason": "signal", + "exit_time": "2020-06-22T00:00:00", + "pnl": -1.7984769503891584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83150510044737, + "entry_time": "2020-06-24T00:00:00", + "exit_price": 98.80556016637114, + "exit_reason": "signal", + "exit_time": "2020-06-25T00:00:00", + "pnl": -2.594493407623304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.10675350799055, + "entry_time": "2020-06-27T00:00:00", + "exit_price": 98.84453919660923, + "exit_reason": "signal", + "exit_time": "2020-06-28T00:00:00", + "pnl": -26.221431138130356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88147160830762, + "entry_time": "2020-06-30T00:00:00", + "exit_price": 98.95771616416846, + "exit_reason": "signal", + "exit_time": "2020-07-01T00:00:00", + "pnl": 7.624455586083059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25900520967262, + "entry_time": "2020-07-03T00:00:00", + "exit_price": 99.28214715432236, + "exit_reason": "signal", + "exit_time": "2020-07-04T00:00:00", + "pnl": 2.314194464974207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.64410132782972, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 98.78845498147822, + "exit_reason": "signal", + "exit_time": "2020-07-07T00:00:00", + "pnl": 14.43536536485044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96240900085823, + "entry_time": "2020-07-09T00:00:00", + "exit_price": 99.01654413042846, + "exit_reason": "signal", + "exit_time": "2020-07-10T00:00:00", + "pnl": 5.413512957024068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08257869239384, + "entry_time": "2020-07-12T00:00:00", + "exit_price": 98.92270971634117, + "exit_reason": "signal", + "exit_time": "2020-07-13T00:00:00", + "pnl": -15.986897605265767, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9249177043285, + "entry_time": "2020-07-15T00:00:00", + "exit_price": 98.5475977762062, + "exit_reason": "signal", + "exit_time": "2020-07-16T00:00:00", + "pnl": -37.73199281222878, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85856446370276, + "entry_time": "2020-07-18T00:00:00", + "exit_price": 98.8876461806366, + "exit_reason": "signal", + "exit_time": "2020-07-19T00:00:00", + "pnl": 2.9081716933833377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.75554506700362, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 98.4712342394787, + "exit_reason": "signal", + "exit_time": "2020-07-22T00:00:00", + "pnl": -28.43108275249142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.13596092844963, + "entry_time": "2020-07-24T00:00:00", + "exit_price": 98.29084433077668, + "exit_reason": "signal", + "exit_time": "2020-07-25T00:00:00", + "pnl": 15.488340232703194, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50946620110103, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 98.42209873300993, + "exit_reason": "signal", + "exit_time": "2020-07-28T00:00:00", + "pnl": -8.736746809110628, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16470383307056, + "entry_time": "2020-07-30T00:00:00", + "exit_price": 98.10251353436806, + "exit_reason": "signal", + "exit_time": "2020-07-31T00:00:00", + "pnl": -6.219029870249869, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16007736983093, + "entry_time": "2020-08-02T00:00:00", + "exit_price": 98.25346405776058, + "exit_reason": "signal", + "exit_time": "2020-08-03T00:00:00", + "pnl": 9.338668792965109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.02466944517249, + "entry_time": "2020-08-05T00:00:00", + "exit_price": 98.03234873384025, + "exit_reason": "signal", + "exit_time": "2020-08-06T00:00:00", + "pnl": 0.767928866775037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11031617256702, + "entry_time": "2020-08-08T00:00:00", + "exit_price": 98.14530663460309, + "exit_reason": "signal", + "exit_time": "2020-08-09T00:00:00", + "pnl": 3.499046203607577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.4442900442657, + "entry_time": "2020-08-11T00:00:00", + "exit_price": 98.39955675926143, + "exit_reason": "signal", + "exit_time": "2020-08-12T00:00:00", + "pnl": -4.4733285004258505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19954612220634, + "entry_time": "2020-08-14T00:00:00", + "exit_price": 98.33374471974878, + "exit_reason": "signal", + "exit_time": "2020-08-15T00:00:00", + "pnl": 13.41985975424359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.17850638089598, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.31970147221125, + "exit_reason": "signal", + "exit_time": "2020-08-18T00:00:00", + "pnl": 14.119509131527593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19274532121113, + "entry_time": "2020-08-20T00:00:00", + "exit_price": 98.3840327772038, + "exit_reason": "signal", + "exit_time": "2020-08-21T00:00:00", + "pnl": 19.12874559926604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48120231354616, + "entry_time": "2020-08-23T00:00:00", + "exit_price": 98.7121932598933, + "exit_reason": "signal", + "exit_time": "2020-08-24T00:00:00", + "pnl": 23.099094634713765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86988580253298, + "entry_time": "2020-08-26T00:00:00", + "exit_price": 98.76604202197464, + "exit_reason": "signal", + "exit_time": "2020-08-27T00:00:00", + "pnl": -10.384378055832713, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.79597689506201, + "entry_time": "2020-08-29T00:00:00", + "exit_price": 98.42129188541651, + "exit_reason": "signal", + "exit_time": "2020-08-30T00:00:00", + "pnl": -37.46850096455091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67647877199742, + "entry_time": "2020-09-01T00:00:00", + "exit_price": 98.82191220927734, + "exit_reason": "signal", + "exit_time": "2020-09-02T00:00:00", + "pnl": 14.543343727991669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84470059887572, + "entry_time": "2020-09-04T00:00:00", + "exit_price": 98.72847566121298, + "exit_reason": "signal", + "exit_time": "2020-09-05T00:00:00", + "pnl": -11.622493766273692, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43094423441607, + "entry_time": "2020-09-07T00:00:00", + "exit_price": 98.39808368032986, + "exit_reason": "signal", + "exit_time": "2020-09-08T00:00:00", + "pnl": -3.2860554086219054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31641481415083, + "entry_time": "2020-09-10T00:00:00", + "exit_price": 98.40267706340073, + "exit_reason": "signal", + "exit_time": "2020-09-11T00:00:00", + "pnl": 8.62622492499031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60680412325432, + "entry_time": "2020-09-13T00:00:00", + "exit_price": 98.51452016846274, + "exit_reason": "signal", + "exit_time": "2020-09-14T00:00:00", + "pnl": -9.22839547915828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31471449163298, + "entry_time": "2020-09-16T00:00:00", + "exit_price": 98.43834781075664, + "exit_reason": "signal", + "exit_time": "2020-09-17T00:00:00", + "pnl": 12.363331912365538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84446638005844, + "entry_time": "2020-09-19T00:00:00", + "exit_price": 98.49607372712997, + "exit_reason": "signal", + "exit_time": "2020-09-20T00:00:00", + "pnl": -34.8392652928469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85869892480143, + "entry_time": "2020-09-22T00:00:00", + "exit_price": 98.87107213537678, + "exit_reason": "signal", + "exit_time": "2020-09-23T00:00:00", + "pnl": 1.237321057535155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83017137699973, + "entry_time": "2020-09-25T00:00:00", + "exit_price": 98.73075043509533, + "exit_reason": "signal", + "exit_time": "2020-09-26T00:00:00", + "pnl": -9.942094190440912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85446221431528, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.13025477242799, + "exit_reason": "signal", + "exit_time": "2020-09-29T00:00:00", + "pnl": 27.57925581127165, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08577867542596, + "entry_time": "2020-10-01T00:00:00", + "exit_price": 99.20567187514531, + "exit_reason": "signal", + "exit_time": "2020-10-02T00:00:00", + "pnl": 11.989319971935402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27862593574773, + "entry_time": "2020-10-04T00:00:00", + "exit_price": 99.19411735771268, + "exit_reason": "signal", + "exit_time": "2020-10-05T00:00:00", + "pnl": -8.450857803505642, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.916410701528, + "entry_time": "2020-10-07T00:00:00", + "exit_price": 98.80020190906805, + "exit_reason": "signal", + "exit_time": "2020-10-08T00:00:00", + "pnl": -11.620879245994729, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.03429888110497, + "entry_time": "2020-10-10T00:00:00", + "exit_price": 97.99059510104857, + "exit_reason": "signal", + "exit_time": "2020-10-11T00:00:00", + "pnl": -4.370378005640305, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.12230359240208, + "entry_time": "2020-10-13T00:00:00", + "exit_price": 98.21493112615859, + "exit_reason": "signal", + "exit_time": "2020-10-14T00:00:00", + "pnl": 9.2627533756513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7362497471537, + "entry_time": "2020-10-16T00:00:00", + "exit_price": 97.90953724611552, + "exit_reason": "signal", + "exit_time": "2020-10-17T00:00:00", + "pnl": 17.328749896181762, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99997604721491, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.25158859302469, + "exit_reason": "signal", + "exit_time": "2020-10-20T00:00:00", + "pnl": 25.161254580978493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98246224229298, + "entry_time": "2020-10-22T00:00:00", + "exit_price": 98.18380160087476, + "exit_reason": "signal", + "exit_time": "2020-10-23T00:00:00", + "pnl": 20.13393585817721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.54700954481861, + "entry_time": "2020-10-25T00:00:00", + "exit_price": 98.87858935796136, + "exit_reason": "signal", + "exit_time": "2020-10-26T00:00:00", + "pnl": 33.157981314274366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.82466366840129, + "entry_time": "2020-10-28T00:00:00", + "exit_price": 98.79031352535364, + "exit_reason": "signal", + "exit_time": "2020-10-29T00:00:00", + "pnl": -3.435014304764991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.52782616930364, + "entry_time": "2020-10-31T00:00:00", + "exit_price": 98.71180131795903, + "exit_reason": "signal", + "exit_time": "2020-11-01T00:00:00", + "pnl": 18.39751486553905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.66862984653359, + "entry_time": "2020-11-03T00:00:00", + "exit_price": 98.94388954493733, + "exit_reason": "signal", + "exit_time": "2020-11-04T00:00:00", + "pnl": 27.525969840375183, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.40172293508901, + "entry_time": "2020-11-06T00:00:00", + "exit_price": 98.27308992706585, + "exit_reason": "signal", + "exit_time": "2020-11-07T00:00:00", + "pnl": -12.863300802317099, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30251070708916, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 98.36341600243385, + "exit_reason": "signal", + "exit_time": "2020-11-10T00:00:00", + "pnl": 6.090529534470988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07297082017436, + "entry_time": "2020-11-12T00:00:00", + "exit_price": 98.63576619816114, + "exit_reason": "signal", + "exit_time": "2020-11-13T00:00:00", + "pnl": 56.279537798676756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.36545808934646, + "entry_time": "2020-11-15T00:00:00", + "exit_price": 98.425342939227, + "exit_reason": "signal", + "exit_time": "2020-11-16T00:00:00", + "pnl": 5.988484988052733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.59476724765915, + "entry_time": "2020-11-18T00:00:00", + "exit_price": 98.41575843731752, + "exit_reason": "signal", + "exit_time": "2020-11-19T00:00:00", + "pnl": -17.900881034162012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30499551372479, + "entry_time": "2020-11-21T00:00:00", + "exit_price": 98.2943417590765, + "exit_reason": "signal", + "exit_time": "2020-11-22T00:00:00", + "pnl": -1.0653754648283211, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.20190364871404, + "entry_time": "2020-11-24T00:00:00", + "exit_price": 98.35429934455371, + "exit_reason": "signal", + "exit_time": "2020-11-25T00:00:00", + "pnl": 15.23956958396775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25575482738782, + "entry_time": "2020-11-27T00:00:00", + "exit_price": 98.30124986928953, + "exit_reason": "signal", + "exit_time": "2020-11-28T00:00:00", + "pnl": 4.54950419017041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.90191386326036, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.96508444596826, + "exit_reason": "signal", + "exit_time": "2020-12-01T00:00:00", + "pnl": 6.3170582707898575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.75989432781597, + "entry_time": "2020-12-03T00:00:00", + "exit_price": 97.47851546822666, + "exit_reason": "signal", + "exit_time": "2020-12-04T00:00:00", + "pnl": -28.137885958929473, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.43273982617148, + "entry_time": "2020-12-06T00:00:00", + "exit_price": 97.78073270556935, + "exit_reason": "signal", + "exit_time": "2020-12-07T00:00:00", + "pnl": 34.799287939786154, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.29707161405977, + "entry_time": "2020-12-09T00:00:00", + "exit_price": 97.17141051171173, + "exit_reason": "signal", + "exit_time": "2020-12-10T00:00:00", + "pnl": -12.566110234804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.83897503233364, + "entry_time": "2020-12-12T00:00:00", + "exit_price": 96.92050920813638, + "exit_reason": "signal", + "exit_time": "2020-12-13T00:00:00", + "pnl": 8.153417580273526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.39298906893524, + "entry_time": "2020-12-15T00:00:00", + "exit_price": 97.24960092613485, + "exit_reason": "signal", + "exit_time": "2020-12-16T00:00:00", + "pnl": -14.338814280039514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.15249367428707, + "entry_time": "2020-12-18T00:00:00", + "exit_price": 98.11254847884746, + "exit_reason": "signal", + "exit_time": "2020-12-19T00:00:00", + "pnl": -3.99451954396136, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6477102979142, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 97.66187174327492, + "exit_reason": "signal", + "exit_time": "2020-12-22T00:00:00", + "pnl": 1.4161445360714424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.22816086359947, + "entry_time": "2020-12-24T00:00:00", + "exit_price": 97.18924739108921, + "exit_reason": "signal", + "exit_time": "2020-12-25T00:00:00", + "pnl": -3.891347251026673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.15833017318171, + "entry_time": "2020-12-27T00:00:00", + "exit_price": 97.35388264537053, + "exit_reason": "signal", + "exit_time": "2020-12-28T00:00:00", + "pnl": 19.55524721888287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30391448349607, + "entry_time": "2020-12-30T00:00:00", + "exit_price": 97.1765702619787, + "exit_reason": "signal", + "exit_time": "2020-12-31T00:00:00", + "pnl": -12.734422151735998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.03923857682982, + "entry_time": "2021-01-02T00:00:00", + "exit_price": 97.14087662618776, + "exit_reason": "signal", + "exit_time": "2021-01-03T00:00:00", + "pnl": 10.16380493579527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.60285889768487, + "entry_time": "2021-01-05T00:00:00", + "exit_price": 96.71610220194758, + "exit_reason": "signal", + "exit_time": "2021-01-06T00:00:00", + "pnl": 11.324330426270535, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.43129513858887, + "entry_time": "2021-01-08T00:00:00", + "exit_price": 96.7750138677335, + "exit_reason": "signal", + "exit_time": "2021-01-09T00:00:00", + "pnl": 34.37187291446389, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.5417619126041, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.26004415392279, + "exit_reason": "signal", + "exit_time": "2021-01-12T00:00:00", + "pnl": -28.17177586813159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.48237494714664, + "entry_time": "2021-01-14T00:00:00", + "exit_price": 96.58658168452075, + "exit_reason": "signal", + "exit_time": "2021-01-15T00:00:00", + "pnl": 10.420673737411562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.75620116852377, + "entry_time": "2021-01-17T00:00:00", + "exit_price": 96.69650084660127, + "exit_reason": "signal", + "exit_time": "2021-01-18T00:00:00", + "pnl": -5.970032192250073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.92028780826493, + "entry_time": "2021-01-20T00:00:00", + "exit_price": 95.62951533581877, + "exit_reason": "signal", + "exit_time": "2021-01-21T00:00:00", + "pnl": -29.077247244616956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.58269597074072, + "entry_time": "2021-01-23T00:00:00", + "exit_price": 95.65987379372794, + "exit_reason": "signal", + "exit_time": "2021-01-24T00:00:00", + "pnl": 7.71778229872325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.66612454309691, + "entry_time": "2021-01-26T00:00:00", + "exit_price": 95.8169746660663, + "exit_reason": "signal", + "exit_time": "2021-01-27T00:00:00", + "pnl": 15.085012296938658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5926039176473, + "entry_time": "2021-01-29T00:00:00", + "exit_price": 95.28582192646724, + "exit_reason": "signal", + "exit_time": "2021-01-30T00:00:00", + "pnl": -30.678199118006887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.47874410921285, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.57232514477201, + "exit_reason": "signal", + "exit_time": "2021-02-02T00:00:00", + "pnl": 9.358103555914568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.07482838670386, + "entry_time": "2021-02-04T00:00:00", + "exit_price": 96.06329982176626, + "exit_reason": "signal", + "exit_time": "2021-02-05T00:00:00", + "pnl": -1.1528564937580086, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.939646337063, + "entry_time": "2021-02-07T00:00:00", + "exit_price": 96.02294071169972, + "exit_reason": "signal", + "exit_time": "2021-02-08T00:00:00", + "pnl": 8.329437463671638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.73925579999096, + "entry_time": "2021-02-10T00:00:00", + "exit_price": 95.99566659891293, + "exit_reason": "signal", + "exit_time": "2021-02-11T00:00:00", + "pnl": 25.64107989219883, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.99166395939717, + "entry_time": "2021-02-13T00:00:00", + "exit_price": 95.91107729961162, + "exit_reason": "signal", + "exit_time": "2021-02-14T00:00:00", + "pnl": -8.058665978554927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.35440315345551, + "entry_time": "2021-02-16T00:00:00", + "exit_price": 96.19457800884426, + "exit_reason": "signal", + "exit_time": "2021-02-17T00:00:00", + "pnl": -15.982514461125902, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87539474258334, + "entry_time": "2021-02-19T00:00:00", + "exit_price": 96.03831344319956, + "exit_reason": "signal", + "exit_time": "2021-02-20T00:00:00", + "pnl": 16.29187006162101, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.84933568810729, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.942984467456, + "exit_reason": "signal", + "exit_time": "2021-02-23T00:00:00", + "pnl": 9.364877934871402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28778584744732, + "entry_time": "2021-02-25T00:00:00", + "exit_price": 95.02443267142746, + "exit_reason": "signal", + "exit_time": "2021-02-26T00:00:00", + "pnl": -26.33531760198639, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94057536205155, + "entry_time": "2021-02-28T00:00:00", + "exit_price": 94.72906200441219, + "exit_reason": "signal", + "exit_time": "2021-03-01T00:00:00", + "pnl": -21.151335763936004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38445225202611, + "entry_time": "2021-03-03T00:00:00", + "exit_price": 94.38197492987447, + "exit_reason": "signal", + "exit_time": "2021-03-04T00:00:00", + "pnl": -0.247732215164433, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18213638354725, + "entry_time": "2021-03-06T00:00:00", + "exit_price": 94.04715001455901, + "exit_reason": "signal", + "exit_time": "2021-03-07T00:00:00", + "pnl": -13.498636898822951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19838818284391, + "entry_time": "2021-03-09T00:00:00", + "exit_price": 94.29725636974986, + "exit_reason": "signal", + "exit_time": "2021-03-10T00:00:00", + "pnl": 9.886818690594737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23572569098852, + "entry_time": "2021-03-12T00:00:00", + "exit_price": 94.3432106471416, + "exit_reason": "signal", + "exit_time": "2021-03-13T00:00:00", + "pnl": 10.748495615309366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46834681822006, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.39304905252162, + "exit_reason": "signal", + "exit_time": "2021-03-16T00:00:00", + "pnl": -7.529776569843307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4607924127623, + "entry_time": "2021-03-18T00:00:00", + "exit_price": 94.87391242777782, + "exit_reason": "signal", + "exit_time": "2021-03-19T00:00:00", + "pnl": 41.31200150155382, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81782457593818, + "entry_time": "2021-03-21T00:00:00", + "exit_price": 94.74839547168068, + "exit_reason": "signal", + "exit_time": "2021-03-22T00:00:00", + "pnl": -6.942910425748778, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9804659897062, + "entry_time": "2021-03-24T00:00:00", + "exit_price": 95.1820620687209, + "exit_reason": "signal", + "exit_time": "2021-03-25T00:00:00", + "pnl": 20.159607901468917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53780103937676, + "entry_time": "2021-03-27T00:00:00", + "exit_price": 94.35114383691389, + "exit_reason": "signal", + "exit_time": "2021-03-28T00:00:00", + "pnl": -18.665720246286583, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19430169329608, + "entry_time": "2021-03-30T00:00:00", + "exit_price": 94.0736265695374, + "exit_reason": "signal", + "exit_time": "2021-03-31T00:00:00", + "pnl": -12.067512375868318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.56101740773187, + "entry_time": "2021-04-02T00:00:00", + "exit_price": 94.02847405275406, + "exit_reason": "signal", + "exit_time": "2021-04-03T00:00:00", + "pnl": -53.25433549778063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02877565620591, + "entry_time": "2021-04-05T00:00:00", + "exit_price": 94.02966575553104, + "exit_reason": "signal", + "exit_time": "2021-04-06T00:00:00", + "pnl": 0.08900993251336331, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71076966315076, + "entry_time": "2021-04-08T00:00:00", + "exit_price": 93.5342590029927, + "exit_reason": "signal", + "exit_time": "2021-04-09T00:00:00", + "pnl": -17.651066015805554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87172892779671, + "entry_time": "2021-04-11T00:00:00", + "exit_price": 93.8898807030855, + "exit_reason": "signal", + "exit_time": "2021-04-12T00:00:00", + "pnl": 1.8151775288788485, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7509399436349, + "entry_time": "2021-04-14T00:00:00", + "exit_price": 93.70594283596789, + "exit_reason": "signal", + "exit_time": "2021-04-15T00:00:00", + "pnl": -4.499710766702265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83044892913243, + "entry_time": "2021-04-17T00:00:00", + "exit_price": 93.71383587412238, + "exit_reason": "signal", + "exit_time": "2021-04-18T00:00:00", + "pnl": -11.6613055010057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52870331564132, + "entry_time": "2021-04-20T00:00:00", + "exit_price": 93.68221846843574, + "exit_reason": "signal", + "exit_time": "2021-04-21T00:00:00", + "pnl": 15.351515279440719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68293629394864, + "entry_time": "2021-04-23T00:00:00", + "exit_price": 93.76185935158753, + "exit_reason": "signal", + "exit_time": "2021-04-24T00:00:00", + "pnl": 7.892305763889453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77694161620539, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.94666597863043, + "exit_reason": "signal", + "exit_time": "2021-04-27T00:00:00", + "pnl": 16.972436242504045, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09046839544105, + "entry_time": "2021-04-29T00:00:00", + "exit_price": 94.0093802192737, + "exit_reason": "signal", + "exit_time": "2021-04-30T00:00:00", + "pnl": -8.108817616735905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.78182814117551, + "entry_time": "2021-05-02T00:00:00", + "exit_price": 93.75541337031265, + "exit_reason": "signal", + "exit_time": "2021-05-03T00:00:00", + "pnl": -2.6414770862847945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72371690451082, + "entry_time": "2021-05-05T00:00:00", + "exit_price": 93.60849664049482, + "exit_reason": "signal", + "exit_time": "2021-05-06T00:00:00", + "pnl": -11.52202640160067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94340121095276, + "entry_time": "2021-05-08T00:00:00", + "exit_price": 93.85028148090369, + "exit_reason": "signal", + "exit_time": "2021-05-09T00:00:00", + "pnl": -9.311973004907486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7183641880944, + "entry_time": "2021-05-11T00:00:00", + "exit_price": 93.93201467581261, + "exit_reason": "signal", + "exit_time": "2021-05-12T00:00:00", + "pnl": 21.36504877182051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6600503714477, + "entry_time": "2021-05-14T00:00:00", + "exit_price": 93.71003338575711, + "exit_reason": "signal", + "exit_time": "2021-05-15T00:00:00", + "pnl": 4.998301430941865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64414870400898, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 93.73370138654631, + "exit_reason": "signal", + "exit_time": "2021-05-18T00:00:00", + "pnl": 8.955268253732356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.51475031329109, + "entry_time": "2021-05-20T00:00:00", + "exit_price": 93.60797476194675, + "exit_reason": "signal", + "exit_time": "2021-05-21T00:00:00", + "pnl": 9.322444865565558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42059367470232, + "entry_time": "2021-05-23T00:00:00", + "exit_price": 93.66628705381636, + "exit_reason": "signal", + "exit_time": "2021-05-24T00:00:00", + "pnl": 24.569337911403636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53531464201514, + "entry_time": "2021-05-26T00:00:00", + "exit_price": 93.2030497935449, + "exit_reason": "signal", + "exit_time": "2021-05-27T00:00:00", + "pnl": -33.22648484702404, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62268440600192, + "entry_time": "2021-05-29T00:00:00", + "exit_price": 92.91948342162647, + "exit_reason": "signal", + "exit_time": "2021-05-30T00:00:00", + "pnl": 29.67990156245469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67919849510083, + "entry_time": "2021-06-01T00:00:00", + "exit_price": 92.43887673234494, + "exit_reason": "signal", + "exit_time": "2021-06-02T00:00:00", + "pnl": -24.032176275588427, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.17984056111294, + "entry_time": "2021-06-04T00:00:00", + "exit_price": 91.94368190633774, + "exit_reason": "signal", + "exit_time": "2021-06-05T00:00:00", + "pnl": -23.615865477519037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.11465699863811, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.97059505880482, + "exit_reason": "signal", + "exit_time": "2021-06-08T00:00:00", + "pnl": -14.406193983330013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29459604644765, + "entry_time": "2021-06-10T00:00:00", + "exit_price": 92.53931157007439, + "exit_reason": "signal", + "exit_time": "2021-06-11T00:00:00", + "pnl": 24.47155236267281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49631090115352, + "entry_time": "2021-06-13T00:00:00", + "exit_price": 92.52393358151217, + "exit_reason": "signal", + "exit_time": "2021-06-14T00:00:00", + "pnl": 2.762268035865418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66942128922241, + "entry_time": "2021-06-16T00:00:00", + "exit_price": 92.4946582273999, + "exit_reason": "signal", + "exit_time": "2021-06-17T00:00:00", + "pnl": -17.4763061822523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29424834791328, + "entry_time": "2021-06-19T00:00:00", + "exit_price": 92.07603918687664, + "exit_reason": "signal", + "exit_time": "2021-06-20T00:00:00", + "pnl": -21.820916103664786, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.33479567014805, + "entry_time": "2021-06-22T00:00:00", + "exit_price": 92.14550463966849, + "exit_reason": "signal", + "exit_time": "2021-06-23T00:00:00", + "pnl": -18.929103047956232, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9928646204638, + "entry_time": "2021-06-25T00:00:00", + "exit_price": 91.96872153502625, + "exit_reason": "signal", + "exit_time": "2021-06-26T00:00:00", + "pnl": -2.4143085437553964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87705988155102, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.53452507075421, + "exit_reason": "signal", + "exit_time": "2021-06-29T00:00:00", + "pnl": -34.25348107968057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.56396146367423, + "entry_time": "2021-07-01T00:00:00", + "exit_price": 91.59385740536969, + "exit_reason": "signal", + "exit_time": "2021-07-02T00:00:00", + "pnl": 2.9895941695449437, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64213975217385, + "entry_time": "2021-07-04T00:00:00", + "exit_price": 91.78882758292927, + "exit_reason": "signal", + "exit_time": "2021-07-05T00:00:00", + "pnl": 14.668783075543615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63683672368549, + "entry_time": "2021-07-07T00:00:00", + "exit_price": 91.48470633760584, + "exit_reason": "signal", + "exit_time": "2021-07-08T00:00:00", + "pnl": -15.213038607964336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39062489567554, + "entry_time": "2021-07-10T00:00:00", + "exit_price": 91.494696351115, + "exit_reason": "signal", + "exit_time": "2021-07-11T00:00:00", + "pnl": 10.407145543946172, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93573503075692, + "entry_time": "2021-07-13T00:00:00", + "exit_price": 90.98885415853535, + "exit_reason": "signal", + "exit_time": "2021-07-14T00:00:00", + "pnl": 5.3119127778427355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06245234985892, + "entry_time": "2021-07-16T00:00:00", + "exit_price": 91.0289821017493, + "exit_reason": "signal", + "exit_time": "2021-07-17T00:00:00", + "pnl": -3.3470248109606473, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22900373831216, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.3157346032948, + "exit_reason": "signal", + "exit_time": "2021-07-20T00:00:00", + "pnl": 8.673086498263729, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59973514861235, + "entry_time": "2021-07-22T00:00:00", + "exit_price": 91.77086454804387, + "exit_reason": "signal", + "exit_time": "2021-07-23T00:00:00", + "pnl": 17.112939943153833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82096590563263, + "entry_time": "2021-07-25T00:00:00", + "exit_price": 91.95769963997635, + "exit_reason": "signal", + "exit_time": "2021-07-26T00:00:00", + "pnl": 13.673373434372479, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.21106339352885, + "entry_time": "2021-07-28T00:00:00", + "exit_price": 92.07551182524406, + "exit_reason": "signal", + "exit_time": "2021-07-29T00:00:00", + "pnl": -13.555156828477266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09759300944572, + "entry_time": "2021-07-31T00:00:00", + "exit_price": 92.33359941396125, + "exit_reason": "signal", + "exit_time": "2021-08-01T00:00:00", + "pnl": 23.600640451553772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2288848699624, + "entry_time": "2021-08-03T00:00:00", + "exit_price": 92.2069451450579, + "exit_reason": "signal", + "exit_time": "2021-08-04T00:00:00", + "pnl": -2.193972490449596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46522997402728, + "entry_time": "2021-08-06T00:00:00", + "exit_price": 92.63157812424986, + "exit_reason": "signal", + "exit_time": "2021-08-07T00:00:00", + "pnl": 16.634815022258408, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92215275507255, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 92.81904355011355, + "exit_reason": "signal", + "exit_time": "2021-08-10T00:00:00", + "pnl": -10.310920495900064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34536862719393, + "entry_time": "2021-08-12T00:00:00", + "exit_price": 93.4540782896955, + "exit_reason": "signal", + "exit_time": "2021-08-13T00:00:00", + "pnl": 10.870966250156926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65179701007457, + "entry_time": "2021-08-15T00:00:00", + "exit_price": 93.58231165488735, + "exit_reason": "signal", + "exit_time": "2021-08-16T00:00:00", + "pnl": -6.948535518722565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59222373899847, + "entry_time": "2021-08-18T00:00:00", + "exit_price": 93.41076247699506, + "exit_reason": "signal", + "exit_time": "2021-08-19T00:00:00", + "pnl": -18.146126200341314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57987210255567, + "entry_time": "2021-08-21T00:00:00", + "exit_price": 93.93696117180936, + "exit_reason": "signal", + "exit_time": "2021-08-22T00:00:00", + "pnl": 35.708906925368865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88875391692817, + "entry_time": "2021-08-24T00:00:00", + "exit_price": 93.67494277755462, + "exit_reason": "signal", + "exit_time": "2021-08-25T00:00:00", + "pnl": -21.381113937353803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99358787892747, + "entry_time": "2021-08-27T00:00:00", + "exit_price": 93.07975990716614, + "exit_reason": "signal", + "exit_time": "2021-08-28T00:00:00", + "pnl": 8.617202823867046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07047992178705, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.33559891886243, + "exit_reason": "signal", + "exit_time": "2021-08-31T00:00:00", + "pnl": 26.51189970753876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59225467831386, + "entry_time": "2021-09-02T00:00:00", + "exit_price": 93.63479260217548, + "exit_reason": "signal", + "exit_time": "2021-09-03T00:00:00", + "pnl": 4.2537923861618765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80334597318698, + "entry_time": "2021-09-05T00:00:00", + "exit_price": 93.98346554786147, + "exit_reason": "signal", + "exit_time": "2021-09-06T00:00:00", + "pnl": 18.011957467449975, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92321614880655, + "entry_time": "2021-09-08T00:00:00", + "exit_price": 93.83699346593512, + "exit_reason": "signal", + "exit_time": "2021-09-09T00:00:00", + "pnl": -8.622268287143015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93109508241774, + "entry_time": "2021-09-11T00:00:00", + "exit_price": 93.96354668527802, + "exit_reason": "signal", + "exit_time": "2021-09-12T00:00:00", + "pnl": 3.245160286027385, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08641930356686, + "entry_time": "2021-09-14T00:00:00", + "exit_price": 94.23768236549668, + "exit_reason": "signal", + "exit_time": "2021-09-15T00:00:00", + "pnl": 15.126306192982156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08211844013991, + "entry_time": "2021-09-17T00:00:00", + "exit_price": 94.20846159911048, + "exit_reason": "signal", + "exit_time": "2021-09-18T00:00:00", + "pnl": 12.634315897057604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.13954155854589, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 93.89054598561034, + "exit_reason": "signal", + "exit_time": "2021-09-21T00:00:00", + "pnl": -24.89955729355279, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11646823351487, + "entry_time": "2021-09-23T00:00:00", + "exit_price": 94.10168176297485, + "exit_reason": "signal", + "exit_time": "2021-09-24T00:00:00", + "pnl": -1.4786470540020673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30038009222437, + "entry_time": "2021-09-26T00:00:00", + "exit_price": 94.41339845504724, + "exit_reason": "signal", + "exit_time": "2021-09-27T00:00:00", + "pnl": 11.301836282287695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10852951715277, + "entry_time": "2021-09-29T00:00:00", + "exit_price": 93.84680988625497, + "exit_reason": "signal", + "exit_time": "2021-09-30T00:00:00", + "pnl": -26.171963089780547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00138088356287, + "entry_time": "2021-10-02T00:00:00", + "exit_price": 94.04342924144086, + "exit_reason": "signal", + "exit_time": "2021-10-03T00:00:00", + "pnl": 4.204835787799311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01673785551608, + "entry_time": "2021-10-05T00:00:00", + "exit_price": 93.8508081374985, + "exit_reason": "signal", + "exit_time": "2021-10-06T00:00:00", + "pnl": -16.592971801757812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87089994615239, + "entry_time": "2021-10-08T00:00:00", + "exit_price": 93.9378403552245, + "exit_reason": "signal", + "exit_time": "2021-10-09T00:00:00", + "pnl": 6.694040907210365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05201413714099, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.0235397935625, + "exit_reason": "signal", + "exit_time": "2021-10-12T00:00:00", + "pnl": -2.8474343578473054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26517251606933, + "entry_time": "2021-10-14T00:00:00", + "exit_price": 94.15470785076896, + "exit_reason": "signal", + "exit_time": "2021-10-15T00:00:00", + "pnl": -11.046466530036923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4932600250258, + "entry_time": "2021-10-17T00:00:00", + "exit_price": 94.51252060274227, + "exit_reason": "signal", + "exit_time": "2021-10-18T00:00:00", + "pnl": 1.9260577716468106, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53140073996916, + "entry_time": "2021-10-20T00:00:00", + "exit_price": 94.90203063702091, + "exit_reason": "signal", + "exit_time": "2021-10-21T00:00:00", + "pnl": 37.062989705174914, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26191114348926, + "entry_time": "2021-10-23T00:00:00", + "exit_price": 94.0634456423351, + "exit_reason": "signal", + "exit_time": "2021-10-24T00:00:00", + "pnl": -19.846550115415084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43521818420996, + "entry_time": "2021-10-26T00:00:00", + "exit_price": 94.38568536751181, + "exit_reason": "signal", + "exit_time": "2021-10-27T00:00:00", + "pnl": -4.953281669813805, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21262216293847, + "entry_time": "2021-10-29T00:00:00", + "exit_price": 94.23411145607675, + "exit_reason": "signal", + "exit_time": "2021-10-30T00:00:00", + "pnl": 2.148929313827466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82330133886903, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 93.61660062265747, + "exit_reason": "signal", + "exit_time": "2021-11-02T00:00:00", + "pnl": -20.67007162115442, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71484163940588, + "entry_time": "2021-11-04T00:00:00", + "exit_price": 93.72855192282307, + "exit_reason": "signal", + "exit_time": "2021-11-05T00:00:00", + "pnl": 1.3710283417203755, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3692642985158, + "entry_time": "2021-11-07T00:00:00", + "exit_price": 93.37837200951205, + "exit_reason": "signal", + "exit_time": "2021-11-08T00:00:00", + "pnl": 0.9107710996231617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19352686807355, + "entry_time": "2021-11-10T00:00:00", + "exit_price": 93.28024660066703, + "exit_reason": "signal", + "exit_time": "2021-11-11T00:00:00", + "pnl": 8.671973259348306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96384685743692, + "entry_time": "2021-11-13T00:00:00", + "exit_price": 93.14877036790756, + "exit_reason": "signal", + "exit_time": "2021-11-14T00:00:00", + "pnl": 18.492351047065313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09572264391801, + "entry_time": "2021-11-16T00:00:00", + "exit_price": 92.53876217367774, + "exit_reason": "signal", + "exit_time": "2021-11-17T00:00:00", + "pnl": -55.6960470240283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.64617178108719, + "entry_time": "2021-11-19T00:00:00", + "exit_price": 92.85422093876446, + "exit_reason": "signal", + "exit_time": "2021-11-20T00:00:00", + "pnl": 20.804915767725106, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60924422208079, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 92.52724603055836, + "exit_reason": "signal", + "exit_time": "2021-11-23T00:00:00", + "pnl": -8.199819152243435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46494136842418, + "entry_time": "2021-11-25T00:00:00", + "exit_price": 92.44406941275119, + "exit_reason": "signal", + "exit_time": "2021-11-26T00:00:00", + "pnl": -2.0871955672973854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32264147745168, + "entry_time": "2021-11-28T00:00:00", + "exit_price": 92.0360221167863, + "exit_reason": "signal", + "exit_time": "2021-11-29T00:00:00", + "pnl": -28.661936066539056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01384655286363, + "entry_time": "2021-12-01T00:00:00", + "exit_price": 91.97262653583181, + "exit_reason": "signal", + "exit_time": "2021-12-02T00:00:00", + "pnl": -4.122001703182832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.28024889847717, + "entry_time": "2021-12-04T00:00:00", + "exit_price": 91.96758302287454, + "exit_reason": "signal", + "exit_time": "2021-12-05T00:00:00", + "pnl": -31.26658756026336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25528568314509, + "entry_time": "2021-12-07T00:00:00", + "exit_price": 92.20092793334622, + "exit_reason": "signal", + "exit_time": "2021-12-08T00:00:00", + "pnl": -5.435774979885537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49508373939167, + "entry_time": "2021-12-10T00:00:00", + "exit_price": 92.73466658206335, + "exit_reason": "signal", + "exit_time": "2021-12-11T00:00:00", + "pnl": 23.958284267167983, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46436704586412, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.69111891541637, + "exit_reason": "signal", + "exit_time": "2021-12-14T00:00:00", + "pnl": 22.67518695522449, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21128313549013, + "entry_time": "2021-12-16T00:00:00", + "exit_price": 93.37756823246967, + "exit_reason": "signal", + "exit_time": "2021-12-17T00:00:00", + "pnl": 16.628509697953632, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04218716563325, + "entry_time": "2021-12-19T00:00:00", + "exit_price": 93.00014735551822, + "exit_reason": "signal", + "exit_time": "2021-12-20T00:00:00", + "pnl": -4.203981011503856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.93318531635457, + "entry_time": "2021-12-22T00:00:00", + "exit_price": 92.84116622880475, + "exit_reason": "signal", + "exit_time": "2021-12-23T00:00:00", + "pnl": -9.20190875498156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50637869144556, + "entry_time": "2021-12-25T00:00:00", + "exit_price": 92.66826656058106, + "exit_reason": "signal", + "exit_time": "2021-12-26T00:00:00", + "pnl": 16.188786913549848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36257300920573, + "entry_time": "2021-12-28T00:00:00", + "exit_price": 92.60779676375832, + "exit_reason": "signal", + "exit_time": "2021-12-29T00:00:00", + "pnl": 24.522375455258953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36220969555443, + "entry_time": "2021-12-31T00:00:00", + "exit_price": 92.1193839744838, + "exit_reason": "signal", + "exit_time": "2022-01-01T00:00:00", + "pnl": -24.28257210706397, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89096232869592, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.75394086603562, + "exit_reason": "signal", + "exit_time": "2022-01-04T00:00:00", + "pnl": -13.702146266028649, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.10653141004636, + "entry_time": "2022-01-06T00:00:00", + "exit_price": 91.98502552303084, + "exit_reason": "signal", + "exit_time": "2022-01-07T00:00:00", + "pnl": -12.150588701551897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03115476672883, + "entry_time": "2022-01-09T00:00:00", + "exit_price": 92.05866288388766, + "exit_reason": "signal", + "exit_time": "2022-01-10T00:00:00", + "pnl": 2.7508117158831737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.80506699745925, + "entry_time": "2022-01-12T00:00:00", + "exit_price": 91.97004409317438, + "exit_reason": "signal", + "exit_time": "2022-01-13T00:00:00", + "pnl": 16.49770957151304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39339911911829, + "entry_time": "2022-01-15T00:00:00", + "exit_price": 91.28070286679336, + "exit_reason": "signal", + "exit_time": "2022-01-16T00:00:00", + "pnl": -11.269625232493127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74175784445059, + "entry_time": "2022-01-18T00:00:00", + "exit_price": 91.6733758391721, + "exit_reason": "signal", + "exit_time": "2022-01-19T00:00:00", + "pnl": -6.83820052784904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81901224922302, + "entry_time": "2022-01-21T00:00:00", + "exit_price": 91.84844274508458, + "exit_reason": "signal", + "exit_time": "2022-01-22T00:00:00", + "pnl": 2.9430495861561212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.60313885279771, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.41938832519848, + "exit_reason": "signal", + "exit_time": "2022-01-25T00:00:00", + "pnl": -18.375052759922255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64052127057325, + "entry_time": "2022-01-27T00:00:00", + "exit_price": 91.54200410559555, + "exit_reason": "signal", + "exit_time": "2022-01-28T00:00:00", + "pnl": -9.851716497769303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73590345101391, + "entry_time": "2022-01-30T00:00:00", + "exit_price": 91.62782637305553, + "exit_reason": "signal", + "exit_time": "2022-01-31T00:00:00", + "pnl": -10.807707795838724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79185882856454, + "entry_time": "2022-02-02T00:00:00", + "exit_price": 91.8357946573913, + "exit_reason": "signal", + "exit_time": "2022-02-03T00:00:00", + "pnl": 4.393582882676128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79563500808236, + "entry_time": "2022-02-05T00:00:00", + "exit_price": 92.09144139124615, + "exit_reason": "signal", + "exit_time": "2022-02-06T00:00:00", + "pnl": 29.58063831637992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.91260250945975, + "entry_time": "2022-02-08T00:00:00", + "exit_price": 91.67552176869381, + "exit_reason": "signal", + "exit_time": "2022-02-09T00:00:00", + "pnl": -23.70807407659231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66062267455895, + "entry_time": "2022-02-11T00:00:00", + "exit_price": 91.64149069106048, + "exit_reason": "signal", + "exit_time": "2022-02-12T00:00:00", + "pnl": -1.9131983498464251, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37359630109037, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.51652219716766, + "exit_reason": "signal", + "exit_time": "2022-02-15T00:00:00", + "pnl": 14.292589607728587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.54575759654936, + "entry_time": "2022-02-17T00:00:00", + "exit_price": 91.58821852619887, + "exit_reason": "signal", + "exit_time": "2022-02-18T00:00:00", + "pnl": 4.246092964951458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76782809841714, + "entry_time": "2022-02-20T00:00:00", + "exit_price": 91.6119124553235, + "exit_reason": "signal", + "exit_time": "2022-02-21T00:00:00", + "pnl": -15.591564309363093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74629736846254, + "entry_time": "2022-02-23T00:00:00", + "exit_price": 91.61327551923173, + "exit_reason": "signal", + "exit_time": "2022-02-24T00:00:00", + "pnl": -13.30218492307904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.32896871135786, + "entry_time": "2022-02-26T00:00:00", + "exit_price": 91.13780861275266, + "exit_reason": "signal", + "exit_time": "2022-02-27T00:00:00", + "pnl": -19.116009860519625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12507835931243, + "entry_time": "2022-03-01T00:00:00", + "exit_price": 91.13114200203424, + "exit_reason": "signal", + "exit_time": "2022-03-02T00:00:00", + "pnl": 0.6063642721801443, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37230639398891, + "entry_time": "2022-03-04T00:00:00", + "exit_price": 91.298526480022, + "exit_reason": "signal", + "exit_time": "2022-03-05T00:00:00", + "pnl": -7.377991396690049, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14580661294434, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.26371087049277, + "exit_reason": "signal", + "exit_time": "2022-03-08T00:00:00", + "pnl": 11.790425754843454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.19265250778471, + "entry_time": "2022-03-10T00:00:00", + "exit_price": 91.34688434505053, + "exit_reason": "signal", + "exit_time": "2022-03-11T00:00:00", + "pnl": 15.423183726581556, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.27944969864926, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 91.00376526097061, + "exit_reason": "signal", + "exit_time": "2022-03-14T00:00:00", + "pnl": -27.568443767864665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12691845430324, + "entry_time": "2022-03-16T00:00:00", + "exit_price": 91.13627424638673, + "exit_reason": "signal", + "exit_time": "2022-03-17T00:00:00", + "pnl": 0.9355792083497363, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.90552697963446, + "entry_time": "2022-03-19T00:00:00", + "exit_price": 90.86432013057937, + "exit_reason": "signal", + "exit_time": "2022-03-20T00:00:00", + "pnl": -4.120684905507005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88314466139805, + "entry_time": "2022-03-22T00:00:00", + "exit_price": 90.85684478131836, + "exit_reason": "signal", + "exit_time": "2022-03-23T00:00:00", + "pnl": -2.6299880079695868, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8333575750649, + "entry_time": "2022-03-25T00:00:00", + "exit_price": 90.87580958070879, + "exit_reason": "signal", + "exit_time": "2022-03-26T00:00:00", + "pnl": 4.245200564389961, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87723690769735, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.02118341969194, + "exit_reason": "signal", + "exit_time": "2022-03-29T00:00:00", + "pnl": 14.394651199458167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14559411024791, + "entry_time": "2022-03-31T00:00:00", + "exit_price": 91.1102070847533, + "exit_reason": "signal", + "exit_time": "2022-04-01T00:00:00", + "pnl": -3.5387025494619593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.03652679668627, + "entry_time": "2022-04-03T00:00:00", + "exit_price": 90.64848582455738, + "exit_reason": "signal", + "exit_time": "2022-04-04T00:00:00", + "pnl": -38.80409721288743, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.5160908672533, + "entry_time": "2022-04-06T00:00:00", + "exit_price": 90.67122680039915, + "exit_reason": "signal", + "exit_time": "2022-04-07T00:00:00", + "pnl": 15.513593314586615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49638519206744, + "entry_time": "2022-04-09T00:00:00", + "exit_price": 90.23851904732544, + "exit_reason": "signal", + "exit_time": "2022-04-10T00:00:00", + "pnl": -25.78661447419836, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.12623758622358, + "entry_time": "2022-04-12T00:00:00", + "exit_price": 90.13616044249197, + "exit_reason": "signal", + "exit_time": "2022-04-13T00:00:00", + "pnl": 0.9922856268385658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.97730849654188, + "entry_time": "2022-04-15T00:00:00", + "exit_price": 89.93950245741028, + "exit_reason": "signal", + "exit_time": "2022-04-16T00:00:00", + "pnl": -3.7806039131592115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.92103698222829, + "entry_time": "2022-04-18T00:00:00", + "exit_price": 89.92708766921471, + "exit_reason": "signal", + "exit_time": "2022-04-19T00:00:00", + "pnl": 0.6050686986418441, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.318742774315, + "entry_time": "2022-04-21T00:00:00", + "exit_price": 90.23642124916759, + "exit_reason": "signal", + "exit_time": "2022-04-22T00:00:00", + "pnl": -8.232152514739937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.21999028274801, + "entry_time": "2022-04-24T00:00:00", + "exit_price": 90.22126197659611, + "exit_reason": "signal", + "exit_time": "2022-04-25T00:00:00", + "pnl": 0.12716938480843964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84560909030802, + "entry_time": "2022-04-27T00:00:00", + "exit_price": 90.53569591871245, + "exit_reason": "signal", + "exit_time": "2022-04-28T00:00:00", + "pnl": -30.991317159558093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0165686304024, + "entry_time": "2022-04-30T00:00:00", + "exit_price": 90.91735297539282, + "exit_reason": "signal", + "exit_time": "2022-05-01T00:00:00", + "pnl": -9.921565500957513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2390830156373, + "entry_time": "2022-05-03T00:00:00", + "exit_price": 91.14925296519219, + "exit_reason": "signal", + "exit_time": "2022-05-04T00:00:00", + "pnl": -8.983005044510719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22089116397768, + "entry_time": "2022-05-06T00:00:00", + "exit_price": 90.87029928541635, + "exit_reason": "signal", + "exit_time": "2022-05-07T00:00:00", + "pnl": -35.059187856133576, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89974631246403, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.06863681183862, + "exit_reason": "signal", + "exit_time": "2022-05-10T00:00:00", + "pnl": 16.889049937459276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.57589026049908, + "entry_time": "2022-05-12T00:00:00", + "exit_price": 91.50862549547844, + "exit_reason": "signal", + "exit_time": "2022-05-13T00:00:00", + "pnl": -6.726476502062724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62801821971621, + "entry_time": "2022-05-15T00:00:00", + "exit_price": 91.81567744205196, + "exit_reason": "signal", + "exit_time": "2022-05-16T00:00:00", + "pnl": 18.76592223357511, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.33854066905738, + "entry_time": "2022-05-18T00:00:00", + "exit_price": 90.96569574948703, + "exit_reason": "signal", + "exit_time": "2022-05-19T00:00:00", + "pnl": -37.28449195703615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07274851876403, + "entry_time": "2022-05-21T00:00:00", + "exit_price": 90.95622489428452, + "exit_reason": "signal", + "exit_time": "2022-05-22T00:00:00", + "pnl": -11.652362447952328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.72051069276088, + "entry_time": "2022-05-24T00:00:00", + "exit_price": 90.55232295814028, + "exit_reason": "signal", + "exit_time": "2022-05-25T00:00:00", + "pnl": -16.818773462060562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.40473126616526, + "entry_time": "2022-05-27T00:00:00", + "exit_price": 90.65640141611814, + "exit_reason": "signal", + "exit_time": "2022-05-28T00:00:00", + "pnl": 25.16701499528972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56665701011867, + "entry_time": "2022-05-30T00:00:00", + "exit_price": 90.46095751045398, + "exit_reason": "signal", + "exit_time": "2022-05-31T00:00:00", + "pnl": -10.569949966469721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.76022002087706, + "entry_time": "2022-06-02T00:00:00", + "exit_price": 90.81381751472117, + "exit_reason": "signal", + "exit_time": "2022-06-03T00:00:00", + "pnl": 5.359749384409952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23375682446748, + "entry_time": "2022-06-05T00:00:00", + "exit_price": 91.01190578025698, + "exit_reason": "signal", + "exit_time": "2022-06-06T00:00:00", + "pnl": -22.18510442104889, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56046438309357, + "entry_time": "2022-06-08T00:00:00", + "exit_price": 90.6501420569037, + "exit_reason": "signal", + "exit_time": "2022-06-09T00:00:00", + "pnl": 8.96776738101289, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45985538510016, + "entry_time": "2022-06-11T00:00:00", + "exit_price": 90.32205823485288, + "exit_reason": "signal", + "exit_time": "2022-06-12T00:00:00", + "pnl": -13.77971502472792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.4213362857644, + "entry_time": "2022-06-14T00:00:00", + "exit_price": 90.3254460973393, + "exit_reason": "signal", + "exit_time": "2022-06-15T00:00:00", + "pnl": -9.589018842509176, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.36326200776878, + "entry_time": "2022-06-17T00:00:00", + "exit_price": 90.1350438366559, + "exit_reason": "signal", + "exit_time": "2022-06-18T00:00:00", + "pnl": -22.82181711128942, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.53738507774712, + "entry_time": "2022-06-20T00:00:00", + "exit_price": 90.43902960493799, + "exit_reason": "signal", + "exit_time": "2022-06-21T00:00:00", + "pnl": -9.835547280912579, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28282897059066, + "entry_time": "2022-06-23T00:00:00", + "exit_price": 90.42427634098117, + "exit_reason": "signal", + "exit_time": "2022-06-24T00:00:00", + "pnl": 14.144737039050597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.65923583486823, + "entry_time": "2022-06-26T00:00:00", + "exit_price": 90.60873415539405, + "exit_reason": "signal", + "exit_time": "2022-06-27T00:00:00", + "pnl": -5.050167947418231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.39024714619487, + "entry_time": "2022-06-29T00:00:00", + "exit_price": 90.66523349021156, + "exit_reason": "signal", + "exit_time": "2022-06-30T00:00:00", + "pnl": 27.498634401668824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82876323237488, + "entry_time": "2022-07-02T00:00:00", + "exit_price": 90.97466728886246, + "exit_reason": "signal", + "exit_time": "2022-07-03T00:00:00", + "pnl": 14.590405648757951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89452843928451, + "entry_time": "2022-07-05T00:00:00", + "exit_price": 90.67041116090726, + "exit_reason": "signal", + "exit_time": "2022-07-06T00:00:00", + "pnl": -22.411727837725266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63870699300467, + "entry_time": "2022-07-08T00:00:00", + "exit_price": 90.60806866533521, + "exit_reason": "signal", + "exit_time": "2022-07-09T00:00:00", + "pnl": -3.0638327669457794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09022889967974, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 91.33132395141395, + "exit_reason": "signal", + "exit_time": "2022-07-12T00:00:00", + "pnl": 24.109505173419166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1422566167072, + "entry_time": "2022-07-14T00:00:00", + "exit_price": 91.02336448195068, + "exit_reason": "signal", + "exit_time": "2022-07-15T00:00:00", + "pnl": -11.889213475651559, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.85171345155105, + "entry_time": "2022-07-17T00:00:00", + "exit_price": 90.92826438920278, + "exit_reason": "signal", + "exit_time": "2022-07-18T00:00:00", + "pnl": 7.65509376517366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9967936460588, + "entry_time": "2022-07-20T00:00:00", + "exit_price": 91.02558962193989, + "exit_reason": "signal", + "exit_time": "2022-07-21T00:00:00", + "pnl": 2.879597588107572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86654130293297, + "entry_time": "2022-07-23T00:00:00", + "exit_price": 91.1805076876075, + "exit_reason": "signal", + "exit_time": "2022-07-24T00:00:00", + "pnl": 31.39663846745316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20590970247865, + "entry_time": "2022-07-26T00:00:00", + "exit_price": 91.04093233048125, + "exit_reason": "signal", + "exit_time": "2022-07-27T00:00:00", + "pnl": -16.497737199741096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.94025278141096, + "entry_time": "2022-07-29T00:00:00", + "exit_price": 91.1695372755258, + "exit_reason": "signal", + "exit_time": "2022-07-30T00:00:00", + "pnl": 22.928449411483598, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55006804279205, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.74946747581956, + "exit_reason": "signal", + "exit_time": "2022-08-02T00:00:00", + "pnl": 19.939943302752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.08829699168929, + "entry_time": "2022-08-04T00:00:00", + "exit_price": 92.17204398025235, + "exit_reason": "signal", + "exit_time": "2022-08-05T00:00:00", + "pnl": 8.374698856305258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82928257766983, + "entry_time": "2022-08-07T00:00:00", + "exit_price": 91.80555288724541, + "exit_reason": "signal", + "exit_time": "2022-08-08T00:00:00", + "pnl": -2.3729690424424916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03756487304749, + "entry_time": "2022-08-10T00:00:00", + "exit_price": 91.92246232242579, + "exit_reason": "signal", + "exit_time": "2022-08-11T00:00:00", + "pnl": -11.510255062170472, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12455329081938, + "entry_time": "2022-08-13T00:00:00", + "exit_price": 92.03614640032846, + "exit_reason": "signal", + "exit_time": "2022-08-14T00:00:00", + "pnl": -8.840689049091452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43863634543025, + "entry_time": "2022-08-16T00:00:00", + "exit_price": 92.57880144701099, + "exit_reason": "signal", + "exit_time": "2022-08-17T00:00:00", + "pnl": 14.016510158073288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5662997648947, + "entry_time": "2022-08-19T00:00:00", + "exit_price": 92.63602712862732, + "exit_reason": "signal", + "exit_time": "2022-08-20T00:00:00", + "pnl": 6.972736373261796, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99359531127284, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.20326657631179, + "exit_reason": "signal", + "exit_time": "2022-08-23T00:00:00", + "pnl": 20.967126503895997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36371229951278, + "entry_time": "2022-08-25T00:00:00", + "exit_price": 93.15013947578183, + "exit_reason": "signal", + "exit_time": "2022-08-26T00:00:00", + "pnl": -21.357282373095586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39786147444195, + "entry_time": "2022-08-28T00:00:00", + "exit_price": 93.32525340472, + "exit_reason": "signal", + "exit_time": "2022-08-29T00:00:00", + "pnl": -7.260806972195496, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1699951830038, + "entry_time": "2022-08-31T00:00:00", + "exit_price": 92.94415449917722, + "exit_reason": "signal", + "exit_time": "2022-09-01T00:00:00", + "pnl": -22.584068382659098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06237685823791, + "entry_time": "2022-09-03T00:00:00", + "exit_price": 92.88599230986543, + "exit_reason": "signal", + "exit_time": "2022-09-04T00:00:00", + "pnl": -17.63845483724799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09341138541605, + "entry_time": "2022-09-06T00:00:00", + "exit_price": 93.29146577709628, + "exit_reason": "signal", + "exit_time": "2022-09-07T00:00:00", + "pnl": 19.80543916802344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.45209900958335, + "entry_time": "2022-09-09T00:00:00", + "exit_price": 93.38892182999521, + "exit_reason": "signal", + "exit_time": "2022-09-10T00:00:00", + "pnl": -6.317717958812864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42662435004, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 93.86711355565461, + "exit_reason": "signal", + "exit_time": "2022-09-13T00:00:00", + "pnl": 44.04892056146127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43026737045712, + "entry_time": "2022-09-15T00:00:00", + "exit_price": 94.68555551249223, + "exit_reason": "signal", + "exit_time": "2022-09-16T00:00:00", + "pnl": 25.5288142035115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.34275603824345, + "entry_time": "2022-09-18T00:00:00", + "exit_price": 94.26115762602807, + "exit_reason": "signal", + "exit_time": "2022-09-19T00:00:00", + "pnl": -8.159841221537135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81665975574816, + "entry_time": "2022-09-21T00:00:00", + "exit_price": 94.69084237577945, + "exit_reason": "signal", + "exit_time": "2022-09-22T00:00:00", + "pnl": -12.581737996872107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.80375023000443, + "entry_time": "2022-09-24T00:00:00", + "exit_price": 94.71118042427594, + "exit_reason": "signal", + "exit_time": "2022-09-25T00:00:00", + "pnl": -9.256980572848988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46412500503037, + "entry_time": "2022-09-27T00:00:00", + "exit_price": 94.6314533607136, + "exit_reason": "signal", + "exit_time": "2022-09-28T00:00:00", + "pnl": 16.732835568323935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6742741594175, + "entry_time": "2022-09-30T00:00:00", + "exit_price": 94.69072074935896, + "exit_reason": "signal", + "exit_time": "2022-10-01T00:00:00", + "pnl": 1.6446589941460843, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.12667461230008, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 94.99949417466048, + "exit_reason": "signal", + "exit_time": "2022-10-04T00:00:00", + "pnl": -12.71804376395994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92543412582965, + "entry_time": "2022-10-06T00:00:00", + "exit_price": 94.72977842157017, + "exit_reason": "signal", + "exit_time": "2022-10-07T00:00:00", + "pnl": -19.565570425947953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5701038761525, + "entry_time": "2022-10-09T00:00:00", + "exit_price": 94.59977663872266, + "exit_reason": "signal", + "exit_time": "2022-10-10T00:00:00", + "pnl": 2.967276257015328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2927331361965, + "entry_time": "2022-10-12T00:00:00", + "exit_price": 94.40263092608106, + "exit_reason": "signal", + "exit_time": "2022-10-13T00:00:00", + "pnl": 10.989778988454418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28632878234235, + "entry_time": "2022-10-15T00:00:00", + "exit_price": 94.53250654562353, + "exit_reason": "signal", + "exit_time": "2022-10-16T00:00:00", + "pnl": 24.617776328117543, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49417223286694, + "entry_time": "2022-10-18T00:00:00", + "exit_price": 94.21737477440588, + "exit_reason": "signal", + "exit_time": "2022-10-19T00:00:00", + "pnl": -27.679745846106016, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21700275153675, + "entry_time": "2022-10-21T00:00:00", + "exit_price": 94.24257812297434, + "exit_reason": "signal", + "exit_time": "2022-10-22T00:00:00", + "pnl": 2.557537143758964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33447437173405, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.36500808099656, + "exit_reason": "signal", + "exit_time": "2022-10-25T00:00:00", + "pnl": 3.0533709262508637, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62192540785213, + "entry_time": "2022-10-27T00:00:00", + "exit_price": 94.95467067184597, + "exit_reason": "signal", + "exit_time": "2022-10-28T00:00:00", + "pnl": 33.27452639938383, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32280422773096, + "entry_time": "2022-10-30T00:00:00", + "exit_price": 95.27797141913928, + "exit_reason": "signal", + "exit_time": "2022-10-31T00:00:00", + "pnl": -4.48328085916728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.85159096418194, + "entry_time": "2022-11-02T00:00:00", + "exit_price": 95.9332147424965, + "exit_reason": "signal", + "exit_time": "2022-11-03T00:00:00", + "pnl": 8.162377831456979, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87171080557967, + "entry_time": "2022-11-05T00:00:00", + "exit_price": 95.72359330386428, + "exit_reason": "signal", + "exit_time": "2022-11-06T00:00:00", + "pnl": -14.811750171538733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38266657654837, + "entry_time": "2022-11-08T00:00:00", + "exit_price": 95.28429001378173, + "exit_reason": "signal", + "exit_time": "2022-11-09T00:00:00", + "pnl": -9.837656276666166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01211175536163, + "entry_time": "2022-11-11T00:00:00", + "exit_price": 94.84310882657518, + "exit_reason": "signal", + "exit_time": "2022-11-12T00:00:00", + "pnl": -16.900292878646724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.59049236660378, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.35514007446828, + "exit_reason": "signal", + "exit_time": "2022-11-15T00:00:00", + "pnl": -23.535229213550338, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9357580237877, + "entry_time": "2022-11-17T00:00:00", + "exit_price": 94.05072699188574, + "exit_reason": "signal", + "exit_time": "2022-11-18T00:00:00", + "pnl": 11.49689680980373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00889117962727, + "entry_time": "2022-11-20T00:00:00", + "exit_price": 94.18219892584725, + "exit_reason": "signal", + "exit_time": "2022-11-21T00:00:00", + "pnl": 17.33077462199799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96556912199465, + "entry_time": "2022-11-23T00:00:00", + "exit_price": 93.87607469195584, + "exit_reason": "signal", + "exit_time": "2022-11-24T00:00:00", + "pnl": -8.949443003881242, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60138099475903, + "entry_time": "2022-11-26T00:00:00", + "exit_price": 93.55643441032785, + "exit_reason": "signal", + "exit_time": "2022-11-27T00:00:00", + "pnl": -4.49465844311635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88066522817982, + "entry_time": "2022-11-29T00:00:00", + "exit_price": 93.67510822228188, + "exit_reason": "signal", + "exit_time": "2022-11-30T00:00:00", + "pnl": -20.55570058979538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69837663925773, + "entry_time": "2022-12-02T00:00:00", + "exit_price": 93.91860336977558, + "exit_reason": "signal", + "exit_time": "2022-12-03T00:00:00", + "pnl": 22.022673051784295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.70107216756422, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.66971331829183, + "exit_reason": "signal", + "exit_time": "2022-12-06T00:00:00", + "pnl": -3.135884927238294, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87708149049162, + "entry_time": "2022-12-08T00:00:00", + "exit_price": 93.72163687944706, + "exit_reason": "signal", + "exit_time": "2022-12-09T00:00:00", + "pnl": -15.544461104454967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94898877051006, + "entry_time": "2022-12-11T00:00:00", + "exit_price": 93.95474043698636, + "exit_reason": "signal", + "exit_time": "2022-12-12T00:00:00", + "pnl": 0.5751666476298851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6415881902333, + "entry_time": "2022-12-14T00:00:00", + "exit_price": 93.34129447656329, + "exit_reason": "signal", + "exit_time": "2022-12-15T00:00:00", + "pnl": -30.02937136700166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9434543592522, + "entry_time": "2022-12-17T00:00:00", + "exit_price": 92.60307524718807, + "exit_reason": "signal", + "exit_time": "2022-12-18T00:00:00", + "pnl": -34.0379112064129, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.18983136258927, + "entry_time": "2022-12-20T00:00:00", + "exit_price": 92.07720168711411, + "exit_reason": "signal", + "exit_time": "2022-12-21T00:00:00", + "pnl": -11.262967547514563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00591795170635, + "entry_time": "2022-12-23T00:00:00", + "exit_price": 91.73390898252362, + "exit_reason": "signal", + "exit_time": "2022-12-24T00:00:00", + "pnl": -27.200896918275248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87915537734213, + "entry_time": "2022-12-26T00:00:00", + "exit_price": 92.05356230153482, + "exit_reason": "signal", + "exit_time": "2022-12-27T00:00:00", + "pnl": 17.440692419269908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.19249105693204, + "entry_time": "2022-12-29T00:00:00", + "exit_price": 92.35715717263174, + "exit_reason": "signal", + "exit_time": "2022-12-30T00:00:00", + "pnl": 16.466611569969245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92376356586935, + "entry_time": "2023-01-01T00:00:00", + "exit_price": 92.8642597181964, + "exit_reason": "signal", + "exit_time": "2023-01-02T00:00:00", + "pnl": -5.950384767296782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08761417167571, + "entry_time": "2023-01-04T00:00:00", + "exit_price": 93.3787010770275, + "exit_reason": "signal", + "exit_time": "2023-01-05T00:00:00", + "pnl": 29.108690535180358, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22887351223902, + "entry_time": "2023-01-07T00:00:00", + "exit_price": 93.18791972112416, + "exit_reason": "signal", + "exit_time": "2023-01-08T00:00:00", + "pnl": -4.0953791114861815, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71839956451682, + "entry_time": "2023-01-10T00:00:00", + "exit_price": 92.72871333258459, + "exit_reason": "signal", + "exit_time": "2023-01-11T00:00:00", + "pnl": 1.031376806777189, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71285525012034, + "entry_time": "2023-01-13T00:00:00", + "exit_price": 92.95484908903208, + "exit_reason": "signal", + "exit_time": "2023-01-14T00:00:00", + "pnl": 24.199383891174875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09252551101909, + "entry_time": "2023-01-16T00:00:00", + "exit_price": 93.19565426763862, + "exit_reason": "signal", + "exit_time": "2023-01-17T00:00:00", + "pnl": 10.312875661953512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34851063541004, + "entry_time": "2023-01-19T00:00:00", + "exit_price": 93.36918149511725, + "exit_reason": "signal", + "exit_time": "2023-01-20T00:00:00", + "pnl": 2.0670859707206546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.29871325433136, + "entry_time": "2023-01-22T00:00:00", + "exit_price": 93.43191348926673, + "exit_reason": "signal", + "exit_time": "2023-01-23T00:00:00", + "pnl": 13.32002349353752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54163438380152, + "entry_time": "2023-01-25T00:00:00", + "exit_price": 93.70996022231523, + "exit_reason": "signal", + "exit_time": "2023-01-26T00:00:00", + "pnl": 16.832583851371965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44351635290319, + "entry_time": "2023-01-28T00:00:00", + "exit_price": 93.3607156455027, + "exit_reason": "signal", + "exit_time": "2023-01-29T00:00:00", + "pnl": -8.280070740049268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25194927165909, + "entry_time": "2023-01-31T00:00:00", + "exit_price": 93.09482587993352, + "exit_reason": "signal", + "exit_time": "2023-02-01T00:00:00", + "pnl": -15.712339172556312, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05964578316673, + "entry_time": "2023-02-03T00:00:00", + "exit_price": 93.1247824238807, + "exit_reason": "signal", + "exit_time": "2023-02-04T00:00:00", + "pnl": 6.513664071397216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60195304694001, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.5077083162264, + "exit_reason": "signal", + "exit_time": "2023-02-07T00:00:00", + "pnl": -9.424473071361717, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32915625849455, + "entry_time": "2023-02-09T00:00:00", + "exit_price": 93.41904859018952, + "exit_reason": "signal", + "exit_time": "2023-02-10T00:00:00", + "pnl": 8.98923316949731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86240170807343, + "entry_time": "2023-02-12T00:00:00", + "exit_price": 93.74311994285968, + "exit_reason": "signal", + "exit_time": "2023-02-13T00:00:00", + "pnl": -11.928176521374553, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92758592270172, + "entry_time": "2023-02-15T00:00:00", + "exit_price": 93.91004727072426, + "exit_reason": "signal", + "exit_time": "2023-02-16T00:00:00", + "pnl": -1.7538651977465634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.90746519420465, + "entry_time": "2023-02-18T00:00:00", + "exit_price": 94.16764239198312, + "exit_reason": "signal", + "exit_time": "2023-02-19T00:00:00", + "pnl": 26.01771977784665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.44892482562022, + "entry_time": "2023-02-21T00:00:00", + "exit_price": 94.29820349772235, + "exit_reason": "signal", + "exit_time": "2023-02-22T00:00:00", + "pnl": -15.072132789788157, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29660996193417, + "entry_time": "2023-02-24T00:00:00", + "exit_price": 94.34630077913107, + "exit_reason": "signal", + "exit_time": "2023-02-25T00:00:00", + "pnl": 4.9690817196897115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28533190136021, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.32163037675376, + "exit_reason": "signal", + "exit_time": "2023-02-28T00:00:00", + "pnl": 3.6298475393559784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20619082469412, + "entry_time": "2023-03-02T00:00:00", + "exit_price": 93.94806731557186, + "exit_reason": "signal", + "exit_time": "2023-03-03T00:00:00", + "pnl": -25.812350912225156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5296456958934, + "entry_time": "2023-03-05T00:00:00", + "exit_price": 93.2046797163239, + "exit_reason": "signal", + "exit_time": "2023-03-06T00:00:00", + "pnl": -32.4965979569497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32570812965447, + "entry_time": "2023-03-08T00:00:00", + "exit_price": 93.27835226241817, + "exit_reason": "signal", + "exit_time": "2023-03-09T00:00:00", + "pnl": -4.73558672362924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18052001757422, + "entry_time": "2023-03-11T00:00:00", + "exit_price": 93.21374473155299, + "exit_reason": "signal", + "exit_time": "2023-03-12T00:00:00", + "pnl": 3.322471397877962, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13943605219035, + "entry_time": "2023-03-14T00:00:00", + "exit_price": 93.26046795573633, + "exit_reason": "signal", + "exit_time": "2023-03-15T00:00:00", + "pnl": 12.103190354599064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21960702536101, + "entry_time": "2023-03-17T00:00:00", + "exit_price": 92.64774686400108, + "exit_reason": "signal", + "exit_time": "2023-03-18T00:00:00", + "pnl": -57.18601613599458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31556350692, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.46149005259649, + "exit_reason": "signal", + "exit_time": "2023-03-21T00:00:00", + "pnl": 14.592654567648424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52377288657563, + "entry_time": "2023-03-23T00:00:00", + "exit_price": 92.23839203319807, + "exit_reason": "signal", + "exit_time": "2023-03-24T00:00:00", + "pnl": -28.538085337755547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6963758650249, + "entry_time": "2023-03-26T00:00:00", + "exit_price": 92.70207115016164, + "exit_reason": "signal", + "exit_time": "2023-03-27T00:00:00", + "pnl": 0.5695285136735038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1906639429263, + "entry_time": "2023-03-29T00:00:00", + "exit_price": 93.35726613372299, + "exit_reason": "signal", + "exit_time": "2023-03-30T00:00:00", + "pnl": 16.660219079667513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1634420410312, + "entry_time": "2023-04-01T00:00:00", + "exit_price": 93.2066382813918, + "exit_reason": "signal", + "exit_time": "2023-04-02T00:00:00", + "pnl": 4.319624036061214, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0471045722787, + "entry_time": "2023-04-04T00:00:00", + "exit_price": 92.82199720210754, + "exit_reason": "signal", + "exit_time": "2023-04-05T00:00:00", + "pnl": -22.51073701711539, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8989666578373, + "entry_time": "2023-04-07T00:00:00", + "exit_price": 92.77857374465485, + "exit_reason": "signal", + "exit_time": "2023-04-08T00:00:00", + "pnl": -12.039291318245887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.70919453056075, + "entry_time": "2023-04-10T00:00:00", + "exit_price": 92.74465000028516, + "exit_reason": "signal", + "exit_time": "2023-04-11T00:00:00", + "pnl": 3.5455469724420254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60934516564298, + "entry_time": "2023-04-13T00:00:00", + "exit_price": 92.96618622577306, + "exit_reason": "signal", + "exit_time": "2023-04-14T00:00:00", + "pnl": 35.684106013008204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78501792806425, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.76326607151933, + "exit_reason": "signal", + "exit_time": "2023-04-17T00:00:00", + "pnl": -2.175185654492452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62556378625803, + "entry_time": "2023-04-19T00:00:00", + "exit_price": 92.65556548612001, + "exit_reason": "signal", + "exit_time": "2023-04-20T00:00:00", + "pnl": 3.000169986198671, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68684981308908, + "entry_time": "2023-04-22T00:00:00", + "exit_price": 92.58597625405771, + "exit_reason": "signal", + "exit_time": "2023-04-23T00:00:00", + "pnl": -10.087355903136995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86536967969084, + "entry_time": "2023-04-25T00:00:00", + "exit_price": 92.75020367672924, + "exit_reason": "signal", + "exit_time": "2023-04-26T00:00:00", + "pnl": -11.516600296161414, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75062990936559, + "entry_time": "2023-04-28T00:00:00", + "exit_price": 92.98349381034318, + "exit_reason": "signal", + "exit_time": "2023-04-29T00:00:00", + "pnl": 23.286390097759067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04847278769076, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 93.06193871613516, + "exit_reason": "signal", + "exit_time": "2023-05-02T00:00:00", + "pnl": 1.346592844440238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60529611931622, + "entry_time": "2023-05-04T00:00:00", + "exit_price": 92.60807864200518, + "exit_reason": "signal", + "exit_time": "2023-05-05T00:00:00", + "pnl": 0.27825226889581245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90198815097345, + "entry_time": "2023-05-07T00:00:00", + "exit_price": 92.84425841280351, + "exit_reason": "signal", + "exit_time": "2023-05-08T00:00:00", + "pnl": -5.772973816992817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66689924421028, + "entry_time": "2023-05-10T00:00:00", + "exit_price": 92.6348345250126, + "exit_reason": "signal", + "exit_time": "2023-05-11T00:00:00", + "pnl": -3.206471919769683, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74311085652141, + "entry_time": "2023-05-13T00:00:00", + "exit_price": 92.87596365908365, + "exit_reason": "signal", + "exit_time": "2023-05-14T00:00:00", + "pnl": 13.285280256222904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15467982049428, + "entry_time": "2023-05-16T00:00:00", + "exit_price": 93.06917346679761, + "exit_reason": "signal", + "exit_time": "2023-05-17T00:00:00", + "pnl": -8.550635369667361, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16088604193162, + "entry_time": "2023-05-19T00:00:00", + "exit_price": 93.1767131466551, + "exit_reason": "signal", + "exit_time": "2023-05-20T00:00:00", + "pnl": 1.5827104723484808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59084973064017, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.3728256379574, + "exit_reason": "signal", + "exit_time": "2023-05-23T00:00:00", + "pnl": -21.80240926827537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83907971020484, + "entry_time": "2023-05-25T00:00:00", + "exit_price": 94.05336598759212, + "exit_reason": "signal", + "exit_time": "2023-05-26T00:00:00", + "pnl": 21.4286277387273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15556945611712, + "entry_time": "2023-05-28T00:00:00", + "exit_price": 94.11170249260897, + "exit_reason": "signal", + "exit_time": "2023-05-29T00:00:00", + "pnl": -4.386696350815328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26806948858284, + "entry_time": "2023-05-31T00:00:00", + "exit_price": 94.19864576006458, + "exit_reason": "signal", + "exit_time": "2023-06-01T00:00:00", + "pnl": -6.9423728518268035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02469106007196, + "entry_time": "2023-06-03T00:00:00", + "exit_price": 94.37555658552148, + "exit_reason": "signal", + "exit_time": "2023-06-04T00:00:00", + "pnl": 35.0865525449517, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4719110379968, + "entry_time": "2023-06-06T00:00:00", + "exit_price": 94.46329135212792, + "exit_reason": "signal", + "exit_time": "2023-06-07T00:00:00", + "pnl": -0.8619685868870874, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.72605970139526, + "entry_time": "2023-06-09T00:00:00", + "exit_price": 94.42143976779836, + "exit_reason": "signal", + "exit_time": "2023-06-10T00:00:00", + "pnl": -30.461993359689586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5510290269881, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.42138738037778, + "exit_reason": "signal", + "exit_time": "2023-06-13T00:00:00", + "pnl": -12.964164661032555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49725923626676, + "entry_time": "2023-06-15T00:00:00", + "exit_price": 94.83017838441384, + "exit_reason": "signal", + "exit_time": "2023-06-16T00:00:00", + "pnl": 33.291914814708434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.96394971087318, + "entry_time": "2023-06-18T00:00:00", + "exit_price": 94.80946954515628, + "exit_reason": "signal", + "exit_time": "2023-06-19T00:00:00", + "pnl": -15.44801657169046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.05895494780962, + "entry_time": "2023-06-21T00:00:00", + "exit_price": 94.7764741456602, + "exit_reason": "signal", + "exit_time": "2023-06-22T00:00:00", + "pnl": -28.248080214942092, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.82916340306784, + "entry_time": "2023-06-24T00:00:00", + "exit_price": 94.49615933800648, + "exit_reason": "signal", + "exit_time": "2023-06-25T00:00:00", + "pnl": -33.300406506135914, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53903204926397, + "entry_time": "2023-06-27T00:00:00", + "exit_price": 94.2199238563033, + "exit_reason": "signal", + "exit_time": "2023-06-28T00:00:00", + "pnl": -31.91081929606662, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15553425915469, + "entry_time": "2023-06-30T00:00:00", + "exit_price": 94.3233546324033, + "exit_reason": "signal", + "exit_time": "2023-07-01T00:00:00", + "pnl": 16.78203732486145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29143609072966, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.34909878462929, + "exit_reason": "signal", + "exit_time": "2023-07-04T00:00:00", + "pnl": 5.766269389963782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79549173605427, + "entry_time": "2023-07-06T00:00:00", + "exit_price": 94.86012460829116, + "exit_reason": "signal", + "exit_time": "2023-07-07T00:00:00", + "pnl": 6.463287223687075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62257045149929, + "entry_time": "2023-07-09T00:00:00", + "exit_price": 94.36740770267758, + "exit_reason": "signal", + "exit_time": "2023-07-10T00:00:00", + "pnl": -25.516274882171274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1123342756572, + "entry_time": "2023-07-12T00:00:00", + "exit_price": 94.28815691102787, + "exit_reason": "signal", + "exit_time": "2023-07-13T00:00:00", + "pnl": 17.582263537065955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89234388227695, + "entry_time": "2023-07-15T00:00:00", + "exit_price": 93.64456440149245, + "exit_reason": "signal", + "exit_time": "2023-07-16T00:00:00", + "pnl": -24.77794807845021, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.62943347351336, + "entry_time": "2023-07-18T00:00:00", + "exit_price": 93.64788638508941, + "exit_reason": "signal", + "exit_time": "2023-07-19T00:00:00", + "pnl": 1.8452911576041515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1774162868962, + "entry_time": "2023-07-21T00:00:00", + "exit_price": 94.00402666791075, + "exit_reason": "signal", + "exit_time": "2023-07-22T00:00:00", + "pnl": -17.338961898545676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.04453321057154, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.96838361247781, + "exit_reason": "signal", + "exit_time": "2023-07-25T00:00:00", + "pnl": -7.614959809372522, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88321586599363, + "entry_time": "2023-07-27T00:00:00", + "exit_price": 93.90884833929827, + "exit_reason": "signal", + "exit_time": "2023-07-28T00:00:00", + "pnl": 2.5632473304649466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7179718780841, + "entry_time": "2023-07-30T00:00:00", + "exit_price": 93.74821494678119, + "exit_reason": "signal", + "exit_time": "2023-07-31T00:00:00", + "pnl": 3.0243068697091076, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9038655497103, + "entry_time": "2023-08-02T00:00:00", + "exit_price": 93.83750554707963, + "exit_reason": "signal", + "exit_time": "2023-08-03T00:00:00", + "pnl": -6.6360002630663075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88584036004717, + "entry_time": "2023-08-05T00:00:00", + "exit_price": 93.9446210717662, + "exit_reason": "signal", + "exit_time": "2023-08-06T00:00:00", + "pnl": 5.878071171904594, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10339943212905, + "entry_time": "2023-08-08T00:00:00", + "exit_price": 94.0848941093554, + "exit_reason": "signal", + "exit_time": "2023-08-09T00:00:00", + "pnl": -1.850532277363527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.14949796034026, + "entry_time": "2023-08-11T00:00:00", + "exit_price": 93.8874166822761, + "exit_reason": "signal", + "exit_time": "2023-08-12T00:00:00", + "pnl": -26.208127806416087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75795965886634, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 93.82124488293752, + "exit_reason": "signal", + "exit_time": "2023-08-15T00:00:00", + "pnl": 6.328522407116907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65346951457661, + "entry_time": "2023-08-17T00:00:00", + "exit_price": 93.61396660096294, + "exit_reason": "signal", + "exit_time": "2023-08-18T00:00:00", + "pnl": -3.950291361366908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54800539421142, + "entry_time": "2023-08-20T00:00:00", + "exit_price": 93.46513172439276, + "exit_reason": "signal", + "exit_time": "2023-08-21T00:00:00", + "pnl": -8.287366981865489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04018712803396, + "entry_time": "2023-08-23T00:00:00", + "exit_price": 93.2845186523261, + "exit_reason": "signal", + "exit_time": "2023-08-24T00:00:00", + "pnl": 24.433152429213806, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80052936345987, + "entry_time": "2023-08-26T00:00:00", + "exit_price": 93.65349927893294, + "exit_reason": "signal", + "exit_time": "2023-08-27T00:00:00", + "pnl": -14.703008452692302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93158855841354, + "entry_time": "2023-08-29T00:00:00", + "exit_price": 93.79425107834362, + "exit_reason": "signal", + "exit_time": "2023-08-30T00:00:00", + "pnl": -13.733748006990936, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55284494377143, + "entry_time": "2023-09-01T00:00:00", + "exit_price": 93.33529354683158, + "exit_reason": "signal", + "exit_time": "2023-09-02T00:00:00", + "pnl": -21.755139693985257, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67881964988702, + "entry_time": "2023-09-04T00:00:00", + "exit_price": 93.76309874382866, + "exit_reason": "signal", + "exit_time": "2023-09-05T00:00:00", + "pnl": 8.427909394165908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.06380422690371, + "entry_time": "2023-09-07T00:00:00", + "exit_price": 94.34837478850592, + "exit_reason": "signal", + "exit_time": "2023-09-08T00:00:00", + "pnl": 28.45705616021951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28272356925105, + "entry_time": "2023-09-10T00:00:00", + "exit_price": 94.08986442511201, + "exit_reason": "signal", + "exit_time": "2023-09-11T00:00:00", + "pnl": -19.28591441390381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19668777653186, + "entry_time": "2023-09-13T00:00:00", + "exit_price": 93.9155347262711, + "exit_reason": "signal", + "exit_time": "2023-09-14T00:00:00", + "pnl": -28.115305026074566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86963033561574, + "entry_time": "2023-09-16T00:00:00", + "exit_price": 94.02605497205086, + "exit_reason": "signal", + "exit_time": "2023-09-17T00:00:00", + "pnl": 15.64246364351311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07735953777274, + "entry_time": "2023-09-19T00:00:00", + "exit_price": 93.92691564488518, + "exit_reason": "signal", + "exit_time": "2023-09-20T00:00:00", + "pnl": -15.044389288754246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.63814938665311, + "entry_time": "2023-09-22T00:00:00", + "exit_price": 93.6176086632684, + "exit_reason": "signal", + "exit_time": "2023-09-23T00:00:00", + "pnl": -2.0540723384710873, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71204578933798, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.41015509320589, + "exit_reason": "signal", + "exit_time": "2023-09-26T00:00:00", + "pnl": -30.18906961320863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42767992948878, + "entry_time": "2023-09-28T00:00:00", + "exit_price": 93.23852235526199, + "exit_reason": "signal", + "exit_time": "2023-09-29T00:00:00", + "pnl": -18.915757422677416, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49442961672796, + "entry_time": "2023-10-01T00:00:00", + "exit_price": 93.43422929731483, + "exit_reason": "signal", + "exit_time": "2023-10-02T00:00:00", + "pnl": -6.020031941312482, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.28736530415493, + "entry_time": "2023-10-04T00:00:00", + "exit_price": 93.12218377264868, + "exit_reason": "signal", + "exit_time": "2023-10-05T00:00:00", + "pnl": -16.51815315062595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10919349920911, + "entry_time": "2023-10-07T00:00:00", + "exit_price": 92.97579394436632, + "exit_reason": "signal", + "exit_time": "2023-10-08T00:00:00", + "pnl": -13.339955484278107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87630575654731, + "entry_time": "2023-10-10T00:00:00", + "exit_price": 92.64709318534976, + "exit_reason": "signal", + "exit_time": "2023-10-11T00:00:00", + "pnl": -22.921257119754955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49382854321888, + "entry_time": "2023-10-13T00:00:00", + "exit_price": 92.15699292788067, + "exit_reason": "signal", + "exit_time": "2023-10-14T00:00:00", + "pnl": -33.683561533820466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04266303105983, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.9313781112256, + "exit_reason": "signal", + "exit_time": "2023-10-17T00:00:00", + "pnl": -11.128491983423373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.69530603069572, + "entry_time": "2023-10-19T00:00:00", + "exit_price": 91.82075180753827, + "exit_reason": "signal", + "exit_time": "2023-10-20T00:00:00", + "pnl": 12.544577684255273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00003866180036, + "entry_time": "2023-10-22T00:00:00", + "exit_price": 91.769068469798, + "exit_reason": "signal", + "exit_time": "2023-10-23T00:00:00", + "pnl": -23.09701920023508, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62148930928706, + "entry_time": "2023-10-25T00:00:00", + "exit_price": 92.0232146586156, + "exit_reason": "signal", + "exit_time": "2023-10-26T00:00:00", + "pnl": 40.17253493285352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05026787864644, + "entry_time": "2023-10-28T00:00:00", + "exit_price": 91.7648966725291, + "exit_reason": "signal", + "exit_time": "2023-10-29T00:00:00", + "pnl": -28.53712061173428, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45047976504434, + "entry_time": "2023-10-31T00:00:00", + "exit_price": 91.57906184617835, + "exit_reason": "signal", + "exit_time": "2023-11-01T00:00:00", + "pnl": 12.858208113402725, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73227416508321, + "entry_time": "2023-11-03T00:00:00", + "exit_price": 91.39276167792192, + "exit_reason": "signal", + "exit_time": "2023-11-04T00:00:00", + "pnl": -33.95124871613007, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43027834183452, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.72614964359053, + "exit_reason": "signal", + "exit_time": "2023-11-07T00:00:00", + "pnl": 29.58713017559967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22140030401876, + "entry_time": "2023-11-09T00:00:00", + "exit_price": 92.40388767907393, + "exit_reason": "signal", + "exit_time": "2023-11-10T00:00:00", + "pnl": 18.248737505517056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6481057355818, + "entry_time": "2023-11-12T00:00:00", + "exit_price": 92.68848188004498, + "exit_reason": "signal", + "exit_time": "2023-11-13T00:00:00", + "pnl": 4.037614446318912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71473698288804, + "entry_time": "2023-11-15T00:00:00", + "exit_price": 92.70268409440689, + "exit_reason": "signal", + "exit_time": "2023-11-16T00:00:00", + "pnl": -1.2052888481157424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43854075921617, + "entry_time": "2023-11-18T00:00:00", + "exit_price": 92.44140071332018, + "exit_reason": "signal", + "exit_time": "2023-11-19T00:00:00", + "pnl": 0.28599541040057375, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74726961853332, + "entry_time": "2023-11-21T00:00:00", + "exit_price": 92.8365056762946, + "exit_reason": "signal", + "exit_time": "2023-11-22T00:00:00", + "pnl": 8.92360577612817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88893089201021, + "entry_time": "2023-11-24T00:00:00", + "exit_price": 93.26317095880032, + "exit_reason": "signal", + "exit_time": "2023-11-25T00:00:00", + "pnl": 37.424006679009835, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37686063355893, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 93.01130398358468, + "exit_reason": "signal", + "exit_time": "2023-11-28T00:00:00", + "pnl": -36.55566499742599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92441725059159, + "entry_time": "2023-11-30T00:00:00", + "exit_price": 92.89449208176279, + "exit_reason": "signal", + "exit_time": "2023-12-01T00:00:00", + "pnl": -2.9925168828794995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93827683979755, + "entry_time": "2023-12-03T00:00:00", + "exit_price": 93.6532995649937, + "exit_reason": "signal", + "exit_time": "2023-12-04T00:00:00", + "pnl": -28.49772748038413, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.4263959037515, + "entry_time": "2023-12-06T00:00:00", + "exit_price": 93.75213347979019, + "exit_reason": "signal", + "exit_time": "2023-12-07T00:00:00", + "pnl": 32.573757603870035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.0270700566813, + "entry_time": "2023-12-09T00:00:00", + "exit_price": 93.76146992741955, + "exit_reason": "signal", + "exit_time": "2023-12-10T00:00:00", + "pnl": -26.56001292617475, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10225140410179, + "entry_time": "2023-12-12T00:00:00", + "exit_price": 92.81690399898379, + "exit_reason": "signal", + "exit_time": "2023-12-13T00:00:00", + "pnl": -28.5347405117991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0438108934807, + "entry_time": "2023-12-15T00:00:00", + "exit_price": 92.80207795946215, + "exit_reason": "signal", + "exit_time": "2023-12-16T00:00:00", + "pnl": -24.173293401854608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12592905184013, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 93.15713134695487, + "exit_reason": "signal", + "exit_time": "2023-12-19T00:00:00", + "pnl": 3.120229511472644, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21575520670791, + "entry_time": "2023-12-21T00:00:00", + "exit_price": 93.31507102860735, + "exit_reason": "signal", + "exit_time": "2023-12-22T00:00:00", + "pnl": 9.931582189943583, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2320901589937, + "entry_time": "2023-12-24T00:00:00", + "exit_price": 93.15393731859652, + "exit_reason": "signal", + "exit_time": "2023-12-25T00:00:00", + "pnl": -7.815284039717881, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07037591089997, + "entry_time": "2023-12-27T00:00:00", + "exit_price": 93.3198194947649, + "exit_reason": "signal", + "exit_time": "2023-12-28T00:00:00", + "pnl": 24.94435838649406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69216760463115, + "entry_time": "2023-12-30T00:00:00", + "exit_price": 94.07388089953058, + "exit_reason": "signal", + "exit_time": "2023-12-31T00:00:00", + "pnl": 38.171329489941854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.64149353573187, + "entry_time": "2024-01-02T00:00:00", + "exit_price": 94.71271228263036, + "exit_reason": "signal", + "exit_time": "2024-01-03T00:00:00", + "pnl": 7.121874689850301, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.11471503048601, + "entry_time": "2024-01-05T00:00:00", + "exit_price": 94.98751858071931, + "exit_reason": "signal", + "exit_time": "2024-01-06T00:00:00", + "pnl": -12.71964497666886, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7067835294734, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.74844014533139, + "exit_reason": "signal", + "exit_time": "2024-01-09T00:00:00", + "pnl": 4.165661585799171, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.02489656616589, + "entry_time": "2024-01-11T00:00:00", + "exit_price": 94.98294992874101, + "exit_reason": "signal", + "exit_time": "2024-01-12T00:00:00", + "pnl": -4.194663742489865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.71598064705562, + "entry_time": "2024-01-14T00:00:00", + "exit_price": 94.90144093756582, + "exit_reason": "signal", + "exit_time": "2024-01-15T00:00:00", + "pnl": 18.546029051020014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88369269337046, + "entry_time": "2024-01-17T00:00:00", + "exit_price": 94.99127786199946, + "exit_reason": "signal", + "exit_time": "2024-01-18T00:00:00", + "pnl": 10.758516862899342, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.25279588129149, + "entry_time": "2024-01-20T00:00:00", + "exit_price": 94.98339215080473, + "exit_reason": "signal", + "exit_time": "2024-01-21T00:00:00", + "pnl": -26.94037304867561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84625570624047, + "entry_time": "2024-01-23T00:00:00", + "exit_price": 94.50594333071952, + "exit_reason": "signal", + "exit_time": "2024-01-24T00:00:00", + "pnl": -34.03123755209526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50759103681195, + "entry_time": "2024-01-26T00:00:00", + "exit_price": 94.60423833142119, + "exit_reason": "signal", + "exit_time": "2024-01-27T00:00:00", + "pnl": 9.664729460924718, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.58324904624199, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.89219195707862, + "exit_reason": "signal", + "exit_time": "2024-01-30T00:00:00", + "pnl": 30.89429108366494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65911048978346, + "entry_time": "2024-02-01T00:00:00", + "exit_price": 94.7149396953146, + "exit_reason": "signal", + "exit_time": "2024-02-02T00:00:00", + "pnl": 5.5829205531154, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.87432845164757, + "entry_time": "2024-02-04T00:00:00", + "exit_price": 94.68840177129488, + "exit_reason": "signal", + "exit_time": "2024-02-05T00:00:00", + "pnl": -18.592668035269526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.93449198055023, + "entry_time": "2024-02-07T00:00:00", + "exit_price": 95.32948554144308, + "exit_reason": "signal", + "exit_time": "2024-02-08T00:00:00", + "pnl": 39.49935608928536, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32849848634218, + "entry_time": "2024-02-10T00:00:00", + "exit_price": 95.22062659109166, + "exit_reason": "signal", + "exit_time": "2024-02-11T00:00:00", + "pnl": -10.787189525051872, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95224360650606, + "entry_time": "2024-02-13T00:00:00", + "exit_price": 95.11404601693097, + "exit_reason": "signal", + "exit_time": "2024-02-14T00:00:00", + "pnl": 16.180241042491616, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79369852289173, + "entry_time": "2024-02-16T00:00:00", + "exit_price": 94.57121837540416, + "exit_reason": "signal", + "exit_time": "2024-02-17T00:00:00", + "pnl": -22.248014748758578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70539792020504, + "entry_time": "2024-02-19T00:00:00", + "exit_price": 94.81536726931864, + "exit_reason": "signal", + "exit_time": "2024-02-20T00:00:00", + "pnl": 10.996934911359858, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.66590107949516, + "entry_time": "2024-02-22T00:00:00", + "exit_price": 94.54759559550845, + "exit_reason": "signal", + "exit_time": "2024-02-23T00:00:00", + "pnl": -11.830548398671453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11939973938362, + "entry_time": "2024-02-25T00:00:00", + "exit_price": 94.21880305870137, + "exit_reason": "signal", + "exit_time": "2024-02-26T00:00:00", + "pnl": 9.940331931773471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79422563292844, + "entry_time": "2024-02-28T00:00:00", + "exit_price": 93.71312689925841, + "exit_reason": "signal", + "exit_time": "2024-02-29T00:00:00", + "pnl": -8.109873367004184, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46426831854224, + "entry_time": "2024-03-02T00:00:00", + "exit_price": 93.10239283352094, + "exit_reason": "signal", + "exit_time": "2024-03-03T00:00:00", + "pnl": -36.187548502130085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37028780606191, + "entry_time": "2024-03-05T00:00:00", + "exit_price": 93.13498012432488, + "exit_reason": "signal", + "exit_time": "2024-03-06T00:00:00", + "pnl": -23.53076817370311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.38863630293943, + "entry_time": "2024-03-08T00:00:00", + "exit_price": 93.41150008980253, + "exit_reason": "signal", + "exit_time": "2024-03-09T00:00:00", + "pnl": 2.2863786863108544, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.14488289984781, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.17802365337732, + "exit_reason": "signal", + "exit_time": "2024-03-12T00:00:00", + "pnl": 3.314075352951477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27104619189048, + "entry_time": "2024-03-14T00:00:00", + "exit_price": 92.98787909982833, + "exit_reason": "signal", + "exit_time": "2024-03-15T00:00:00", + "pnl": -28.316709206214, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11321145433928, + "entry_time": "2024-03-17T00:00:00", + "exit_price": 93.23295576374296, + "exit_reason": "signal", + "exit_time": "2024-03-18T00:00:00", + "pnl": 11.97443094036862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.85697546574279, + "entry_time": "2024-03-20T00:00:00", + "exit_price": 92.7517321560528, + "exit_reason": "signal", + "exit_time": "2024-03-21T00:00:00", + "pnl": -10.524330968999493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50551757491745, + "entry_time": "2024-03-23T00:00:00", + "exit_price": 92.62546167858358, + "exit_reason": "signal", + "exit_time": "2024-03-24T00:00:00", + "pnl": 11.99441036661301, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86332633060258, + "entry_time": "2024-03-26T00:00:00", + "exit_price": 92.76299264885851, + "exit_reason": "signal", + "exit_time": "2024-03-27T00:00:00", + "pnl": -10.03336817440686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78913797285577, + "entry_time": "2024-03-29T00:00:00", + "exit_price": 93.00024160373006, + "exit_reason": "signal", + "exit_time": "2024-03-30T00:00:00", + "pnl": 21.110363087429505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9168412948554, + "entry_time": "2024-04-01T00:00:00", + "exit_price": 92.7772709282975, + "exit_reason": "signal", + "exit_time": "2024-04-02T00:00:00", + "pnl": -13.957036655790944, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99344762670124, + "entry_time": "2024-04-04T00:00:00", + "exit_price": 92.45458704231757, + "exit_reason": "signal", + "exit_time": "2024-04-05T00:00:00", + "pnl": -53.8860584383674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.40001356367094, + "entry_time": "2024-04-07T00:00:00", + "exit_price": 91.97082046191717, + "exit_reason": "signal", + "exit_time": "2024-04-08T00:00:00", + "pnl": -42.91931017537718, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01206001173375, + "entry_time": "2024-04-10T00:00:00", + "exit_price": 92.08005345968613, + "exit_reason": "signal", + "exit_time": "2024-04-11T00:00:00", + "pnl": 6.79934479523763, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22217203577799, + "entry_time": "2024-04-13T00:00:00", + "exit_price": 92.2425856744218, + "exit_reason": "signal", + "exit_time": "2024-04-14T00:00:00", + "pnl": 2.0413638643822196, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46073627278375, + "entry_time": "2024-04-16T00:00:00", + "exit_price": 92.58143591458905, + "exit_reason": "signal", + "exit_time": "2024-04-17T00:00:00", + "pnl": 12.069964180531315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95177802714637, + "entry_time": "2024-04-19T00:00:00", + "exit_price": 92.56745694254103, + "exit_reason": "signal", + "exit_time": "2024-04-20T00:00:00", + "pnl": -38.43210846053444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81253269752307, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 92.86554139490539, + "exit_reason": "signal", + "exit_time": "2024-04-23T00:00:00", + "pnl": 5.300869738231995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90464875740813, + "entry_time": "2024-04-25T00:00:00", + "exit_price": 92.96373746132312, + "exit_reason": "signal", + "exit_time": "2024-04-26T00:00:00", + "pnl": 5.908870391500386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09789228558353, + "entry_time": "2024-04-28T00:00:00", + "exit_price": 93.19003786584736, + "exit_reason": "signal", + "exit_time": "2024-04-29T00:00:00", + "pnl": 9.214558026382292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66999752477344, + "entry_time": "2024-05-01T00:00:00", + "exit_price": 92.45706703230238, + "exit_reason": "signal", + "exit_time": "2024-05-02T00:00:00", + "pnl": -21.293049247105955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2209401021726, + "entry_time": "2024-05-04T00:00:00", + "exit_price": 93.26995519560073, + "exit_reason": "signal", + "exit_time": "2024-05-05T00:00:00", + "pnl": 4.901509342811551, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23034844043512, + "entry_time": "2024-05-07T00:00:00", + "exit_price": 93.41387280572972, + "exit_reason": "signal", + "exit_time": "2024-05-08T00:00:00", + "pnl": 18.352436529459737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33303611955198, + "entry_time": "2024-05-10T00:00:00", + "exit_price": 93.52307299324875, + "exit_reason": "signal", + "exit_time": "2024-05-11T00:00:00", + "pnl": 19.00368736967721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67190914597171, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.29815694731651, + "exit_reason": "signal", + "exit_time": "2024-05-14T00:00:00", + "pnl": -37.375219865520194, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11959184333037, + "entry_time": "2024-05-16T00:00:00", + "exit_price": 92.78483612314953, + "exit_reason": "signal", + "exit_time": "2024-05-17T00:00:00", + "pnl": -33.47557201808377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92001295323621, + "entry_time": "2024-05-19T00:00:00", + "exit_price": 92.94709162208174, + "exit_reason": "signal", + "exit_time": "2024-05-20T00:00:00", + "pnl": 2.7078668845515494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06260774305197, + "entry_time": "2024-05-22T00:00:00", + "exit_price": 93.1459174166961, + "exit_reason": "signal", + "exit_time": "2024-05-23T00:00:00", + "pnl": 8.330967364412572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06618787236135, + "entry_time": "2024-05-25T00:00:00", + "exit_price": 93.61303967582782, + "exit_reason": "signal", + "exit_time": "2024-05-26T00:00:00", + "pnl": 54.68518034664703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.941078352886, + "entry_time": "2024-05-28T00:00:00", + "exit_price": 94.01481054814181, + "exit_reason": "signal", + "exit_time": "2024-05-29T00:00:00", + "pnl": 7.3732195255815896, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92069860353018, + "entry_time": "2024-05-31T00:00:00", + "exit_price": 93.87432907187284, + "exit_reason": "signal", + "exit_time": "2024-06-01T00:00:00", + "pnl": -4.636953165734667, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88014313205952, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.43750435674885, + "exit_reason": "signal", + "exit_time": "2024-06-04T00:00:00", + "pnl": -44.2638775310661, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46298718335747, + "entry_time": "2024-06-06T00:00:00", + "exit_price": 93.92373570713617, + "exit_reason": "signal", + "exit_time": "2024-06-07T00:00:00", + "pnl": 46.07485237786932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93253015033825, + "entry_time": "2024-06-09T00:00:00", + "exit_price": 93.89138819536463, + "exit_reason": "signal", + "exit_time": "2024-06-10T00:00:00", + "pnl": -4.1141954973609245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6779918521803, + "entry_time": "2024-06-12T00:00:00", + "exit_price": 93.51002812881958, + "exit_reason": "signal", + "exit_time": "2024-06-13T00:00:00", + "pnl": -16.796372336071727, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.285974590119, + "entry_time": "2024-06-15T00:00:00", + "exit_price": 93.32248822367578, + "exit_reason": "signal", + "exit_time": "2024-06-16T00:00:00", + "pnl": 3.651363355676949, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35524577583958, + "entry_time": "2024-06-18T00:00:00", + "exit_price": 93.73566009456992, + "exit_reason": "signal", + "exit_time": "2024-06-19T00:00:00", + "pnl": 38.041431873034526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6866778828559, + "entry_time": "2024-06-21T00:00:00", + "exit_price": 93.84911622521342, + "exit_reason": "signal", + "exit_time": "2024-06-22T00:00:00", + "pnl": 16.24383423575091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68254626297609, + "entry_time": "2024-06-24T00:00:00", + "exit_price": 93.53753290340698, + "exit_reason": "signal", + "exit_time": "2024-06-25T00:00:00", + "pnl": -14.501335956909315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.40541279646611, + "entry_time": "2024-06-27T00:00:00", + "exit_price": 93.71834890975212, + "exit_reason": "signal", + "exit_time": "2024-06-28T00:00:00", + "pnl": 31.2936113286014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75716070422646, + "entry_time": "2024-06-30T00:00:00", + "exit_price": 93.82803454081426, + "exit_reason": "signal", + "exit_time": "2024-07-01T00:00:00", + "pnl": 7.0873836587798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73900139072163, + "entry_time": "2024-07-03T00:00:00", + "exit_price": 93.58423325500644, + "exit_reason": "signal", + "exit_time": "2024-07-04T00:00:00", + "pnl": -15.476813571518505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16188235681071, + "entry_time": "2024-07-06T00:00:00", + "exit_price": 93.02650792631081, + "exit_reason": "signal", + "exit_time": "2024-07-07T00:00:00", + "pnl": -13.537443049990543, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00049424696184, + "entry_time": "2024-07-09T00:00:00", + "exit_price": 93.27869714616556, + "exit_reason": "signal", + "exit_time": "2024-07-10T00:00:00", + "pnl": 27.82028992037158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18595899862997, + "entry_time": "2024-07-12T00:00:00", + "exit_price": 93.03056917274476, + "exit_reason": "signal", + "exit_time": "2024-07-13T00:00:00", + "pnl": -15.538982588521321, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6959315804981, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.29325844026822, + "exit_reason": "signal", + "exit_time": "2024-07-16T00:00:00", + "pnl": -40.26731402298719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24617524245163, + "entry_time": "2024-07-18T00:00:00", + "exit_price": 92.27923511016385, + "exit_reason": "signal", + "exit_time": "2024-07-19T00:00:00", + "pnl": 3.3059867712217965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24377176084563, + "entry_time": "2024-07-21T00:00:00", + "exit_price": 91.84290901749984, + "exit_reason": "signal", + "exit_time": "2024-07-22T00:00:00", + "pnl": -40.086274334578775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45792359801233, + "entry_time": "2024-07-24T00:00:00", + "exit_price": 91.61079046047253, + "exit_reason": "signal", + "exit_time": "2024-07-25T00:00:00", + "pnl": 15.286686246019599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59272403631071, + "entry_time": "2024-07-27T00:00:00", + "exit_price": 91.6658144632232, + "exit_reason": "signal", + "exit_time": "2024-07-28T00:00:00", + "pnl": 7.309042691247669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76765880138052, + "entry_time": "2024-07-30T00:00:00", + "exit_price": 91.83153611139085, + "exit_reason": "signal", + "exit_time": "2024-07-31T00:00:00", + "pnl": 6.387731001033899, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47875371686978, + "entry_time": "2024-08-02T00:00:00", + "exit_price": 91.54124524065837, + "exit_reason": "signal", + "exit_time": "2024-08-03T00:00:00", + "pnl": 6.249152378859435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.99233076398606, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.9529292158228, + "exit_reason": "signal", + "exit_time": "2024-08-06T00:00:00", + "pnl": -3.9401548163259577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9845811375129, + "entry_time": "2024-08-08T00:00:00", + "exit_price": 92.0553452779518, + "exit_reason": "signal", + "exit_time": "2024-08-09T00:00:00", + "pnl": 7.076414043889599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96933895446485, + "entry_time": "2024-08-11T00:00:00", + "exit_price": 92.33843538273938, + "exit_reason": "signal", + "exit_time": "2024-08-12T00:00:00", + "pnl": 36.909642827453354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7587929540311, + "entry_time": "2024-08-14T00:00:00", + "exit_price": 92.61541170919818, + "exit_reason": "signal", + "exit_time": "2024-08-15T00:00:00", + "pnl": -14.338124483290812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.48109292079488, + "entry_time": "2024-08-17T00:00:00", + "exit_price": 92.584127260661, + "exit_reason": "signal", + "exit_time": "2024-08-18T00:00:00", + "pnl": 10.303433986613527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73326548896145, + "entry_time": "2024-08-20T00:00:00", + "exit_price": 92.63121700232358, + "exit_reason": "signal", + "exit_time": "2024-08-21T00:00:00", + "pnl": -10.204848663786834, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06360781499562, + "entry_time": "2024-08-23T00:00:00", + "exit_price": 92.8561585876055, + "exit_reason": "signal", + "exit_time": "2024-08-24T00:00:00", + "pnl": -20.74492273900978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92284538933916, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.11237349539573, + "exit_reason": "signal", + "exit_time": "2024-08-27T00:00:00", + "pnl": 18.95281060565685, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07021236134935, + "entry_time": "2024-08-29T00:00:00", + "exit_price": 93.17184698357968, + "exit_reason": "signal", + "exit_time": "2024-08-30T00:00:00", + "pnl": 10.163462223034003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31228518791787, + "entry_time": "2024-09-01T00:00:00", + "exit_price": 92.33590023205818, + "exit_reason": "signal", + "exit_time": "2024-09-02T00:00:00", + "pnl": 2.361504414031515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50027778498863, + "entry_time": "2024-09-04T00:00:00", + "exit_price": 92.54209415864854, + "exit_reason": "signal", + "exit_time": "2024-09-05T00:00:00", + "pnl": 4.181637365991264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3677893725537, + "entry_time": "2024-09-07T00:00:00", + "exit_price": 92.22925202091126, + "exit_reason": "signal", + "exit_time": "2024-09-08T00:00:00", + "pnl": -13.853735164244426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09309676612556, + "entry_time": "2024-09-10T00:00:00", + "exit_price": 92.15732000186526, + "exit_reason": "signal", + "exit_time": "2024-09-11T00:00:00", + "pnl": 6.422323573970061, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68995738997093, + "entry_time": "2024-09-13T00:00:00", + "exit_price": 91.28297081793372, + "exit_reason": "signal", + "exit_time": "2024-09-14T00:00:00", + "pnl": -40.69865720372218, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.49225030811706, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.33431283007668, + "exit_reason": "signal", + "exit_time": "2024-09-17T00:00:00", + "pnl": -15.793747804038503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00621404043055, + "entry_time": "2024-09-19T00:00:00", + "exit_price": 90.92641929792215, + "exit_reason": "signal", + "exit_time": "2024-09-20T00:00:00", + "pnl": -7.979474250840212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07027528339762, + "entry_time": "2024-09-22T00:00:00", + "exit_price": 91.13008155599323, + "exit_reason": "signal", + "exit_time": "2024-09-23T00:00:00", + "pnl": 5.9806272595615155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00907183642319, + "entry_time": "2024-09-25T00:00:00", + "exit_price": 91.23094904986101, + "exit_reason": "signal", + "exit_time": "2024-09-26T00:00:00", + "pnl": 22.18772134378196, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2825480931582, + "entry_time": "2024-09-28T00:00:00", + "exit_price": 90.91271666538603, + "exit_reason": "signal", + "exit_time": "2024-09-29T00:00:00", + "pnl": -36.983142777216926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05360990148436, + "entry_time": "2024-10-01T00:00:00", + "exit_price": 91.28838235720163, + "exit_reason": "signal", + "exit_time": "2024-10-02T00:00:00", + "pnl": 23.4772455717266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79116186423771, + "entry_time": "2024-10-04T00:00:00", + "exit_price": 90.76779759668747, + "exit_reason": "signal", + "exit_time": "2024-10-05T00:00:00", + "pnl": -2.3364267550241493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66567440561238, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 90.70161264561204, + "exit_reason": "signal", + "exit_time": "2024-10-08T00:00:00", + "pnl": 3.593823999966844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83214429583118, + "entry_time": "2024-10-10T00:00:00", + "exit_price": 90.77606667466077, + "exit_reason": "signal", + "exit_time": "2024-10-11T00:00:00", + "pnl": -5.607762117042512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66108486881463, + "entry_time": "2024-10-13T00:00:00", + "exit_price": 90.66515259357669, + "exit_reason": "signal", + "exit_time": "2024-10-14T00:00:00", + "pnl": 0.4067724762062426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.16857543076497, + "entry_time": "2024-10-16T00:00:00", + "exit_price": 90.40982511738886, + "exit_reason": "signal", + "exit_time": "2024-10-17T00:00:00", + "pnl": 24.12496866238871, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.06344300783007, + "entry_time": "2024-10-19T00:00:00", + "exit_price": 89.82444237040852, + "exit_reason": "signal", + "exit_time": "2024-10-20T00:00:00", + "pnl": -23.90006374215409, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.59077974741996, + "entry_time": "2024-10-22T00:00:00", + "exit_price": 89.57824858967784, + "exit_reason": "signal", + "exit_time": "2024-10-23T00:00:00", + "pnl": -1.2531157742123469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.18599707786814, + "entry_time": "2024-10-25T00:00:00", + "exit_price": 89.23587599762591, + "exit_reason": "signal", + "exit_time": "2024-10-26T00:00:00", + "pnl": 4.987891975777529, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.52520755360774, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.53896573427002, + "exit_reason": "signal", + "exit_time": "2024-10-29T00:00:00", + "pnl": 1.375818066228021, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32372356389571, + "entry_time": "2024-10-31T00:00:00", + "exit_price": 89.39723460318574, + "exit_reason": "signal", + "exit_time": "2024-11-01T00:00:00", + "pnl": 7.35110392900242, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.42867761884308, + "entry_time": "2024-11-03T00:00:00", + "exit_price": 89.41468909557778, + "exit_reason": "signal", + "exit_time": "2024-11-04T00:00:00", + "pnl": -1.3988523265306867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37521291073797, + "entry_time": "2024-11-06T00:00:00", + "exit_price": 89.28061929510595, + "exit_reason": "signal", + "exit_time": "2024-11-07T00:00:00", + "pnl": -9.459361563202037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37421531457154, + "entry_time": "2024-11-09T00:00:00", + "exit_price": 89.42880794685172, + "exit_reason": "signal", + "exit_time": "2024-11-10T00:00:00", + "pnl": 5.459263228018244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.10075544827296, + "entry_time": "2024-11-12T00:00:00", + "exit_price": 89.08909178471053, + "exit_reason": "signal", + "exit_time": "2024-11-13T00:00:00", + "pnl": -1.1663663562430884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.9283105563295, + "entry_time": "2024-11-15T00:00:00", + "exit_price": 88.97631673436179, + "exit_reason": "signal", + "exit_time": "2024-11-16T00:00:00", + "pnl": 4.800617803228306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.83969795208085, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.97701708069182, + "exit_reason": "signal", + "exit_time": "2024-11-19T00:00:00", + "pnl": 13.731912861096134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.24948915106788, + "entry_time": "2024-11-21T00:00:00", + "exit_price": 89.31081866218918, + "exit_reason": "signal", + "exit_time": "2024-11-22T00:00:00", + "pnl": 6.132951112129376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.15663810787721, + "entry_time": "2024-11-24T00:00:00", + "exit_price": 89.05359196348086, + "exit_reason": "signal", + "exit_time": "2024-11-25T00:00:00", + "pnl": -10.30461443963577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.89974340615646, + "entry_time": "2024-11-27T00:00:00", + "exit_price": 88.86736216937868, + "exit_reason": "signal", + "exit_time": "2024-11-28T00:00:00", + "pnl": -3.238123677778276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.02917974715604, + "entry_time": "2024-11-30T00:00:00", + "exit_price": 89.10061155400963, + "exit_reason": "signal", + "exit_time": "2024-12-01T00:00:00", + "pnl": 7.143180685359766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.71230009060692, + "entry_time": "2024-12-03T00:00:00", + "exit_price": 88.55956047576315, + "exit_reason": "signal", + "exit_time": "2024-12-04T00:00:00", + "pnl": -15.273961484375832, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_pro", + "path": "validation/frameworks/vectorbt_pro.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "77c6dc83a02c7665eea21f7cedd0df1c4630ac15b7d284a21e96a849d1d8df74", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d0e0852cea9e321d72793f0f7fd7479d70d67ea3b367cbab817e4e3067af4e32" + }, + "framework_target": { + "actual_version": "2026.6.27", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "version": "2026.6.27" + }, + "input_digest": "dd491bc06ca31652f04962d8927c33330abf1b3bedaf108f9d9b222834fb9c4b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 1800, + "entry_signals": 600, + "exit_signals": 600, + "framework_closed_trades": 600, + "framework_fills": 1200, + "framework_intents": 1200, + "framework_orders": null, + "ml4t_closed_trades": 600, + "ml4t_fills": 1200, + "ml4t_intents": 1200, + "ml4t_orders": null + } + }, + "release_blocking": false, + "required": true, + "scenario_id": "17", + "scenario_name": "High Event Count", "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT OSS=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98778.90186467487, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 98778.90186467487, + "message": "VectorBT OSS=$98,778.9018646749, ML4T=$98,778.9018646749 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1221.0981353251263, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -1221.0981353251263, + "message": "VectorBT OSS=$-1,221.0981353251, ML4T=$-1,221.0981353251 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078753465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.418378739706, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078745507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.41837873970593, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "01" + }, "detail": null, + "duration_seconds": 3.596386168152094, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98778.90186467487, + "framework": "VectorBT OSS", + "num_trades": 10, + "total_pnl": -1221.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078745507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.41837873970593, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98778.90186467487, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1221.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078753465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.418378739706, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d34babef0534a871f927ab6553a49d7b7e35a03283516b1741835d49381d2e0d" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "01", @@ -186,8 +83456,1329 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT OSS=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98778.90186467487, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 98778.90186467487, + "message": "VectorBT OSS=$98,778.9018646749, ML4T=$98,778.9018646749 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1221.0981353251263, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -1221.0981353251263, + "message": "VectorBT OSS=$-1,221.0981353251, ML4T=$-1,221.0981353251 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078753465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.418378739706, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078745507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.41837873970593, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "02" + }, "detail": null, + "duration_seconds": 3.5662843890022486, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98778.90186467487, + "framework": "VectorBT OSS", + "num_trades": 10, + "total_pnl": -1221.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.9500191054502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.070150536838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502395977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.41425030610634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.6287221078602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.39196721078798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078745507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.41837873970593, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98778.90186467487, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1221.0981353251263, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 320.95001910545034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -917.6778353014561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -380.0701505368379, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 67.82342502396023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -406.4142503061066, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 246.62872210785918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -52.3919672107877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 214.41288662462102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": 1.0593939078753465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -315.418378739706, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "be4345288348f6a276f38cb4a364261003c925cddc5d9423b667fb82c34cff1b", + "scenario": "7db3751b770b7369c40f6b31fc757e7949b07dd5b56430e7226dc8db7d444e38" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "02", @@ -195,8 +84786,317 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT OSS=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99500.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99500.0, + "message": "VectorBT OSS=$99,500.0000000000, ML4T=$99,500.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -500.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": -500.0, + "message": "VectorBT OSS=$-500.0000000000, ML4T=$-500.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 95.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 95.0, + "message": "VectorBT OSS=$95.0000000000, ML4T=$95.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "exit_price", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-07T00:00:00", + "pnl": -500.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-07T00:00:00", + "pnl": -500.0, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "03" + }, "detail": null, + "duration_seconds": 3.6028757761232555, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 95.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "final_value": 99500.0, + "framework": "VectorBT OSS", + "num_trades": 1, + "total_pnl": -500.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-07T00:00:00", + "pnl": -500.0, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 95.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "final_value": 99500.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -500.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-07T00:00:00", + "pnl": -500.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "9de5c47a372a7ab97c36bfaa81bb522deb6a4ea2c77f8ecd01945d92b7dc61c5", + "scenario": "ad7292cedc685fa6c10032a0574f3e5da89b81dbb0f3a312cc2f5d83f5b454a1" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "c450f8db901151f953d81b05845db8cad686ca7c619cfe7e881485a2228972a7", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 20, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "03", @@ -204,8 +85104,317 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT OSS=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 101050.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 101050.0, + "message": "VectorBT OSS=$101,050.0000000000, ML4T=$101,050.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1050.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 1050.0, + "message": "VectorBT OSS=$1,050.0000000000, ML4T=$1,050.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 110.5, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 110.5, + "message": "VectorBT OSS=$110.5000000000, ML4T=$110.5000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "exit_price", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 110.5, + "exit_reason": "take_profit", + "exit_time": "2020-01-08T00:00:00", + "pnl": 1050.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 110.5, + "exit_time": "2020-01-08T00:00:00", + "pnl": 1050.0, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "04" + }, "detail": null, + "duration_seconds": 3.461432676995173, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 110.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "final_value": 101050.0, + "framework": "VectorBT OSS", + "num_trades": 1, + "total_pnl": 1050.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 110.5, + "exit_time": "2020-01-08T00:00:00", + "pnl": 1050.0, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 110.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "final_value": 101050.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": 1050.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 110.5, + "exit_reason": "take_profit", + "exit_time": "2020-01-08T00:00:00", + "pnl": 1050.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "9de5c47a372a7ab97c36bfaa81bb522deb6a4ea2c77f8ecd01945d92b7dc61c5", + "scenario": "2dea68c3a9472e95c15e7238928919fe01b4e63bfd3a14a5a9666ea89b86cc41" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "d62c3c2d015f1ead6bff9d1d3ed7e92b396ddf9e4f7c808cf3ebe3eb7ae7491b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 20, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "04", @@ -213,8 +85422,1343 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT OSS=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98602.0173051621, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 2.9103830456733704e-11, + "expected": 98602.01730516207, + "message": "VectorBT OSS=$98,602.0173051621, ML4T=$98,602.0173051621 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1397.982694837905, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 2.9103830456733704e-11, + "expected": -1397.982694837934, + "message": "VectorBT OSS=$-1,397.9826948379, ML4T=$-1,397.9826948379 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 176.8845595128108, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 176.8845595128108, + "message": "VectorBT OSS=$176.8845595128, ML4T=$176.8845595128 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_commission", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 20.520625856289048, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.4293932491613, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.755514964906304, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.85097338901531, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258532, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.719133464042915, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.104291559917314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.634073322502488, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.0483236286091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.313187988243484, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.40151852929084, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.896961297414983, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.51592532720605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.33417359656284, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688687495, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.458397104542577, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442486, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 20.520625856289048, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.4293932491612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.755514964906304, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663618, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.85097338901531, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258533, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.719133464042915, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155991686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.634073322502488, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362860884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.313187988243484, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.3155341196167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.40151852929084, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.896961297414983, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.5159253272056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.33417359656284, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688688291, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.458397104542577, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442485, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 10.099837918591799, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.420787937697249, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.836596400103879, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.918918564802423, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.615521769776073, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.235451619239235, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.825655019509478, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.893478444533438, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.520243786404297, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.11382953609819, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.033279633067812, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.279908355175671, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.226955248250814, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.174563281040026, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.34127420539518, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.555687092019802, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.166557101327484, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.16761649523536, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.386907741641142, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.071489362901437, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 10.099837918591799, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.420787937697249, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.836596400103879, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.918918564802423, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.615521769776073, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.235451619239235, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.825655019509478, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.893478444533438, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.520243786404297, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.11382953609819, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.033279633067812, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.279908355175671, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.226955248250814, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.174563281040026, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.34127420539518, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.555687092019802, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.166557101327484, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.16761649523536, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.386907741641142, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.071489362901437, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "05" + }, "detail": null, + "duration_seconds": 3.4984702998772264, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 176.8845595128108 + }, + "fills": [ + { + "asset": "TEST", + "commission": 10.099837918591799, + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.420787937697249, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.836596400103879, + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.918918564802423, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.615521769776073, + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.235451619239235, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.825655019509478, + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.893478444533438, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.520243786404297, + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.11382953609819, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.033279633067812, + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.279908355175671, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.226955248250814, + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.174563281040026, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.34127420539518, + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.555687092019802, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.166557101327484, + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.16761649523536, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.386907741641142, + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.071489362901437, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98602.01730516207, + "framework": "VectorBT OSS", + "num_trades": 10, + "total_pnl": -1397.982694837934, + "trades": [ + { + "asset": "TEST", + "commission": 20.520625856289048, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.4293932491612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.755514964906304, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663618, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.85097338901531, + "direction": "Long", + "entry_price": 96.15521769776073, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258533, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.719133464042915, + "direction": "Long", + "entry_price": 88.25655019509477, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155991686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.634073322502488, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362860884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.313187988243484, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.3155341196167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.40151852929084, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.896961297414983, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.5159253272056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.33417359656284, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688688291, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.458397104542577, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442485, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 176.8845595128108 + }, + "fills": [ + { + "asset": "TEST", + "commission": 10.099837918591799, + "exit_reason": "", + "price": 100.99837918591798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.420787937697249, + "exit_reason": "signal", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.836596400103879, + "exit_reason": "", + "price": 108.36596400103879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.918918564802423, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.615521769776073, + "exit_reason": "", + "price": 96.15521769776072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.235451619239235, + "exit_reason": "signal", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.825655019509478, + "exit_reason": "", + "price": 88.25655019509476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.893478444533438, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.520243786404297, + "exit_reason": "", + "price": 85.20243786404296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.11382953609819, + "exit_reason": "signal", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.033279633067812, + "exit_reason": "", + "price": 80.33279633067811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.279908355175671, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.226955248250814, + "exit_reason": "", + "price": 82.26955248250813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.174563281040026, + "exit_reason": "signal", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.34127420539518, + "exit_reason": "", + "price": 83.4127420539518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.555687092019802, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.166557101327484, + "exit_reason": "", + "price": 81.66557101327484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.16761649523536, + "exit_reason": "signal", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.386907741641142, + "exit_reason": "", + "price": 83.86907741641141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.071489362901437, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98602.0173051621, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1397.982694837905, + "trades": [ + { + "asset": "TEST", + "commission": 20.520625856289048, + "direction": "Long", + "entry_price": 100.99837918591798, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.20787937697249, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.4293932491613, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.755514964906304, + "direction": "Long", + "entry_price": 108.36596400103879, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.85097338901531, + "direction": "Long", + "entry_price": 96.15521769776072, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.35451619239235, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258532, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.719133464042915, + "direction": "Long", + "entry_price": 88.25655019509476, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.104291559917314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.634073322502488, + "direction": "Long", + "entry_price": 85.20243786404296, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.1382953609819, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.0483236286091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.313187988243484, + "direction": "Long", + "entry_price": 80.33279633067811, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.40151852929084, + "direction": "Long", + "entry_price": 82.26955248250813, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.74563281040025, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.896961297414983, + "direction": "Long", + "entry_price": 83.4127420539518, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.51592532720605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.33417359656284, + "direction": "Long", + "entry_price": 81.66557101327484, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.67616495235359, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688687495, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.458397104542577, + "direction": "Long", + "entry_price": 83.86907741641141, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442486, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "93f5ba4a70377e12f472819a04fbceabb1a44df86108f5feed401a8499bd7b88" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "05", @@ -222,8 +86766,13 @@ "status": "pass" }, { + "comparison": null, "detail": "Scenario explicitly excludes this framework", + "duration_seconds": 4.0549784898757935e-06, "framework": "vectorbt_oss", + "framework_result": null, + "ml4t_result": null, + "provenance": null, "release_blocking": false, "required": false, "scenario_id": "06", @@ -231,8 +86780,1329 @@ "status": "unsupported" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT OSS=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98758.88423767696, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.4551915228366852e-11, + "expected": 98758.88423767698, + "message": "VectorBT OSS=$98,758.8842376770, ML4T=$98,758.8842376770 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1241.1157623230392, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 1.4551915228366852e-11, + "expected": -1241.1157623230247, + "message": "VectorBT OSS=$-1,241.1157623230, ML4T=$-1,241.1157623230 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.0098089448947, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.19608640609162, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 318.62774611969144, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.37822753298649, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.17796063140325, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -920.0266901583236, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.1660993670657, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.344064639912, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -382.20347271536775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.26653798999779, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.92471989618961, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 65.81819061918395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.2120800319358, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.12911312293775, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -408.29669089980507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.34188741221216, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.78971336605554, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 244.78259538433667, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.27886274237149, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.73638184134556, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -54.24809010259287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.42218168600282, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.5471886419149, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 212.50069559120857, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.67481292191637, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.66692184481985, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -0.7891077096519439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.87856869090707, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.70575930639009, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -317.2809384516977, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.00980894489471, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.19608640609162, + "exit_time": "2020-01-07T00:00:00", + "pnl": 318.62774611969087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.3782275329865, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.17796063140325, + "exit_time": "2020-01-17T00:00:00", + "pnl": -920.0266901583248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.16609936706568, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.34406463991202, + "exit_time": "2020-01-27T00:00:00", + "pnl": -382.2034727153664, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.2665379899978, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.92471989618963, + "exit_time": "2020-02-06T00:00:00", + "pnl": 65.81819061918281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.21208003193583, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.12911312293775, + "exit_time": "2020-02-16T00:00:00", + "pnl": -408.2966908998074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.34188741221216, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.78971336605554, + "exit_time": "2020-02-26T00:00:00", + "pnl": 244.78259538433775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.27886274237149, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.73638184134556, + "exit_time": "2020-03-07T00:00:00", + "pnl": -54.24809010259253, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.42218168600283, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.5471886419149, + "exit_time": "2020-03-17T00:00:00", + "pnl": 212.50069559120703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.67481292191637, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.66692184481985, + "exit_time": "2020-03-27T00:00:00", + "pnl": -0.7891077096516597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.87856869090707, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.70575930639009, + "exit_time": "2020-04-06T00:00:00", + "pnl": -317.2809384516981, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.0098089448947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.19608640609162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.37822753298649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.17796063140325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.1660993670657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.344064639912, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.26653798999779, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.92471989618961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.2120800319358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.12911312293775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.34188741221216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.78971336605554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.27886274237149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.73638184134556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.42218168600282, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.5471886419149, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.67481292191637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66692184481985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.87856869090707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.70575930639009, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.00980894489471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.19608640609162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.3782275329865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17796063140325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.1660993670657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.34406463991202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.2665379899978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.92471989618963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.21208003193581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.12911312293775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.34188741221216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.78971336605554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.27886274237149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.73638184134556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.42218168600283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.5471886419149, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67481292191637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66692184481985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.87856869090707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.70575930639009, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "07" + }, "detail": null, + "duration_seconds": 3.4741068419534713, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.00980894489471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.19608640609162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.3782275329865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17796063140325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.1660993670657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.34406463991202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.2665379899978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.92471989618963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.21208003193581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.12911312293775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.34188741221216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.78971336605554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.27886274237149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.73638184134556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.42218168600283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.5471886419149, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67481292191637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66692184481985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.87856869090707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.70575930639009, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98758.88423767698, + "framework": "VectorBT OSS", + "num_trades": 10, + "total_pnl": -1241.1157623230247, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.00980894489471, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.19608640609162, + "exit_time": "2020-01-07T00:00:00", + "pnl": 318.62774611969087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.3782275329865, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.17796063140325, + "exit_time": "2020-01-17T00:00:00", + "pnl": -920.0266901583248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.16609936706568, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.34406463991202, + "exit_time": "2020-01-27T00:00:00", + "pnl": -382.2034727153664, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.2665379899978, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.92471989618963, + "exit_time": "2020-02-06T00:00:00", + "pnl": 65.81819061918281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.21208003193583, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.12911312293775, + "exit_time": "2020-02-16T00:00:00", + "pnl": -408.2966908998074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.34188741221216, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.78971336605554, + "exit_time": "2020-02-26T00:00:00", + "pnl": 244.78259538433775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.27886274237149, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.73638184134556, + "exit_time": "2020-03-07T00:00:00", + "pnl": -54.24809010259253, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.42218168600283, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.5471886419149, + "exit_time": "2020-03-17T00:00:00", + "pnl": 212.50069559120703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.67481292191637, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.66692184481985, + "exit_time": "2020-03-27T00:00:00", + "pnl": -0.7891077096516597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.87856869090707, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.70575930639009, + "exit_time": "2020-04-06T00:00:00", + "pnl": -317.2809384516981, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.0098089448947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.19608640609162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.37822753298649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.17796063140325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.1660993670657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.344064639912, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.26653798999779, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.92471989618961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.2120800319358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.12911312293775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.34188741221216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.78971336605554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.27886274237149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.73638184134556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.42218168600282, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.5471886419149, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.67481292191637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66692184481985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.87856869090707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.70575930639009, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98758.88423767696, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1241.1157623230392, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.0098089448947, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.19608640609162, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 318.62774611969144, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.37822753298649, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.17796063140325, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -920.0266901583236, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.1660993670657, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.344064639912, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -382.20347271536775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.26653798999779, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.92471989618961, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 65.81819061918395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.2120800319358, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.12911312293775, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -408.29669089980507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.34188741221216, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.78971336605554, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 244.78259538433667, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.27886274237149, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.73638184134556, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -54.24809010259287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.42218168600282, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.5471886419149, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 212.50069559120857, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.67481292191637, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.66692184481985, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -0.7891077096519439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.87856869090707, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.70575930639009, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -317.2809384516977, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "0eee68a74bb2c999c23582d129c81e91ad51b48af637e051507f8a40979c2871" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "07", @@ -240,8 +88110,1329 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT OSS=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98602.01730516205, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.4551915228366852e-11, + "expected": 98602.01730516207, + "message": "VectorBT OSS=$98,602.0173051621, ML4T=$98,602.0173051621 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1397.9826948379487, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 1.4551915228366852e-11, + "expected": -1397.982694837934, + "message": "VectorBT OSS=$-1,397.9826948379, ML4T=$-1,397.9826948379 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.09937756510391, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.10367149759551, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.42939324916006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.47432996503983, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.0899964623762, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.433350266363, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.25137291545848, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.26216167619997, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.92112392585113, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.34480674528986, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.84584966088904, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155991915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.287640301907, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.05715706562091, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.41312912700879, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.71628446820495, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961522, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.35182203499065, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.66388717758986, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007963, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.49615479600575, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.47131404927781, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.51592532720497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.74723658428812, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.59448878740123, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688688795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.95294649382782, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.63417873538535, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442473, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.0993775651039, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.10367149759551, + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.42939324916205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.47432996503981, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.0899964623762, + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.25137291545848, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.26216167619997, + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258509, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.34480674528984, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.84584966088904, + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.28764030190699, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.05715706562091, + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362860765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.41312912700877, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.71628446820495, + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961738, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.35182203499063, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.66388717758986, + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.49615479600574, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.47131404927781, + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.5159253272068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.7472365842881, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.59448878740123, + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.27477968868709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.95294649382782, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.63417873538535, + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442476, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.09937756510391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.10367149759551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.47432996503983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0899964623762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.25137291545848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.26216167619997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.34480674528986, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.84584966088904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.287640301907, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.05715706562091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.41312912700879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.71628446820495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.35182203499065, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66388717758986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.49615479600575, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.47131404927781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.74723658428812, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.59448878740123, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.95294649382782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.63417873538535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.0993775651039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.10367149759551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.47432996503981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0899964623762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.25137291545848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.26216167619997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.34480674528984, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.84584966088904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.28764030190699, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.05715706562091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.41312912700877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.71628446820495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.35182203499063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66388717758986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.49615479600574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.47131404927781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.7472365842881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.59448878740123, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.95294649382782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.63417873538535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "08" + }, "detail": null, + "duration_seconds": 3.574992704903707, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.0993775651039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.10367149759551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.47432996503981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0899964623762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.25137291545848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.26216167619997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.34480674528984, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.84584966088904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.28764030190699, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.05715706562091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.41312912700877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.71628446820495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.35182203499063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66388717758986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.49615479600574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.47131404927781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.7472365842881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.59448878740123, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.95294649382782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.63417873538535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98602.01730516207, + "framework": "VectorBT OSS", + "num_trades": 10, + "total_pnl": -1397.982694837934, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.0993775651039, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.10367149759551, + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.42939324916205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.47432996503981, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.0899964623762, + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.4333502663608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.25137291545848, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.26216167619997, + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.9211239258509, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.34480674528984, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.84584966088904, + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.28764030190699, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.05715706562091, + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362860765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.41312912700877, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.71628446820495, + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961738, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.35182203499063, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.66388717758986, + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.49615479600574, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.47131404927781, + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.5159253272068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.7472365842881, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.59448878740123, + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.27477968868709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.95294649382782, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.63417873538535, + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442476, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.09937756510391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 104.10367149759551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.47432996503983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0899964623762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.25137291545848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.26216167619997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.34480674528986, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.84584966088904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.287640301907, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.05715706562091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.41312912700879, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.71628446820495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.35182203499065, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66388717758986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.49615479600575, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.47131404927781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.74723658428812, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.59448878740123, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.95294649382782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.63417873538535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + } + ], + "final_value": 98602.01730516205, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1397.9826948379487, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.09937756510391, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.10367149759551, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": 300.42939324916006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.47432996503983, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 99.0899964623762, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": -938.433350266363, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.25137291545848, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 92.26216167619997, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -398.92112392585113, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.34480674528986, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 88.84584966088904, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 50.10429155991915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.287640301907, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 81.05715706562091, + "exit_reason": "signal", + "exit_time": "2020-02-16T00:00:00", + "pnl": -423.04832362861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 80.41312912700879, + "entry_time": "2020-02-21T00:00:00", + "exit_price": 82.71628446820495, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": 230.31553411961522, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.35182203499065, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 81.66388717758986, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -68.79348574007963, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.49615479600575, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 85.47131404927781, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": 197.51592532720497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.74723658428812, + "entry_time": "2020-03-22T00:00:00", + "exit_price": 81.59448878740123, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -15.274779688688795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 83.95294649382782, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 80.63417873538535, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": -331.8767758442473, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d2d36326d5a7ec88f577088205574b8a9f6dab9661ed6813d190c138c4c8208f" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "08", @@ -249,8 +89440,417 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 2, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 2, + "message": "VectorBT OSS=2, ML4T=2, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 100363.84268834148, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 100363.84268834148, + "message": "VectorBT OSS=$100,363.8426883415, ML4T=$100,363.8426883415 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 363.8426883414795, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 363.8426883414795, + "message": "VectorBT OSS=$363.8426883415, ML4T=$363.8426883415 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.29858222929766, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-02T00:00:00", + "pnl": 429.85822292976627, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.37355416326918, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 96.71339881738633, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.01553458828494, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.29858222929766, + "exit_time": "2020-02-02T00:00:00", + "pnl": 429.8582229297665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.37355416326918, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 96.71339881738633, + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.0155345882842, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.37355416326918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.71339881738633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.37355416326918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.71339881738633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "09" + }, "detail": null, + "duration_seconds": 3.4778857689816505, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.37355416326918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.71339881738633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 100363.84268834148, + "framework": "VectorBT OSS", + "num_trades": 2, + "total_pnl": 363.8426883414795, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.29858222929766, + "exit_time": "2020-02-02T00:00:00", + "pnl": 429.8582229297665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.37355416326918, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 96.71339881738633, + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.0155345882842, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.37355416326918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.71339881738633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 100363.84268834148, + "framework": "ml4t.backtest", + "num_trades": 2, + "total_pnl": 363.8426883414795, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 104.29858222929766, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-02T00:00:00", + "pnl": 429.85822292976627, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.37355416326918, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 96.71339881738633, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.01553458828494, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "2239ef5dfd2ca79f8cf4b7d6b6f991dbfdc0b7393efab316c6eba29edbdb6829", + "scenario": "80d8dea99e845ad7f708cc42fb94f66feababcf8b6814e3096300af1f4b709c2" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "0ab00a6cfc6f76a1d74f0617186a4d5c95d27cb4fd62bd5c535b3b191965369d", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 2, + "exit_signals": 0, + "framework_closed_trades": 2, + "framework_fills": 4, + "framework_intents": 2, + "framework_orders": null, + "ml4t_closed_trades": 2, + "ml4t_fills": 4, + "ml4t_intents": 2, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "09", @@ -258,8 +89858,531 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 3, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 3, + "message": "VectorBT OSS=3, ML4T=3, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99854.35332614176, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.4551915228366852e-11, + "expected": 99854.35332614178, + "message": "VectorBT OSS=$99,854.3533261418, ML4T=$99,854.3533261418 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -145.6466738582385, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 1.4551915228366852e-11, + "expected": -145.64667385822395, + "message": "VectorBT OSS=$-145.6466738582, ML4T=$-145.6466738582 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-15T00:00:00", + "pnl": -500.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36277380567032, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 100.49905118623735, + "exit_reason": "take_profit", + "exit_time": "2020-02-12T00:00:00", + "pnl": 913.6277380567044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.22663864471447, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 96.63389452556515, + "exit_reason": "stop_loss", + "exit_time": "2020-03-06T00:00:00", + "pnl": -559.274411914932, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-15T00:00:00", + "pnl": -500.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36277380567032, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 100.49905118623735, + "exit_time": "2020-02-12T00:00:00", + "pnl": 913.6277380567037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.22663864471447, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 96.63389452556515, + "exit_time": "2020-03-06T00:00:00", + "pnl": -559.2744119149315, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.36277380567032, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 102.22663864471447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36277380567032, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 102.22663864471447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "10" + }, "detail": null, + "duration_seconds": 3.447144745849073, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36277380567032, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 102.22663864471447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "final_value": 99854.35332614178, + "framework": "VectorBT OSS", + "num_trades": 3, + "total_pnl": -145.64667385822395, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-15T00:00:00", + "pnl": -500.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36277380567032, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 100.49905118623735, + "exit_time": "2020-02-12T00:00:00", + "pnl": 913.6277380567037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.22663864471447, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 96.63389452556515, + "exit_time": "2020-03-06T00:00:00", + "pnl": -559.2744119149315, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.36277380567032, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 102.22663864471447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "final_value": 99854.35332614176, + "framework": "ml4t.backtest", + "num_trades": 3, + "total_pnl": -145.6466738582385, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-15T00:00:00", + "pnl": -500.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36277380567032, + "entry_time": "2020-01-22T00:00:00", + "exit_price": 100.49905118623735, + "exit_reason": "take_profit", + "exit_time": "2020-02-12T00:00:00", + "pnl": 913.6277380567044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.22663864471447, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 96.63389452556515, + "exit_reason": "stop_loss", + "exit_time": "2020-03-06T00:00:00", + "pnl": -559.274411914932, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "592c4ca3a782275c61f3fc2123e30c9055c3dcaec49a4b0202feafbc9821f1f3", + "scenario": "ca329113ef7eae6ef6cb075659587a244d4808ab35df74a891dcea2db9151f0e" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "c46f13757f77a357bcf860856d78551fd3d0b5a707fc379bb9be724a04e1d219", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 3, + "exit_signals": 0, + "framework_closed_trades": 3, + "framework_fills": 6, + "framework_intents": 3, + "framework_orders": null, + "ml4t_closed_trades": 3, + "ml4t_fills": 6, + "ml4t_intents": 3, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "10", @@ -267,8 +90390,1329 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "VectorBT OSS=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 1000951.8554526691, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 2.3283064365386963e-10, + "expected": 1000951.8554526689, + "message": "VectorBT OSS=$1,000,951.8554526689, ML4T=$1,000,951.8554526691 (exact_diff=$0.0000000002, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 951.8554526690859, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 2.3283064365386963e-10, + "expected": 951.8554526688531, + "message": "VectorBT OSS=$951.8554526689, ML4T=$951.8554526691 (exact_diff=$0.0000000002; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 104.20787937697249, + "entry_time": "2020-01-07T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": 501.8693728948256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.35451619239235, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 341.97317470579765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.1382953609819, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": -166.07881907748015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.74563281040025, + "entry_time": "2020-03-07T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": -381.12381097977595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.67616495235359, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": 96.12713233392333, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 76.91587538104775, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 81.55985216039402, + "exit_reason": "signal", + "exit_time": "2020-04-26T00:00:00", + "pnl": -464.3976779346258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 87.21379021281562, + "entry_time": "2020-05-06T00:00:00", + "exit_price": 81.47883268095197, + "exit_reason": "signal", + "exit_time": "2020-05-16T00:00:00", + "pnl": 573.4957531863656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.87940403957454, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 77.69162042691461, + "exit_reason": "signal", + "exit_time": "2020-06-05T00:00:00", + "pnl": 318.7783612659923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.04428520737794, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 85.37220602586794, + "exit_reason": "signal", + "exit_time": "2020-06-25T00:00:00", + "pnl": -232.79208184900017, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 91.73225900039202, + "entry_time": "2020-07-05T00:00:00", + "exit_price": 88.0922185191642, + "exit_reason": "signal", + "exit_time": "2020-07-15T00:00:00", + "pnl": 364.0040481227825, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 104.20787937697249, + "entry_time": "2020-01-07T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": 501.869372894825, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.35451619239235, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 341.97317470579804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.1382953609819, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": -166.07881907748094, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.74563281040025, + "entry_time": "2020-03-07T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": -381.1238109797756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.67616495235359, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": 96.12713233392327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 76.91587538104775, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 81.55985216039402, + "exit_time": "2020-04-26T00:00:00", + "pnl": -464.3976779346261, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 87.21379021281562, + "entry_time": "2020-05-06T00:00:00", + "exit_price": 81.47883268095197, + "exit_time": "2020-05-16T00:00:00", + "pnl": 573.4957531863656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.87940403957454, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 77.69162042691461, + "exit_time": "2020-06-05T00:00:00", + "pnl": 318.77836126599277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.04428520737794, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 85.37220602586794, + "exit_time": "2020-06-25T00:00:00", + "pnl": -232.792081849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 91.73225900039202, + "entry_time": "2020-07-05T00:00:00", + "exit_price": 88.0922185191642, + "exit_time": "2020-07-15T00:00:00", + "pnl": 364.0040481227814, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 76.91587538104775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.55985216039402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.21379021281562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.47883268095197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.87940403957454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 77.69162042691461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.04428520737794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.37220602586794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73225900039202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.0922185191642, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 76.91587538104775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.55985216039402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.21379021281562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.47883268095197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.87940403957454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 77.69162042691461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.04428520737794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.37220602586794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73225900039202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.0922185191642, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "11" + }, "detail": null, + "duration_seconds": 3.5083857520949095, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18918564802424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93478444533437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.79908355175671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.55687092019801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.71489362901436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 76.91587538104775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.55985216039402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.21379021281562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.47883268095197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.87940403957454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 77.69162042691461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.04428520737794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.37220602586794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73225900039202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.0922185191642, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + } + ], + "final_value": 1000951.8554526689, + "framework": "VectorBT OSS", + "num_trades": 10, + "total_pnl": 951.8554526688531, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 104.20787937697249, + "entry_time": "2020-01-07T00:00:00", + "exit_price": 99.18918564802424, + "exit_time": "2020-01-17T00:00:00", + "pnl": 501.869372894825, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.35451619239235, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 88.93478444533437, + "exit_time": "2020-02-06T00:00:00", + "pnl": 341.97317470579804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.1382953609819, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 82.79908355175671, + "exit_time": "2020-02-26T00:00:00", + "pnl": -166.07881907748094, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.74563281040025, + "entry_time": "2020-03-07T00:00:00", + "exit_price": 85.55687092019801, + "exit_time": "2020-03-17T00:00:00", + "pnl": -381.1238109797756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.67616495235359, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 80.71489362901436, + "exit_time": "2020-04-06T00:00:00", + "pnl": 96.12713233392327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 76.91587538104775, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 81.55985216039402, + "exit_time": "2020-04-26T00:00:00", + "pnl": -464.3976779346261, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 87.21379021281562, + "entry_time": "2020-05-06T00:00:00", + "exit_price": 81.47883268095197, + "exit_time": "2020-05-16T00:00:00", + "pnl": 573.4957531863656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.87940403957454, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 77.69162042691461, + "exit_time": "2020-06-05T00:00:00", + "pnl": 318.77836126599277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.04428520737794, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 85.37220602586794, + "exit_time": "2020-06-25T00:00:00", + "pnl": -232.792081849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 91.73225900039202, + "entry_time": "2020-07-05T00:00:00", + "exit_price": 88.0922185191642, + "exit_time": "2020-07-15T00:00:00", + "pnl": 364.0040481227814, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 104.20787937697249, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.18918564802424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.35451619239235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93478444533437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.1382953609819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.79908355175671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.74563281040025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.55687092019801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.67616495235359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.71489362901436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 76.91587538104775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.55985216039402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.21379021281562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.47883268095197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.87940403957454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 77.69162042691461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.04428520737794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.37220602586794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73225900039202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.0922185191642, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + } + ], + "final_value": 1000951.8554526691, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": 951.8554526690859, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 104.20787937697249, + "entry_time": "2020-01-07T00:00:00", + "exit_price": 99.18918564802424, + "exit_reason": "signal", + "exit_time": "2020-01-17T00:00:00", + "pnl": 501.8693728948256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.35451619239235, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 88.93478444533437, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 341.97317470579765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.1382953609819, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 82.79908355175671, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": -166.07881907748015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.74563281040025, + "entry_time": "2020-03-07T00:00:00", + "exit_price": 85.55687092019801, + "exit_reason": "signal", + "exit_time": "2020-03-17T00:00:00", + "pnl": -381.12381097977595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 81.67616495235359, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 80.71489362901436, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": 96.12713233392333, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 76.91587538104775, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 81.55985216039402, + "exit_reason": "signal", + "exit_time": "2020-04-26T00:00:00", + "pnl": -464.3976779346258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 87.21379021281562, + "entry_time": "2020-05-06T00:00:00", + "exit_price": 81.47883268095197, + "exit_reason": "signal", + "exit_time": "2020-05-16T00:00:00", + "pnl": 573.4957531863656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.87940403957454, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 77.69162042691461, + "exit_reason": "signal", + "exit_time": "2020-06-05T00:00:00", + "pnl": 318.7783612659923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.04428520737794, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 85.37220602586794, + "exit_reason": "signal", + "exit_time": "2020-06-25T00:00:00", + "pnl": -232.79208184900017, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 91.73225900039202, + "entry_time": "2020-07-05T00:00:00", + "exit_price": 88.0922185191642, + "exit_reason": "signal", + "exit_time": "2020-07-15T00:00:00", + "pnl": 364.0040481227825, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "be4345288348f6a276f38cb4a364261003c925cddc5d9423b667fb82c34cff1b", + "scenario": "88c5993243d7dfa17cc8ed4d7979639e4846f1a3d5a9f1b62007e934bd9f73b5" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "e0efe74473f286a7ddeb3a4e39d9eb7a2443b69474480e9e4fcf97459672b93b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 200, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "11", @@ -276,8 +91720,417 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 2, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 2, + "message": "VectorBT OSS=2, ML4T=2, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 1001485.7011748579, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 1001485.7011748579, + "message": "VectorBT OSS=$1,001,485.7011748579, ML4T=$1,001,485.7011748579 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1485.7011748579098, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 1485.7011748579098, + "message": "VectorBT OSS=$1,485.7011748579, ML4T=$1,485.7011748579 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 87.2667981247593, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-03T00:00:00", + "pnl": 1273.3201875240702, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.78505322725157, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 83.6612433539132, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": 212.38098733383595, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 87.2667981247593, + "exit_time": "2020-02-03T00:00:00", + "pnl": 1273.3201875240695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.78505322725158, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 83.6612433539132, + "exit_time": "2020-03-04T00:00:00", + "pnl": 212.38098733383737, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.78505322725157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.6612433539132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.78505322725157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.6612433539132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "12" + }, "detail": null, + "duration_seconds": 3.4584382749162614, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.78505322725157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.6612433539132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 1001485.7011748579, + "framework": "VectorBT OSS", + "num_trades": 2, + "total_pnl": 1485.7011748579098, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 87.2667981247593, + "exit_time": "2020-02-03T00:00:00", + "pnl": 1273.3201875240695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.78505322725158, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 83.6612433539132, + "exit_time": "2020-03-04T00:00:00", + "pnl": 212.38098733383737, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.78505322725157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.6612433539132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 1001485.7011748579, + "framework": "ml4t.backtest", + "num_trades": 2, + "total_pnl": 1485.7011748579098, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 87.2667981247593, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-03T00:00:00", + "pnl": 1273.3201875240702, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.78505322725157, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 83.6612433539132, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": 212.38098733383595, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "932435fd79f122599609991a33af8e129883b9fdcb0262599f224890feee0f0c", + "scenario": "51166032bf2c4582113ae77995f8db134af72ee7ccdca2dfa4b989fc48295e33" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "3057fb1181d8b6bde3b0f0c71860dca5701293bcd956920c618e911bce7d0c67", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 2, + "exit_signals": 0, + "framework_closed_trades": 2, + "framework_fills": 4, + "framework_intents": 2, + "framework_orders": null, + "ml4t_closed_trades": 2, + "ml4t_fills": 4, + "ml4t_intents": 2, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "12", @@ -285,8 +92138,303 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT OSS=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 100800.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 100800.0, + "message": "VectorBT OSS=$100,800.0000000000, ML4T=$100,800.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 800.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 800.0, + "message": "VectorBT OSS=$800.0000000000, ML4T=$800.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 108.0, + "exit_reason": "take_profit", + "exit_time": "2020-01-13T00:00:00", + "pnl": 800.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 108.0, + "exit_time": "2020-01-13T00:00:00", + "pnl": 800.0, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "13" + }, "detail": null, + "duration_seconds": 3.456861233804375, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "final_value": 100800.0, + "framework": "VectorBT OSS", + "num_trades": 1, + "total_pnl": 800.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 108.0, + "exit_time": "2020-01-13T00:00:00", + "pnl": 800.0, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "final_value": 100800.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": 800.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 108.0, + "exit_reason": "take_profit", + "exit_time": "2020-01-13T00:00:00", + "pnl": 800.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "2239ef5dfd2ca79f8cf4b7d6b6f991dbfdc0b7393efab316c6eba29edbdb6829", + "scenario": "b39049d150f6fc2c71a16c642dc255e53e92c4840e949226036d175bccc4e1b0" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "6868775136fad190c5e2fffe0cb05f259b244161572731b86777972b78ea5fb5", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "13", @@ -294,8 +92442,303 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT OSS=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99889.95449782923, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99889.95449782923, + "message": "VectorBT OSS=$99,889.9544978292, ML4T=$99,889.9544978292 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -110.04550217077485, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -110.04550217077485, + "message": "VectorBT OSS=$-110.0455021708, ML4T=$-110.0455021708 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 98.89954497829228, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-12T00:00:00", + "pnl": -110.04550217077121, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 98.89954497829228, + "exit_time": "2020-01-12T00:00:00", + "pnl": -110.04550217077167, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "14" + }, "detail": null, + "duration_seconds": 3.52237769914791, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "final_value": 99889.95449782923, + "framework": "VectorBT OSS", + "num_trades": 1, + "total_pnl": -110.04550217077485, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 98.89954497829228, + "exit_time": "2020-01-12T00:00:00", + "pnl": -110.04550217077167, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "final_value": 99889.95449782923, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -110.04550217077485, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 98.89954497829228, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-12T00:00:00", + "pnl": -110.04550217077121, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "2239ef5dfd2ca79f8cf4b7d6b6f991dbfdc0b7393efab316c6eba29edbdb6829", + "scenario": "875c440f742f71bb0793ff5c4c6a1a0080b961930e6d2a24493cfa3e4c1d80b5" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "515cb2ead81157a5d033173889d2a47af873b49bb750c0fedf91036506520aa2", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "14", @@ -303,8 +92746,303 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "VectorBT OSS=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99670.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99670.0, + "message": "VectorBT OSS=$99,670.0000000000, ML4T=$99,670.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -330.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -330.0, + "message": "VectorBT OSS=$-330.0000000000, ML4T=$-330.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 96.7, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-03T00:00:00", + "pnl": -330.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 96.7, + "exit_time": "2020-01-03T00:00:00", + "pnl": -329.9999999999997, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "15" + }, "detail": null, + "duration_seconds": 3.5497171320021152, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + } + ], + "final_value": 99670.0, + "framework": "VectorBT OSS", + "num_trades": 1, + "total_pnl": -330.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 96.7, + "exit_time": "2020-01-03T00:00:00", + "pnl": -329.9999999999997, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + } + ], + "final_value": 99670.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -330.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 96.7, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-03T00:00:00", + "pnl": -330.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "2239ef5dfd2ca79f8cf4b7d6b6f991dbfdc0b7393efab316c6eba29edbdb6829", + "scenario": "fccddcd3455a97b6ce7c416cc2b41672c9d79511da75211739c16c90e940c969" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "0e9ac5d663e87ef8d9d42db148ea6b689902b2533884263ccde90d5ba20fc135", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "15", @@ -312,17 +93050,71177 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 9, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 9, + "message": "VectorBT OSS=9, ML4T=9, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 104005.39557457357, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.4551915228366852e-11, + "expected": 104005.39557457359, + "message": "VectorBT OSS=$104,005.3955745736, ML4T=$104,005.3955745736 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 4005.395574573573, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 1.4551915228366852e-11, + "expected": 4005.3955745735875, + "message": "VectorBT OSS=$4,005.3955745736, ML4T=$4,005.3955745736 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 101.8286517665368, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-18T00:00:00", + "pnl": 182.86517665367865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.87178148043324, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 103.42819240641157, + "exit_reason": "trailing_stop", + "exit_time": "2020-04-15T00:00:00", + "pnl": -544.3589074021675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 67.68717455028396, + "entry_time": "2020-07-20T00:00:00", + "exit_price": 85.73788226904412, + "exit_reason": "trailing_stop", + "exit_time": "2020-09-21T00:00:00", + "pnl": 1805.0707718760177, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 146.1644167243563, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 141.12149237162103, + "exit_reason": "trailing_stop", + "exit_time": "2021-02-12T00:00:00", + "pnl": -504.2924352735281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 115.28717822764801, + "entry_time": "2021-05-16T00:00:00", + "exit_price": 163.2468713643689, + "exit_reason": "trailing_stop", + "exit_time": "2021-08-07T00:00:00", + "pnl": 4795.969313672089, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 231.76982156958886, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 220.1813304911094, + "exit_reason": "trailing_stop", + "exit_time": "2021-12-04T00:00:00", + "pnl": -1158.8491078479456, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 124.86128159909472, + "entry_time": "2022-03-12T00:00:00", + "exit_price": 120.36184217949486, + "exit_reason": "trailing_stop", + "exit_time": "2022-04-01T00:00:00", + "pnl": -449.94394195998757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.70076277915071, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 83.93629293465128, + "exit_reason": "trailing_stop", + "exit_time": "2022-10-07T00:00:00", + "pnl": -376.44698444994174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.17201183584265, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.72582872889643, + "exit_reason": "trailing_stop", + "exit_time": "2023-05-15T00:00:00", + "pnl": 255.38168930537722, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 101.8286517665368, + "exit_time": "2020-01-18T00:00:00", + "pnl": 182.86517665367938, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.87178148043324, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 103.42819240641157, + "exit_time": "2020-04-15T00:00:00", + "pnl": -544.3589074021673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 67.68717455028396, + "entry_time": "2020-07-20T00:00:00", + "exit_price": 85.73788226904412, + "exit_time": "2020-09-21T00:00:00", + "pnl": 1805.0707718760166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 146.1644167243563, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 141.12149237162103, + "exit_time": "2021-02-12T00:00:00", + "pnl": -504.29243527352696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 115.28717822764801, + "entry_time": "2021-05-16T00:00:00", + "exit_price": 163.2468713643689, + "exit_time": "2021-08-07T00:00:00", + "pnl": 4795.969313672089, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 231.76982156958886, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 220.1813304911094, + "exit_time": "2021-12-04T00:00:00", + "pnl": -1158.849107847945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 124.86128159909472, + "entry_time": "2022-03-12T00:00:00", + "exit_price": 120.36184217949486, + "exit_time": "2022-04-01T00:00:00", + "pnl": -449.94394195998666, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.7007627791507, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 83.93629293465128, + "exit_time": "2022-10-07T00:00:00", + "pnl": -376.4469844499416, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.17201183584265, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.72582872889643, + "exit_time": "2023-05-15T00:00:00", + "pnl": 255.3816893053778, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 101.8286517665368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.87178148043324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 103.42819240641157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 67.68717455028396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 85.73788226904412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 146.1644167243563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 115.28717822764801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 163.2468713643689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 231.76982156958886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 220.1813304911094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 124.86128159909472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 120.36184217949486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.70076277915071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.17201183584265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 92.72582872889643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.8286517665368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.87178148043324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 103.42819240641157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 67.68717455028396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.73788226904412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 146.1644167243563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 115.28717822764801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 163.2468713643689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 231.76982156958886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 220.1813304911094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 124.86128159909472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 120.36184217949486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.70076277915071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.17201183584265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72582872889643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "16" + }, "detail": null, + "duration_seconds": 4.819242513040081, "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.8286517665368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.87178148043324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 103.42819240641157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 67.68717455028396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.73788226904412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 146.1644167243563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 115.28717822764801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 163.2468713643689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 231.76982156958886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 220.1813304911094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 124.86128159909472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 120.36184217949486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.70076277915071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.17201183584265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72582872889643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + } + ], + "final_value": 104005.39557457359, + "framework": "VectorBT OSS", + "num_trades": 9, + "total_pnl": 4005.3955745735875, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 101.8286517665368, + "exit_time": "2020-01-18T00:00:00", + "pnl": 182.86517665367938, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.87178148043324, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 103.42819240641157, + "exit_time": "2020-04-15T00:00:00", + "pnl": -544.3589074021673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 67.68717455028396, + "entry_time": "2020-07-20T00:00:00", + "exit_price": 85.73788226904412, + "exit_time": "2020-09-21T00:00:00", + "pnl": 1805.0707718760166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 146.1644167243563, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 141.12149237162103, + "exit_time": "2021-02-12T00:00:00", + "pnl": -504.29243527352696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 115.28717822764801, + "entry_time": "2021-05-16T00:00:00", + "exit_price": 163.2468713643689, + "exit_time": "2021-08-07T00:00:00", + "pnl": 4795.969313672089, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 231.76982156958886, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 220.1813304911094, + "exit_time": "2021-12-04T00:00:00", + "pnl": -1158.849107847945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 124.86128159909472, + "entry_time": "2022-03-12T00:00:00", + "exit_price": 120.36184217949486, + "exit_time": "2022-04-01T00:00:00", + "pnl": -449.94394195998666, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.7007627791507, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 83.93629293465128, + "exit_time": "2022-10-07T00:00:00", + "pnl": -376.4469844499416, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.17201183584265, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.72582872889643, + "exit_time": "2023-05-15T00:00:00", + "pnl": 255.3816893053778, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 101.8286517665368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 108.87178148043324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 103.42819240641157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 67.68717455028396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 85.73788226904412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 146.1644167243563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 115.28717822764801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 163.2468713643689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 231.76982156958886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 220.1813304911094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 124.86128159909472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 120.36184217949486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.70076277915071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.17201183584265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 92.72582872889643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + } + ], + "final_value": 104005.39557457357, + "framework": "ml4t.backtest", + "num_trades": 9, + "total_pnl": 4005.395574573573, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 101.8286517665368, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-18T00:00:00", + "pnl": 182.86517665367865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 108.87178148043324, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 103.42819240641157, + "exit_reason": "trailing_stop", + "exit_time": "2020-04-15T00:00:00", + "pnl": -544.3589074021675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 67.68717455028396, + "entry_time": "2020-07-20T00:00:00", + "exit_price": 85.73788226904412, + "exit_reason": "trailing_stop", + "exit_time": "2020-09-21T00:00:00", + "pnl": 1805.0707718760177, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 146.1644167243563, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 141.12149237162103, + "exit_reason": "trailing_stop", + "exit_time": "2021-02-12T00:00:00", + "pnl": -504.2924352735281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 115.28717822764801, + "entry_time": "2021-05-16T00:00:00", + "exit_price": 163.2468713643689, + "exit_reason": "trailing_stop", + "exit_time": "2021-08-07T00:00:00", + "pnl": 4795.969313672089, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 231.76982156958886, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 220.1813304911094, + "exit_reason": "trailing_stop", + "exit_time": "2021-12-04T00:00:00", + "pnl": -1158.8491078479456, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 124.86128159909472, + "entry_time": "2022-03-12T00:00:00", + "exit_price": 120.36184217949486, + "exit_reason": "trailing_stop", + "exit_time": "2022-04-01T00:00:00", + "pnl": -449.94394195998757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.70076277915071, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 83.93629293465128, + "exit_reason": "trailing_stop", + "exit_time": "2022-10-07T00:00:00", + "pnl": -376.44698444994174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.17201183584265, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.72582872889643, + "exit_reason": "trailing_stop", + "exit_time": "2023-05-15T00:00:00", + "pnl": 255.38168930537722, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "2239ef5dfd2ca79f8cf4b7d6b6f991dbfdc0b7393efab316c6eba29edbdb6829", + "scenario": "0198df8bd89459f57967743d1f22954c5d08e535d28d96d9ab83461ca73d02b9" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "8b4829a04d740fe6087782188f15eb27044961db12acbcb5f5fdd227e83fde41", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 1500, + "entry_signals": 9, + "exit_signals": 0, + "framework_closed_trades": 9, + "framework_fills": 18, + "framework_intents": 9, + "framework_orders": null, + "ml4t_closed_trades": 9, + "ml4t_fills": 18, + "ml4t_intents": 9, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "16", - "scenario_name": "Stress Test", + "scenario_name": "Regime Path Coverage", + "status": "pass" + }, + { + "comparison": { + "checks": [ + { + "actual": 600, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 600, + "message": "VectorBT OSS=600, ML4T=600, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99082.81840069593, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 3.2014213502407074e-10, + "expected": 99082.81840069561, + "message": "VectorBT OSS=$99,082.8184006956, ML4T=$99,082.8184006959 (exact_diff=$0.0000000003, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -917.1815993040655, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 3.2014213502407074e-10, + "expected": -917.1815993043856, + "message": "VectorBT OSS=$-917.1815993044, ML4T=$-917.1815993041 (exact_diff=$0.0000000003; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33867736091129, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 100.24521783497416, + "exit_reason": "signal", + "exit_time": "2020-01-03T00:00:00", + "pnl": -9.345952593714173, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33353996675463, + "entry_time": "2020-01-05T00:00:00", + "exit_price": 100.17535391574476, + "exit_reason": "signal", + "exit_time": "2020-01-06T00:00:00", + "pnl": -15.818605100987043, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.17558936557836, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 99.82464445421311, + "exit_reason": "signal", + "exit_time": "2020-01-09T00:00:00", + "pnl": -35.094491136524084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.14823158528606, + "entry_time": "2020-01-11T00:00:00", + "exit_price": 100.02303868942406, + "exit_reason": "signal", + "exit_time": "2020-01-12T00:00:00", + "pnl": -12.519289586200102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0898265784532, + "entry_time": "2020-01-14T00:00:00", + "exit_price": 100.0375220132344, + "exit_reason": "signal", + "exit_time": "2020-01-15T00:00:00", + "pnl": -5.2304565218801145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.69877148351581, + "entry_time": "2020-01-17T00:00:00", + "exit_price": 99.8094147843381, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": 11.06433008222848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.88896279741591, + "entry_time": "2020-01-20T00:00:00", + "exit_price": 99.58446195759505, + "exit_reason": "signal", + "exit_time": "2020-01-21T00:00:00", + "pnl": -30.450083982086653, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.94461858556683, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 99.86726342876044, + "exit_reason": "signal", + "exit_time": "2020-01-24T00:00:00", + "pnl": -7.735515680638855, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.264261049502, + "entry_time": "2020-01-26T00:00:00", + "exit_price": 99.97378019208324, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -29.048085741877003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43666090180685, + "entry_time": "2020-01-29T00:00:00", + "exit_price": 99.64557703864863, + "exit_reason": "signal", + "exit_time": "2020-01-30T00:00:00", + "pnl": 20.891613684178083, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.41486055220747, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 99.62832834535065, + "exit_reason": "signal", + "exit_time": "2020-02-02T00:00:00", + "pnl": 21.346779314319065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.40627623062987, + "entry_time": "2020-02-04T00:00:00", + "exit_price": 98.9966907903866, + "exit_reason": "signal", + "exit_time": "2020-02-05T00:00:00", + "pnl": -40.95854402432633, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.62784889129782, + "entry_time": "2020-02-07T00:00:00", + "exit_price": 98.91665393395704, + "exit_reason": "signal", + "exit_time": "2020-02-08T00:00:00", + "pnl": 28.880504265922355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20129913778622, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 99.36824311350031, + "exit_reason": "signal", + "exit_time": "2020-02-11T00:00:00", + "pnl": 16.694397571409354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.44539780996692, + "entry_time": "2020-02-13T00:00:00", + "exit_price": 99.29577808855632, + "exit_reason": "signal", + "exit_time": "2020-02-14T00:00:00", + "pnl": -14.96197214105996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60087912978423, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 98.67646038571121, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": 7.558125592699071, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17445140133515, + "entry_time": "2020-02-19T00:00:00", + "exit_price": 99.07045121918839, + "exit_reason": "signal", + "exit_time": "2020-02-20T00:00:00", + "pnl": -10.400018214677402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.49723620471183, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 99.5174230546468, + "exit_reason": "signal", + "exit_time": "2020-02-23T00:00:00", + "pnl": 2.0186849934980273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5413500261472, + "entry_time": "2020-02-25T00:00:00", + "exit_price": 99.47975770399327, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": -6.159232215391967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.29423417091141, + "entry_time": "2020-02-28T00:00:00", + "exit_price": 99.27541464305773, + "exit_reason": "signal", + "exit_time": "2020-02-29T00:00:00", + "pnl": -1.8819527853665932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43920860251751, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.06079463387583, + "exit_reason": "signal", + "exit_time": "2020-03-03T00:00:00", + "pnl": -37.84139686416711, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.37828233356667, + "entry_time": "2020-03-05T00:00:00", + "exit_price": 99.30210368322795, + "exit_reason": "signal", + "exit_time": "2020-03-06T00:00:00", + "pnl": -7.617865033871567, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.8891828858322, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 98.6817301819728, + "exit_reason": "signal", + "exit_time": "2020-03-09T00:00:00", + "pnl": -20.745270385939875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.39002953943762, + "entry_time": "2020-03-11T00:00:00", + "exit_price": 98.68517685658658, + "exit_reason": "signal", + "exit_time": "2020-03-12T00:00:00", + "pnl": 29.514731714896698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.65084298157255, + "entry_time": "2020-03-14T00:00:00", + "exit_price": 98.93501858046714, + "exit_reason": "signal", + "exit_time": "2020-03-15T00:00:00", + "pnl": 28.41755988945988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.1907166501479, + "entry_time": "2020-03-17T00:00:00", + "exit_price": 99.25659603867345, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 6.587938852555453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36428253311259, + "entry_time": "2020-03-20T00:00:00", + "exit_price": 99.01156809266551, + "exit_reason": "signal", + "exit_time": "2020-03-21T00:00:00", + "pnl": -35.271444044707096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31879308123833, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.40136182036203, + "exit_reason": "signal", + "exit_time": "2020-03-24T00:00:00", + "pnl": 8.256873912370793, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17903686528695, + "entry_time": "2020-03-26T00:00:00", + "exit_price": 99.0619221034904, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -11.71147617965471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25968317752123, + "entry_time": "2020-03-29T00:00:00", + "exit_price": 99.56379928977212, + "exit_reason": "signal", + "exit_time": "2020-03-30T00:00:00", + "pnl": 30.411611225090383, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.80666495491704, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 99.94182055020374, + "exit_reason": "signal", + "exit_time": "2020-04-02T00:00:00", + "pnl": 13.515559528670565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.92425119368045, + "entry_time": "2020-04-04T00:00:00", + "exit_price": 99.78971486194605, + "exit_reason": "signal", + "exit_time": "2020-04-05T00:00:00", + "pnl": -13.453633173439812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.23057477534164, + "entry_time": "2020-04-07T00:00:00", + "exit_price": 100.4049348801832, + "exit_reason": "signal", + "exit_time": "2020-04-08T00:00:00", + "pnl": 17.436010484158032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.24159987362269, + "entry_time": "2020-04-10T00:00:00", + "exit_price": 100.06843389735158, + "exit_reason": "signal", + "exit_time": "2020-04-11T00:00:00", + "pnl": -17.31659762711024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.22183940097844, + "entry_time": "2020-04-13T00:00:00", + "exit_price": 99.93299182979392, + "exit_reason": "signal", + "exit_time": "2020-04-14T00:00:00", + "pnl": -28.8847571184524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91637693821662, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 100.20188970935105, + "exit_reason": "signal", + "exit_time": "2020-04-17T00:00:00", + "pnl": 28.551277113443575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.57826653579693, + "entry_time": "2020-04-19T00:00:00", + "exit_price": 100.48615354430639, + "exit_reason": "signal", + "exit_time": "2020-04-20T00:00:00", + "pnl": -9.211299149052138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.48852996658736, + "entry_time": "2020-04-22T00:00:00", + "exit_price": 100.70097560384337, + "exit_reason": "signal", + "exit_time": "2020-04-23T00:00:00", + "pnl": 21.244563725602347, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.56660104606993, + "entry_time": "2020-04-25T00:00:00", + "exit_price": 100.60339517911308, + "exit_reason": "signal", + "exit_time": "2020-04-26T00:00:00", + "pnl": 3.6794133043149486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5215727488348, + "entry_time": "2020-04-28T00:00:00", + "exit_price": 100.3913600319206, + "exit_reason": "signal", + "exit_time": "2020-04-29T00:00:00", + "pnl": -13.021271691421134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.66423065390151, + "entry_time": "2020-05-01T00:00:00", + "exit_price": 100.49406633741951, + "exit_reason": "signal", + "exit_time": "2020-05-02T00:00:00", + "pnl": -17.016431648198704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64849065100934, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.63323070552582, + "exit_reason": "signal", + "exit_time": "2020-05-05T00:00:00", + "pnl": -1.5259945483521733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88914932519062, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 100.96225788336264, + "exit_reason": "signal", + "exit_time": "2020-05-08T00:00:00", + "pnl": 7.310855817202537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.21454142458283, + "entry_time": "2020-05-10T00:00:00", + "exit_price": 101.08973549159177, + "exit_reason": "signal", + "exit_time": "2020-05-11T00:00:00", + "pnl": -12.480593299107568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.91131718633395, + "entry_time": "2020-05-13T00:00:00", + "exit_price": 100.95365272243404, + "exit_reason": "signal", + "exit_time": "2020-05-14T00:00:00", + "pnl": 4.233553610009039, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3677264483084, + "entry_time": "2020-05-16T00:00:00", + "exit_price": 100.38542382708798, + "exit_reason": "signal", + "exit_time": "2020-05-17T00:00:00", + "pnl": 1.7697378779575956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.727355594576, + "entry_time": "2020-05-19T00:00:00", + "exit_price": 99.80184598433505, + "exit_reason": "signal", + "exit_time": "2020-05-20T00:00:00", + "pnl": 7.449038975904841, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.75895482632265, + "entry_time": "2020-05-22T00:00:00", + "exit_price": 99.65309620079978, + "exit_reason": "signal", + "exit_time": "2020-05-23T00:00:00", + "pnl": -10.585862552286926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.18275486854981, + "entry_time": "2020-05-25T00:00:00", + "exit_price": 99.08066364611346, + "exit_reason": "signal", + "exit_time": "2020-05-26T00:00:00", + "pnl": -10.209122243633828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86355002974182, + "entry_time": "2020-05-28T00:00:00", + "exit_price": 98.8079829991331, + "exit_reason": "signal", + "exit_time": "2020-05-29T00:00:00", + "pnl": -5.556703060870859, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50774498473834, + "entry_time": "2020-05-31T00:00:00", + "exit_price": 98.15500147527054, + "exit_reason": "signal", + "exit_time": "2020-06-01T00:00:00", + "pnl": -35.27435094678003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25388112126257, + "entry_time": "2020-06-03T00:00:00", + "exit_price": 98.46869004462158, + "exit_reason": "signal", + "exit_time": "2020-06-04T00:00:00", + "pnl": 21.480892335901444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.49982930970904, + "entry_time": "2020-06-06T00:00:00", + "exit_price": 98.64941137818613, + "exit_reason": "signal", + "exit_time": "2020-06-07T00:00:00", + "pnl": 14.958206847708425, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08181708620197, + "entry_time": "2020-06-09T00:00:00", + "exit_price": 98.89782993828217, + "exit_reason": "signal", + "exit_time": "2020-06-10T00:00:00", + "pnl": -18.398714791979728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.34821493675021, + "entry_time": "2020-06-12T00:00:00", + "exit_price": 99.0511570084608, + "exit_reason": "signal", + "exit_time": "2020-06-13T00:00:00", + "pnl": -29.705792828939593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36636841676064, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 99.22802936588096, + "exit_reason": "signal", + "exit_time": "2020-06-16T00:00:00", + "pnl": -13.83390508796765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.13124547885464, + "entry_time": "2020-06-18T00:00:00", + "exit_price": 98.97034570188329, + "exit_reason": "signal", + "exit_time": "2020-06-19T00:00:00", + "pnl": -16.0899776971346, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84675502390373, + "entry_time": "2020-06-21T00:00:00", + "exit_price": 98.82877025439984, + "exit_reason": "signal", + "exit_time": "2020-06-22T00:00:00", + "pnl": -1.7984769503891584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83150510044737, + "entry_time": "2020-06-24T00:00:00", + "exit_price": 98.80556016637114, + "exit_reason": "signal", + "exit_time": "2020-06-25T00:00:00", + "pnl": -2.594493407623304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.10675350799055, + "entry_time": "2020-06-27T00:00:00", + "exit_price": 98.84453919660923, + "exit_reason": "signal", + "exit_time": "2020-06-28T00:00:00", + "pnl": -26.221431138130356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88147160830762, + "entry_time": "2020-06-30T00:00:00", + "exit_price": 98.95771616416846, + "exit_reason": "signal", + "exit_time": "2020-07-01T00:00:00", + "pnl": 7.624455586083059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25900520967262, + "entry_time": "2020-07-03T00:00:00", + "exit_price": 99.28214715432236, + "exit_reason": "signal", + "exit_time": "2020-07-04T00:00:00", + "pnl": 2.314194464974207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.64410132782972, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 98.78845498147822, + "exit_reason": "signal", + "exit_time": "2020-07-07T00:00:00", + "pnl": 14.43536536485044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96240900085823, + "entry_time": "2020-07-09T00:00:00", + "exit_price": 99.01654413042846, + "exit_reason": "signal", + "exit_time": "2020-07-10T00:00:00", + "pnl": 5.413512957024068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08257869239384, + "entry_time": "2020-07-12T00:00:00", + "exit_price": 98.92270971634117, + "exit_reason": "signal", + "exit_time": "2020-07-13T00:00:00", + "pnl": -15.986897605265767, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9249177043285, + "entry_time": "2020-07-15T00:00:00", + "exit_price": 98.5475977762062, + "exit_reason": "signal", + "exit_time": "2020-07-16T00:00:00", + "pnl": -37.73199281222878, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85856446370276, + "entry_time": "2020-07-18T00:00:00", + "exit_price": 98.8876461806366, + "exit_reason": "signal", + "exit_time": "2020-07-19T00:00:00", + "pnl": 2.9081716933833377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.75554506700362, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 98.4712342394787, + "exit_reason": "signal", + "exit_time": "2020-07-22T00:00:00", + "pnl": -28.43108275249142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.13596092844963, + "entry_time": "2020-07-24T00:00:00", + "exit_price": 98.29084433077668, + "exit_reason": "signal", + "exit_time": "2020-07-25T00:00:00", + "pnl": 15.488340232703194, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50946620110103, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 98.42209873300993, + "exit_reason": "signal", + "exit_time": "2020-07-28T00:00:00", + "pnl": -8.736746809110628, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16470383307056, + "entry_time": "2020-07-30T00:00:00", + "exit_price": 98.10251353436806, + "exit_reason": "signal", + "exit_time": "2020-07-31T00:00:00", + "pnl": -6.219029870249869, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16007736983093, + "entry_time": "2020-08-02T00:00:00", + "exit_price": 98.25346405776058, + "exit_reason": "signal", + "exit_time": "2020-08-03T00:00:00", + "pnl": 9.338668792965109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.02466944517249, + "entry_time": "2020-08-05T00:00:00", + "exit_price": 98.03234873384025, + "exit_reason": "signal", + "exit_time": "2020-08-06T00:00:00", + "pnl": 0.767928866775037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11031617256702, + "entry_time": "2020-08-08T00:00:00", + "exit_price": 98.14530663460309, + "exit_reason": "signal", + "exit_time": "2020-08-09T00:00:00", + "pnl": 3.499046203607577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.4442900442657, + "entry_time": "2020-08-11T00:00:00", + "exit_price": 98.39955675926143, + "exit_reason": "signal", + "exit_time": "2020-08-12T00:00:00", + "pnl": -4.4733285004258505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19954612220634, + "entry_time": "2020-08-14T00:00:00", + "exit_price": 98.33374471974878, + "exit_reason": "signal", + "exit_time": "2020-08-15T00:00:00", + "pnl": 13.41985975424359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.17850638089598, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.31970147221125, + "exit_reason": "signal", + "exit_time": "2020-08-18T00:00:00", + "pnl": 14.119509131527593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19274532121113, + "entry_time": "2020-08-20T00:00:00", + "exit_price": 98.3840327772038, + "exit_reason": "signal", + "exit_time": "2020-08-21T00:00:00", + "pnl": 19.12874559926604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48120231354616, + "entry_time": "2020-08-23T00:00:00", + "exit_price": 98.7121932598933, + "exit_reason": "signal", + "exit_time": "2020-08-24T00:00:00", + "pnl": 23.099094634713765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86988580253298, + "entry_time": "2020-08-26T00:00:00", + "exit_price": 98.76604202197464, + "exit_reason": "signal", + "exit_time": "2020-08-27T00:00:00", + "pnl": -10.384378055832713, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.79597689506201, + "entry_time": "2020-08-29T00:00:00", + "exit_price": 98.42129188541651, + "exit_reason": "signal", + "exit_time": "2020-08-30T00:00:00", + "pnl": -37.46850096455091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67647877199742, + "entry_time": "2020-09-01T00:00:00", + "exit_price": 98.82191220927734, + "exit_reason": "signal", + "exit_time": "2020-09-02T00:00:00", + "pnl": 14.543343727991669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84470059887572, + "entry_time": "2020-09-04T00:00:00", + "exit_price": 98.72847566121298, + "exit_reason": "signal", + "exit_time": "2020-09-05T00:00:00", + "pnl": -11.622493766273692, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43094423441607, + "entry_time": "2020-09-07T00:00:00", + "exit_price": 98.39808368032986, + "exit_reason": "signal", + "exit_time": "2020-09-08T00:00:00", + "pnl": -3.2860554086219054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31641481415083, + "entry_time": "2020-09-10T00:00:00", + "exit_price": 98.40267706340073, + "exit_reason": "signal", + "exit_time": "2020-09-11T00:00:00", + "pnl": 8.62622492499031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60680412325432, + "entry_time": "2020-09-13T00:00:00", + "exit_price": 98.51452016846274, + "exit_reason": "signal", + "exit_time": "2020-09-14T00:00:00", + "pnl": -9.22839547915828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31471449163298, + "entry_time": "2020-09-16T00:00:00", + "exit_price": 98.43834781075664, + "exit_reason": "signal", + "exit_time": "2020-09-17T00:00:00", + "pnl": 12.363331912365538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84446638005844, + "entry_time": "2020-09-19T00:00:00", + "exit_price": 98.49607372712997, + "exit_reason": "signal", + "exit_time": "2020-09-20T00:00:00", + "pnl": -34.8392652928469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85869892480143, + "entry_time": "2020-09-22T00:00:00", + "exit_price": 98.87107213537678, + "exit_reason": "signal", + "exit_time": "2020-09-23T00:00:00", + "pnl": 1.237321057535155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83017137699973, + "entry_time": "2020-09-25T00:00:00", + "exit_price": 98.73075043509533, + "exit_reason": "signal", + "exit_time": "2020-09-26T00:00:00", + "pnl": -9.942094190440912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85446221431528, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.13025477242799, + "exit_reason": "signal", + "exit_time": "2020-09-29T00:00:00", + "pnl": 27.57925581127165, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08577867542596, + "entry_time": "2020-10-01T00:00:00", + "exit_price": 99.20567187514531, + "exit_reason": "signal", + "exit_time": "2020-10-02T00:00:00", + "pnl": 11.989319971935402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27862593574773, + "entry_time": "2020-10-04T00:00:00", + "exit_price": 99.19411735771268, + "exit_reason": "signal", + "exit_time": "2020-10-05T00:00:00", + "pnl": -8.450857803505642, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.916410701528, + "entry_time": "2020-10-07T00:00:00", + "exit_price": 98.80020190906805, + "exit_reason": "signal", + "exit_time": "2020-10-08T00:00:00", + "pnl": -11.620879245994729, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.03429888110497, + "entry_time": "2020-10-10T00:00:00", + "exit_price": 97.99059510104857, + "exit_reason": "signal", + "exit_time": "2020-10-11T00:00:00", + "pnl": -4.370378005640305, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.12230359240208, + "entry_time": "2020-10-13T00:00:00", + "exit_price": 98.21493112615859, + "exit_reason": "signal", + "exit_time": "2020-10-14T00:00:00", + "pnl": 9.2627533756513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7362497471537, + "entry_time": "2020-10-16T00:00:00", + "exit_price": 97.90953724611552, + "exit_reason": "signal", + "exit_time": "2020-10-17T00:00:00", + "pnl": 17.328749896181762, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99997604721491, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.25158859302469, + "exit_reason": "signal", + "exit_time": "2020-10-20T00:00:00", + "pnl": 25.161254580978493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98246224229298, + "entry_time": "2020-10-22T00:00:00", + "exit_price": 98.18380160087476, + "exit_reason": "signal", + "exit_time": "2020-10-23T00:00:00", + "pnl": 20.13393585817721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.54700954481861, + "entry_time": "2020-10-25T00:00:00", + "exit_price": 98.87858935796136, + "exit_reason": "signal", + "exit_time": "2020-10-26T00:00:00", + "pnl": 33.157981314274366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.82466366840129, + "entry_time": "2020-10-28T00:00:00", + "exit_price": 98.79031352535364, + "exit_reason": "signal", + "exit_time": "2020-10-29T00:00:00", + "pnl": -3.435014304764991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.52782616930364, + "entry_time": "2020-10-31T00:00:00", + "exit_price": 98.71180131795903, + "exit_reason": "signal", + "exit_time": "2020-11-01T00:00:00", + "pnl": 18.39751486553905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.66862984653359, + "entry_time": "2020-11-03T00:00:00", + "exit_price": 98.94388954493733, + "exit_reason": "signal", + "exit_time": "2020-11-04T00:00:00", + "pnl": 27.525969840375183, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.40172293508901, + "entry_time": "2020-11-06T00:00:00", + "exit_price": 98.27308992706585, + "exit_reason": "signal", + "exit_time": "2020-11-07T00:00:00", + "pnl": -12.863300802317099, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30251070708916, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 98.36341600243385, + "exit_reason": "signal", + "exit_time": "2020-11-10T00:00:00", + "pnl": 6.090529534470988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07297082017436, + "entry_time": "2020-11-12T00:00:00", + "exit_price": 98.63576619816114, + "exit_reason": "signal", + "exit_time": "2020-11-13T00:00:00", + "pnl": 56.279537798676756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.36545808934646, + "entry_time": "2020-11-15T00:00:00", + "exit_price": 98.425342939227, + "exit_reason": "signal", + "exit_time": "2020-11-16T00:00:00", + "pnl": 5.988484988052733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.59476724765915, + "entry_time": "2020-11-18T00:00:00", + "exit_price": 98.41575843731752, + "exit_reason": "signal", + "exit_time": "2020-11-19T00:00:00", + "pnl": -17.900881034162012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30499551372479, + "entry_time": "2020-11-21T00:00:00", + "exit_price": 98.2943417590765, + "exit_reason": "signal", + "exit_time": "2020-11-22T00:00:00", + "pnl": -1.0653754648283211, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.20190364871404, + "entry_time": "2020-11-24T00:00:00", + "exit_price": 98.35429934455371, + "exit_reason": "signal", + "exit_time": "2020-11-25T00:00:00", + "pnl": 15.23956958396775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25575482738782, + "entry_time": "2020-11-27T00:00:00", + "exit_price": 98.30124986928953, + "exit_reason": "signal", + "exit_time": "2020-11-28T00:00:00", + "pnl": 4.54950419017041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.90191386326036, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.96508444596826, + "exit_reason": "signal", + "exit_time": "2020-12-01T00:00:00", + "pnl": 6.3170582707898575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.75989432781597, + "entry_time": "2020-12-03T00:00:00", + "exit_price": 97.47851546822666, + "exit_reason": "signal", + "exit_time": "2020-12-04T00:00:00", + "pnl": -28.137885958929473, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.43273982617148, + "entry_time": "2020-12-06T00:00:00", + "exit_price": 97.78073270556935, + "exit_reason": "signal", + "exit_time": "2020-12-07T00:00:00", + "pnl": 34.799287939786154, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.29707161405977, + "entry_time": "2020-12-09T00:00:00", + "exit_price": 97.17141051171173, + "exit_reason": "signal", + "exit_time": "2020-12-10T00:00:00", + "pnl": -12.566110234804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.83897503233364, + "entry_time": "2020-12-12T00:00:00", + "exit_price": 96.92050920813638, + "exit_reason": "signal", + "exit_time": "2020-12-13T00:00:00", + "pnl": 8.153417580273526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.39298906893524, + "entry_time": "2020-12-15T00:00:00", + "exit_price": 97.24960092613485, + "exit_reason": "signal", + "exit_time": "2020-12-16T00:00:00", + "pnl": -14.338814280039514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.15249367428707, + "entry_time": "2020-12-18T00:00:00", + "exit_price": 98.11254847884746, + "exit_reason": "signal", + "exit_time": "2020-12-19T00:00:00", + "pnl": -3.99451954396136, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6477102979142, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 97.66187174327492, + "exit_reason": "signal", + "exit_time": "2020-12-22T00:00:00", + "pnl": 1.4161445360714424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.22816086359947, + "entry_time": "2020-12-24T00:00:00", + "exit_price": 97.18924739108921, + "exit_reason": "signal", + "exit_time": "2020-12-25T00:00:00", + "pnl": -3.891347251026673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.15833017318171, + "entry_time": "2020-12-27T00:00:00", + "exit_price": 97.35388264537053, + "exit_reason": "signal", + "exit_time": "2020-12-28T00:00:00", + "pnl": 19.55524721888287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30391448349607, + "entry_time": "2020-12-30T00:00:00", + "exit_price": 97.1765702619787, + "exit_reason": "signal", + "exit_time": "2020-12-31T00:00:00", + "pnl": -12.734422151735998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.03923857682982, + "entry_time": "2021-01-02T00:00:00", + "exit_price": 97.14087662618776, + "exit_reason": "signal", + "exit_time": "2021-01-03T00:00:00", + "pnl": 10.16380493579527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.60285889768487, + "entry_time": "2021-01-05T00:00:00", + "exit_price": 96.71610220194758, + "exit_reason": "signal", + "exit_time": "2021-01-06T00:00:00", + "pnl": 11.324330426270535, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.43129513858887, + "entry_time": "2021-01-08T00:00:00", + "exit_price": 96.7750138677335, + "exit_reason": "signal", + "exit_time": "2021-01-09T00:00:00", + "pnl": 34.37187291446389, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.5417619126041, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.26004415392279, + "exit_reason": "signal", + "exit_time": "2021-01-12T00:00:00", + "pnl": -28.17177586813159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.48237494714664, + "entry_time": "2021-01-14T00:00:00", + "exit_price": 96.58658168452075, + "exit_reason": "signal", + "exit_time": "2021-01-15T00:00:00", + "pnl": 10.420673737411562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.75620116852377, + "entry_time": "2021-01-17T00:00:00", + "exit_price": 96.69650084660127, + "exit_reason": "signal", + "exit_time": "2021-01-18T00:00:00", + "pnl": -5.970032192250073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.92028780826493, + "entry_time": "2021-01-20T00:00:00", + "exit_price": 95.62951533581877, + "exit_reason": "signal", + "exit_time": "2021-01-21T00:00:00", + "pnl": -29.077247244616956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.58269597074072, + "entry_time": "2021-01-23T00:00:00", + "exit_price": 95.65987379372794, + "exit_reason": "signal", + "exit_time": "2021-01-24T00:00:00", + "pnl": 7.71778229872325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.66612454309691, + "entry_time": "2021-01-26T00:00:00", + "exit_price": 95.8169746660663, + "exit_reason": "signal", + "exit_time": "2021-01-27T00:00:00", + "pnl": 15.085012296938658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5926039176473, + "entry_time": "2021-01-29T00:00:00", + "exit_price": 95.28582192646724, + "exit_reason": "signal", + "exit_time": "2021-01-30T00:00:00", + "pnl": -30.678199118006887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.47874410921285, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.57232514477201, + "exit_reason": "signal", + "exit_time": "2021-02-02T00:00:00", + "pnl": 9.358103555914568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.07482838670386, + "entry_time": "2021-02-04T00:00:00", + "exit_price": 96.06329982176626, + "exit_reason": "signal", + "exit_time": "2021-02-05T00:00:00", + "pnl": -1.1528564937580086, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.939646337063, + "entry_time": "2021-02-07T00:00:00", + "exit_price": 96.02294071169972, + "exit_reason": "signal", + "exit_time": "2021-02-08T00:00:00", + "pnl": 8.329437463671638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.73925579999096, + "entry_time": "2021-02-10T00:00:00", + "exit_price": 95.99566659891293, + "exit_reason": "signal", + "exit_time": "2021-02-11T00:00:00", + "pnl": 25.64107989219883, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.99166395939717, + "entry_time": "2021-02-13T00:00:00", + "exit_price": 95.91107729961162, + "exit_reason": "signal", + "exit_time": "2021-02-14T00:00:00", + "pnl": -8.058665978554927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.35440315345551, + "entry_time": "2021-02-16T00:00:00", + "exit_price": 96.19457800884426, + "exit_reason": "signal", + "exit_time": "2021-02-17T00:00:00", + "pnl": -15.982514461125902, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87539474258334, + "entry_time": "2021-02-19T00:00:00", + "exit_price": 96.03831344319956, + "exit_reason": "signal", + "exit_time": "2021-02-20T00:00:00", + "pnl": 16.29187006162101, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.84933568810729, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.942984467456, + "exit_reason": "signal", + "exit_time": "2021-02-23T00:00:00", + "pnl": 9.364877934871402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28778584744732, + "entry_time": "2021-02-25T00:00:00", + "exit_price": 95.02443267142746, + "exit_reason": "signal", + "exit_time": "2021-02-26T00:00:00", + "pnl": -26.33531760198639, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94057536205155, + "entry_time": "2021-02-28T00:00:00", + "exit_price": 94.72906200441219, + "exit_reason": "signal", + "exit_time": "2021-03-01T00:00:00", + "pnl": -21.151335763936004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38445225202611, + "entry_time": "2021-03-03T00:00:00", + "exit_price": 94.38197492987447, + "exit_reason": "signal", + "exit_time": "2021-03-04T00:00:00", + "pnl": -0.247732215164433, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18213638354725, + "entry_time": "2021-03-06T00:00:00", + "exit_price": 94.04715001455901, + "exit_reason": "signal", + "exit_time": "2021-03-07T00:00:00", + "pnl": -13.498636898822951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19838818284391, + "entry_time": "2021-03-09T00:00:00", + "exit_price": 94.29725636974986, + "exit_reason": "signal", + "exit_time": "2021-03-10T00:00:00", + "pnl": 9.886818690594737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23572569098852, + "entry_time": "2021-03-12T00:00:00", + "exit_price": 94.3432106471416, + "exit_reason": "signal", + "exit_time": "2021-03-13T00:00:00", + "pnl": 10.748495615309366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46834681822006, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.39304905252162, + "exit_reason": "signal", + "exit_time": "2021-03-16T00:00:00", + "pnl": -7.529776569843307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4607924127623, + "entry_time": "2021-03-18T00:00:00", + "exit_price": 94.87391242777782, + "exit_reason": "signal", + "exit_time": "2021-03-19T00:00:00", + "pnl": 41.31200150155382, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81782457593818, + "entry_time": "2021-03-21T00:00:00", + "exit_price": 94.74839547168068, + "exit_reason": "signal", + "exit_time": "2021-03-22T00:00:00", + "pnl": -6.942910425748778, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9804659897062, + "entry_time": "2021-03-24T00:00:00", + "exit_price": 95.1820620687209, + "exit_reason": "signal", + "exit_time": "2021-03-25T00:00:00", + "pnl": 20.159607901468917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53780103937676, + "entry_time": "2021-03-27T00:00:00", + "exit_price": 94.35114383691389, + "exit_reason": "signal", + "exit_time": "2021-03-28T00:00:00", + "pnl": -18.665720246286583, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19430169329608, + "entry_time": "2021-03-30T00:00:00", + "exit_price": 94.0736265695374, + "exit_reason": "signal", + "exit_time": "2021-03-31T00:00:00", + "pnl": -12.067512375868318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.56101740773187, + "entry_time": "2021-04-02T00:00:00", + "exit_price": 94.02847405275406, + "exit_reason": "signal", + "exit_time": "2021-04-03T00:00:00", + "pnl": -53.25433549778063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02877565620591, + "entry_time": "2021-04-05T00:00:00", + "exit_price": 94.02966575553104, + "exit_reason": "signal", + "exit_time": "2021-04-06T00:00:00", + "pnl": 0.08900993251336331, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71076966315076, + "entry_time": "2021-04-08T00:00:00", + "exit_price": 93.5342590029927, + "exit_reason": "signal", + "exit_time": "2021-04-09T00:00:00", + "pnl": -17.651066015805554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87172892779671, + "entry_time": "2021-04-11T00:00:00", + "exit_price": 93.8898807030855, + "exit_reason": "signal", + "exit_time": "2021-04-12T00:00:00", + "pnl": 1.8151775288788485, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7509399436349, + "entry_time": "2021-04-14T00:00:00", + "exit_price": 93.70594283596789, + "exit_reason": "signal", + "exit_time": "2021-04-15T00:00:00", + "pnl": -4.499710766702265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83044892913243, + "entry_time": "2021-04-17T00:00:00", + "exit_price": 93.71383587412238, + "exit_reason": "signal", + "exit_time": "2021-04-18T00:00:00", + "pnl": -11.6613055010057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52870331564132, + "entry_time": "2021-04-20T00:00:00", + "exit_price": 93.68221846843574, + "exit_reason": "signal", + "exit_time": "2021-04-21T00:00:00", + "pnl": 15.351515279440719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68293629394864, + "entry_time": "2021-04-23T00:00:00", + "exit_price": 93.76185935158753, + "exit_reason": "signal", + "exit_time": "2021-04-24T00:00:00", + "pnl": 7.892305763889453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77694161620539, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.94666597863043, + "exit_reason": "signal", + "exit_time": "2021-04-27T00:00:00", + "pnl": 16.972436242504045, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09046839544105, + "entry_time": "2021-04-29T00:00:00", + "exit_price": 94.0093802192737, + "exit_reason": "signal", + "exit_time": "2021-04-30T00:00:00", + "pnl": -8.108817616735905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.78182814117551, + "entry_time": "2021-05-02T00:00:00", + "exit_price": 93.75541337031265, + "exit_reason": "signal", + "exit_time": "2021-05-03T00:00:00", + "pnl": -2.6414770862847945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72371690451082, + "entry_time": "2021-05-05T00:00:00", + "exit_price": 93.60849664049482, + "exit_reason": "signal", + "exit_time": "2021-05-06T00:00:00", + "pnl": -11.52202640160067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94340121095276, + "entry_time": "2021-05-08T00:00:00", + "exit_price": 93.85028148090369, + "exit_reason": "signal", + "exit_time": "2021-05-09T00:00:00", + "pnl": -9.311973004907486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7183641880944, + "entry_time": "2021-05-11T00:00:00", + "exit_price": 93.93201467581261, + "exit_reason": "signal", + "exit_time": "2021-05-12T00:00:00", + "pnl": 21.36504877182051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6600503714477, + "entry_time": "2021-05-14T00:00:00", + "exit_price": 93.71003338575711, + "exit_reason": "signal", + "exit_time": "2021-05-15T00:00:00", + "pnl": 4.998301430941865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64414870400898, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 93.73370138654631, + "exit_reason": "signal", + "exit_time": "2021-05-18T00:00:00", + "pnl": 8.955268253732356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.51475031329109, + "entry_time": "2021-05-20T00:00:00", + "exit_price": 93.60797476194675, + "exit_reason": "signal", + "exit_time": "2021-05-21T00:00:00", + "pnl": 9.322444865565558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42059367470232, + "entry_time": "2021-05-23T00:00:00", + "exit_price": 93.66628705381636, + "exit_reason": "signal", + "exit_time": "2021-05-24T00:00:00", + "pnl": 24.569337911403636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53531464201514, + "entry_time": "2021-05-26T00:00:00", + "exit_price": 93.2030497935449, + "exit_reason": "signal", + "exit_time": "2021-05-27T00:00:00", + "pnl": -33.22648484702404, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62268440600192, + "entry_time": "2021-05-29T00:00:00", + "exit_price": 92.91948342162647, + "exit_reason": "signal", + "exit_time": "2021-05-30T00:00:00", + "pnl": 29.67990156245469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67919849510083, + "entry_time": "2021-06-01T00:00:00", + "exit_price": 92.43887673234494, + "exit_reason": "signal", + "exit_time": "2021-06-02T00:00:00", + "pnl": -24.032176275588427, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.17984056111294, + "entry_time": "2021-06-04T00:00:00", + "exit_price": 91.94368190633774, + "exit_reason": "signal", + "exit_time": "2021-06-05T00:00:00", + "pnl": -23.615865477519037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.11465699863811, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.97059505880482, + "exit_reason": "signal", + "exit_time": "2021-06-08T00:00:00", + "pnl": -14.406193983330013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29459604644765, + "entry_time": "2021-06-10T00:00:00", + "exit_price": 92.53931157007439, + "exit_reason": "signal", + "exit_time": "2021-06-11T00:00:00", + "pnl": 24.47155236267281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49631090115352, + "entry_time": "2021-06-13T00:00:00", + "exit_price": 92.52393358151217, + "exit_reason": "signal", + "exit_time": "2021-06-14T00:00:00", + "pnl": 2.762268035865418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66942128922241, + "entry_time": "2021-06-16T00:00:00", + "exit_price": 92.4946582273999, + "exit_reason": "signal", + "exit_time": "2021-06-17T00:00:00", + "pnl": -17.4763061822523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29424834791328, + "entry_time": "2021-06-19T00:00:00", + "exit_price": 92.07603918687664, + "exit_reason": "signal", + "exit_time": "2021-06-20T00:00:00", + "pnl": -21.820916103664786, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.33479567014805, + "entry_time": "2021-06-22T00:00:00", + "exit_price": 92.14550463966849, + "exit_reason": "signal", + "exit_time": "2021-06-23T00:00:00", + "pnl": -18.929103047956232, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9928646204638, + "entry_time": "2021-06-25T00:00:00", + "exit_price": 91.96872153502625, + "exit_reason": "signal", + "exit_time": "2021-06-26T00:00:00", + "pnl": -2.4143085437553964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87705988155102, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.53452507075421, + "exit_reason": "signal", + "exit_time": "2021-06-29T00:00:00", + "pnl": -34.25348107968057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.56396146367423, + "entry_time": "2021-07-01T00:00:00", + "exit_price": 91.59385740536969, + "exit_reason": "signal", + "exit_time": "2021-07-02T00:00:00", + "pnl": 2.9895941695449437, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64213975217385, + "entry_time": "2021-07-04T00:00:00", + "exit_price": 91.78882758292927, + "exit_reason": "signal", + "exit_time": "2021-07-05T00:00:00", + "pnl": 14.668783075543615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63683672368549, + "entry_time": "2021-07-07T00:00:00", + "exit_price": 91.48470633760584, + "exit_reason": "signal", + "exit_time": "2021-07-08T00:00:00", + "pnl": -15.213038607964336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39062489567554, + "entry_time": "2021-07-10T00:00:00", + "exit_price": 91.494696351115, + "exit_reason": "signal", + "exit_time": "2021-07-11T00:00:00", + "pnl": 10.407145543946172, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93573503075692, + "entry_time": "2021-07-13T00:00:00", + "exit_price": 90.98885415853535, + "exit_reason": "signal", + "exit_time": "2021-07-14T00:00:00", + "pnl": 5.3119127778427355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06245234985892, + "entry_time": "2021-07-16T00:00:00", + "exit_price": 91.0289821017493, + "exit_reason": "signal", + "exit_time": "2021-07-17T00:00:00", + "pnl": -3.3470248109606473, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22900373831216, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.3157346032948, + "exit_reason": "signal", + "exit_time": "2021-07-20T00:00:00", + "pnl": 8.673086498263729, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59973514861235, + "entry_time": "2021-07-22T00:00:00", + "exit_price": 91.77086454804387, + "exit_reason": "signal", + "exit_time": "2021-07-23T00:00:00", + "pnl": 17.112939943153833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82096590563263, + "entry_time": "2021-07-25T00:00:00", + "exit_price": 91.95769963997635, + "exit_reason": "signal", + "exit_time": "2021-07-26T00:00:00", + "pnl": 13.673373434372479, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.21106339352885, + "entry_time": "2021-07-28T00:00:00", + "exit_price": 92.07551182524406, + "exit_reason": "signal", + "exit_time": "2021-07-29T00:00:00", + "pnl": -13.555156828477266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09759300944572, + "entry_time": "2021-07-31T00:00:00", + "exit_price": 92.33359941396125, + "exit_reason": "signal", + "exit_time": "2021-08-01T00:00:00", + "pnl": 23.600640451553772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2288848699624, + "entry_time": "2021-08-03T00:00:00", + "exit_price": 92.2069451450579, + "exit_reason": "signal", + "exit_time": "2021-08-04T00:00:00", + "pnl": -2.193972490449596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46522997402728, + "entry_time": "2021-08-06T00:00:00", + "exit_price": 92.63157812424986, + "exit_reason": "signal", + "exit_time": "2021-08-07T00:00:00", + "pnl": 16.634815022258408, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92215275507255, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 92.81904355011355, + "exit_reason": "signal", + "exit_time": "2021-08-10T00:00:00", + "pnl": -10.310920495900064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34536862719393, + "entry_time": "2021-08-12T00:00:00", + "exit_price": 93.4540782896955, + "exit_reason": "signal", + "exit_time": "2021-08-13T00:00:00", + "pnl": 10.870966250156926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65179701007457, + "entry_time": "2021-08-15T00:00:00", + "exit_price": 93.58231165488735, + "exit_reason": "signal", + "exit_time": "2021-08-16T00:00:00", + "pnl": -6.948535518722565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59222373899847, + "entry_time": "2021-08-18T00:00:00", + "exit_price": 93.41076247699506, + "exit_reason": "signal", + "exit_time": "2021-08-19T00:00:00", + "pnl": -18.146126200341314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57987210255567, + "entry_time": "2021-08-21T00:00:00", + "exit_price": 93.93696117180936, + "exit_reason": "signal", + "exit_time": "2021-08-22T00:00:00", + "pnl": 35.708906925368865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88875391692817, + "entry_time": "2021-08-24T00:00:00", + "exit_price": 93.67494277755462, + "exit_reason": "signal", + "exit_time": "2021-08-25T00:00:00", + "pnl": -21.381113937353803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99358787892747, + "entry_time": "2021-08-27T00:00:00", + "exit_price": 93.07975990716614, + "exit_reason": "signal", + "exit_time": "2021-08-28T00:00:00", + "pnl": 8.617202823867046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07047992178705, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.33559891886243, + "exit_reason": "signal", + "exit_time": "2021-08-31T00:00:00", + "pnl": 26.51189970753876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59225467831386, + "entry_time": "2021-09-02T00:00:00", + "exit_price": 93.63479260217548, + "exit_reason": "signal", + "exit_time": "2021-09-03T00:00:00", + "pnl": 4.2537923861618765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80334597318698, + "entry_time": "2021-09-05T00:00:00", + "exit_price": 93.98346554786147, + "exit_reason": "signal", + "exit_time": "2021-09-06T00:00:00", + "pnl": 18.011957467449975, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92321614880655, + "entry_time": "2021-09-08T00:00:00", + "exit_price": 93.83699346593512, + "exit_reason": "signal", + "exit_time": "2021-09-09T00:00:00", + "pnl": -8.622268287143015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93109508241774, + "entry_time": "2021-09-11T00:00:00", + "exit_price": 93.96354668527802, + "exit_reason": "signal", + "exit_time": "2021-09-12T00:00:00", + "pnl": 3.245160286027385, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08641930356686, + "entry_time": "2021-09-14T00:00:00", + "exit_price": 94.23768236549668, + "exit_reason": "signal", + "exit_time": "2021-09-15T00:00:00", + "pnl": 15.126306192982156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08211844013991, + "entry_time": "2021-09-17T00:00:00", + "exit_price": 94.20846159911048, + "exit_reason": "signal", + "exit_time": "2021-09-18T00:00:00", + "pnl": 12.634315897057604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.13954155854589, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 93.89054598561034, + "exit_reason": "signal", + "exit_time": "2021-09-21T00:00:00", + "pnl": -24.89955729355279, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11646823351487, + "entry_time": "2021-09-23T00:00:00", + "exit_price": 94.10168176297485, + "exit_reason": "signal", + "exit_time": "2021-09-24T00:00:00", + "pnl": -1.4786470540020673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30038009222437, + "entry_time": "2021-09-26T00:00:00", + "exit_price": 94.41339845504724, + "exit_reason": "signal", + "exit_time": "2021-09-27T00:00:00", + "pnl": 11.301836282287695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10852951715277, + "entry_time": "2021-09-29T00:00:00", + "exit_price": 93.84680988625497, + "exit_reason": "signal", + "exit_time": "2021-09-30T00:00:00", + "pnl": -26.171963089780547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00138088356287, + "entry_time": "2021-10-02T00:00:00", + "exit_price": 94.04342924144086, + "exit_reason": "signal", + "exit_time": "2021-10-03T00:00:00", + "pnl": 4.204835787799311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01673785551608, + "entry_time": "2021-10-05T00:00:00", + "exit_price": 93.8508081374985, + "exit_reason": "signal", + "exit_time": "2021-10-06T00:00:00", + "pnl": -16.592971801757812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87089994615239, + "entry_time": "2021-10-08T00:00:00", + "exit_price": 93.9378403552245, + "exit_reason": "signal", + "exit_time": "2021-10-09T00:00:00", + "pnl": 6.694040907210365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05201413714099, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.0235397935625, + "exit_reason": "signal", + "exit_time": "2021-10-12T00:00:00", + "pnl": -2.8474343578473054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26517251606933, + "entry_time": "2021-10-14T00:00:00", + "exit_price": 94.15470785076896, + "exit_reason": "signal", + "exit_time": "2021-10-15T00:00:00", + "pnl": -11.046466530036923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4932600250258, + "entry_time": "2021-10-17T00:00:00", + "exit_price": 94.51252060274227, + "exit_reason": "signal", + "exit_time": "2021-10-18T00:00:00", + "pnl": 1.9260577716468106, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53140073996916, + "entry_time": "2021-10-20T00:00:00", + "exit_price": 94.90203063702091, + "exit_reason": "signal", + "exit_time": "2021-10-21T00:00:00", + "pnl": 37.062989705174914, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26191114348926, + "entry_time": "2021-10-23T00:00:00", + "exit_price": 94.0634456423351, + "exit_reason": "signal", + "exit_time": "2021-10-24T00:00:00", + "pnl": -19.846550115415084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43521818420996, + "entry_time": "2021-10-26T00:00:00", + "exit_price": 94.38568536751181, + "exit_reason": "signal", + "exit_time": "2021-10-27T00:00:00", + "pnl": -4.953281669813805, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21262216293847, + "entry_time": "2021-10-29T00:00:00", + "exit_price": 94.23411145607675, + "exit_reason": "signal", + "exit_time": "2021-10-30T00:00:00", + "pnl": 2.148929313827466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82330133886903, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 93.61660062265747, + "exit_reason": "signal", + "exit_time": "2021-11-02T00:00:00", + "pnl": -20.67007162115442, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71484163940588, + "entry_time": "2021-11-04T00:00:00", + "exit_price": 93.72855192282307, + "exit_reason": "signal", + "exit_time": "2021-11-05T00:00:00", + "pnl": 1.3710283417203755, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3692642985158, + "entry_time": "2021-11-07T00:00:00", + "exit_price": 93.37837200951205, + "exit_reason": "signal", + "exit_time": "2021-11-08T00:00:00", + "pnl": 0.9107710996231617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19352686807355, + "entry_time": "2021-11-10T00:00:00", + "exit_price": 93.28024660066703, + "exit_reason": "signal", + "exit_time": "2021-11-11T00:00:00", + "pnl": 8.671973259348306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96384685743692, + "entry_time": "2021-11-13T00:00:00", + "exit_price": 93.14877036790756, + "exit_reason": "signal", + "exit_time": "2021-11-14T00:00:00", + "pnl": 18.492351047065313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09572264391801, + "entry_time": "2021-11-16T00:00:00", + "exit_price": 92.53876217367774, + "exit_reason": "signal", + "exit_time": "2021-11-17T00:00:00", + "pnl": -55.6960470240283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.64617178108719, + "entry_time": "2021-11-19T00:00:00", + "exit_price": 92.85422093876446, + "exit_reason": "signal", + "exit_time": "2021-11-20T00:00:00", + "pnl": 20.804915767725106, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60924422208079, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 92.52724603055836, + "exit_reason": "signal", + "exit_time": "2021-11-23T00:00:00", + "pnl": -8.199819152243435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46494136842418, + "entry_time": "2021-11-25T00:00:00", + "exit_price": 92.44406941275119, + "exit_reason": "signal", + "exit_time": "2021-11-26T00:00:00", + "pnl": -2.0871955672973854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32264147745168, + "entry_time": "2021-11-28T00:00:00", + "exit_price": 92.0360221167863, + "exit_reason": "signal", + "exit_time": "2021-11-29T00:00:00", + "pnl": -28.661936066539056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01384655286363, + "entry_time": "2021-12-01T00:00:00", + "exit_price": 91.97262653583181, + "exit_reason": "signal", + "exit_time": "2021-12-02T00:00:00", + "pnl": -4.122001703182832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.28024889847717, + "entry_time": "2021-12-04T00:00:00", + "exit_price": 91.96758302287454, + "exit_reason": "signal", + "exit_time": "2021-12-05T00:00:00", + "pnl": -31.26658756026336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25528568314509, + "entry_time": "2021-12-07T00:00:00", + "exit_price": 92.20092793334622, + "exit_reason": "signal", + "exit_time": "2021-12-08T00:00:00", + "pnl": -5.435774979885537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49508373939167, + "entry_time": "2021-12-10T00:00:00", + "exit_price": 92.73466658206335, + "exit_reason": "signal", + "exit_time": "2021-12-11T00:00:00", + "pnl": 23.958284267167983, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46436704586412, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.69111891541637, + "exit_reason": "signal", + "exit_time": "2021-12-14T00:00:00", + "pnl": 22.67518695522449, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21128313549013, + "entry_time": "2021-12-16T00:00:00", + "exit_price": 93.37756823246967, + "exit_reason": "signal", + "exit_time": "2021-12-17T00:00:00", + "pnl": 16.628509697953632, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04218716563325, + "entry_time": "2021-12-19T00:00:00", + "exit_price": 93.00014735551822, + "exit_reason": "signal", + "exit_time": "2021-12-20T00:00:00", + "pnl": -4.203981011503856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.93318531635457, + "entry_time": "2021-12-22T00:00:00", + "exit_price": 92.84116622880475, + "exit_reason": "signal", + "exit_time": "2021-12-23T00:00:00", + "pnl": -9.20190875498156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50637869144556, + "entry_time": "2021-12-25T00:00:00", + "exit_price": 92.66826656058106, + "exit_reason": "signal", + "exit_time": "2021-12-26T00:00:00", + "pnl": 16.188786913549848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36257300920573, + "entry_time": "2021-12-28T00:00:00", + "exit_price": 92.60779676375832, + "exit_reason": "signal", + "exit_time": "2021-12-29T00:00:00", + "pnl": 24.522375455258953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36220969555443, + "entry_time": "2021-12-31T00:00:00", + "exit_price": 92.1193839744838, + "exit_reason": "signal", + "exit_time": "2022-01-01T00:00:00", + "pnl": -24.28257210706397, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89096232869592, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.75394086603562, + "exit_reason": "signal", + "exit_time": "2022-01-04T00:00:00", + "pnl": -13.702146266028649, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.10653141004636, + "entry_time": "2022-01-06T00:00:00", + "exit_price": 91.98502552303084, + "exit_reason": "signal", + "exit_time": "2022-01-07T00:00:00", + "pnl": -12.150588701551897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03115476672883, + "entry_time": "2022-01-09T00:00:00", + "exit_price": 92.05866288388766, + "exit_reason": "signal", + "exit_time": "2022-01-10T00:00:00", + "pnl": 2.7508117158831737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.80506699745925, + "entry_time": "2022-01-12T00:00:00", + "exit_price": 91.97004409317438, + "exit_reason": "signal", + "exit_time": "2022-01-13T00:00:00", + "pnl": 16.49770957151304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39339911911829, + "entry_time": "2022-01-15T00:00:00", + "exit_price": 91.28070286679336, + "exit_reason": "signal", + "exit_time": "2022-01-16T00:00:00", + "pnl": -11.269625232493127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74175784445059, + "entry_time": "2022-01-18T00:00:00", + "exit_price": 91.6733758391721, + "exit_reason": "signal", + "exit_time": "2022-01-19T00:00:00", + "pnl": -6.83820052784904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81901224922302, + "entry_time": "2022-01-21T00:00:00", + "exit_price": 91.84844274508458, + "exit_reason": "signal", + "exit_time": "2022-01-22T00:00:00", + "pnl": 2.9430495861561212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.60313885279771, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.41938832519848, + "exit_reason": "signal", + "exit_time": "2022-01-25T00:00:00", + "pnl": -18.375052759922255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64052127057325, + "entry_time": "2022-01-27T00:00:00", + "exit_price": 91.54200410559555, + "exit_reason": "signal", + "exit_time": "2022-01-28T00:00:00", + "pnl": -9.851716497769303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73590345101391, + "entry_time": "2022-01-30T00:00:00", + "exit_price": 91.62782637305553, + "exit_reason": "signal", + "exit_time": "2022-01-31T00:00:00", + "pnl": -10.807707795838724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79185882856454, + "entry_time": "2022-02-02T00:00:00", + "exit_price": 91.8357946573913, + "exit_reason": "signal", + "exit_time": "2022-02-03T00:00:00", + "pnl": 4.393582882676128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79563500808236, + "entry_time": "2022-02-05T00:00:00", + "exit_price": 92.09144139124615, + "exit_reason": "signal", + "exit_time": "2022-02-06T00:00:00", + "pnl": 29.58063831637992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.91260250945975, + "entry_time": "2022-02-08T00:00:00", + "exit_price": 91.67552176869381, + "exit_reason": "signal", + "exit_time": "2022-02-09T00:00:00", + "pnl": -23.70807407659231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66062267455895, + "entry_time": "2022-02-11T00:00:00", + "exit_price": 91.64149069106048, + "exit_reason": "signal", + "exit_time": "2022-02-12T00:00:00", + "pnl": -1.9131983498464251, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37359630109037, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.51652219716766, + "exit_reason": "signal", + "exit_time": "2022-02-15T00:00:00", + "pnl": 14.292589607728587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.54575759654936, + "entry_time": "2022-02-17T00:00:00", + "exit_price": 91.58821852619887, + "exit_reason": "signal", + "exit_time": "2022-02-18T00:00:00", + "pnl": 4.246092964951458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76782809841714, + "entry_time": "2022-02-20T00:00:00", + "exit_price": 91.6119124553235, + "exit_reason": "signal", + "exit_time": "2022-02-21T00:00:00", + "pnl": -15.591564309363093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74629736846254, + "entry_time": "2022-02-23T00:00:00", + "exit_price": 91.61327551923173, + "exit_reason": "signal", + "exit_time": "2022-02-24T00:00:00", + "pnl": -13.30218492307904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.32896871135786, + "entry_time": "2022-02-26T00:00:00", + "exit_price": 91.13780861275266, + "exit_reason": "signal", + "exit_time": "2022-02-27T00:00:00", + "pnl": -19.116009860519625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12507835931243, + "entry_time": "2022-03-01T00:00:00", + "exit_price": 91.13114200203424, + "exit_reason": "signal", + "exit_time": "2022-03-02T00:00:00", + "pnl": 0.6063642721801443, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37230639398891, + "entry_time": "2022-03-04T00:00:00", + "exit_price": 91.298526480022, + "exit_reason": "signal", + "exit_time": "2022-03-05T00:00:00", + "pnl": -7.377991396690049, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14580661294434, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.26371087049277, + "exit_reason": "signal", + "exit_time": "2022-03-08T00:00:00", + "pnl": 11.790425754843454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.19265250778471, + "entry_time": "2022-03-10T00:00:00", + "exit_price": 91.34688434505053, + "exit_reason": "signal", + "exit_time": "2022-03-11T00:00:00", + "pnl": 15.423183726581556, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.27944969864926, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 91.00376526097061, + "exit_reason": "signal", + "exit_time": "2022-03-14T00:00:00", + "pnl": -27.568443767864665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12691845430324, + "entry_time": "2022-03-16T00:00:00", + "exit_price": 91.13627424638673, + "exit_reason": "signal", + "exit_time": "2022-03-17T00:00:00", + "pnl": 0.9355792083497363, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.90552697963446, + "entry_time": "2022-03-19T00:00:00", + "exit_price": 90.86432013057937, + "exit_reason": "signal", + "exit_time": "2022-03-20T00:00:00", + "pnl": -4.120684905507005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88314466139805, + "entry_time": "2022-03-22T00:00:00", + "exit_price": 90.85684478131836, + "exit_reason": "signal", + "exit_time": "2022-03-23T00:00:00", + "pnl": -2.6299880079695868, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8333575750649, + "entry_time": "2022-03-25T00:00:00", + "exit_price": 90.87580958070879, + "exit_reason": "signal", + "exit_time": "2022-03-26T00:00:00", + "pnl": 4.245200564389961, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87723690769735, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.02118341969194, + "exit_reason": "signal", + "exit_time": "2022-03-29T00:00:00", + "pnl": 14.394651199458167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14559411024791, + "entry_time": "2022-03-31T00:00:00", + "exit_price": 91.1102070847533, + "exit_reason": "signal", + "exit_time": "2022-04-01T00:00:00", + "pnl": -3.5387025494619593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.03652679668627, + "entry_time": "2022-04-03T00:00:00", + "exit_price": 90.64848582455738, + "exit_reason": "signal", + "exit_time": "2022-04-04T00:00:00", + "pnl": -38.80409721288743, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.5160908672533, + "entry_time": "2022-04-06T00:00:00", + "exit_price": 90.67122680039915, + "exit_reason": "signal", + "exit_time": "2022-04-07T00:00:00", + "pnl": 15.513593314586615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49638519206744, + "entry_time": "2022-04-09T00:00:00", + "exit_price": 90.23851904732544, + "exit_reason": "signal", + "exit_time": "2022-04-10T00:00:00", + "pnl": -25.78661447419836, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.12623758622358, + "entry_time": "2022-04-12T00:00:00", + "exit_price": 90.13616044249197, + "exit_reason": "signal", + "exit_time": "2022-04-13T00:00:00", + "pnl": 0.9922856268385658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.97730849654188, + "entry_time": "2022-04-15T00:00:00", + "exit_price": 89.93950245741028, + "exit_reason": "signal", + "exit_time": "2022-04-16T00:00:00", + "pnl": -3.7806039131592115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.92103698222829, + "entry_time": "2022-04-18T00:00:00", + "exit_price": 89.92708766921471, + "exit_reason": "signal", + "exit_time": "2022-04-19T00:00:00", + "pnl": 0.6050686986418441, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.318742774315, + "entry_time": "2022-04-21T00:00:00", + "exit_price": 90.23642124916759, + "exit_reason": "signal", + "exit_time": "2022-04-22T00:00:00", + "pnl": -8.232152514739937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.21999028274801, + "entry_time": "2022-04-24T00:00:00", + "exit_price": 90.22126197659611, + "exit_reason": "signal", + "exit_time": "2022-04-25T00:00:00", + "pnl": 0.12716938480843964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84560909030802, + "entry_time": "2022-04-27T00:00:00", + "exit_price": 90.53569591871245, + "exit_reason": "signal", + "exit_time": "2022-04-28T00:00:00", + "pnl": -30.991317159558093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0165686304024, + "entry_time": "2022-04-30T00:00:00", + "exit_price": 90.91735297539282, + "exit_reason": "signal", + "exit_time": "2022-05-01T00:00:00", + "pnl": -9.921565500957513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2390830156373, + "entry_time": "2022-05-03T00:00:00", + "exit_price": 91.14925296519219, + "exit_reason": "signal", + "exit_time": "2022-05-04T00:00:00", + "pnl": -8.983005044510719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22089116397768, + "entry_time": "2022-05-06T00:00:00", + "exit_price": 90.87029928541635, + "exit_reason": "signal", + "exit_time": "2022-05-07T00:00:00", + "pnl": -35.059187856133576, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89974631246403, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.06863681183862, + "exit_reason": "signal", + "exit_time": "2022-05-10T00:00:00", + "pnl": 16.889049937459276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.57589026049908, + "entry_time": "2022-05-12T00:00:00", + "exit_price": 91.50862549547844, + "exit_reason": "signal", + "exit_time": "2022-05-13T00:00:00", + "pnl": -6.726476502062724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62801821971621, + "entry_time": "2022-05-15T00:00:00", + "exit_price": 91.81567744205196, + "exit_reason": "signal", + "exit_time": "2022-05-16T00:00:00", + "pnl": 18.76592223357511, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.33854066905738, + "entry_time": "2022-05-18T00:00:00", + "exit_price": 90.96569574948703, + "exit_reason": "signal", + "exit_time": "2022-05-19T00:00:00", + "pnl": -37.28449195703615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07274851876403, + "entry_time": "2022-05-21T00:00:00", + "exit_price": 90.95622489428452, + "exit_reason": "signal", + "exit_time": "2022-05-22T00:00:00", + "pnl": -11.652362447952328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.72051069276088, + "entry_time": "2022-05-24T00:00:00", + "exit_price": 90.55232295814028, + "exit_reason": "signal", + "exit_time": "2022-05-25T00:00:00", + "pnl": -16.818773462060562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.40473126616526, + "entry_time": "2022-05-27T00:00:00", + "exit_price": 90.65640141611814, + "exit_reason": "signal", + "exit_time": "2022-05-28T00:00:00", + "pnl": 25.16701499528972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56665701011867, + "entry_time": "2022-05-30T00:00:00", + "exit_price": 90.46095751045398, + "exit_reason": "signal", + "exit_time": "2022-05-31T00:00:00", + "pnl": -10.569949966469721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.76022002087706, + "entry_time": "2022-06-02T00:00:00", + "exit_price": 90.81381751472117, + "exit_reason": "signal", + "exit_time": "2022-06-03T00:00:00", + "pnl": 5.359749384409952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23375682446748, + "entry_time": "2022-06-05T00:00:00", + "exit_price": 91.01190578025698, + "exit_reason": "signal", + "exit_time": "2022-06-06T00:00:00", + "pnl": -22.18510442104889, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56046438309357, + "entry_time": "2022-06-08T00:00:00", + "exit_price": 90.6501420569037, + "exit_reason": "signal", + "exit_time": "2022-06-09T00:00:00", + "pnl": 8.96776738101289, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45985538510016, + "entry_time": "2022-06-11T00:00:00", + "exit_price": 90.32205823485288, + "exit_reason": "signal", + "exit_time": "2022-06-12T00:00:00", + "pnl": -13.77971502472792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.4213362857644, + "entry_time": "2022-06-14T00:00:00", + "exit_price": 90.3254460973393, + "exit_reason": "signal", + "exit_time": "2022-06-15T00:00:00", + "pnl": -9.589018842509176, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.36326200776878, + "entry_time": "2022-06-17T00:00:00", + "exit_price": 90.1350438366559, + "exit_reason": "signal", + "exit_time": "2022-06-18T00:00:00", + "pnl": -22.82181711128942, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.53738507774712, + "entry_time": "2022-06-20T00:00:00", + "exit_price": 90.43902960493799, + "exit_reason": "signal", + "exit_time": "2022-06-21T00:00:00", + "pnl": -9.835547280912579, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28282897059066, + "entry_time": "2022-06-23T00:00:00", + "exit_price": 90.42427634098117, + "exit_reason": "signal", + "exit_time": "2022-06-24T00:00:00", + "pnl": 14.144737039050597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.65923583486823, + "entry_time": "2022-06-26T00:00:00", + "exit_price": 90.60873415539405, + "exit_reason": "signal", + "exit_time": "2022-06-27T00:00:00", + "pnl": -5.050167947418231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.39024714619487, + "entry_time": "2022-06-29T00:00:00", + "exit_price": 90.66523349021156, + "exit_reason": "signal", + "exit_time": "2022-06-30T00:00:00", + "pnl": 27.498634401668824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82876323237488, + "entry_time": "2022-07-02T00:00:00", + "exit_price": 90.97466728886246, + "exit_reason": "signal", + "exit_time": "2022-07-03T00:00:00", + "pnl": 14.590405648757951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89452843928451, + "entry_time": "2022-07-05T00:00:00", + "exit_price": 90.67041116090726, + "exit_reason": "signal", + "exit_time": "2022-07-06T00:00:00", + "pnl": -22.411727837725266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63870699300467, + "entry_time": "2022-07-08T00:00:00", + "exit_price": 90.60806866533521, + "exit_reason": "signal", + "exit_time": "2022-07-09T00:00:00", + "pnl": -3.0638327669457794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09022889967974, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 91.33132395141395, + "exit_reason": "signal", + "exit_time": "2022-07-12T00:00:00", + "pnl": 24.109505173419166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1422566167072, + "entry_time": "2022-07-14T00:00:00", + "exit_price": 91.02336448195068, + "exit_reason": "signal", + "exit_time": "2022-07-15T00:00:00", + "pnl": -11.889213475651559, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.85171345155105, + "entry_time": "2022-07-17T00:00:00", + "exit_price": 90.92826438920278, + "exit_reason": "signal", + "exit_time": "2022-07-18T00:00:00", + "pnl": 7.65509376517366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9967936460588, + "entry_time": "2022-07-20T00:00:00", + "exit_price": 91.02558962193989, + "exit_reason": "signal", + "exit_time": "2022-07-21T00:00:00", + "pnl": 2.879597588107572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86654130293297, + "entry_time": "2022-07-23T00:00:00", + "exit_price": 91.1805076876075, + "exit_reason": "signal", + "exit_time": "2022-07-24T00:00:00", + "pnl": 31.39663846745316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20590970247865, + "entry_time": "2022-07-26T00:00:00", + "exit_price": 91.04093233048125, + "exit_reason": "signal", + "exit_time": "2022-07-27T00:00:00", + "pnl": -16.497737199741096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.94025278141096, + "entry_time": "2022-07-29T00:00:00", + "exit_price": 91.1695372755258, + "exit_reason": "signal", + "exit_time": "2022-07-30T00:00:00", + "pnl": 22.928449411483598, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55006804279205, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.74946747581956, + "exit_reason": "signal", + "exit_time": "2022-08-02T00:00:00", + "pnl": 19.939943302752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.08829699168929, + "entry_time": "2022-08-04T00:00:00", + "exit_price": 92.17204398025235, + "exit_reason": "signal", + "exit_time": "2022-08-05T00:00:00", + "pnl": 8.374698856305258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82928257766983, + "entry_time": "2022-08-07T00:00:00", + "exit_price": 91.80555288724541, + "exit_reason": "signal", + "exit_time": "2022-08-08T00:00:00", + "pnl": -2.3729690424424916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03756487304749, + "entry_time": "2022-08-10T00:00:00", + "exit_price": 91.92246232242579, + "exit_reason": "signal", + "exit_time": "2022-08-11T00:00:00", + "pnl": -11.510255062170472, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12455329081938, + "entry_time": "2022-08-13T00:00:00", + "exit_price": 92.03614640032846, + "exit_reason": "signal", + "exit_time": "2022-08-14T00:00:00", + "pnl": -8.840689049091452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43863634543025, + "entry_time": "2022-08-16T00:00:00", + "exit_price": 92.57880144701099, + "exit_reason": "signal", + "exit_time": "2022-08-17T00:00:00", + "pnl": 14.016510158073288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5662997648947, + "entry_time": "2022-08-19T00:00:00", + "exit_price": 92.63602712862732, + "exit_reason": "signal", + "exit_time": "2022-08-20T00:00:00", + "pnl": 6.972736373261796, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99359531127284, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.20326657631179, + "exit_reason": "signal", + "exit_time": "2022-08-23T00:00:00", + "pnl": 20.967126503895997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36371229951278, + "entry_time": "2022-08-25T00:00:00", + "exit_price": 93.15013947578183, + "exit_reason": "signal", + "exit_time": "2022-08-26T00:00:00", + "pnl": -21.357282373095586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39786147444195, + "entry_time": "2022-08-28T00:00:00", + "exit_price": 93.32525340472, + "exit_reason": "signal", + "exit_time": "2022-08-29T00:00:00", + "pnl": -7.260806972195496, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1699951830038, + "entry_time": "2022-08-31T00:00:00", + "exit_price": 92.94415449917722, + "exit_reason": "signal", + "exit_time": "2022-09-01T00:00:00", + "pnl": -22.584068382659098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06237685823791, + "entry_time": "2022-09-03T00:00:00", + "exit_price": 92.88599230986543, + "exit_reason": "signal", + "exit_time": "2022-09-04T00:00:00", + "pnl": -17.63845483724799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09341138541605, + "entry_time": "2022-09-06T00:00:00", + "exit_price": 93.29146577709628, + "exit_reason": "signal", + "exit_time": "2022-09-07T00:00:00", + "pnl": 19.80543916802344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.45209900958335, + "entry_time": "2022-09-09T00:00:00", + "exit_price": 93.38892182999521, + "exit_reason": "signal", + "exit_time": "2022-09-10T00:00:00", + "pnl": -6.317717958812864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42662435004, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 93.86711355565461, + "exit_reason": "signal", + "exit_time": "2022-09-13T00:00:00", + "pnl": 44.04892056146127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43026737045712, + "entry_time": "2022-09-15T00:00:00", + "exit_price": 94.68555551249223, + "exit_reason": "signal", + "exit_time": "2022-09-16T00:00:00", + "pnl": 25.5288142035115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.34275603824345, + "entry_time": "2022-09-18T00:00:00", + "exit_price": 94.26115762602807, + "exit_reason": "signal", + "exit_time": "2022-09-19T00:00:00", + "pnl": -8.159841221537135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81665975574816, + "entry_time": "2022-09-21T00:00:00", + "exit_price": 94.69084237577945, + "exit_reason": "signal", + "exit_time": "2022-09-22T00:00:00", + "pnl": -12.581737996872107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.80375023000443, + "entry_time": "2022-09-24T00:00:00", + "exit_price": 94.71118042427594, + "exit_reason": "signal", + "exit_time": "2022-09-25T00:00:00", + "pnl": -9.256980572848988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46412500503037, + "entry_time": "2022-09-27T00:00:00", + "exit_price": 94.6314533607136, + "exit_reason": "signal", + "exit_time": "2022-09-28T00:00:00", + "pnl": 16.732835568323935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6742741594175, + "entry_time": "2022-09-30T00:00:00", + "exit_price": 94.69072074935896, + "exit_reason": "signal", + "exit_time": "2022-10-01T00:00:00", + "pnl": 1.6446589941460843, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.12667461230008, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 94.99949417466048, + "exit_reason": "signal", + "exit_time": "2022-10-04T00:00:00", + "pnl": -12.71804376395994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92543412582965, + "entry_time": "2022-10-06T00:00:00", + "exit_price": 94.72977842157017, + "exit_reason": "signal", + "exit_time": "2022-10-07T00:00:00", + "pnl": -19.565570425947953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5701038761525, + "entry_time": "2022-10-09T00:00:00", + "exit_price": 94.59977663872266, + "exit_reason": "signal", + "exit_time": "2022-10-10T00:00:00", + "pnl": 2.967276257015328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2927331361965, + "entry_time": "2022-10-12T00:00:00", + "exit_price": 94.40263092608106, + "exit_reason": "signal", + "exit_time": "2022-10-13T00:00:00", + "pnl": 10.989778988454418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28632878234235, + "entry_time": "2022-10-15T00:00:00", + "exit_price": 94.53250654562353, + "exit_reason": "signal", + "exit_time": "2022-10-16T00:00:00", + "pnl": 24.617776328117543, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49417223286694, + "entry_time": "2022-10-18T00:00:00", + "exit_price": 94.21737477440588, + "exit_reason": "signal", + "exit_time": "2022-10-19T00:00:00", + "pnl": -27.679745846106016, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21700275153675, + "entry_time": "2022-10-21T00:00:00", + "exit_price": 94.24257812297434, + "exit_reason": "signal", + "exit_time": "2022-10-22T00:00:00", + "pnl": 2.557537143758964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33447437173405, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.36500808099656, + "exit_reason": "signal", + "exit_time": "2022-10-25T00:00:00", + "pnl": 3.0533709262508637, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62192540785213, + "entry_time": "2022-10-27T00:00:00", + "exit_price": 94.95467067184597, + "exit_reason": "signal", + "exit_time": "2022-10-28T00:00:00", + "pnl": 33.27452639938383, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32280422773096, + "entry_time": "2022-10-30T00:00:00", + "exit_price": 95.27797141913928, + "exit_reason": "signal", + "exit_time": "2022-10-31T00:00:00", + "pnl": -4.48328085916728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.85159096418194, + "entry_time": "2022-11-02T00:00:00", + "exit_price": 95.9332147424965, + "exit_reason": "signal", + "exit_time": "2022-11-03T00:00:00", + "pnl": 8.162377831456979, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87171080557967, + "entry_time": "2022-11-05T00:00:00", + "exit_price": 95.72359330386428, + "exit_reason": "signal", + "exit_time": "2022-11-06T00:00:00", + "pnl": -14.811750171538733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38266657654837, + "entry_time": "2022-11-08T00:00:00", + "exit_price": 95.28429001378173, + "exit_reason": "signal", + "exit_time": "2022-11-09T00:00:00", + "pnl": -9.837656276666166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01211175536163, + "entry_time": "2022-11-11T00:00:00", + "exit_price": 94.84310882657518, + "exit_reason": "signal", + "exit_time": "2022-11-12T00:00:00", + "pnl": -16.900292878646724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.59049236660378, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.35514007446828, + "exit_reason": "signal", + "exit_time": "2022-11-15T00:00:00", + "pnl": -23.535229213550338, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9357580237877, + "entry_time": "2022-11-17T00:00:00", + "exit_price": 94.05072699188574, + "exit_reason": "signal", + "exit_time": "2022-11-18T00:00:00", + "pnl": 11.49689680980373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00889117962727, + "entry_time": "2022-11-20T00:00:00", + "exit_price": 94.18219892584725, + "exit_reason": "signal", + "exit_time": "2022-11-21T00:00:00", + "pnl": 17.33077462199799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96556912199465, + "entry_time": "2022-11-23T00:00:00", + "exit_price": 93.87607469195584, + "exit_reason": "signal", + "exit_time": "2022-11-24T00:00:00", + "pnl": -8.949443003881242, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60138099475903, + "entry_time": "2022-11-26T00:00:00", + "exit_price": 93.55643441032785, + "exit_reason": "signal", + "exit_time": "2022-11-27T00:00:00", + "pnl": -4.49465844311635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88066522817982, + "entry_time": "2022-11-29T00:00:00", + "exit_price": 93.67510822228188, + "exit_reason": "signal", + "exit_time": "2022-11-30T00:00:00", + "pnl": -20.55570058979538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69837663925773, + "entry_time": "2022-12-02T00:00:00", + "exit_price": 93.91860336977558, + "exit_reason": "signal", + "exit_time": "2022-12-03T00:00:00", + "pnl": 22.022673051784295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.70107216756422, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.66971331829183, + "exit_reason": "signal", + "exit_time": "2022-12-06T00:00:00", + "pnl": -3.135884927238294, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87708149049162, + "entry_time": "2022-12-08T00:00:00", + "exit_price": 93.72163687944706, + "exit_reason": "signal", + "exit_time": "2022-12-09T00:00:00", + "pnl": -15.544461104454967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94898877051006, + "entry_time": "2022-12-11T00:00:00", + "exit_price": 93.95474043698636, + "exit_reason": "signal", + "exit_time": "2022-12-12T00:00:00", + "pnl": 0.5751666476298851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6415881902333, + "entry_time": "2022-12-14T00:00:00", + "exit_price": 93.34129447656329, + "exit_reason": "signal", + "exit_time": "2022-12-15T00:00:00", + "pnl": -30.02937136700166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9434543592522, + "entry_time": "2022-12-17T00:00:00", + "exit_price": 92.60307524718807, + "exit_reason": "signal", + "exit_time": "2022-12-18T00:00:00", + "pnl": -34.0379112064129, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.18983136258927, + "entry_time": "2022-12-20T00:00:00", + "exit_price": 92.07720168711411, + "exit_reason": "signal", + "exit_time": "2022-12-21T00:00:00", + "pnl": -11.262967547514563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00591795170635, + "entry_time": "2022-12-23T00:00:00", + "exit_price": 91.73390898252362, + "exit_reason": "signal", + "exit_time": "2022-12-24T00:00:00", + "pnl": -27.200896918275248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87915537734213, + "entry_time": "2022-12-26T00:00:00", + "exit_price": 92.05356230153482, + "exit_reason": "signal", + "exit_time": "2022-12-27T00:00:00", + "pnl": 17.440692419269908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.19249105693204, + "entry_time": "2022-12-29T00:00:00", + "exit_price": 92.35715717263174, + "exit_reason": "signal", + "exit_time": "2022-12-30T00:00:00", + "pnl": 16.466611569969245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92376356586935, + "entry_time": "2023-01-01T00:00:00", + "exit_price": 92.8642597181964, + "exit_reason": "signal", + "exit_time": "2023-01-02T00:00:00", + "pnl": -5.950384767296782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08761417167571, + "entry_time": "2023-01-04T00:00:00", + "exit_price": 93.3787010770275, + "exit_reason": "signal", + "exit_time": "2023-01-05T00:00:00", + "pnl": 29.108690535180358, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22887351223902, + "entry_time": "2023-01-07T00:00:00", + "exit_price": 93.18791972112416, + "exit_reason": "signal", + "exit_time": "2023-01-08T00:00:00", + "pnl": -4.0953791114861815, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71839956451682, + "entry_time": "2023-01-10T00:00:00", + "exit_price": 92.72871333258459, + "exit_reason": "signal", + "exit_time": "2023-01-11T00:00:00", + "pnl": 1.031376806777189, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71285525012034, + "entry_time": "2023-01-13T00:00:00", + "exit_price": 92.95484908903208, + "exit_reason": "signal", + "exit_time": "2023-01-14T00:00:00", + "pnl": 24.199383891174875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09252551101909, + "entry_time": "2023-01-16T00:00:00", + "exit_price": 93.19565426763862, + "exit_reason": "signal", + "exit_time": "2023-01-17T00:00:00", + "pnl": 10.312875661953512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34851063541004, + "entry_time": "2023-01-19T00:00:00", + "exit_price": 93.36918149511725, + "exit_reason": "signal", + "exit_time": "2023-01-20T00:00:00", + "pnl": 2.0670859707206546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.29871325433136, + "entry_time": "2023-01-22T00:00:00", + "exit_price": 93.43191348926673, + "exit_reason": "signal", + "exit_time": "2023-01-23T00:00:00", + "pnl": 13.32002349353752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54163438380152, + "entry_time": "2023-01-25T00:00:00", + "exit_price": 93.70996022231523, + "exit_reason": "signal", + "exit_time": "2023-01-26T00:00:00", + "pnl": 16.832583851371965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44351635290319, + "entry_time": "2023-01-28T00:00:00", + "exit_price": 93.3607156455027, + "exit_reason": "signal", + "exit_time": "2023-01-29T00:00:00", + "pnl": -8.280070740049268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25194927165909, + "entry_time": "2023-01-31T00:00:00", + "exit_price": 93.09482587993352, + "exit_reason": "signal", + "exit_time": "2023-02-01T00:00:00", + "pnl": -15.712339172556312, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05964578316673, + "entry_time": "2023-02-03T00:00:00", + "exit_price": 93.1247824238807, + "exit_reason": "signal", + "exit_time": "2023-02-04T00:00:00", + "pnl": 6.513664071397216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60195304694001, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.5077083162264, + "exit_reason": "signal", + "exit_time": "2023-02-07T00:00:00", + "pnl": -9.424473071361717, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32915625849455, + "entry_time": "2023-02-09T00:00:00", + "exit_price": 93.41904859018952, + "exit_reason": "signal", + "exit_time": "2023-02-10T00:00:00", + "pnl": 8.98923316949731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86240170807343, + "entry_time": "2023-02-12T00:00:00", + "exit_price": 93.74311994285968, + "exit_reason": "signal", + "exit_time": "2023-02-13T00:00:00", + "pnl": -11.928176521374553, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92758592270172, + "entry_time": "2023-02-15T00:00:00", + "exit_price": 93.91004727072426, + "exit_reason": "signal", + "exit_time": "2023-02-16T00:00:00", + "pnl": -1.7538651977465634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.90746519420465, + "entry_time": "2023-02-18T00:00:00", + "exit_price": 94.16764239198312, + "exit_reason": "signal", + "exit_time": "2023-02-19T00:00:00", + "pnl": 26.01771977784665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.44892482562022, + "entry_time": "2023-02-21T00:00:00", + "exit_price": 94.29820349772235, + "exit_reason": "signal", + "exit_time": "2023-02-22T00:00:00", + "pnl": -15.072132789788157, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29660996193417, + "entry_time": "2023-02-24T00:00:00", + "exit_price": 94.34630077913107, + "exit_reason": "signal", + "exit_time": "2023-02-25T00:00:00", + "pnl": 4.9690817196897115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28533190136021, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.32163037675376, + "exit_reason": "signal", + "exit_time": "2023-02-28T00:00:00", + "pnl": 3.6298475393559784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20619082469412, + "entry_time": "2023-03-02T00:00:00", + "exit_price": 93.94806731557186, + "exit_reason": "signal", + "exit_time": "2023-03-03T00:00:00", + "pnl": -25.812350912225156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5296456958934, + "entry_time": "2023-03-05T00:00:00", + "exit_price": 93.2046797163239, + "exit_reason": "signal", + "exit_time": "2023-03-06T00:00:00", + "pnl": -32.4965979569497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32570812965447, + "entry_time": "2023-03-08T00:00:00", + "exit_price": 93.27835226241817, + "exit_reason": "signal", + "exit_time": "2023-03-09T00:00:00", + "pnl": -4.73558672362924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18052001757422, + "entry_time": "2023-03-11T00:00:00", + "exit_price": 93.21374473155299, + "exit_reason": "signal", + "exit_time": "2023-03-12T00:00:00", + "pnl": 3.322471397877962, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13943605219035, + "entry_time": "2023-03-14T00:00:00", + "exit_price": 93.26046795573633, + "exit_reason": "signal", + "exit_time": "2023-03-15T00:00:00", + "pnl": 12.103190354599064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21960702536101, + "entry_time": "2023-03-17T00:00:00", + "exit_price": 92.64774686400108, + "exit_reason": "signal", + "exit_time": "2023-03-18T00:00:00", + "pnl": -57.18601613599458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31556350692, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.46149005259649, + "exit_reason": "signal", + "exit_time": "2023-03-21T00:00:00", + "pnl": 14.592654567648424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52377288657563, + "entry_time": "2023-03-23T00:00:00", + "exit_price": 92.23839203319807, + "exit_reason": "signal", + "exit_time": "2023-03-24T00:00:00", + "pnl": -28.538085337755547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6963758650249, + "entry_time": "2023-03-26T00:00:00", + "exit_price": 92.70207115016164, + "exit_reason": "signal", + "exit_time": "2023-03-27T00:00:00", + "pnl": 0.5695285136735038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1906639429263, + "entry_time": "2023-03-29T00:00:00", + "exit_price": 93.35726613372299, + "exit_reason": "signal", + "exit_time": "2023-03-30T00:00:00", + "pnl": 16.660219079667513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1634420410312, + "entry_time": "2023-04-01T00:00:00", + "exit_price": 93.2066382813918, + "exit_reason": "signal", + "exit_time": "2023-04-02T00:00:00", + "pnl": 4.319624036061214, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0471045722787, + "entry_time": "2023-04-04T00:00:00", + "exit_price": 92.82199720210754, + "exit_reason": "signal", + "exit_time": "2023-04-05T00:00:00", + "pnl": -22.51073701711539, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8989666578373, + "entry_time": "2023-04-07T00:00:00", + "exit_price": 92.77857374465485, + "exit_reason": "signal", + "exit_time": "2023-04-08T00:00:00", + "pnl": -12.039291318245887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.70919453056075, + "entry_time": "2023-04-10T00:00:00", + "exit_price": 92.74465000028516, + "exit_reason": "signal", + "exit_time": "2023-04-11T00:00:00", + "pnl": 3.5455469724420254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60934516564298, + "entry_time": "2023-04-13T00:00:00", + "exit_price": 92.96618622577306, + "exit_reason": "signal", + "exit_time": "2023-04-14T00:00:00", + "pnl": 35.684106013008204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78501792806425, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.76326607151933, + "exit_reason": "signal", + "exit_time": "2023-04-17T00:00:00", + "pnl": -2.175185654492452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62556378625803, + "entry_time": "2023-04-19T00:00:00", + "exit_price": 92.65556548612001, + "exit_reason": "signal", + "exit_time": "2023-04-20T00:00:00", + "pnl": 3.000169986198671, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68684981308908, + "entry_time": "2023-04-22T00:00:00", + "exit_price": 92.58597625405771, + "exit_reason": "signal", + "exit_time": "2023-04-23T00:00:00", + "pnl": -10.087355903136995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86536967969084, + "entry_time": "2023-04-25T00:00:00", + "exit_price": 92.75020367672924, + "exit_reason": "signal", + "exit_time": "2023-04-26T00:00:00", + "pnl": -11.516600296161414, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75062990936559, + "entry_time": "2023-04-28T00:00:00", + "exit_price": 92.98349381034318, + "exit_reason": "signal", + "exit_time": "2023-04-29T00:00:00", + "pnl": 23.286390097759067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04847278769076, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 93.06193871613516, + "exit_reason": "signal", + "exit_time": "2023-05-02T00:00:00", + "pnl": 1.346592844440238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60529611931622, + "entry_time": "2023-05-04T00:00:00", + "exit_price": 92.60807864200518, + "exit_reason": "signal", + "exit_time": "2023-05-05T00:00:00", + "pnl": 0.27825226889581245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90198815097345, + "entry_time": "2023-05-07T00:00:00", + "exit_price": 92.84425841280351, + "exit_reason": "signal", + "exit_time": "2023-05-08T00:00:00", + "pnl": -5.772973816992817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66689924421028, + "entry_time": "2023-05-10T00:00:00", + "exit_price": 92.6348345250126, + "exit_reason": "signal", + "exit_time": "2023-05-11T00:00:00", + "pnl": -3.206471919769683, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74311085652141, + "entry_time": "2023-05-13T00:00:00", + "exit_price": 92.87596365908365, + "exit_reason": "signal", + "exit_time": "2023-05-14T00:00:00", + "pnl": 13.285280256222904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15467982049428, + "entry_time": "2023-05-16T00:00:00", + "exit_price": 93.06917346679761, + "exit_reason": "signal", + "exit_time": "2023-05-17T00:00:00", + "pnl": -8.550635369667361, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16088604193162, + "entry_time": "2023-05-19T00:00:00", + "exit_price": 93.1767131466551, + "exit_reason": "signal", + "exit_time": "2023-05-20T00:00:00", + "pnl": 1.5827104723484808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59084973064017, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.3728256379574, + "exit_reason": "signal", + "exit_time": "2023-05-23T00:00:00", + "pnl": -21.80240926827537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83907971020484, + "entry_time": "2023-05-25T00:00:00", + "exit_price": 94.05336598759212, + "exit_reason": "signal", + "exit_time": "2023-05-26T00:00:00", + "pnl": 21.4286277387273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15556945611712, + "entry_time": "2023-05-28T00:00:00", + "exit_price": 94.11170249260897, + "exit_reason": "signal", + "exit_time": "2023-05-29T00:00:00", + "pnl": -4.386696350815328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26806948858284, + "entry_time": "2023-05-31T00:00:00", + "exit_price": 94.19864576006458, + "exit_reason": "signal", + "exit_time": "2023-06-01T00:00:00", + "pnl": -6.9423728518268035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02469106007196, + "entry_time": "2023-06-03T00:00:00", + "exit_price": 94.37555658552148, + "exit_reason": "signal", + "exit_time": "2023-06-04T00:00:00", + "pnl": 35.0865525449517, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4719110379968, + "entry_time": "2023-06-06T00:00:00", + "exit_price": 94.46329135212792, + "exit_reason": "signal", + "exit_time": "2023-06-07T00:00:00", + "pnl": -0.8619685868870874, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.72605970139526, + "entry_time": "2023-06-09T00:00:00", + "exit_price": 94.42143976779836, + "exit_reason": "signal", + "exit_time": "2023-06-10T00:00:00", + "pnl": -30.461993359689586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5510290269881, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.42138738037778, + "exit_reason": "signal", + "exit_time": "2023-06-13T00:00:00", + "pnl": -12.964164661032555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49725923626676, + "entry_time": "2023-06-15T00:00:00", + "exit_price": 94.83017838441384, + "exit_reason": "signal", + "exit_time": "2023-06-16T00:00:00", + "pnl": 33.291914814708434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.96394971087318, + "entry_time": "2023-06-18T00:00:00", + "exit_price": 94.80946954515628, + "exit_reason": "signal", + "exit_time": "2023-06-19T00:00:00", + "pnl": -15.44801657169046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.05895494780962, + "entry_time": "2023-06-21T00:00:00", + "exit_price": 94.7764741456602, + "exit_reason": "signal", + "exit_time": "2023-06-22T00:00:00", + "pnl": -28.248080214942092, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.82916340306784, + "entry_time": "2023-06-24T00:00:00", + "exit_price": 94.49615933800648, + "exit_reason": "signal", + "exit_time": "2023-06-25T00:00:00", + "pnl": -33.300406506135914, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53903204926397, + "entry_time": "2023-06-27T00:00:00", + "exit_price": 94.2199238563033, + "exit_reason": "signal", + "exit_time": "2023-06-28T00:00:00", + "pnl": -31.91081929606662, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15553425915469, + "entry_time": "2023-06-30T00:00:00", + "exit_price": 94.3233546324033, + "exit_reason": "signal", + "exit_time": "2023-07-01T00:00:00", + "pnl": 16.78203732486145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29143609072966, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.34909878462929, + "exit_reason": "signal", + "exit_time": "2023-07-04T00:00:00", + "pnl": 5.766269389963782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79549173605427, + "entry_time": "2023-07-06T00:00:00", + "exit_price": 94.86012460829116, + "exit_reason": "signal", + "exit_time": "2023-07-07T00:00:00", + "pnl": 6.463287223687075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62257045149929, + "entry_time": "2023-07-09T00:00:00", + "exit_price": 94.36740770267758, + "exit_reason": "signal", + "exit_time": "2023-07-10T00:00:00", + "pnl": -25.516274882171274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1123342756572, + "entry_time": "2023-07-12T00:00:00", + "exit_price": 94.28815691102787, + "exit_reason": "signal", + "exit_time": "2023-07-13T00:00:00", + "pnl": 17.582263537065955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89234388227695, + "entry_time": "2023-07-15T00:00:00", + "exit_price": 93.64456440149245, + "exit_reason": "signal", + "exit_time": "2023-07-16T00:00:00", + "pnl": -24.77794807845021, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.62943347351336, + "entry_time": "2023-07-18T00:00:00", + "exit_price": 93.64788638508941, + "exit_reason": "signal", + "exit_time": "2023-07-19T00:00:00", + "pnl": 1.8452911576041515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1774162868962, + "entry_time": "2023-07-21T00:00:00", + "exit_price": 94.00402666791075, + "exit_reason": "signal", + "exit_time": "2023-07-22T00:00:00", + "pnl": -17.338961898545676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.04453321057154, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.96838361247781, + "exit_reason": "signal", + "exit_time": "2023-07-25T00:00:00", + "pnl": -7.614959809372522, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88321586599363, + "entry_time": "2023-07-27T00:00:00", + "exit_price": 93.90884833929827, + "exit_reason": "signal", + "exit_time": "2023-07-28T00:00:00", + "pnl": 2.5632473304649466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7179718780841, + "entry_time": "2023-07-30T00:00:00", + "exit_price": 93.74821494678119, + "exit_reason": "signal", + "exit_time": "2023-07-31T00:00:00", + "pnl": 3.0243068697091076, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9038655497103, + "entry_time": "2023-08-02T00:00:00", + "exit_price": 93.83750554707963, + "exit_reason": "signal", + "exit_time": "2023-08-03T00:00:00", + "pnl": -6.6360002630663075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88584036004717, + "entry_time": "2023-08-05T00:00:00", + "exit_price": 93.9446210717662, + "exit_reason": "signal", + "exit_time": "2023-08-06T00:00:00", + "pnl": 5.878071171904594, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10339943212905, + "entry_time": "2023-08-08T00:00:00", + "exit_price": 94.0848941093554, + "exit_reason": "signal", + "exit_time": "2023-08-09T00:00:00", + "pnl": -1.850532277363527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.14949796034026, + "entry_time": "2023-08-11T00:00:00", + "exit_price": 93.8874166822761, + "exit_reason": "signal", + "exit_time": "2023-08-12T00:00:00", + "pnl": -26.208127806416087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75795965886634, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 93.82124488293752, + "exit_reason": "signal", + "exit_time": "2023-08-15T00:00:00", + "pnl": 6.328522407116907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65346951457661, + "entry_time": "2023-08-17T00:00:00", + "exit_price": 93.61396660096294, + "exit_reason": "signal", + "exit_time": "2023-08-18T00:00:00", + "pnl": -3.950291361366908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54800539421142, + "entry_time": "2023-08-20T00:00:00", + "exit_price": 93.46513172439276, + "exit_reason": "signal", + "exit_time": "2023-08-21T00:00:00", + "pnl": -8.287366981865489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04018712803396, + "entry_time": "2023-08-23T00:00:00", + "exit_price": 93.2845186523261, + "exit_reason": "signal", + "exit_time": "2023-08-24T00:00:00", + "pnl": 24.433152429213806, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80052936345987, + "entry_time": "2023-08-26T00:00:00", + "exit_price": 93.65349927893294, + "exit_reason": "signal", + "exit_time": "2023-08-27T00:00:00", + "pnl": -14.703008452692302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93158855841354, + "entry_time": "2023-08-29T00:00:00", + "exit_price": 93.79425107834362, + "exit_reason": "signal", + "exit_time": "2023-08-30T00:00:00", + "pnl": -13.733748006990936, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55284494377143, + "entry_time": "2023-09-01T00:00:00", + "exit_price": 93.33529354683158, + "exit_reason": "signal", + "exit_time": "2023-09-02T00:00:00", + "pnl": -21.755139693985257, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67881964988702, + "entry_time": "2023-09-04T00:00:00", + "exit_price": 93.76309874382866, + "exit_reason": "signal", + "exit_time": "2023-09-05T00:00:00", + "pnl": 8.427909394165908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.06380422690371, + "entry_time": "2023-09-07T00:00:00", + "exit_price": 94.34837478850592, + "exit_reason": "signal", + "exit_time": "2023-09-08T00:00:00", + "pnl": 28.45705616021951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28272356925105, + "entry_time": "2023-09-10T00:00:00", + "exit_price": 94.08986442511201, + "exit_reason": "signal", + "exit_time": "2023-09-11T00:00:00", + "pnl": -19.28591441390381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19668777653186, + "entry_time": "2023-09-13T00:00:00", + "exit_price": 93.9155347262711, + "exit_reason": "signal", + "exit_time": "2023-09-14T00:00:00", + "pnl": -28.115305026074566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86963033561574, + "entry_time": "2023-09-16T00:00:00", + "exit_price": 94.02605497205086, + "exit_reason": "signal", + "exit_time": "2023-09-17T00:00:00", + "pnl": 15.64246364351311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07735953777274, + "entry_time": "2023-09-19T00:00:00", + "exit_price": 93.92691564488518, + "exit_reason": "signal", + "exit_time": "2023-09-20T00:00:00", + "pnl": -15.044389288754246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.63814938665311, + "entry_time": "2023-09-22T00:00:00", + "exit_price": 93.6176086632684, + "exit_reason": "signal", + "exit_time": "2023-09-23T00:00:00", + "pnl": -2.0540723384710873, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71204578933798, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.41015509320589, + "exit_reason": "signal", + "exit_time": "2023-09-26T00:00:00", + "pnl": -30.18906961320863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42767992948878, + "entry_time": "2023-09-28T00:00:00", + "exit_price": 93.23852235526199, + "exit_reason": "signal", + "exit_time": "2023-09-29T00:00:00", + "pnl": -18.915757422677416, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49442961672796, + "entry_time": "2023-10-01T00:00:00", + "exit_price": 93.43422929731483, + "exit_reason": "signal", + "exit_time": "2023-10-02T00:00:00", + "pnl": -6.020031941312482, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.28736530415493, + "entry_time": "2023-10-04T00:00:00", + "exit_price": 93.12218377264868, + "exit_reason": "signal", + "exit_time": "2023-10-05T00:00:00", + "pnl": -16.51815315062595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10919349920911, + "entry_time": "2023-10-07T00:00:00", + "exit_price": 92.97579394436632, + "exit_reason": "signal", + "exit_time": "2023-10-08T00:00:00", + "pnl": -13.339955484278107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87630575654731, + "entry_time": "2023-10-10T00:00:00", + "exit_price": 92.64709318534976, + "exit_reason": "signal", + "exit_time": "2023-10-11T00:00:00", + "pnl": -22.921257119754955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49382854321888, + "entry_time": "2023-10-13T00:00:00", + "exit_price": 92.15699292788067, + "exit_reason": "signal", + "exit_time": "2023-10-14T00:00:00", + "pnl": -33.683561533820466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04266303105983, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.9313781112256, + "exit_reason": "signal", + "exit_time": "2023-10-17T00:00:00", + "pnl": -11.128491983423373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.69530603069572, + "entry_time": "2023-10-19T00:00:00", + "exit_price": 91.82075180753827, + "exit_reason": "signal", + "exit_time": "2023-10-20T00:00:00", + "pnl": 12.544577684255273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00003866180036, + "entry_time": "2023-10-22T00:00:00", + "exit_price": 91.769068469798, + "exit_reason": "signal", + "exit_time": "2023-10-23T00:00:00", + "pnl": -23.09701920023508, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62148930928706, + "entry_time": "2023-10-25T00:00:00", + "exit_price": 92.0232146586156, + "exit_reason": "signal", + "exit_time": "2023-10-26T00:00:00", + "pnl": 40.17253493285352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05026787864644, + "entry_time": "2023-10-28T00:00:00", + "exit_price": 91.7648966725291, + "exit_reason": "signal", + "exit_time": "2023-10-29T00:00:00", + "pnl": -28.53712061173428, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45047976504434, + "entry_time": "2023-10-31T00:00:00", + "exit_price": 91.57906184617835, + "exit_reason": "signal", + "exit_time": "2023-11-01T00:00:00", + "pnl": 12.858208113402725, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73227416508321, + "entry_time": "2023-11-03T00:00:00", + "exit_price": 91.39276167792192, + "exit_reason": "signal", + "exit_time": "2023-11-04T00:00:00", + "pnl": -33.95124871613007, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43027834183452, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.72614964359053, + "exit_reason": "signal", + "exit_time": "2023-11-07T00:00:00", + "pnl": 29.58713017559967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22140030401876, + "entry_time": "2023-11-09T00:00:00", + "exit_price": 92.40388767907393, + "exit_reason": "signal", + "exit_time": "2023-11-10T00:00:00", + "pnl": 18.248737505517056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6481057355818, + "entry_time": "2023-11-12T00:00:00", + "exit_price": 92.68848188004498, + "exit_reason": "signal", + "exit_time": "2023-11-13T00:00:00", + "pnl": 4.037614446318912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71473698288804, + "entry_time": "2023-11-15T00:00:00", + "exit_price": 92.70268409440689, + "exit_reason": "signal", + "exit_time": "2023-11-16T00:00:00", + "pnl": -1.2052888481157424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43854075921617, + "entry_time": "2023-11-18T00:00:00", + "exit_price": 92.44140071332018, + "exit_reason": "signal", + "exit_time": "2023-11-19T00:00:00", + "pnl": 0.28599541040057375, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74726961853332, + "entry_time": "2023-11-21T00:00:00", + "exit_price": 92.8365056762946, + "exit_reason": "signal", + "exit_time": "2023-11-22T00:00:00", + "pnl": 8.92360577612817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88893089201021, + "entry_time": "2023-11-24T00:00:00", + "exit_price": 93.26317095880032, + "exit_reason": "signal", + "exit_time": "2023-11-25T00:00:00", + "pnl": 37.424006679009835, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37686063355893, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 93.01130398358468, + "exit_reason": "signal", + "exit_time": "2023-11-28T00:00:00", + "pnl": -36.55566499742599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92441725059159, + "entry_time": "2023-11-30T00:00:00", + "exit_price": 92.89449208176279, + "exit_reason": "signal", + "exit_time": "2023-12-01T00:00:00", + "pnl": -2.9925168828794995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93827683979755, + "entry_time": "2023-12-03T00:00:00", + "exit_price": 93.6532995649937, + "exit_reason": "signal", + "exit_time": "2023-12-04T00:00:00", + "pnl": -28.49772748038413, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.4263959037515, + "entry_time": "2023-12-06T00:00:00", + "exit_price": 93.75213347979019, + "exit_reason": "signal", + "exit_time": "2023-12-07T00:00:00", + "pnl": 32.573757603870035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.0270700566813, + "entry_time": "2023-12-09T00:00:00", + "exit_price": 93.76146992741955, + "exit_reason": "signal", + "exit_time": "2023-12-10T00:00:00", + "pnl": -26.56001292617475, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10225140410179, + "entry_time": "2023-12-12T00:00:00", + "exit_price": 92.81690399898379, + "exit_reason": "signal", + "exit_time": "2023-12-13T00:00:00", + "pnl": -28.5347405117991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0438108934807, + "entry_time": "2023-12-15T00:00:00", + "exit_price": 92.80207795946215, + "exit_reason": "signal", + "exit_time": "2023-12-16T00:00:00", + "pnl": -24.173293401854608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12592905184013, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 93.15713134695487, + "exit_reason": "signal", + "exit_time": "2023-12-19T00:00:00", + "pnl": 3.120229511472644, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21575520670791, + "entry_time": "2023-12-21T00:00:00", + "exit_price": 93.31507102860735, + "exit_reason": "signal", + "exit_time": "2023-12-22T00:00:00", + "pnl": 9.931582189943583, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2320901589937, + "entry_time": "2023-12-24T00:00:00", + "exit_price": 93.15393731859652, + "exit_reason": "signal", + "exit_time": "2023-12-25T00:00:00", + "pnl": -7.815284039717881, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07037591089997, + "entry_time": "2023-12-27T00:00:00", + "exit_price": 93.3198194947649, + "exit_reason": "signal", + "exit_time": "2023-12-28T00:00:00", + "pnl": 24.94435838649406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69216760463115, + "entry_time": "2023-12-30T00:00:00", + "exit_price": 94.07388089953058, + "exit_reason": "signal", + "exit_time": "2023-12-31T00:00:00", + "pnl": 38.171329489941854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.64149353573187, + "entry_time": "2024-01-02T00:00:00", + "exit_price": 94.71271228263036, + "exit_reason": "signal", + "exit_time": "2024-01-03T00:00:00", + "pnl": 7.121874689850301, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.11471503048601, + "entry_time": "2024-01-05T00:00:00", + "exit_price": 94.98751858071931, + "exit_reason": "signal", + "exit_time": "2024-01-06T00:00:00", + "pnl": -12.71964497666886, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7067835294734, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.74844014533139, + "exit_reason": "signal", + "exit_time": "2024-01-09T00:00:00", + "pnl": 4.165661585799171, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.02489656616589, + "entry_time": "2024-01-11T00:00:00", + "exit_price": 94.98294992874101, + "exit_reason": "signal", + "exit_time": "2024-01-12T00:00:00", + "pnl": -4.194663742489865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.71598064705562, + "entry_time": "2024-01-14T00:00:00", + "exit_price": 94.90144093756582, + "exit_reason": "signal", + "exit_time": "2024-01-15T00:00:00", + "pnl": 18.546029051020014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88369269337046, + "entry_time": "2024-01-17T00:00:00", + "exit_price": 94.99127786199946, + "exit_reason": "signal", + "exit_time": "2024-01-18T00:00:00", + "pnl": 10.758516862899342, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.25279588129149, + "entry_time": "2024-01-20T00:00:00", + "exit_price": 94.98339215080473, + "exit_reason": "signal", + "exit_time": "2024-01-21T00:00:00", + "pnl": -26.94037304867561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84625570624047, + "entry_time": "2024-01-23T00:00:00", + "exit_price": 94.50594333071952, + "exit_reason": "signal", + "exit_time": "2024-01-24T00:00:00", + "pnl": -34.03123755209526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50759103681195, + "entry_time": "2024-01-26T00:00:00", + "exit_price": 94.60423833142119, + "exit_reason": "signal", + "exit_time": "2024-01-27T00:00:00", + "pnl": 9.664729460924718, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.58324904624199, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.89219195707862, + "exit_reason": "signal", + "exit_time": "2024-01-30T00:00:00", + "pnl": 30.89429108366494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65911048978346, + "entry_time": "2024-02-01T00:00:00", + "exit_price": 94.7149396953146, + "exit_reason": "signal", + "exit_time": "2024-02-02T00:00:00", + "pnl": 5.5829205531154, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.87432845164757, + "entry_time": "2024-02-04T00:00:00", + "exit_price": 94.68840177129488, + "exit_reason": "signal", + "exit_time": "2024-02-05T00:00:00", + "pnl": -18.592668035269526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.93449198055023, + "entry_time": "2024-02-07T00:00:00", + "exit_price": 95.32948554144308, + "exit_reason": "signal", + "exit_time": "2024-02-08T00:00:00", + "pnl": 39.49935608928536, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32849848634218, + "entry_time": "2024-02-10T00:00:00", + "exit_price": 95.22062659109166, + "exit_reason": "signal", + "exit_time": "2024-02-11T00:00:00", + "pnl": -10.787189525051872, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95224360650606, + "entry_time": "2024-02-13T00:00:00", + "exit_price": 95.11404601693097, + "exit_reason": "signal", + "exit_time": "2024-02-14T00:00:00", + "pnl": 16.180241042491616, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79369852289173, + "entry_time": "2024-02-16T00:00:00", + "exit_price": 94.57121837540416, + "exit_reason": "signal", + "exit_time": "2024-02-17T00:00:00", + "pnl": -22.248014748758578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70539792020504, + "entry_time": "2024-02-19T00:00:00", + "exit_price": 94.81536726931864, + "exit_reason": "signal", + "exit_time": "2024-02-20T00:00:00", + "pnl": 10.996934911359858, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.66590107949516, + "entry_time": "2024-02-22T00:00:00", + "exit_price": 94.54759559550845, + "exit_reason": "signal", + "exit_time": "2024-02-23T00:00:00", + "pnl": -11.830548398671453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11939973938362, + "entry_time": "2024-02-25T00:00:00", + "exit_price": 94.21880305870137, + "exit_reason": "signal", + "exit_time": "2024-02-26T00:00:00", + "pnl": 9.940331931773471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79422563292844, + "entry_time": "2024-02-28T00:00:00", + "exit_price": 93.71312689925841, + "exit_reason": "signal", + "exit_time": "2024-02-29T00:00:00", + "pnl": -8.109873367004184, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46426831854224, + "entry_time": "2024-03-02T00:00:00", + "exit_price": 93.10239283352094, + "exit_reason": "signal", + "exit_time": "2024-03-03T00:00:00", + "pnl": -36.187548502130085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37028780606191, + "entry_time": "2024-03-05T00:00:00", + "exit_price": 93.13498012432488, + "exit_reason": "signal", + "exit_time": "2024-03-06T00:00:00", + "pnl": -23.53076817370311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.38863630293943, + "entry_time": "2024-03-08T00:00:00", + "exit_price": 93.41150008980253, + "exit_reason": "signal", + "exit_time": "2024-03-09T00:00:00", + "pnl": 2.2863786863108544, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.14488289984781, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.17802365337732, + "exit_reason": "signal", + "exit_time": "2024-03-12T00:00:00", + "pnl": 3.314075352951477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27104619189048, + "entry_time": "2024-03-14T00:00:00", + "exit_price": 92.98787909982833, + "exit_reason": "signal", + "exit_time": "2024-03-15T00:00:00", + "pnl": -28.316709206214, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11321145433928, + "entry_time": "2024-03-17T00:00:00", + "exit_price": 93.23295576374296, + "exit_reason": "signal", + "exit_time": "2024-03-18T00:00:00", + "pnl": 11.97443094036862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.85697546574279, + "entry_time": "2024-03-20T00:00:00", + "exit_price": 92.7517321560528, + "exit_reason": "signal", + "exit_time": "2024-03-21T00:00:00", + "pnl": -10.524330968999493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50551757491745, + "entry_time": "2024-03-23T00:00:00", + "exit_price": 92.62546167858358, + "exit_reason": "signal", + "exit_time": "2024-03-24T00:00:00", + "pnl": 11.99441036661301, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86332633060258, + "entry_time": "2024-03-26T00:00:00", + "exit_price": 92.76299264885851, + "exit_reason": "signal", + "exit_time": "2024-03-27T00:00:00", + "pnl": -10.03336817440686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78913797285577, + "entry_time": "2024-03-29T00:00:00", + "exit_price": 93.00024160373006, + "exit_reason": "signal", + "exit_time": "2024-03-30T00:00:00", + "pnl": 21.110363087429505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9168412948554, + "entry_time": "2024-04-01T00:00:00", + "exit_price": 92.7772709282975, + "exit_reason": "signal", + "exit_time": "2024-04-02T00:00:00", + "pnl": -13.957036655790944, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99344762670124, + "entry_time": "2024-04-04T00:00:00", + "exit_price": 92.45458704231757, + "exit_reason": "signal", + "exit_time": "2024-04-05T00:00:00", + "pnl": -53.8860584383674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.40001356367094, + "entry_time": "2024-04-07T00:00:00", + "exit_price": 91.97082046191717, + "exit_reason": "signal", + "exit_time": "2024-04-08T00:00:00", + "pnl": -42.91931017537718, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01206001173375, + "entry_time": "2024-04-10T00:00:00", + "exit_price": 92.08005345968613, + "exit_reason": "signal", + "exit_time": "2024-04-11T00:00:00", + "pnl": 6.79934479523763, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22217203577799, + "entry_time": "2024-04-13T00:00:00", + "exit_price": 92.2425856744218, + "exit_reason": "signal", + "exit_time": "2024-04-14T00:00:00", + "pnl": 2.0413638643822196, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46073627278375, + "entry_time": "2024-04-16T00:00:00", + "exit_price": 92.58143591458905, + "exit_reason": "signal", + "exit_time": "2024-04-17T00:00:00", + "pnl": 12.069964180531315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95177802714637, + "entry_time": "2024-04-19T00:00:00", + "exit_price": 92.56745694254103, + "exit_reason": "signal", + "exit_time": "2024-04-20T00:00:00", + "pnl": -38.43210846053444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81253269752307, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 92.86554139490539, + "exit_reason": "signal", + "exit_time": "2024-04-23T00:00:00", + "pnl": 5.300869738231995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90464875740813, + "entry_time": "2024-04-25T00:00:00", + "exit_price": 92.96373746132312, + "exit_reason": "signal", + "exit_time": "2024-04-26T00:00:00", + "pnl": 5.908870391500386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09789228558353, + "entry_time": "2024-04-28T00:00:00", + "exit_price": 93.19003786584736, + "exit_reason": "signal", + "exit_time": "2024-04-29T00:00:00", + "pnl": 9.214558026382292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66999752477344, + "entry_time": "2024-05-01T00:00:00", + "exit_price": 92.45706703230238, + "exit_reason": "signal", + "exit_time": "2024-05-02T00:00:00", + "pnl": -21.293049247105955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2209401021726, + "entry_time": "2024-05-04T00:00:00", + "exit_price": 93.26995519560073, + "exit_reason": "signal", + "exit_time": "2024-05-05T00:00:00", + "pnl": 4.901509342811551, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23034844043512, + "entry_time": "2024-05-07T00:00:00", + "exit_price": 93.41387280572972, + "exit_reason": "signal", + "exit_time": "2024-05-08T00:00:00", + "pnl": 18.352436529459737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33303611955198, + "entry_time": "2024-05-10T00:00:00", + "exit_price": 93.52307299324875, + "exit_reason": "signal", + "exit_time": "2024-05-11T00:00:00", + "pnl": 19.00368736967721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67190914597171, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.29815694731651, + "exit_reason": "signal", + "exit_time": "2024-05-14T00:00:00", + "pnl": -37.375219865520194, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11959184333037, + "entry_time": "2024-05-16T00:00:00", + "exit_price": 92.78483612314953, + "exit_reason": "signal", + "exit_time": "2024-05-17T00:00:00", + "pnl": -33.47557201808377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92001295323621, + "entry_time": "2024-05-19T00:00:00", + "exit_price": 92.94709162208174, + "exit_reason": "signal", + "exit_time": "2024-05-20T00:00:00", + "pnl": 2.7078668845515494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06260774305197, + "entry_time": "2024-05-22T00:00:00", + "exit_price": 93.1459174166961, + "exit_reason": "signal", + "exit_time": "2024-05-23T00:00:00", + "pnl": 8.330967364412572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06618787236135, + "entry_time": "2024-05-25T00:00:00", + "exit_price": 93.61303967582782, + "exit_reason": "signal", + "exit_time": "2024-05-26T00:00:00", + "pnl": 54.68518034664703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.941078352886, + "entry_time": "2024-05-28T00:00:00", + "exit_price": 94.01481054814181, + "exit_reason": "signal", + "exit_time": "2024-05-29T00:00:00", + "pnl": 7.3732195255815896, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92069860353018, + "entry_time": "2024-05-31T00:00:00", + "exit_price": 93.87432907187284, + "exit_reason": "signal", + "exit_time": "2024-06-01T00:00:00", + "pnl": -4.636953165734667, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88014313205952, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.43750435674885, + "exit_reason": "signal", + "exit_time": "2024-06-04T00:00:00", + "pnl": -44.2638775310661, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46298718335747, + "entry_time": "2024-06-06T00:00:00", + "exit_price": 93.92373570713617, + "exit_reason": "signal", + "exit_time": "2024-06-07T00:00:00", + "pnl": 46.07485237786932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93253015033825, + "entry_time": "2024-06-09T00:00:00", + "exit_price": 93.89138819536463, + "exit_reason": "signal", + "exit_time": "2024-06-10T00:00:00", + "pnl": -4.1141954973609245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6779918521803, + "entry_time": "2024-06-12T00:00:00", + "exit_price": 93.51002812881958, + "exit_reason": "signal", + "exit_time": "2024-06-13T00:00:00", + "pnl": -16.796372336071727, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.285974590119, + "entry_time": "2024-06-15T00:00:00", + "exit_price": 93.32248822367578, + "exit_reason": "signal", + "exit_time": "2024-06-16T00:00:00", + "pnl": 3.651363355676949, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35524577583958, + "entry_time": "2024-06-18T00:00:00", + "exit_price": 93.73566009456992, + "exit_reason": "signal", + "exit_time": "2024-06-19T00:00:00", + "pnl": 38.041431873034526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6866778828559, + "entry_time": "2024-06-21T00:00:00", + "exit_price": 93.84911622521342, + "exit_reason": "signal", + "exit_time": "2024-06-22T00:00:00", + "pnl": 16.24383423575091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68254626297609, + "entry_time": "2024-06-24T00:00:00", + "exit_price": 93.53753290340698, + "exit_reason": "signal", + "exit_time": "2024-06-25T00:00:00", + "pnl": -14.501335956909315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.40541279646611, + "entry_time": "2024-06-27T00:00:00", + "exit_price": 93.71834890975212, + "exit_reason": "signal", + "exit_time": "2024-06-28T00:00:00", + "pnl": 31.2936113286014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75716070422646, + "entry_time": "2024-06-30T00:00:00", + "exit_price": 93.82803454081426, + "exit_reason": "signal", + "exit_time": "2024-07-01T00:00:00", + "pnl": 7.0873836587798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73900139072163, + "entry_time": "2024-07-03T00:00:00", + "exit_price": 93.58423325500644, + "exit_reason": "signal", + "exit_time": "2024-07-04T00:00:00", + "pnl": -15.476813571518505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16188235681071, + "entry_time": "2024-07-06T00:00:00", + "exit_price": 93.02650792631081, + "exit_reason": "signal", + "exit_time": "2024-07-07T00:00:00", + "pnl": -13.537443049990543, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00049424696184, + "entry_time": "2024-07-09T00:00:00", + "exit_price": 93.27869714616556, + "exit_reason": "signal", + "exit_time": "2024-07-10T00:00:00", + "pnl": 27.82028992037158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18595899862997, + "entry_time": "2024-07-12T00:00:00", + "exit_price": 93.03056917274476, + "exit_reason": "signal", + "exit_time": "2024-07-13T00:00:00", + "pnl": -15.538982588521321, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6959315804981, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.29325844026822, + "exit_reason": "signal", + "exit_time": "2024-07-16T00:00:00", + "pnl": -40.26731402298719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24617524245163, + "entry_time": "2024-07-18T00:00:00", + "exit_price": 92.27923511016385, + "exit_reason": "signal", + "exit_time": "2024-07-19T00:00:00", + "pnl": 3.3059867712217965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24377176084563, + "entry_time": "2024-07-21T00:00:00", + "exit_price": 91.84290901749984, + "exit_reason": "signal", + "exit_time": "2024-07-22T00:00:00", + "pnl": -40.086274334578775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45792359801233, + "entry_time": "2024-07-24T00:00:00", + "exit_price": 91.61079046047253, + "exit_reason": "signal", + "exit_time": "2024-07-25T00:00:00", + "pnl": 15.286686246019599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59272403631071, + "entry_time": "2024-07-27T00:00:00", + "exit_price": 91.6658144632232, + "exit_reason": "signal", + "exit_time": "2024-07-28T00:00:00", + "pnl": 7.309042691247669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76765880138052, + "entry_time": "2024-07-30T00:00:00", + "exit_price": 91.83153611139085, + "exit_reason": "signal", + "exit_time": "2024-07-31T00:00:00", + "pnl": 6.387731001033899, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47875371686978, + "entry_time": "2024-08-02T00:00:00", + "exit_price": 91.54124524065837, + "exit_reason": "signal", + "exit_time": "2024-08-03T00:00:00", + "pnl": 6.249152378859435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.99233076398606, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.9529292158228, + "exit_reason": "signal", + "exit_time": "2024-08-06T00:00:00", + "pnl": -3.9401548163259577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9845811375129, + "entry_time": "2024-08-08T00:00:00", + "exit_price": 92.0553452779518, + "exit_reason": "signal", + "exit_time": "2024-08-09T00:00:00", + "pnl": 7.076414043889599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96933895446485, + "entry_time": "2024-08-11T00:00:00", + "exit_price": 92.33843538273938, + "exit_reason": "signal", + "exit_time": "2024-08-12T00:00:00", + "pnl": 36.909642827453354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7587929540311, + "entry_time": "2024-08-14T00:00:00", + "exit_price": 92.61541170919818, + "exit_reason": "signal", + "exit_time": "2024-08-15T00:00:00", + "pnl": -14.338124483290812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.48109292079488, + "entry_time": "2024-08-17T00:00:00", + "exit_price": 92.584127260661, + "exit_reason": "signal", + "exit_time": "2024-08-18T00:00:00", + "pnl": 10.303433986613527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73326548896145, + "entry_time": "2024-08-20T00:00:00", + "exit_price": 92.63121700232358, + "exit_reason": "signal", + "exit_time": "2024-08-21T00:00:00", + "pnl": -10.204848663786834, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06360781499562, + "entry_time": "2024-08-23T00:00:00", + "exit_price": 92.8561585876055, + "exit_reason": "signal", + "exit_time": "2024-08-24T00:00:00", + "pnl": -20.74492273900978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92284538933916, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.11237349539573, + "exit_reason": "signal", + "exit_time": "2024-08-27T00:00:00", + "pnl": 18.95281060565685, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07021236134935, + "entry_time": "2024-08-29T00:00:00", + "exit_price": 93.17184698357968, + "exit_reason": "signal", + "exit_time": "2024-08-30T00:00:00", + "pnl": 10.163462223034003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31228518791787, + "entry_time": "2024-09-01T00:00:00", + "exit_price": 92.33590023205818, + "exit_reason": "signal", + "exit_time": "2024-09-02T00:00:00", + "pnl": 2.361504414031515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50027778498863, + "entry_time": "2024-09-04T00:00:00", + "exit_price": 92.54209415864854, + "exit_reason": "signal", + "exit_time": "2024-09-05T00:00:00", + "pnl": 4.181637365991264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3677893725537, + "entry_time": "2024-09-07T00:00:00", + "exit_price": 92.22925202091126, + "exit_reason": "signal", + "exit_time": "2024-09-08T00:00:00", + "pnl": -13.853735164244426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09309676612556, + "entry_time": "2024-09-10T00:00:00", + "exit_price": 92.15732000186526, + "exit_reason": "signal", + "exit_time": "2024-09-11T00:00:00", + "pnl": 6.422323573970061, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68995738997093, + "entry_time": "2024-09-13T00:00:00", + "exit_price": 91.28297081793372, + "exit_reason": "signal", + "exit_time": "2024-09-14T00:00:00", + "pnl": -40.69865720372218, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.49225030811706, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.33431283007668, + "exit_reason": "signal", + "exit_time": "2024-09-17T00:00:00", + "pnl": -15.793747804038503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00621404043055, + "entry_time": "2024-09-19T00:00:00", + "exit_price": 90.92641929792215, + "exit_reason": "signal", + "exit_time": "2024-09-20T00:00:00", + "pnl": -7.979474250840212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07027528339762, + "entry_time": "2024-09-22T00:00:00", + "exit_price": 91.13008155599323, + "exit_reason": "signal", + "exit_time": "2024-09-23T00:00:00", + "pnl": 5.9806272595615155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00907183642319, + "entry_time": "2024-09-25T00:00:00", + "exit_price": 91.23094904986101, + "exit_reason": "signal", + "exit_time": "2024-09-26T00:00:00", + "pnl": 22.18772134378196, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2825480931582, + "entry_time": "2024-09-28T00:00:00", + "exit_price": 90.91271666538603, + "exit_reason": "signal", + "exit_time": "2024-09-29T00:00:00", + "pnl": -36.983142777216926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05360990148436, + "entry_time": "2024-10-01T00:00:00", + "exit_price": 91.28838235720163, + "exit_reason": "signal", + "exit_time": "2024-10-02T00:00:00", + "pnl": 23.4772455717266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79116186423771, + "entry_time": "2024-10-04T00:00:00", + "exit_price": 90.76779759668747, + "exit_reason": "signal", + "exit_time": "2024-10-05T00:00:00", + "pnl": -2.3364267550241493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66567440561238, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 90.70161264561204, + "exit_reason": "signal", + "exit_time": "2024-10-08T00:00:00", + "pnl": 3.593823999966844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83214429583118, + "entry_time": "2024-10-10T00:00:00", + "exit_price": 90.77606667466077, + "exit_reason": "signal", + "exit_time": "2024-10-11T00:00:00", + "pnl": -5.607762117042512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66108486881463, + "entry_time": "2024-10-13T00:00:00", + "exit_price": 90.66515259357669, + "exit_reason": "signal", + "exit_time": "2024-10-14T00:00:00", + "pnl": 0.4067724762062426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.16857543076497, + "entry_time": "2024-10-16T00:00:00", + "exit_price": 90.40982511738886, + "exit_reason": "signal", + "exit_time": "2024-10-17T00:00:00", + "pnl": 24.12496866238871, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.06344300783007, + "entry_time": "2024-10-19T00:00:00", + "exit_price": 89.82444237040852, + "exit_reason": "signal", + "exit_time": "2024-10-20T00:00:00", + "pnl": -23.90006374215409, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.59077974741996, + "entry_time": "2024-10-22T00:00:00", + "exit_price": 89.57824858967784, + "exit_reason": "signal", + "exit_time": "2024-10-23T00:00:00", + "pnl": -1.2531157742123469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.18599707786814, + "entry_time": "2024-10-25T00:00:00", + "exit_price": 89.23587599762591, + "exit_reason": "signal", + "exit_time": "2024-10-26T00:00:00", + "pnl": 4.987891975777529, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.52520755360774, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.53896573427002, + "exit_reason": "signal", + "exit_time": "2024-10-29T00:00:00", + "pnl": 1.375818066228021, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32372356389571, + "entry_time": "2024-10-31T00:00:00", + "exit_price": 89.39723460318574, + "exit_reason": "signal", + "exit_time": "2024-11-01T00:00:00", + "pnl": 7.35110392900242, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.42867761884308, + "entry_time": "2024-11-03T00:00:00", + "exit_price": 89.41468909557778, + "exit_reason": "signal", + "exit_time": "2024-11-04T00:00:00", + "pnl": -1.3988523265306867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37521291073797, + "entry_time": "2024-11-06T00:00:00", + "exit_price": 89.28061929510595, + "exit_reason": "signal", + "exit_time": "2024-11-07T00:00:00", + "pnl": -9.459361563202037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37421531457154, + "entry_time": "2024-11-09T00:00:00", + "exit_price": 89.42880794685172, + "exit_reason": "signal", + "exit_time": "2024-11-10T00:00:00", + "pnl": 5.459263228018244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.10075544827296, + "entry_time": "2024-11-12T00:00:00", + "exit_price": 89.08909178471053, + "exit_reason": "signal", + "exit_time": "2024-11-13T00:00:00", + "pnl": -1.1663663562430884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.9283105563295, + "entry_time": "2024-11-15T00:00:00", + "exit_price": 88.97631673436179, + "exit_reason": "signal", + "exit_time": "2024-11-16T00:00:00", + "pnl": 4.800617803228306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.83969795208085, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.97701708069182, + "exit_reason": "signal", + "exit_time": "2024-11-19T00:00:00", + "pnl": 13.731912861096134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.24948915106788, + "entry_time": "2024-11-21T00:00:00", + "exit_price": 89.31081866218918, + "exit_reason": "signal", + "exit_time": "2024-11-22T00:00:00", + "pnl": 6.132951112129376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.15663810787721, + "entry_time": "2024-11-24T00:00:00", + "exit_price": 89.05359196348086, + "exit_reason": "signal", + "exit_time": "2024-11-25T00:00:00", + "pnl": -10.30461443963577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.89974340615646, + "entry_time": "2024-11-27T00:00:00", + "exit_price": 88.86736216937868, + "exit_reason": "signal", + "exit_time": "2024-11-28T00:00:00", + "pnl": -3.238123677778276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.02917974715604, + "entry_time": "2024-11-30T00:00:00", + "exit_price": 89.10061155400963, + "exit_reason": "signal", + "exit_time": "2024-12-01T00:00:00", + "pnl": 7.143180685359766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.71230009060692, + "entry_time": "2024-12-03T00:00:00", + "exit_price": 88.55956047576315, + "exit_reason": "signal", + "exit_time": "2024-12-04T00:00:00", + "pnl": -15.273961484375832, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33867736091129, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 100.24521783497416, + "exit_time": "2020-01-03T00:00:00", + "pnl": -9.345952593713491, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33353996675463, + "entry_time": "2020-01-05T00:00:00", + "exit_price": 100.17535391574476, + "exit_time": "2020-01-06T00:00:00", + "pnl": -15.81860510098636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.17558936557836, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 99.82464445421311, + "exit_time": "2020-01-09T00:00:00", + "pnl": -35.09449113652465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.14823158528606, + "entry_time": "2020-01-11T00:00:00", + "exit_price": 100.02303868942406, + "exit_time": "2020-01-12T00:00:00", + "pnl": -12.519289586199989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0898265784532, + "entry_time": "2020-01-14T00:00:00", + "exit_price": 100.0375220132344, + "exit_time": "2020-01-15T00:00:00", + "pnl": -5.2304565218804555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.69877148351581, + "entry_time": "2020-01-17T00:00:00", + "exit_price": 99.8094147843381, + "exit_time": "2020-01-18T00:00:00", + "pnl": 11.064330082228935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.88896279741591, + "entry_time": "2020-01-20T00:00:00", + "exit_price": 99.58446195759505, + "exit_time": "2020-01-21T00:00:00", + "pnl": -30.450083982086085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.94461858556683, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 99.86726342876044, + "exit_time": "2020-01-24T00:00:00", + "pnl": -7.735515680639082, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.264261049502, + "entry_time": "2020-01-26T00:00:00", + "exit_price": 99.97378019208324, + "exit_time": "2020-01-27T00:00:00", + "pnl": -29.048085741875695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43666090180685, + "entry_time": "2020-01-29T00:00:00", + "exit_price": 99.64557703864863, + "exit_time": "2020-01-30T00:00:00", + "pnl": 20.891613684177912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.41486055220747, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 99.62832834535065, + "exit_time": "2020-02-02T00:00:00", + "pnl": 21.3467793143181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.40627623062987, + "entry_time": "2020-02-04T00:00:00", + "exit_price": 98.9966907903866, + "exit_time": "2020-02-05T00:00:00", + "pnl": -40.95854402432764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.62784889129782, + "entry_time": "2020-02-07T00:00:00", + "exit_price": 98.91665393395704, + "exit_time": "2020-02-08T00:00:00", + "pnl": 28.880504265922013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20129913778622, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 99.36824311350031, + "exit_time": "2020-02-11T00:00:00", + "pnl": 16.69439757140907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.44539780996692, + "entry_time": "2020-02-13T00:00:00", + "exit_price": 99.29577808855632, + "exit_time": "2020-02-14T00:00:00", + "pnl": -14.961972141060187, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60087912978423, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 98.67646038571121, + "exit_time": "2020-02-17T00:00:00", + "pnl": 7.5581255926977065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17445140133515, + "entry_time": "2020-02-19T00:00:00", + "exit_price": 99.07045121918839, + "exit_time": "2020-02-20T00:00:00", + "pnl": -10.400018214676265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.49723620471183, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 99.5174230546468, + "exit_time": "2020-02-23T00:00:00", + "pnl": 2.0186849934972884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5413500261472, + "entry_time": "2020-02-25T00:00:00", + "exit_price": 99.47975770399327, + "exit_time": "2020-02-26T00:00:00", + "pnl": -6.1592322153927626, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.29423417091141, + "entry_time": "2020-02-28T00:00:00", + "exit_price": 99.27541464305773, + "exit_time": "2020-02-29T00:00:00", + "pnl": -1.8819527853679574, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.4392086025175, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.06079463387583, + "exit_time": "2020-03-03T00:00:00", + "pnl": -37.841396864166654, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.37828233356667, + "entry_time": "2020-03-05T00:00:00", + "exit_price": 99.30210368322795, + "exit_time": "2020-03-06T00:00:00", + "pnl": -7.617865033871851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.8891828858322, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 98.6817301819728, + "exit_time": "2020-03-09T00:00:00", + "pnl": -20.745270385940273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.39002953943762, + "entry_time": "2020-03-11T00:00:00", + "exit_price": 98.68517685658658, + "exit_time": "2020-03-12T00:00:00", + "pnl": 29.51473171489596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.65084298157255, + "entry_time": "2020-03-14T00:00:00", + "exit_price": 98.93501858046714, + "exit_time": "2020-03-15T00:00:00", + "pnl": 28.4175598894592, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.19071665014789, + "entry_time": "2020-03-17T00:00:00", + "exit_price": 99.25659603867345, + "exit_time": "2020-03-18T00:00:00", + "pnl": 6.587938852555908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36428253311259, + "entry_time": "2020-03-20T00:00:00", + "exit_price": 99.01156809266551, + "exit_time": "2020-03-21T00:00:00", + "pnl": -35.27144404470732, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31879308123833, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.40136182036203, + "exit_time": "2020-03-24T00:00:00", + "pnl": 8.25687391237011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17903686528695, + "entry_time": "2020-03-26T00:00:00", + "exit_price": 99.0619221034904, + "exit_time": "2020-03-27T00:00:00", + "pnl": -11.711476179654312, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25968317752123, + "entry_time": "2020-03-29T00:00:00", + "exit_price": 99.56379928977212, + "exit_time": "2020-03-30T00:00:00", + "pnl": 30.41161122508953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.80666495491704, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 99.94182055020374, + "exit_time": "2020-04-02T00:00:00", + "pnl": 13.515559528670451, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.92425119368045, + "entry_time": "2020-04-04T00:00:00", + "exit_price": 99.78971486194605, + "exit_time": "2020-04-05T00:00:00", + "pnl": -13.453633173439528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.23057477534162, + "entry_time": "2020-04-07T00:00:00", + "exit_price": 100.4049348801832, + "exit_time": "2020-04-08T00:00:00", + "pnl": 17.43601048415826, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.24159987362269, + "entry_time": "2020-04-10T00:00:00", + "exit_price": 100.06843389735158, + "exit_time": "2020-04-11T00:00:00", + "pnl": -17.316597627110752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.22183940097844, + "entry_time": "2020-04-13T00:00:00", + "exit_price": 99.93299182979392, + "exit_time": "2020-04-14T00:00:00", + "pnl": -28.884757118451887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91637693821662, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 100.20188970935105, + "exit_time": "2020-04-17T00:00:00", + "pnl": 28.55127711344352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.57826653579691, + "entry_time": "2020-04-19T00:00:00", + "exit_price": 100.48615354430639, + "exit_time": "2020-04-20T00:00:00", + "pnl": -9.211299149052365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.48852996658735, + "entry_time": "2020-04-22T00:00:00", + "exit_price": 100.70097560384337, + "exit_time": "2020-04-23T00:00:00", + "pnl": 21.24456372560246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.56660104606993, + "entry_time": "2020-04-25T00:00:00", + "exit_price": 100.60339517911308, + "exit_time": "2020-04-26T00:00:00", + "pnl": 3.679413304314494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5215727488348, + "entry_time": "2020-04-28T00:00:00", + "exit_price": 100.3913600319206, + "exit_time": "2020-04-29T00:00:00", + "pnl": -13.021271691420111, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.6642306539015, + "entry_time": "2020-05-01T00:00:00", + "exit_price": 100.49406633741951, + "exit_time": "2020-05-02T00:00:00", + "pnl": -17.016431648198704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64849065100934, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.63323070552582, + "exit_time": "2020-05-05T00:00:00", + "pnl": -1.5259945483521165, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88914932519062, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 100.96225788336264, + "exit_time": "2020-05-08T00:00:00", + "pnl": 7.310855817202366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.21454142458283, + "entry_time": "2020-05-10T00:00:00", + "exit_price": 101.08973549159177, + "exit_time": "2020-05-11T00:00:00", + "pnl": -12.480593299106602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.91131718633395, + "entry_time": "2020-05-13T00:00:00", + "exit_price": 100.95365272243404, + "exit_time": "2020-05-14T00:00:00", + "pnl": 4.2335536100097215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3677264483084, + "entry_time": "2020-05-16T00:00:00", + "exit_price": 100.38542382708798, + "exit_time": "2020-05-17T00:00:00", + "pnl": 1.7697378779573114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.727355594576, + "entry_time": "2020-05-19T00:00:00", + "exit_price": 99.80184598433505, + "exit_time": "2020-05-20T00:00:00", + "pnl": 7.449038975904898, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.75895482632264, + "entry_time": "2020-05-22T00:00:00", + "exit_price": 99.65309620079978, + "exit_time": "2020-05-23T00:00:00", + "pnl": -10.585862552285619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.18275486854981, + "entry_time": "2020-05-25T00:00:00", + "exit_price": 99.08066364611346, + "exit_time": "2020-05-26T00:00:00", + "pnl": -10.209122243634283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86355002974182, + "entry_time": "2020-05-28T00:00:00", + "exit_price": 98.8079829991331, + "exit_time": "2020-05-29T00:00:00", + "pnl": -5.556703060871371, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50774498473835, + "entry_time": "2020-05-31T00:00:00", + "exit_price": 98.15500147527054, + "exit_time": "2020-06-01T00:00:00", + "pnl": -35.2743509467814, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25388112126257, + "entry_time": "2020-06-03T00:00:00", + "exit_price": 98.46869004462158, + "exit_time": "2020-06-04T00:00:00", + "pnl": 21.480892335901558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.49982930970904, + "entry_time": "2020-06-06T00:00:00", + "exit_price": 98.64941137818613, + "exit_time": "2020-06-07T00:00:00", + "pnl": 14.958206847708766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08181708620197, + "entry_time": "2020-06-09T00:00:00", + "exit_price": 98.89782993828217, + "exit_time": "2020-06-10T00:00:00", + "pnl": -18.398714791979387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.34821493675021, + "entry_time": "2020-06-12T00:00:00", + "exit_price": 99.0511570084608, + "exit_time": "2020-06-13T00:00:00", + "pnl": -29.705792828940503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36636841676064, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 99.22802936588096, + "exit_time": "2020-06-16T00:00:00", + "pnl": -13.833905087967935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.13124547885464, + "entry_time": "2020-06-18T00:00:00", + "exit_price": 98.97034570188329, + "exit_time": "2020-06-19T00:00:00", + "pnl": -16.089977697134827, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84675502390374, + "entry_time": "2020-06-21T00:00:00", + "exit_price": 98.82877025439984, + "exit_time": "2020-06-22T00:00:00", + "pnl": -1.7984769503897269, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83150510044737, + "entry_time": "2020-06-24T00:00:00", + "exit_price": 98.80556016637114, + "exit_time": "2020-06-25T00:00:00", + "pnl": -2.594493407623588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.10675350799055, + "entry_time": "2020-06-27T00:00:00", + "exit_price": 98.84453919660923, + "exit_time": "2020-06-28T00:00:00", + "pnl": -26.22143113813138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88147160830762, + "entry_time": "2020-06-30T00:00:00", + "exit_price": 98.95771616416846, + "exit_time": "2020-07-01T00:00:00", + "pnl": 7.624455586083911, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25900520967261, + "entry_time": "2020-07-03T00:00:00", + "exit_price": 99.28214715432236, + "exit_time": "2020-07-04T00:00:00", + "pnl": 2.3141944649751167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.64410132782972, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 98.78845498147822, + "exit_time": "2020-07-07T00:00:00", + "pnl": 14.435365364850838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96240900085823, + "entry_time": "2020-07-09T00:00:00", + "exit_price": 99.01654413042846, + "exit_time": "2020-07-10T00:00:00", + "pnl": 5.413512957022704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08257869239384, + "entry_time": "2020-07-12T00:00:00", + "exit_price": 98.92270971634117, + "exit_time": "2020-07-13T00:00:00", + "pnl": -15.986897605266392, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9249177043285, + "entry_time": "2020-07-15T00:00:00", + "exit_price": 98.5475977762062, + "exit_time": "2020-07-16T00:00:00", + "pnl": -37.73199281222901, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85856446370276, + "entry_time": "2020-07-18T00:00:00", + "exit_price": 98.8876461806366, + "exit_time": "2020-07-19T00:00:00", + "pnl": 2.9081716933831103, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.75554506700362, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 98.4712342394787, + "exit_time": "2020-07-22T00:00:00", + "pnl": -28.431082752491932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.13596092844963, + "entry_time": "2020-07-24T00:00:00", + "exit_price": 98.29084433077668, + "exit_time": "2020-07-25T00:00:00", + "pnl": 15.488340232704445, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50946620110103, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 98.42209873300993, + "exit_time": "2020-07-28T00:00:00", + "pnl": -8.73674680911023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16470383307056, + "entry_time": "2020-07-30T00:00:00", + "exit_price": 98.10251353436806, + "exit_time": "2020-07-31T00:00:00", + "pnl": -6.219029870250381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16007736983093, + "entry_time": "2020-08-02T00:00:00", + "exit_price": 98.25346405776058, + "exit_time": "2020-08-03T00:00:00", + "pnl": 9.338668792965166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.02466944517249, + "entry_time": "2020-08-05T00:00:00", + "exit_price": 98.03234873384025, + "exit_time": "2020-08-06T00:00:00", + "pnl": 0.7679288667759465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11031617256702, + "entry_time": "2020-08-08T00:00:00", + "exit_price": 98.14530663460309, + "exit_time": "2020-08-09T00:00:00", + "pnl": 3.4990462036063263, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.44429004426568, + "entry_time": "2020-08-11T00:00:00", + "exit_price": 98.39955675926143, + "exit_time": "2020-08-12T00:00:00", + "pnl": -4.473328500425566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19954612220634, + "entry_time": "2020-08-14T00:00:00", + "exit_price": 98.33374471974878, + "exit_time": "2020-08-15T00:00:00", + "pnl": 13.419859754243646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.17850638089598, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.31970147221125, + "exit_time": "2020-08-18T00:00:00", + "pnl": 14.119509131526797, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19274532121113, + "entry_time": "2020-08-20T00:00:00", + "exit_price": 98.3840327772038, + "exit_time": "2020-08-21T00:00:00", + "pnl": 19.128745599266495, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48120231354616, + "entry_time": "2020-08-23T00:00:00", + "exit_price": 98.7121932598933, + "exit_time": "2020-08-24T00:00:00", + "pnl": 23.099094634713424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86988580253298, + "entry_time": "2020-08-26T00:00:00", + "exit_price": 98.76604202197464, + "exit_time": "2020-08-27T00:00:00", + "pnl": -10.384378055833565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.79597689506201, + "entry_time": "2020-08-29T00:00:00", + "exit_price": 98.42129188541651, + "exit_time": "2020-08-30T00:00:00", + "pnl": -37.468500964550344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67647877199742, + "entry_time": "2020-09-01T00:00:00", + "exit_price": 98.82191220927734, + "exit_time": "2020-09-02T00:00:00", + "pnl": 14.543343727991953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84470059887572, + "entry_time": "2020-09-04T00:00:00", + "exit_price": 98.72847566121298, + "exit_time": "2020-09-05T00:00:00", + "pnl": -11.622493766273578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43094423441607, + "entry_time": "2020-09-07T00:00:00", + "exit_price": 98.39808368032986, + "exit_time": "2020-09-08T00:00:00", + "pnl": -3.28605540862128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31641481415083, + "entry_time": "2020-09-10T00:00:00", + "exit_price": 98.40267706340073, + "exit_time": "2020-09-11T00:00:00", + "pnl": 8.626224924989856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60680412325432, + "entry_time": "2020-09-13T00:00:00", + "exit_price": 98.51452016846274, + "exit_time": "2020-09-14T00:00:00", + "pnl": -9.22839547915828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31471449163298, + "entry_time": "2020-09-16T00:00:00", + "exit_price": 98.43834781075664, + "exit_time": "2020-09-17T00:00:00", + "pnl": 12.363331912365538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84446638005844, + "entry_time": "2020-09-19T00:00:00", + "exit_price": 98.49607372712997, + "exit_time": "2020-09-20T00:00:00", + "pnl": -34.83926529284673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85869892480143, + "entry_time": "2020-09-22T00:00:00", + "exit_price": 98.87107213537678, + "exit_time": "2020-09-23T00:00:00", + "pnl": 1.237321057534757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83017137699973, + "entry_time": "2020-09-25T00:00:00", + "exit_price": 98.73075043509533, + "exit_time": "2020-09-26T00:00:00", + "pnl": -9.942094190439832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85446221431528, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.13025477242799, + "exit_time": "2020-09-29T00:00:00", + "pnl": 27.579255811271253, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08577867542596, + "entry_time": "2020-10-01T00:00:00", + "exit_price": 99.20567187514531, + "exit_time": "2020-10-02T00:00:00", + "pnl": 11.989319971935686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27862593574773, + "entry_time": "2020-10-04T00:00:00", + "exit_price": 99.19411735771268, + "exit_time": "2020-10-05T00:00:00", + "pnl": -8.450857803504164, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.91641070152801, + "entry_time": "2020-10-07T00:00:00", + "exit_price": 98.80020190906805, + "exit_time": "2020-10-08T00:00:00", + "pnl": -11.620879245995752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.03429888110497, + "entry_time": "2020-10-10T00:00:00", + "exit_price": 97.99059510104857, + "exit_time": "2020-10-11T00:00:00", + "pnl": -4.3703780056404185, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.12230359240208, + "entry_time": "2020-10-13T00:00:00", + "exit_price": 98.21493112615859, + "exit_time": "2020-10-14T00:00:00", + "pnl": 9.2627533756513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7362497471537, + "entry_time": "2020-10-16T00:00:00", + "exit_price": 97.90953724611552, + "exit_time": "2020-10-17T00:00:00", + "pnl": 17.32874989618125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99997604721491, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.25158859302469, + "exit_time": "2020-10-20T00:00:00", + "pnl": 25.161254580977754, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98246224229298, + "entry_time": "2020-10-22T00:00:00", + "exit_price": 98.18380160087476, + "exit_time": "2020-10-23T00:00:00", + "pnl": 20.133935858177665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.54700954481861, + "entry_time": "2020-10-25T00:00:00", + "exit_price": 98.87858935796136, + "exit_time": "2020-10-26T00:00:00", + "pnl": 33.157981314275276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.82466366840129, + "entry_time": "2020-10-28T00:00:00", + "exit_price": 98.79031352535364, + "exit_time": "2020-10-29T00:00:00", + "pnl": -3.4350143047646498, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.52782616930364, + "entry_time": "2020-10-31T00:00:00", + "exit_price": 98.71180131795903, + "exit_time": "2020-11-01T00:00:00", + "pnl": 18.39751486553922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.66862984653359, + "entry_time": "2020-11-03T00:00:00", + "exit_price": 98.94388954493733, + "exit_time": "2020-11-04T00:00:00", + "pnl": 27.525969840374387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.40172293508903, + "entry_time": "2020-11-06T00:00:00", + "exit_price": 98.27308992706585, + "exit_time": "2020-11-07T00:00:00", + "pnl": -12.863300802317212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30251070708916, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 98.36341600243385, + "exit_time": "2020-11-10T00:00:00", + "pnl": 6.090529534469624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07297082017436, + "entry_time": "2020-11-12T00:00:00", + "exit_price": 98.63576619816114, + "exit_time": "2020-11-13T00:00:00", + "pnl": 56.27953779867738, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.36545808934646, + "entry_time": "2020-11-15T00:00:00", + "exit_price": 98.425342939227, + "exit_time": "2020-11-16T00:00:00", + "pnl": 5.988484988053244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.59476724765915, + "entry_time": "2020-11-18T00:00:00", + "exit_price": 98.41575843731752, + "exit_time": "2020-11-19T00:00:00", + "pnl": -17.900881034162808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30499551372479, + "entry_time": "2020-11-21T00:00:00", + "exit_price": 98.2943417590765, + "exit_time": "2020-11-22T00:00:00", + "pnl": -1.0653754648288327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.20190364871404, + "entry_time": "2020-11-24T00:00:00", + "exit_price": 98.35429934455371, + "exit_time": "2020-11-25T00:00:00", + "pnl": 15.239569583967238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25575482738783, + "entry_time": "2020-11-27T00:00:00", + "exit_price": 98.30124986928953, + "exit_time": "2020-11-28T00:00:00", + "pnl": 4.549504190170239, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.90191386326036, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.96508444596826, + "exit_time": "2020-12-01T00:00:00", + "pnl": 6.317058270789744, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.75989432781597, + "entry_time": "2020-12-03T00:00:00", + "exit_price": 97.47851546822666, + "exit_time": "2020-12-04T00:00:00", + "pnl": -28.137885958931008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.43273982617148, + "entry_time": "2020-12-06T00:00:00", + "exit_price": 97.78073270556935, + "exit_time": "2020-12-07T00:00:00", + "pnl": 34.79928793978644, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.29707161405977, + "entry_time": "2020-12-09T00:00:00", + "exit_price": 97.17141051171173, + "exit_time": "2020-12-10T00:00:00", + "pnl": -12.56611023480474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.83897503233364, + "entry_time": "2020-12-12T00:00:00", + "exit_price": 96.92050920813638, + "exit_time": "2020-12-13T00:00:00", + "pnl": 8.153417580274436, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.39298906893524, + "entry_time": "2020-12-15T00:00:00", + "exit_price": 97.24960092613485, + "exit_time": "2020-12-16T00:00:00", + "pnl": -14.338814280039003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.15249367428707, + "entry_time": "2020-12-18T00:00:00", + "exit_price": 98.11254847884746, + "exit_time": "2020-12-19T00:00:00", + "pnl": -3.9945195439614167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6477102979142, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 97.66187174327492, + "exit_time": "2020-12-22T00:00:00", + "pnl": 1.4161445360713287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.22816086359948, + "entry_time": "2020-12-24T00:00:00", + "exit_price": 97.18924739108921, + "exit_time": "2020-12-25T00:00:00", + "pnl": -3.891347251027355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.15833017318171, + "entry_time": "2020-12-27T00:00:00", + "exit_price": 97.35388264537053, + "exit_time": "2020-12-28T00:00:00", + "pnl": 19.555247218882243, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30391448349606, + "entry_time": "2020-12-30T00:00:00", + "exit_price": 97.1765702619787, + "exit_time": "2020-12-31T00:00:00", + "pnl": -12.734422151736169, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.03923857682982, + "entry_time": "2021-01-02T00:00:00", + "exit_price": 97.14087662618776, + "exit_time": "2021-01-03T00:00:00", + "pnl": 10.163804935794474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.60285889768487, + "entry_time": "2021-01-05T00:00:00", + "exit_price": 96.71610220194758, + "exit_time": "2021-01-06T00:00:00", + "pnl": 11.32433042627099, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.43129513858887, + "entry_time": "2021-01-08T00:00:00", + "exit_price": 96.7750138677335, + "exit_time": "2021-01-09T00:00:00", + "pnl": 34.37187291446406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.5417619126041, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.26004415392279, + "exit_time": "2021-01-12T00:00:00", + "pnl": -28.17177586813102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.48237494714664, + "entry_time": "2021-01-14T00:00:00", + "exit_price": 96.58658168452075, + "exit_time": "2021-01-15T00:00:00", + "pnl": 10.420673737411335, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.75620116852377, + "entry_time": "2021-01-17T00:00:00", + "exit_price": 96.69650084660127, + "exit_time": "2021-01-18T00:00:00", + "pnl": -5.970032192250585, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.92028780826493, + "entry_time": "2021-01-20T00:00:00", + "exit_price": 95.62951533581877, + "exit_time": "2021-01-21T00:00:00", + "pnl": -29.077247244616444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.58269597074072, + "entry_time": "2021-01-23T00:00:00", + "exit_price": 95.65987379372794, + "exit_time": "2021-01-24T00:00:00", + "pnl": 7.717782298722398, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.66612454309693, + "entry_time": "2021-01-26T00:00:00", + "exit_price": 95.8169746660663, + "exit_time": "2021-01-27T00:00:00", + "pnl": 15.08501229693735, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5926039176473, + "entry_time": "2021-01-29T00:00:00", + "exit_price": 95.28582192646724, + "exit_time": "2021-01-30T00:00:00", + "pnl": -30.678199118005978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.47874410921285, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.57232514477201, + "exit_time": "2021-02-02T00:00:00", + "pnl": 9.35810355591542, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.07482838670384, + "entry_time": "2021-02-04T00:00:00", + "exit_price": 96.06329982176626, + "exit_time": "2021-02-05T00:00:00", + "pnl": -1.1528564937577812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.93964633706301, + "entry_time": "2021-02-07T00:00:00", + "exit_price": 96.02294071169972, + "exit_time": "2021-02-08T00:00:00", + "pnl": 8.329437463670786, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.73925579999096, + "entry_time": "2021-02-10T00:00:00", + "exit_price": 95.99566659891293, + "exit_time": "2021-02-11T00:00:00", + "pnl": 25.641079892197638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.99166395939717, + "entry_time": "2021-02-13T00:00:00", + "exit_price": 95.91107729961162, + "exit_time": "2021-02-14T00:00:00", + "pnl": -8.058665978555268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.35440315345551, + "entry_time": "2021-02-16T00:00:00", + "exit_price": 96.19457800884426, + "exit_time": "2021-02-17T00:00:00", + "pnl": -15.982514461124708, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87539474258334, + "entry_time": "2021-02-19T00:00:00", + "exit_price": 96.03831344319956, + "exit_time": "2021-02-20T00:00:00", + "pnl": 16.291870061621694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.84933568810729, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.942984467456, + "exit_time": "2021-02-23T00:00:00", + "pnl": 9.364877934871174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28778584744732, + "entry_time": "2021-02-25T00:00:00", + "exit_price": 95.02443267142746, + "exit_time": "2021-02-26T00:00:00", + "pnl": -26.33531760198622, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94057536205155, + "entry_time": "2021-02-28T00:00:00", + "exit_price": 94.72906200441219, + "exit_time": "2021-03-01T00:00:00", + "pnl": -21.151335763936174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38445225202611, + "entry_time": "2021-03-03T00:00:00", + "exit_price": 94.38197492987447, + "exit_time": "2021-03-04T00:00:00", + "pnl": -0.24773221516340982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18213638354725, + "entry_time": "2021-03-06T00:00:00", + "exit_price": 94.04715001455901, + "exit_time": "2021-03-07T00:00:00", + "pnl": -13.49863689882369, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19838818284391, + "entry_time": "2021-03-09T00:00:00", + "exit_price": 94.29725636974986, + "exit_time": "2021-03-10T00:00:00", + "pnl": 9.886818690594623, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23572569098852, + "entry_time": "2021-03-12T00:00:00", + "exit_price": 94.3432106471416, + "exit_time": "2021-03-13T00:00:00", + "pnl": 10.748495615308684, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46834681822006, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.39304905252162, + "exit_time": "2021-03-16T00:00:00", + "pnl": -7.529776569843705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46079241276229, + "entry_time": "2021-03-18T00:00:00", + "exit_price": 94.87391242777782, + "exit_time": "2021-03-19T00:00:00", + "pnl": 41.31200150155365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81782457593818, + "entry_time": "2021-03-21T00:00:00", + "exit_price": 94.74839547168068, + "exit_time": "2021-03-22T00:00:00", + "pnl": -6.94291042574946, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9804659897062, + "entry_time": "2021-03-24T00:00:00", + "exit_price": 95.1820620687209, + "exit_time": "2021-03-25T00:00:00", + "pnl": 20.1596079014692, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53780103937676, + "entry_time": "2021-03-27T00:00:00", + "exit_price": 94.35114383691389, + "exit_time": "2021-03-28T00:00:00", + "pnl": -18.66572024628681, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19430169329607, + "entry_time": "2021-03-30T00:00:00", + "exit_price": 94.0736265695374, + "exit_time": "2021-03-31T00:00:00", + "pnl": -12.067512375867295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.56101740773187, + "entry_time": "2021-04-02T00:00:00", + "exit_price": 94.02847405275406, + "exit_time": "2021-04-03T00:00:00", + "pnl": -53.2543354977804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02877565620591, + "entry_time": "2021-04-05T00:00:00", + "exit_price": 94.02966575553104, + "exit_time": "2021-04-06T00:00:00", + "pnl": 0.08900993251330647, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71076966315076, + "entry_time": "2021-04-08T00:00:00", + "exit_price": 93.5342590029927, + "exit_time": "2021-04-09T00:00:00", + "pnl": -17.65106601580584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87172892779671, + "entry_time": "2021-04-11T00:00:00", + "exit_price": 93.8898807030855, + "exit_time": "2021-04-12T00:00:00", + "pnl": 1.8151775288785643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75093994363492, + "entry_time": "2021-04-14T00:00:00", + "exit_price": 93.70594283596789, + "exit_time": "2021-04-15T00:00:00", + "pnl": -4.499710766702947, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83044892913243, + "entry_time": "2021-04-17T00:00:00", + "exit_price": 93.71383587412238, + "exit_time": "2021-04-18T00:00:00", + "pnl": -11.661305501004904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52870331564132, + "entry_time": "2021-04-20T00:00:00", + "exit_price": 93.68221846843574, + "exit_time": "2021-04-21T00:00:00", + "pnl": 15.35151527944123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68293629394864, + "entry_time": "2021-04-23T00:00:00", + "exit_price": 93.76185935158753, + "exit_time": "2021-04-24T00:00:00", + "pnl": 7.892305763888885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77694161620539, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.94666597863043, + "exit_time": "2021-04-27T00:00:00", + "pnl": 16.97243624250433, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09046839544106, + "entry_time": "2021-04-29T00:00:00", + "exit_price": 94.0093802192737, + "exit_time": "2021-04-30T00:00:00", + "pnl": -8.108817616736985, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7818281411755, + "entry_time": "2021-05-02T00:00:00", + "exit_price": 93.75541337031265, + "exit_time": "2021-05-03T00:00:00", + "pnl": -2.641477086284283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72371690451082, + "entry_time": "2021-05-05T00:00:00", + "exit_price": 93.60849664049482, + "exit_time": "2021-05-06T00:00:00", + "pnl": -11.522026401600272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94340121095276, + "entry_time": "2021-05-08T00:00:00", + "exit_price": 93.85028148090369, + "exit_time": "2021-05-09T00:00:00", + "pnl": -9.311973004906804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7183641880944, + "entry_time": "2021-05-11T00:00:00", + "exit_price": 93.93201467581261, + "exit_time": "2021-05-12T00:00:00", + "pnl": 21.365048771821193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66005037144768, + "entry_time": "2021-05-14T00:00:00", + "exit_price": 93.71003338575711, + "exit_time": "2021-05-15T00:00:00", + "pnl": 4.998301430943286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64414870400898, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 93.73370138654631, + "exit_time": "2021-05-18T00:00:00", + "pnl": 8.955268253733095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5147503132911, + "entry_time": "2021-05-20T00:00:00", + "exit_price": 93.60797476194675, + "exit_time": "2021-05-21T00:00:00", + "pnl": 9.322444865564705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42059367470232, + "entry_time": "2021-05-23T00:00:00", + "exit_price": 93.66628705381636, + "exit_time": "2021-05-24T00:00:00", + "pnl": 24.569337911404432, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53531464201515, + "entry_time": "2021-05-26T00:00:00", + "exit_price": 93.2030497935449, + "exit_time": "2021-05-27T00:00:00", + "pnl": -33.22648484702455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62268440600192, + "entry_time": "2021-05-29T00:00:00", + "exit_price": 92.91948342162647, + "exit_time": "2021-05-30T00:00:00", + "pnl": 29.679901562454347, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67919849510082, + "entry_time": "2021-06-01T00:00:00", + "exit_price": 92.43887673234494, + "exit_time": "2021-06-02T00:00:00", + "pnl": -24.032176275588313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.17984056111294, + "entry_time": "2021-06-04T00:00:00", + "exit_price": 91.94368190633774, + "exit_time": "2021-06-05T00:00:00", + "pnl": -23.61586547751955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.11465699863811, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.97059505880482, + "exit_time": "2021-06-08T00:00:00", + "pnl": -14.406193983329274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29459604644767, + "entry_time": "2021-06-10T00:00:00", + "exit_price": 92.53931157007439, + "exit_time": "2021-06-11T00:00:00", + "pnl": 24.471552362672355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49631090115352, + "entry_time": "2021-06-13T00:00:00", + "exit_price": 92.52393358151217, + "exit_time": "2021-06-14T00:00:00", + "pnl": 2.762268035864679, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66942128922241, + "entry_time": "2021-06-16T00:00:00", + "exit_price": 92.4946582273999, + "exit_time": "2021-06-17T00:00:00", + "pnl": -17.476306182251733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2942483479133, + "entry_time": "2021-06-19T00:00:00", + "exit_price": 92.07603918687664, + "exit_time": "2021-06-20T00:00:00", + "pnl": -21.82091610366541, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.33479567014805, + "entry_time": "2021-06-22T00:00:00", + "exit_price": 92.14550463966849, + "exit_time": "2021-06-23T00:00:00", + "pnl": -18.92910304795663, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9928646204638, + "entry_time": "2021-06-25T00:00:00", + "exit_price": 91.96872153502625, + "exit_time": "2021-06-26T00:00:00", + "pnl": -2.4143085437557943, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87705988155102, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.53452507075421, + "exit_time": "2021-06-29T00:00:00", + "pnl": -34.253481079680625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.56396146367425, + "entry_time": "2021-07-01T00:00:00", + "exit_price": 91.59385740536969, + "exit_time": "2021-07-02T00:00:00", + "pnl": 2.9895941695443184, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64213975217385, + "entry_time": "2021-07-04T00:00:00", + "exit_price": 91.78882758292927, + "exit_time": "2021-07-05T00:00:00", + "pnl": 14.668783075542535, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63683672368548, + "entry_time": "2021-07-07T00:00:00", + "exit_price": 91.48470633760584, + "exit_time": "2021-07-08T00:00:00", + "pnl": -15.21303860796337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39062489567554, + "entry_time": "2021-07-10T00:00:00", + "exit_price": 91.494696351115, + "exit_time": "2021-07-11T00:00:00", + "pnl": 10.407145543945262, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93573503075692, + "entry_time": "2021-07-13T00:00:00", + "exit_price": 90.98885415853535, + "exit_time": "2021-07-14T00:00:00", + "pnl": 5.31191277784302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06245234985892, + "entry_time": "2021-07-16T00:00:00", + "exit_price": 91.0289821017493, + "exit_time": "2021-07-17T00:00:00", + "pnl": -3.3470248109608747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22900373831217, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.3157346032948, + "exit_time": "2021-07-20T00:00:00", + "pnl": 8.673086498262705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59973514861234, + "entry_time": "2021-07-22T00:00:00", + "exit_price": 91.77086454804387, + "exit_time": "2021-07-23T00:00:00", + "pnl": 17.11293994315355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82096590563263, + "entry_time": "2021-07-25T00:00:00", + "exit_price": 91.95769963997635, + "exit_time": "2021-07-26T00:00:00", + "pnl": 13.673373434372138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.21106339352883, + "entry_time": "2021-07-28T00:00:00", + "exit_price": 92.07551182524406, + "exit_time": "2021-07-29T00:00:00", + "pnl": -13.555156828476811, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09759300944572, + "entry_time": "2021-07-31T00:00:00", + "exit_price": 92.33359941396125, + "exit_time": "2021-08-01T00:00:00", + "pnl": 23.600640451553545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2288848699624, + "entry_time": "2021-08-03T00:00:00", + "exit_price": 92.2069451450579, + "exit_time": "2021-08-04T00:00:00", + "pnl": -2.1939724904498803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46522997402728, + "entry_time": "2021-08-06T00:00:00", + "exit_price": 92.63157812424986, + "exit_time": "2021-08-07T00:00:00", + "pnl": 16.6348150222575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92215275507255, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 92.81904355011355, + "exit_time": "2021-08-10T00:00:00", + "pnl": -10.310920495899722, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34536862719393, + "entry_time": "2021-08-12T00:00:00", + "exit_price": 93.4540782896955, + "exit_time": "2021-08-13T00:00:00", + "pnl": 10.870966250156755, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65179701007457, + "entry_time": "2021-08-15T00:00:00", + "exit_price": 93.58231165488735, + "exit_time": "2021-08-16T00:00:00", + "pnl": -6.948535518722565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59222373899847, + "entry_time": "2021-08-18T00:00:00", + "exit_price": 93.41076247699506, + "exit_time": "2021-08-19T00:00:00", + "pnl": -18.146126200340973, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57987210255567, + "entry_time": "2021-08-21T00:00:00", + "exit_price": 93.93696117180936, + "exit_time": "2021-08-22T00:00:00", + "pnl": 35.70890692536892, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88875391692817, + "entry_time": "2021-08-24T00:00:00", + "exit_price": 93.67494277755462, + "exit_time": "2021-08-25T00:00:00", + "pnl": -21.381113937354712, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99358787892747, + "entry_time": "2021-08-27T00:00:00", + "exit_price": 93.07975990716614, + "exit_time": "2021-08-28T00:00:00", + "pnl": 8.617202823866421, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07047992178704, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.33559891886243, + "exit_time": "2021-08-31T00:00:00", + "pnl": 26.511899707539044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59225467831385, + "entry_time": "2021-09-02T00:00:00", + "exit_price": 93.63479260217548, + "exit_time": "2021-09-03T00:00:00", + "pnl": 4.253792386163013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80334597318696, + "entry_time": "2021-09-05T00:00:00", + "exit_price": 93.98346554786147, + "exit_time": "2021-09-06T00:00:00", + "pnl": 18.011957467450657, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92321614880655, + "entry_time": "2021-09-08T00:00:00", + "exit_price": 93.83699346593512, + "exit_time": "2021-09-09T00:00:00", + "pnl": -8.622268287142276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93109508241774, + "entry_time": "2021-09-11T00:00:00", + "exit_price": 93.96354668527802, + "exit_time": "2021-09-12T00:00:00", + "pnl": 3.245160286027726, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08641930356686, + "entry_time": "2021-09-14T00:00:00", + "exit_price": 94.23768236549668, + "exit_time": "2021-09-15T00:00:00", + "pnl": 15.126306192982497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08211844013991, + "entry_time": "2021-09-17T00:00:00", + "exit_price": 94.20846159911048, + "exit_time": "2021-09-18T00:00:00", + "pnl": 12.634315897057036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.13954155854589, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 93.89054598561034, + "exit_time": "2021-09-21T00:00:00", + "pnl": -24.899557293554153, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11646823351487, + "entry_time": "2021-09-23T00:00:00", + "exit_price": 94.10168176297485, + "exit_time": "2021-09-24T00:00:00", + "pnl": -1.4786470540016694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30038009222437, + "entry_time": "2021-09-26T00:00:00", + "exit_price": 94.41339845504724, + "exit_time": "2021-09-27T00:00:00", + "pnl": 11.30183628228707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10852951715279, + "entry_time": "2021-09-29T00:00:00", + "exit_price": 93.84680988625497, + "exit_time": "2021-09-30T00:00:00", + "pnl": -26.171963089781514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00138088356287, + "entry_time": "2021-10-02T00:00:00", + "exit_price": 94.04342924144086, + "exit_time": "2021-10-03T00:00:00", + "pnl": 4.2048357877988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01673785551607, + "entry_time": "2021-10-05T00:00:00", + "exit_price": 93.8508081374985, + "exit_time": "2021-10-06T00:00:00", + "pnl": -16.592971801756562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87089994615239, + "entry_time": "2021-10-08T00:00:00", + "exit_price": 93.9378403552245, + "exit_time": "2021-10-09T00:00:00", + "pnl": 6.694040907210308, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05201413714097, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.0235397935625, + "exit_time": "2021-10-12T00:00:00", + "pnl": -2.8474343578466232, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26517251606933, + "entry_time": "2021-10-14T00:00:00", + "exit_price": 94.15470785076896, + "exit_time": "2021-10-15T00:00:00", + "pnl": -11.04646653003698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4932600250258, + "entry_time": "2021-10-17T00:00:00", + "exit_price": 94.51252060274227, + "exit_time": "2021-10-18T00:00:00", + "pnl": 1.9260577716465832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53140073996916, + "entry_time": "2021-10-20T00:00:00", + "exit_price": 94.90203063702091, + "exit_time": "2021-10-21T00:00:00", + "pnl": 37.06298970517565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26191114348926, + "entry_time": "2021-10-23T00:00:00", + "exit_price": 94.0634456423351, + "exit_time": "2021-10-24T00:00:00", + "pnl": -19.84655011541605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43521818420996, + "entry_time": "2021-10-26T00:00:00", + "exit_price": 94.38568536751181, + "exit_time": "2021-10-27T00:00:00", + "pnl": -4.953281669814658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21262216293847, + "entry_time": "2021-10-29T00:00:00", + "exit_price": 94.23411145607675, + "exit_time": "2021-10-30T00:00:00", + "pnl": 2.1489293138273524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82330133886903, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 93.61660062265747, + "exit_time": "2021-11-02T00:00:00", + "pnl": -20.670071621155728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71484163940588, + "entry_time": "2021-11-04T00:00:00", + "exit_price": 93.72855192282307, + "exit_time": "2021-11-05T00:00:00", + "pnl": 1.3710283417196933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36926429851582, + "entry_time": "2021-11-07T00:00:00", + "exit_price": 93.37837200951205, + "exit_time": "2021-11-08T00:00:00", + "pnl": 0.9107710996232754, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19352686807355, + "entry_time": "2021-11-10T00:00:00", + "exit_price": 93.28024660066703, + "exit_time": "2021-11-11T00:00:00", + "pnl": 8.671973259347965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9638468574369, + "entry_time": "2021-11-13T00:00:00", + "exit_price": 93.14877036790756, + "exit_time": "2021-11-14T00:00:00", + "pnl": 18.49235104706537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09572264391801, + "entry_time": "2021-11-16T00:00:00", + "exit_price": 92.53876217367774, + "exit_time": "2021-11-17T00:00:00", + "pnl": -55.696047024026996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.64617178108719, + "entry_time": "2021-11-19T00:00:00", + "exit_price": 92.85422093876446, + "exit_time": "2021-11-20T00:00:00", + "pnl": 20.804915767726584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6092442220808, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 92.52724603055836, + "exit_time": "2021-11-23T00:00:00", + "pnl": -8.199819152244459, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46494136842416, + "entry_time": "2021-11-25T00:00:00", + "exit_price": 92.44406941275119, + "exit_time": "2021-11-26T00:00:00", + "pnl": -2.0871955672973286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32264147745168, + "entry_time": "2021-11-28T00:00:00", + "exit_price": 92.0360221167863, + "exit_time": "2021-11-29T00:00:00", + "pnl": -28.661936066538374, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01384655286364, + "entry_time": "2021-12-01T00:00:00", + "exit_price": 91.97262653583181, + "exit_time": "2021-12-02T00:00:00", + "pnl": -4.122001703183287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.28024889847717, + "entry_time": "2021-12-04T00:00:00", + "exit_price": 91.96758302287454, + "exit_time": "2021-12-05T00:00:00", + "pnl": -31.266587560263304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25528568314509, + "entry_time": "2021-12-07T00:00:00", + "exit_price": 92.20092793334622, + "exit_time": "2021-12-08T00:00:00", + "pnl": -5.435774979886787, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49508373939166, + "entry_time": "2021-12-10T00:00:00", + "exit_price": 92.73466658206335, + "exit_time": "2021-12-11T00:00:00", + "pnl": 23.95828426716946, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46436704586412, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.69111891541637, + "exit_time": "2021-12-14T00:00:00", + "pnl": 22.675186955224547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21128313549013, + "entry_time": "2021-12-16T00:00:00", + "exit_price": 93.37756823246967, + "exit_time": "2021-12-17T00:00:00", + "pnl": 16.628509697953575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04218716563327, + "entry_time": "2021-12-19T00:00:00", + "exit_price": 93.00014735551822, + "exit_time": "2021-12-20T00:00:00", + "pnl": -4.203981011504254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.93318531635458, + "entry_time": "2021-12-22T00:00:00", + "exit_price": 92.84116622880475, + "exit_time": "2021-12-23T00:00:00", + "pnl": -9.201908754982924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50637869144558, + "entry_time": "2021-12-25T00:00:00", + "exit_price": 92.66826656058106, + "exit_time": "2021-12-26T00:00:00", + "pnl": 16.18878691354837, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36257300920573, + "entry_time": "2021-12-28T00:00:00", + "exit_price": 92.60779676375832, + "exit_time": "2021-12-29T00:00:00", + "pnl": 24.522375455258327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36220969555443, + "entry_time": "2021-12-31T00:00:00", + "exit_price": 92.1193839744838, + "exit_time": "2022-01-01T00:00:00", + "pnl": -24.28257210706306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89096232869592, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.75394086603562, + "exit_time": "2022-01-04T00:00:00", + "pnl": -13.702146266030013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.10653141004636, + "entry_time": "2022-01-06T00:00:00", + "exit_price": 91.98502552303084, + "exit_time": "2022-01-07T00:00:00", + "pnl": -12.150588701551612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03115476672883, + "entry_time": "2022-01-09T00:00:00", + "exit_price": 92.05866288388766, + "exit_time": "2022-01-10T00:00:00", + "pnl": 2.750811715883117, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.80506699745925, + "entry_time": "2022-01-12T00:00:00", + "exit_price": 91.97004409317438, + "exit_time": "2022-01-13T00:00:00", + "pnl": 16.49770957151304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.3933991191183, + "entry_time": "2022-01-15T00:00:00", + "exit_price": 91.28070286679336, + "exit_time": "2022-01-16T00:00:00", + "pnl": -11.269625232493752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74175784445059, + "entry_time": "2022-01-18T00:00:00", + "exit_price": 91.6733758391721, + "exit_time": "2022-01-19T00:00:00", + "pnl": -6.838200527849381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81901224922302, + "entry_time": "2022-01-21T00:00:00", + "exit_price": 91.84844274508458, + "exit_time": "2022-01-22T00:00:00", + "pnl": 2.9430495861561212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.60313885279771, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.41938832519848, + "exit_time": "2022-01-25T00:00:00", + "pnl": -18.375052759922994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64052127057325, + "entry_time": "2022-01-27T00:00:00", + "exit_price": 91.54200410559555, + "exit_time": "2022-01-28T00:00:00", + "pnl": -9.851716497769303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73590345101391, + "entry_time": "2022-01-30T00:00:00", + "exit_price": 91.62782637305553, + "exit_time": "2022-01-31T00:00:00", + "pnl": -10.80770779583844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79185882856454, + "entry_time": "2022-02-02T00:00:00", + "exit_price": 91.8357946573913, + "exit_time": "2022-02-03T00:00:00", + "pnl": 4.393582882676128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79563500808236, + "entry_time": "2022-02-05T00:00:00", + "exit_price": 92.09144139124615, + "exit_time": "2022-02-06T00:00:00", + "pnl": 29.580638316379293, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.91260250945975, + "entry_time": "2022-02-08T00:00:00", + "exit_price": 91.67552176869381, + "exit_time": "2022-02-09T00:00:00", + "pnl": -23.708074076593277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66062267455895, + "entry_time": "2022-02-11T00:00:00", + "exit_price": 91.64149069106048, + "exit_time": "2022-02-12T00:00:00", + "pnl": -1.913198349846823, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37359630109036, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.51652219716766, + "exit_time": "2022-02-15T00:00:00", + "pnl": 14.292589607730122, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.54575759654935, + "entry_time": "2022-02-17T00:00:00", + "exit_price": 91.58821852619887, + "exit_time": "2022-02-18T00:00:00", + "pnl": 4.246092964952197, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76782809841714, + "entry_time": "2022-02-20T00:00:00", + "exit_price": 91.6119124553235, + "exit_time": "2022-02-21T00:00:00", + "pnl": -15.591564309363548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74629736846254, + "entry_time": "2022-02-23T00:00:00", + "exit_price": 91.61327551923173, + "exit_time": "2022-02-24T00:00:00", + "pnl": -13.302184923080063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.32896871135786, + "entry_time": "2022-02-26T00:00:00", + "exit_price": 91.13780861275266, + "exit_time": "2022-02-27T00:00:00", + "pnl": -19.11600986051951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12507835931243, + "entry_time": "2022-03-01T00:00:00", + "exit_price": 91.13114200203424, + "exit_time": "2022-03-02T00:00:00", + "pnl": 0.6063642721812812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37230639398891, + "entry_time": "2022-03-04T00:00:00", + "exit_price": 91.298526480022, + "exit_time": "2022-03-05T00:00:00", + "pnl": -7.37799139669022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14580661294434, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.26371087049277, + "exit_time": "2022-03-08T00:00:00", + "pnl": 11.79042575484317, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.19265250778471, + "entry_time": "2022-03-10T00:00:00", + "exit_price": 91.34688434505053, + "exit_time": "2022-03-11T00:00:00", + "pnl": 15.423183726581158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.27944969864926, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 91.00376526097061, + "exit_time": "2022-03-14T00:00:00", + "pnl": -27.568443767864892, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12691845430324, + "entry_time": "2022-03-16T00:00:00", + "exit_price": 91.13627424638673, + "exit_time": "2022-03-17T00:00:00", + "pnl": 0.9355792083496794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.90552697963444, + "entry_time": "2022-03-19T00:00:00", + "exit_price": 90.86432013057937, + "exit_time": "2022-03-20T00:00:00", + "pnl": -4.1206849055072325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88314466139805, + "entry_time": "2022-03-22T00:00:00", + "exit_price": 90.85684478131836, + "exit_time": "2022-03-23T00:00:00", + "pnl": -2.629988007969075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8333575750649, + "entry_time": "2022-03-25T00:00:00", + "exit_price": 90.87580958070879, + "exit_time": "2022-03-26T00:00:00", + "pnl": 4.245200564389506, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87723690769735, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.02118341969194, + "exit_time": "2022-03-29T00:00:00", + "pnl": 14.394651199458508, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14559411024791, + "entry_time": "2022-03-31T00:00:00", + "exit_price": 91.1102070847533, + "exit_time": "2022-04-01T00:00:00", + "pnl": -3.5387025494614477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.03652679668626, + "entry_time": "2022-04-03T00:00:00", + "exit_price": 90.64848582455738, + "exit_time": "2022-04-04T00:00:00", + "pnl": -38.80409721288771, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.5160908672533, + "entry_time": "2022-04-06T00:00:00", + "exit_price": 90.67122680039915, + "exit_time": "2022-04-07T00:00:00", + "pnl": 15.513593314585705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49638519206742, + "entry_time": "2022-04-09T00:00:00", + "exit_price": 90.23851904732544, + "exit_time": "2022-04-10T00:00:00", + "pnl": -25.78661447419819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.12623758622358, + "entry_time": "2022-04-12T00:00:00", + "exit_price": 90.13616044249197, + "exit_time": "2022-04-13T00:00:00", + "pnl": 0.9922856268389069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.97730849654188, + "entry_time": "2022-04-15T00:00:00", + "exit_price": 89.93950245741028, + "exit_time": "2022-04-16T00:00:00", + "pnl": -3.7806039131595526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.92103698222829, + "entry_time": "2022-04-18T00:00:00", + "exit_price": 89.92708766921471, + "exit_time": "2022-04-19T00:00:00", + "pnl": 0.6050686986426967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.318742774315, + "entry_time": "2022-04-21T00:00:00", + "exit_price": 90.23642124916759, + "exit_time": "2022-04-22T00:00:00", + "pnl": -8.232152514740676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.21999028274803, + "entry_time": "2022-04-24T00:00:00", + "exit_price": 90.22126197659611, + "exit_time": "2022-04-25T00:00:00", + "pnl": 0.12716938480821227, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84560909030803, + "entry_time": "2022-04-27T00:00:00", + "exit_price": 90.53569591871245, + "exit_time": "2022-04-28T00:00:00", + "pnl": -30.991317159558207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0165686304024, + "entry_time": "2022-04-30T00:00:00", + "exit_price": 90.91735297539282, + "exit_time": "2022-05-01T00:00:00", + "pnl": -9.921565500958707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23908301563729, + "entry_time": "2022-05-03T00:00:00", + "exit_price": 91.14925296519219, + "exit_time": "2022-05-04T00:00:00", + "pnl": -8.98300504451015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22089116397768, + "entry_time": "2022-05-06T00:00:00", + "exit_price": 90.87029928541635, + "exit_time": "2022-05-07T00:00:00", + "pnl": -35.05918785613318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89974631246403, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.06863681183862, + "exit_time": "2022-05-10T00:00:00", + "pnl": 16.889049937458367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.57589026049908, + "entry_time": "2022-05-12T00:00:00", + "exit_price": 91.50862549547844, + "exit_time": "2022-05-13T00:00:00", + "pnl": -6.726476502063861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62801821971621, + "entry_time": "2022-05-15T00:00:00", + "exit_price": 91.81567744205196, + "exit_time": "2022-05-16T00:00:00", + "pnl": 18.76592223357534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.33854066905738, + "entry_time": "2022-05-18T00:00:00", + "exit_price": 90.96569574948703, + "exit_time": "2022-05-19T00:00:00", + "pnl": -37.28449195703547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07274851876404, + "entry_time": "2022-05-21T00:00:00", + "exit_price": 90.95622489428452, + "exit_time": "2022-05-22T00:00:00", + "pnl": -11.652362447952669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.7205106927609, + "entry_time": "2022-05-24T00:00:00", + "exit_price": 90.55232295814028, + "exit_time": "2022-05-25T00:00:00", + "pnl": -16.818773462061642, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.40473126616526, + "entry_time": "2022-05-27T00:00:00", + "exit_price": 90.65640141611814, + "exit_time": "2022-05-28T00:00:00", + "pnl": 25.16701499528864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56665701011867, + "entry_time": "2022-05-30T00:00:00", + "exit_price": 90.46095751045398, + "exit_time": "2022-05-31T00:00:00", + "pnl": -10.569949966469494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.76022002087706, + "entry_time": "2022-06-02T00:00:00", + "exit_price": 90.81381751472117, + "exit_time": "2022-06-03T00:00:00", + "pnl": 5.359749384410861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23375682446748, + "entry_time": "2022-06-05T00:00:00", + "exit_price": 91.01190578025698, + "exit_time": "2022-06-06T00:00:00", + "pnl": -22.185104421049573, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56046438309357, + "entry_time": "2022-06-08T00:00:00", + "exit_price": 90.6501420569037, + "exit_time": "2022-06-09T00:00:00", + "pnl": 8.967767381012948, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45985538510017, + "entry_time": "2022-06-11T00:00:00", + "exit_price": 90.32205823485288, + "exit_time": "2022-06-12T00:00:00", + "pnl": -13.779715024729455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.4213362857644, + "entry_time": "2022-06-14T00:00:00", + "exit_price": 90.3254460973393, + "exit_time": "2022-06-15T00:00:00", + "pnl": -9.5890188425102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.3632620077688, + "entry_time": "2022-06-17T00:00:00", + "exit_price": 90.1350438366559, + "exit_time": "2022-06-18T00:00:00", + "pnl": -22.821817111289988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.53738507774712, + "entry_time": "2022-06-20T00:00:00", + "exit_price": 90.43902960493799, + "exit_time": "2022-06-21T00:00:00", + "pnl": -9.835547280913204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28282897059066, + "entry_time": "2022-06-23T00:00:00", + "exit_price": 90.42427634098117, + "exit_time": "2022-06-24T00:00:00", + "pnl": 14.14473703905088, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.65923583486823, + "entry_time": "2022-06-26T00:00:00", + "exit_price": 90.60873415539405, + "exit_time": "2022-06-27T00:00:00", + "pnl": -5.0501679474180605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.39024714619487, + "entry_time": "2022-06-29T00:00:00", + "exit_price": 90.66523349021156, + "exit_time": "2022-06-30T00:00:00", + "pnl": 27.49863440166962, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82876323237488, + "entry_time": "2022-07-02T00:00:00", + "exit_price": 90.97466728886246, + "exit_time": "2022-07-03T00:00:00", + "pnl": 14.590405648758065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89452843928451, + "entry_time": "2022-07-05T00:00:00", + "exit_price": 90.67041116090726, + "exit_time": "2022-07-06T00:00:00", + "pnl": -22.411727837724982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63870699300467, + "entry_time": "2022-07-08T00:00:00", + "exit_price": 90.60806866533521, + "exit_time": "2022-07-09T00:00:00", + "pnl": -3.0638327669464616, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09022889967974, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 91.33132395141395, + "exit_time": "2022-07-12T00:00:00", + "pnl": 24.109505173420587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1422566167072, + "entry_time": "2022-07-14T00:00:00", + "exit_price": 91.02336448195068, + "exit_time": "2022-07-15T00:00:00", + "pnl": -11.889213475652127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.85171345155103, + "entry_time": "2022-07-17T00:00:00", + "exit_price": 90.92826438920278, + "exit_time": "2022-07-18T00:00:00", + "pnl": 7.65509376517457, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.99679364605882, + "entry_time": "2022-07-20T00:00:00", + "exit_price": 91.02558962193989, + "exit_time": "2022-07-21T00:00:00", + "pnl": 2.8795975881067193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86654130293296, + "entry_time": "2022-07-23T00:00:00", + "exit_price": 91.1805076876075, + "exit_time": "2022-07-24T00:00:00", + "pnl": 31.396638467454352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20590970247866, + "entry_time": "2022-07-26T00:00:00", + "exit_price": 91.04093233048125, + "exit_time": "2022-07-27T00:00:00", + "pnl": -16.497737199740925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.94025278141096, + "entry_time": "2022-07-29T00:00:00", + "exit_price": 91.1695372755258, + "exit_time": "2022-07-30T00:00:00", + "pnl": 22.928449411483598, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55006804279205, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.74946747581956, + "exit_time": "2022-08-02T00:00:00", + "pnl": 19.939943302750862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.08829699168929, + "entry_time": "2022-08-04T00:00:00", + "exit_price": 92.17204398025235, + "exit_time": "2022-08-05T00:00:00", + "pnl": 8.374698856306395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82928257766984, + "entry_time": "2022-08-07T00:00:00", + "exit_price": 91.80555288724541, + "exit_time": "2022-08-08T00:00:00", + "pnl": -2.3729690424431737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03756487304749, + "entry_time": "2022-08-10T00:00:00", + "exit_price": 91.92246232242579, + "exit_time": "2022-08-11T00:00:00", + "pnl": -11.51025506216996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12455329081939, + "entry_time": "2022-08-13T00:00:00", + "exit_price": 92.03614640032846, + "exit_time": "2022-08-14T00:00:00", + "pnl": -8.840689049092987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43863634543025, + "entry_time": "2022-08-16T00:00:00", + "exit_price": 92.57880144701099, + "exit_time": "2022-08-17T00:00:00", + "pnl": 14.016510158073459, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56629976489471, + "entry_time": "2022-08-19T00:00:00", + "exit_price": 92.63602712862732, + "exit_time": "2022-08-20T00:00:00", + "pnl": 6.972736373261057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99359531127284, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.20326657631179, + "exit_time": "2022-08-23T00:00:00", + "pnl": 20.967126503894917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36371229951278, + "entry_time": "2022-08-25T00:00:00", + "exit_price": 93.15013947578183, + "exit_time": "2022-08-26T00:00:00", + "pnl": -21.357282373095643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39786147444197, + "entry_time": "2022-08-28T00:00:00", + "exit_price": 93.32525340472, + "exit_time": "2022-08-29T00:00:00", + "pnl": -7.260806972196576, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1699951830038, + "entry_time": "2022-08-31T00:00:00", + "exit_price": 92.94415449917722, + "exit_time": "2022-09-01T00:00:00", + "pnl": -22.584068382658984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06237685823791, + "entry_time": "2022-09-03T00:00:00", + "exit_price": 92.88599230986543, + "exit_time": "2022-09-04T00:00:00", + "pnl": -17.63845483724822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09341138541603, + "entry_time": "2022-09-06T00:00:00", + "exit_price": 93.29146577709628, + "exit_time": "2022-09-07T00:00:00", + "pnl": 19.805439168024463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.45209900958335, + "entry_time": "2022-09-09T00:00:00", + "exit_price": 93.38892182999521, + "exit_time": "2022-09-10T00:00:00", + "pnl": -6.317717958813773, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42662435004, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 93.86711355565461, + "exit_time": "2022-09-13T00:00:00", + "pnl": 44.0489205614611, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43026737045712, + "entry_time": "2022-09-15T00:00:00", + "exit_price": 94.68555551249223, + "exit_time": "2022-09-16T00:00:00", + "pnl": 25.528814203511274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.34275603824344, + "entry_time": "2022-09-18T00:00:00", + "exit_price": 94.26115762602807, + "exit_time": "2022-09-19T00:00:00", + "pnl": -8.159841221537079, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81665975574816, + "entry_time": "2022-09-21T00:00:00", + "exit_price": 94.69084237577945, + "exit_time": "2022-09-22T00:00:00", + "pnl": -12.581737996870856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.80375023000443, + "entry_time": "2022-09-24T00:00:00", + "exit_price": 94.71118042427594, + "exit_time": "2022-09-25T00:00:00", + "pnl": -9.25698057284876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46412500503037, + "entry_time": "2022-09-27T00:00:00", + "exit_price": 94.6314533607136, + "exit_time": "2022-09-28T00:00:00", + "pnl": 16.73283556832388, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6742741594175, + "entry_time": "2022-09-30T00:00:00", + "exit_price": 94.69072074935896, + "exit_time": "2022-10-01T00:00:00", + "pnl": 1.6446589941466527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.12667461230008, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 94.99949417466048, + "exit_time": "2022-10-04T00:00:00", + "pnl": -12.718043763959486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92543412582965, + "entry_time": "2022-10-06T00:00:00", + "exit_price": 94.72977842157017, + "exit_time": "2022-10-07T00:00:00", + "pnl": -19.565570425947953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5701038761525, + "entry_time": "2022-10-09T00:00:00", + "exit_price": 94.59977663872266, + "exit_time": "2022-10-10T00:00:00", + "pnl": 2.967276257015783, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29273313619652, + "entry_time": "2022-10-12T00:00:00", + "exit_price": 94.40263092608106, + "exit_time": "2022-10-13T00:00:00", + "pnl": 10.98977898845419, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28632878234235, + "entry_time": "2022-10-15T00:00:00", + "exit_price": 94.53250654562353, + "exit_time": "2022-10-16T00:00:00", + "pnl": 24.61777632811817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49417223286694, + "entry_time": "2022-10-18T00:00:00", + "exit_price": 94.21737477440588, + "exit_time": "2022-10-19T00:00:00", + "pnl": -27.67974584610613, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21700275153675, + "entry_time": "2022-10-21T00:00:00", + "exit_price": 94.24257812297434, + "exit_time": "2022-10-22T00:00:00", + "pnl": 2.5575371437582817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33447437173405, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.36500808099656, + "exit_time": "2022-10-25T00:00:00", + "pnl": 3.0533709262513753, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62192540785215, + "entry_time": "2022-10-27T00:00:00", + "exit_price": 94.95467067184597, + "exit_time": "2022-10-28T00:00:00", + "pnl": 33.274526399382864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32280422773096, + "entry_time": "2022-10-30T00:00:00", + "exit_price": 95.27797141913928, + "exit_time": "2022-10-31T00:00:00", + "pnl": -4.483280859167849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.85159096418194, + "entry_time": "2022-11-02T00:00:00", + "exit_price": 95.9332147424965, + "exit_time": "2022-11-03T00:00:00", + "pnl": 8.162377831456524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87171080557965, + "entry_time": "2022-11-05T00:00:00", + "exit_price": 95.72359330386428, + "exit_time": "2022-11-06T00:00:00", + "pnl": -14.811750171537597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38266657654839, + "entry_time": "2022-11-08T00:00:00", + "exit_price": 95.28429001378173, + "exit_time": "2022-11-09T00:00:00", + "pnl": -9.837656276665996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01211175536164, + "entry_time": "2022-11-11T00:00:00", + "exit_price": 94.84310882657518, + "exit_time": "2022-11-12T00:00:00", + "pnl": -16.900292878646894, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.59049236660377, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.35514007446828, + "exit_time": "2022-11-15T00:00:00", + "pnl": -23.535229213548803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9357580237877, + "entry_time": "2022-11-17T00:00:00", + "exit_price": 94.05072699188574, + "exit_time": "2022-11-18T00:00:00", + "pnl": 11.496896809804014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00889117962726, + "entry_time": "2022-11-20T00:00:00", + "exit_price": 94.18219892584725, + "exit_time": "2022-11-21T00:00:00", + "pnl": 17.330774621999012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96556912199465, + "entry_time": "2022-11-23T00:00:00", + "exit_price": 93.87607469195584, + "exit_time": "2022-11-24T00:00:00", + "pnl": -8.949443003881186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60138099475903, + "entry_time": "2022-11-26T00:00:00", + "exit_price": 93.55643441032785, + "exit_time": "2022-11-27T00:00:00", + "pnl": -4.494658443117316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88066522817982, + "entry_time": "2022-11-29T00:00:00", + "exit_price": 93.67510822228188, + "exit_time": "2022-11-30T00:00:00", + "pnl": -20.555700589794412, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69837663925773, + "entry_time": "2022-12-02T00:00:00", + "exit_price": 93.91860336977558, + "exit_time": "2022-12-03T00:00:00", + "pnl": 22.02267305178509, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.70107216756422, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.66971331829183, + "exit_time": "2022-12-06T00:00:00", + "pnl": -3.135884927239374, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87708149049162, + "entry_time": "2022-12-08T00:00:00", + "exit_price": 93.72163687944706, + "exit_time": "2022-12-09T00:00:00", + "pnl": -15.54446110445582, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94898877051006, + "entry_time": "2022-12-11T00:00:00", + "exit_price": 93.95474043698636, + "exit_time": "2022-12-12T00:00:00", + "pnl": 0.5751666476299988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6415881902333, + "entry_time": "2022-12-14T00:00:00", + "exit_price": 93.34129447656329, + "exit_time": "2022-12-15T00:00:00", + "pnl": -30.029371367001545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94345435925221, + "entry_time": "2022-12-17T00:00:00", + "exit_price": 92.60307524718807, + "exit_time": "2022-12-18T00:00:00", + "pnl": -34.03791120641415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.18983136258926, + "entry_time": "2022-12-20T00:00:00", + "exit_price": 92.07720168711411, + "exit_time": "2022-12-21T00:00:00", + "pnl": -11.26296754751479, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00591795170637, + "entry_time": "2022-12-23T00:00:00", + "exit_price": 91.73390898252362, + "exit_time": "2022-12-24T00:00:00", + "pnl": -27.200896918274964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87915537734212, + "entry_time": "2022-12-26T00:00:00", + "exit_price": 92.05356230153482, + "exit_time": "2022-12-27T00:00:00", + "pnl": 17.44069241927093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.19249105693206, + "entry_time": "2022-12-29T00:00:00", + "exit_price": 92.35715717263174, + "exit_time": "2022-12-30T00:00:00", + "pnl": 16.466611569968848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92376356586936, + "entry_time": "2023-01-01T00:00:00", + "exit_price": 92.8642597181964, + "exit_time": "2023-01-02T00:00:00", + "pnl": -5.950384767297123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08761417167571, + "entry_time": "2023-01-04T00:00:00", + "exit_price": 93.3787010770275, + "exit_time": "2023-01-05T00:00:00", + "pnl": 29.108690535178994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22887351223902, + "entry_time": "2023-01-07T00:00:00", + "exit_price": 93.18791972112416, + "exit_time": "2023-01-08T00:00:00", + "pnl": -4.095379111485897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71839956451682, + "entry_time": "2023-01-10T00:00:00", + "exit_price": 92.72871333258459, + "exit_time": "2023-01-11T00:00:00", + "pnl": 1.0313768067774731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71285525012034, + "entry_time": "2023-01-13T00:00:00", + "exit_price": 92.95484908903208, + "exit_time": "2023-01-14T00:00:00", + "pnl": 24.19938389117391, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09252551101909, + "entry_time": "2023-01-16T00:00:00", + "exit_price": 93.19565426763862, + "exit_time": "2023-01-17T00:00:00", + "pnl": 10.312875661952603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34851063541004, + "entry_time": "2023-01-19T00:00:00", + "exit_price": 93.36918149511725, + "exit_time": "2023-01-20T00:00:00", + "pnl": 2.067085970720939, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.29871325433136, + "entry_time": "2023-01-22T00:00:00", + "exit_price": 93.43191348926673, + "exit_time": "2023-01-23T00:00:00", + "pnl": 13.320023493537292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54163438380152, + "entry_time": "2023-01-25T00:00:00", + "exit_price": 93.70996022231523, + "exit_time": "2023-01-26T00:00:00", + "pnl": 16.83258385137094, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44351635290319, + "entry_time": "2023-01-28T00:00:00", + "exit_price": 93.3607156455027, + "exit_time": "2023-01-29T00:00:00", + "pnl": -8.280070740049439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25194927165909, + "entry_time": "2023-01-31T00:00:00", + "exit_price": 93.09482587993352, + "exit_time": "2023-02-01T00:00:00", + "pnl": -15.712339172556256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05964578316673, + "entry_time": "2023-02-03T00:00:00", + "exit_price": 93.1247824238807, + "exit_time": "2023-02-04T00:00:00", + "pnl": 6.513664071397329, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60195304694001, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.5077083162264, + "exit_time": "2023-02-07T00:00:00", + "pnl": -9.424473071361206, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32915625849455, + "entry_time": "2023-02-09T00:00:00", + "exit_price": 93.41904859018952, + "exit_time": "2023-02-10T00:00:00", + "pnl": 8.989233169496913, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86240170807343, + "entry_time": "2023-02-12T00:00:00", + "exit_price": 93.74311994285968, + "exit_time": "2023-02-13T00:00:00", + "pnl": -11.928176521375633, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92758592270172, + "entry_time": "2023-02-15T00:00:00", + "exit_price": 93.91004727072426, + "exit_time": "2023-02-16T00:00:00", + "pnl": -1.7538651977460518, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.90746519420465, + "entry_time": "2023-02-18T00:00:00", + "exit_price": 94.16764239198312, + "exit_time": "2023-02-19T00:00:00", + "pnl": 26.017719777847503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.44892482562024, + "entry_time": "2023-02-21T00:00:00", + "exit_price": 94.29820349772235, + "exit_time": "2023-02-22T00:00:00", + "pnl": -15.072132789788384, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29660996193417, + "entry_time": "2023-02-24T00:00:00", + "exit_price": 94.34630077913107, + "exit_time": "2023-02-25T00:00:00", + "pnl": 4.969081719690394, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28533190136021, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.32163037675376, + "exit_time": "2023-02-28T00:00:00", + "pnl": 3.629847539355069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20619082469412, + "entry_time": "2023-03-02T00:00:00", + "exit_price": 93.94806731557186, + "exit_time": "2023-03-03T00:00:00", + "pnl": -25.812350912225668, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5296456958934, + "entry_time": "2023-03-05T00:00:00", + "exit_price": 93.2046797163239, + "exit_time": "2023-03-06T00:00:00", + "pnl": -32.49659795694981, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32570812965447, + "entry_time": "2023-03-08T00:00:00", + "exit_price": 93.27835226241817, + "exit_time": "2023-03-09T00:00:00", + "pnl": -4.735586723630547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18052001757422, + "entry_time": "2023-03-11T00:00:00", + "exit_price": 93.21374473155299, + "exit_time": "2023-03-12T00:00:00", + "pnl": 3.322471397876825, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13943605219033, + "entry_time": "2023-03-14T00:00:00", + "exit_price": 93.26046795573633, + "exit_time": "2023-03-15T00:00:00", + "pnl": 12.103190354599747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21960702536101, + "entry_time": "2023-03-17T00:00:00", + "exit_price": 92.64774686400108, + "exit_time": "2023-03-18T00:00:00", + "pnl": -57.18601613599361, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31556350692, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.46149005259649, + "exit_time": "2023-03-21T00:00:00", + "pnl": 14.592654567648822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52377288657563, + "entry_time": "2023-03-23T00:00:00", + "exit_price": 92.23839203319807, + "exit_time": "2023-03-24T00:00:00", + "pnl": -28.53808533775606, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6963758650249, + "entry_time": "2023-03-26T00:00:00", + "exit_price": 92.70207115016164, + "exit_time": "2023-03-27T00:00:00", + "pnl": 0.5695285136738448, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1906639429263, + "entry_time": "2023-03-29T00:00:00", + "exit_price": 93.35726613372299, + "exit_time": "2023-03-30T00:00:00", + "pnl": 16.66021907966808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16344204103119, + "entry_time": "2023-04-01T00:00:00", + "exit_price": 93.2066382813918, + "exit_time": "2023-04-02T00:00:00", + "pnl": 4.319624036061498, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0471045722787, + "entry_time": "2023-04-04T00:00:00", + "exit_price": 92.82199720210754, + "exit_time": "2023-04-05T00:00:00", + "pnl": -22.5107370171159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8989666578373, + "entry_time": "2023-04-07T00:00:00", + "exit_price": 92.77857374465485, + "exit_time": "2023-04-08T00:00:00", + "pnl": -12.03929131824566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.70919453056075, + "entry_time": "2023-04-10T00:00:00", + "exit_price": 92.74465000028516, + "exit_time": "2023-04-11T00:00:00", + "pnl": 3.545546972441116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60934516564298, + "entry_time": "2023-04-13T00:00:00", + "exit_price": 92.96618622577306, + "exit_time": "2023-04-14T00:00:00", + "pnl": 35.68410601300798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78501792806425, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.76326607151933, + "exit_time": "2023-04-17T00:00:00", + "pnl": -2.1751856544923953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62556378625803, + "entry_time": "2023-04-19T00:00:00", + "exit_price": 92.65556548612001, + "exit_time": "2023-04-20T00:00:00", + "pnl": 3.0001699861983866, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68684981308908, + "entry_time": "2023-04-22T00:00:00", + "exit_price": 92.58597625405771, + "exit_time": "2023-04-23T00:00:00", + "pnl": -10.087355903137052, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86536967969084, + "entry_time": "2023-04-25T00:00:00", + "exit_price": 92.75020367672924, + "exit_time": "2023-04-26T00:00:00", + "pnl": -11.516600296160107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75062990936559, + "entry_time": "2023-04-28T00:00:00", + "exit_price": 92.98349381034318, + "exit_time": "2023-04-29T00:00:00", + "pnl": 23.286390097759124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04847278769076, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 93.06193871613516, + "exit_time": "2023-05-02T00:00:00", + "pnl": 1.3465928444404085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60529611931622, + "entry_time": "2023-05-04T00:00:00", + "exit_price": 92.60807864200518, + "exit_time": "2023-05-05T00:00:00", + "pnl": 0.2782522688960398, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90198815097345, + "entry_time": "2023-05-07T00:00:00", + "exit_price": 92.84425841280351, + "exit_time": "2023-05-08T00:00:00", + "pnl": -5.772973816993954, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66689924421028, + "entry_time": "2023-05-10T00:00:00", + "exit_price": 92.6348345250126, + "exit_time": "2023-05-11T00:00:00", + "pnl": -3.2064719197691716, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74311085652141, + "entry_time": "2023-05-13T00:00:00", + "exit_price": 92.87596365908365, + "exit_time": "2023-05-14T00:00:00", + "pnl": 13.285280256224041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15467982049428, + "entry_time": "2023-05-16T00:00:00", + "exit_price": 93.06917346679761, + "exit_time": "2023-05-17T00:00:00", + "pnl": -8.550635369667248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16088604193163, + "entry_time": "2023-05-19T00:00:00", + "exit_price": 93.1767131466551, + "exit_time": "2023-05-20T00:00:00", + "pnl": 1.5827104723470597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59084973064017, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.3728256379574, + "exit_time": "2023-05-23T00:00:00", + "pnl": -21.80240926827679, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83907971020484, + "entry_time": "2023-05-25T00:00:00", + "exit_price": 94.05336598759212, + "exit_time": "2023-05-26T00:00:00", + "pnl": 21.428627738727357, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15556945611712, + "entry_time": "2023-05-28T00:00:00", + "exit_price": 94.11170249260897, + "exit_time": "2023-05-29T00:00:00", + "pnl": -4.3866963508151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26806948858284, + "entry_time": "2023-05-31T00:00:00", + "exit_price": 94.19864576006458, + "exit_time": "2023-06-01T00:00:00", + "pnl": -6.942372851825951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02469106007196, + "entry_time": "2023-06-03T00:00:00", + "exit_price": 94.37555658552148, + "exit_time": "2023-06-04T00:00:00", + "pnl": 35.0865525449521, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.47191103799679, + "entry_time": "2023-06-06T00:00:00", + "exit_price": 94.46329135212792, + "exit_time": "2023-06-07T00:00:00", + "pnl": -0.861968586886519, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.72605970139526, + "entry_time": "2023-06-09T00:00:00", + "exit_price": 94.42143976779836, + "exit_time": "2023-06-10T00:00:00", + "pnl": -30.461993359689643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5510290269881, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.42138738037778, + "exit_time": "2023-06-13T00:00:00", + "pnl": -12.964164661032385, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49725923626676, + "entry_time": "2023-06-15T00:00:00", + "exit_price": 94.83017838441384, + "exit_time": "2023-06-16T00:00:00", + "pnl": 33.291914814708434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.96394971087318, + "entry_time": "2023-06-18T00:00:00", + "exit_price": 94.80946954515628, + "exit_time": "2023-06-19T00:00:00", + "pnl": -15.44801657169046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.05895494780961, + "entry_time": "2023-06-21T00:00:00", + "exit_price": 94.7764741456602, + "exit_time": "2023-06-22T00:00:00", + "pnl": -28.248080214940785, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.82916340306784, + "entry_time": "2023-06-24T00:00:00", + "exit_price": 94.49615933800648, + "exit_time": "2023-06-25T00:00:00", + "pnl": -33.30040650613597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53903204926397, + "entry_time": "2023-06-27T00:00:00", + "exit_price": 94.2199238563033, + "exit_time": "2023-06-28T00:00:00", + "pnl": -31.91081929606696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15553425915468, + "entry_time": "2023-06-30T00:00:00", + "exit_price": 94.3233546324033, + "exit_time": "2023-07-01T00:00:00", + "pnl": 16.782037324861676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29143609072966, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.34909878462929, + "exit_time": "2023-07-04T00:00:00", + "pnl": 5.766269389962986, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79549173605429, + "entry_time": "2023-07-06T00:00:00", + "exit_price": 94.86012460829116, + "exit_time": "2023-07-07T00:00:00", + "pnl": 6.463287223687075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62257045149929, + "entry_time": "2023-07-09T00:00:00", + "exit_price": 94.36740770267758, + "exit_time": "2023-07-10T00:00:00", + "pnl": -25.516274882170364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11233427565722, + "entry_time": "2023-07-12T00:00:00", + "exit_price": 94.28815691102787, + "exit_time": "2023-07-13T00:00:00", + "pnl": 17.582263537065046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89234388227695, + "entry_time": "2023-07-15T00:00:00", + "exit_price": 93.64456440149245, + "exit_time": "2023-07-16T00:00:00", + "pnl": -24.77794807845015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.62943347351336, + "entry_time": "2023-07-18T00:00:00", + "exit_price": 93.64788638508941, + "exit_time": "2023-07-19T00:00:00", + "pnl": 1.8452911576048336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1774162868962, + "entry_time": "2023-07-21T00:00:00", + "exit_price": 94.00402666791075, + "exit_time": "2023-07-22T00:00:00", + "pnl": -17.338961898545335, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.04453321057153, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.96838361247781, + "exit_time": "2023-07-25T00:00:00", + "pnl": -7.614959809372124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88321586599362, + "entry_time": "2023-07-27T00:00:00", + "exit_price": 93.90884833929827, + "exit_time": "2023-07-28T00:00:00", + "pnl": 2.5632473304654013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7179718780841, + "entry_time": "2023-07-30T00:00:00", + "exit_price": 93.74821494678119, + "exit_time": "2023-07-31T00:00:00", + "pnl": 3.024306869708937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9038655497103, + "entry_time": "2023-08-02T00:00:00", + "exit_price": 93.83750554707963, + "exit_time": "2023-08-03T00:00:00", + "pnl": -6.6360002630673876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88584036004717, + "entry_time": "2023-08-05T00:00:00", + "exit_price": 93.9446210717662, + "exit_time": "2023-08-06T00:00:00", + "pnl": 5.878071171903798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10339943212904, + "entry_time": "2023-08-08T00:00:00", + "exit_price": 94.0848941093554, + "exit_time": "2023-08-09T00:00:00", + "pnl": -1.8505322773634703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.14949796034026, + "entry_time": "2023-08-11T00:00:00", + "exit_price": 93.8874166822761, + "exit_time": "2023-08-12T00:00:00", + "pnl": -26.20812780641586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75795965886635, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 93.82124488293752, + "exit_time": "2023-08-15T00:00:00", + "pnl": 6.328522407116566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65346951457661, + "entry_time": "2023-08-17T00:00:00", + "exit_price": 93.61396660096294, + "exit_time": "2023-08-18T00:00:00", + "pnl": -3.9502913613674195, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54800539421142, + "entry_time": "2023-08-20T00:00:00", + "exit_price": 93.46513172439276, + "exit_time": "2023-08-21T00:00:00", + "pnl": -8.287366981865318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04018712803396, + "entry_time": "2023-08-23T00:00:00", + "exit_price": 93.2845186523261, + "exit_time": "2023-08-24T00:00:00", + "pnl": 24.433152429213578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80052936345986, + "entry_time": "2023-08-26T00:00:00", + "exit_price": 93.65349927893294, + "exit_time": "2023-08-27T00:00:00", + "pnl": -14.70300845269179, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93158855841354, + "entry_time": "2023-08-29T00:00:00", + "exit_price": 93.79425107834362, + "exit_time": "2023-08-30T00:00:00", + "pnl": -13.733748006991675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55284494377143, + "entry_time": "2023-09-01T00:00:00", + "exit_price": 93.33529354683158, + "exit_time": "2023-09-02T00:00:00", + "pnl": -21.75513969398537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.678819649887, + "entry_time": "2023-09-04T00:00:00", + "exit_price": 93.76309874382866, + "exit_time": "2023-09-05T00:00:00", + "pnl": 8.427909394166022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.06380422690373, + "entry_time": "2023-09-07T00:00:00", + "exit_price": 94.34837478850592, + "exit_time": "2023-09-08T00:00:00", + "pnl": 28.45705616021945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28272356925105, + "entry_time": "2023-09-10T00:00:00", + "exit_price": 94.08986442511201, + "exit_time": "2023-09-11T00:00:00", + "pnl": -19.285914413903527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19668777653186, + "entry_time": "2023-09-13T00:00:00", + "exit_price": 93.9155347262711, + "exit_time": "2023-09-14T00:00:00", + "pnl": -28.115305026075532, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86963033561572, + "entry_time": "2023-09-16T00:00:00", + "exit_price": 94.02605497205086, + "exit_time": "2023-09-17T00:00:00", + "pnl": 15.642463643513338, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07735953777274, + "entry_time": "2023-09-19T00:00:00", + "exit_price": 93.92691564488518, + "exit_time": "2023-09-20T00:00:00", + "pnl": -15.044389288755156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.63814938665311, + "entry_time": "2023-09-22T00:00:00", + "exit_price": 93.6176086632684, + "exit_time": "2023-09-23T00:00:00", + "pnl": -2.054072338471258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71204578933798, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.41015509320589, + "exit_time": "2023-09-26T00:00:00", + "pnl": -30.189069613209085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42767992948876, + "entry_time": "2023-09-28T00:00:00", + "exit_price": 93.23852235526199, + "exit_time": "2023-09-29T00:00:00", + "pnl": -18.915757422676904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49442961672796, + "entry_time": "2023-10-01T00:00:00", + "exit_price": 93.43422929731483, + "exit_time": "2023-10-02T00:00:00", + "pnl": -6.020031941312709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.28736530415493, + "entry_time": "2023-10-04T00:00:00", + "exit_price": 93.12218377264868, + "exit_time": "2023-10-05T00:00:00", + "pnl": -16.518153150624926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1091934992091, + "entry_time": "2023-10-07T00:00:00", + "exit_price": 92.97579394436632, + "exit_time": "2023-10-08T00:00:00", + "pnl": -13.33995548427822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87630575654731, + "entry_time": "2023-10-10T00:00:00", + "exit_price": 92.64709318534976, + "exit_time": "2023-10-11T00:00:00", + "pnl": -22.921257119755012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49382854321888, + "entry_time": "2023-10-13T00:00:00", + "exit_price": 92.15699292788067, + "exit_time": "2023-10-14T00:00:00", + "pnl": -33.68356153382166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04266303105983, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.9313781112256, + "exit_time": "2023-10-17T00:00:00", + "pnl": -11.128491983423316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.69530603069572, + "entry_time": "2023-10-19T00:00:00", + "exit_price": 91.82075180753827, + "exit_time": "2023-10-20T00:00:00", + "pnl": 12.544577684255387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00003866180036, + "entry_time": "2023-10-22T00:00:00", + "exit_price": 91.769068469798, + "exit_time": "2023-10-23T00:00:00", + "pnl": -23.09701920023599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62148930928706, + "entry_time": "2023-10-25T00:00:00", + "exit_price": 92.0232146586156, + "exit_time": "2023-10-26T00:00:00", + "pnl": 40.172534932854376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05026787864645, + "entry_time": "2023-10-28T00:00:00", + "exit_price": 91.7648966725291, + "exit_time": "2023-10-29T00:00:00", + "pnl": -28.53712061173468, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45047976504434, + "entry_time": "2023-10-31T00:00:00", + "exit_price": 91.57906184617835, + "exit_time": "2023-11-01T00:00:00", + "pnl": 12.858208113401304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73227416508321, + "entry_time": "2023-11-03T00:00:00", + "exit_price": 91.39276167792192, + "exit_time": "2023-11-04T00:00:00", + "pnl": -33.951248716128646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43027834183452, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.72614964359053, + "exit_time": "2023-11-07T00:00:00", + "pnl": 29.587130175600862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22140030401876, + "entry_time": "2023-11-09T00:00:00", + "exit_price": 92.40388767907393, + "exit_time": "2023-11-10T00:00:00", + "pnl": 18.248737505517454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6481057355818, + "entry_time": "2023-11-12T00:00:00", + "exit_price": 92.68848188004498, + "exit_time": "2023-11-13T00:00:00", + "pnl": 4.037614446318116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71473698288804, + "entry_time": "2023-11-15T00:00:00", + "exit_price": 92.70268409440689, + "exit_time": "2023-11-16T00:00:00", + "pnl": -1.2052888481150603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43854075921618, + "entry_time": "2023-11-18T00:00:00", + "exit_price": 92.44140071332018, + "exit_time": "2023-11-19T00:00:00", + "pnl": 0.28599541039966425, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74726961853332, + "entry_time": "2023-11-21T00:00:00", + "exit_price": 92.8365056762946, + "exit_time": "2023-11-22T00:00:00", + "pnl": 8.92360577612834, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88893089201021, + "entry_time": "2023-11-24T00:00:00", + "exit_price": 93.26317095880032, + "exit_time": "2023-11-25T00:00:00", + "pnl": 37.4240066790108, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37686063355893, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 93.01130398358468, + "exit_time": "2023-11-28T00:00:00", + "pnl": -36.5556649974252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9244172505916, + "entry_time": "2023-11-30T00:00:00", + "exit_price": 92.89449208176279, + "exit_time": "2023-12-01T00:00:00", + "pnl": -2.992516882881091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93827683979754, + "entry_time": "2023-12-03T00:00:00", + "exit_price": 93.6532995649937, + "exit_time": "2023-12-04T00:00:00", + "pnl": -28.497727480383617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42639590375148, + "entry_time": "2023-12-06T00:00:00", + "exit_price": 93.75213347979019, + "exit_time": "2023-12-07T00:00:00", + "pnl": 32.57375760387049, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.0270700566813, + "entry_time": "2023-12-09T00:00:00", + "exit_price": 93.76146992741955, + "exit_time": "2023-12-10T00:00:00", + "pnl": -26.56001292617418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10225140410179, + "entry_time": "2023-12-12T00:00:00", + "exit_price": 92.81690399898379, + "exit_time": "2023-12-13T00:00:00", + "pnl": -28.534740511800294, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0438108934807, + "entry_time": "2023-12-15T00:00:00", + "exit_price": 92.80207795946215, + "exit_time": "2023-12-16T00:00:00", + "pnl": -24.173293401854323, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12592905184015, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 93.15713134695487, + "exit_time": "2023-12-19T00:00:00", + "pnl": 3.1202295114724166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21575520670791, + "entry_time": "2023-12-21T00:00:00", + "exit_price": 93.31507102860735, + "exit_time": "2023-12-22T00:00:00", + "pnl": 9.93158218994381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2320901589937, + "entry_time": "2023-12-24T00:00:00", + "exit_price": 93.15393731859652, + "exit_time": "2023-12-25T00:00:00", + "pnl": -7.815284039718051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07037591089997, + "entry_time": "2023-12-27T00:00:00", + "exit_price": 93.3198194947649, + "exit_time": "2023-12-28T00:00:00", + "pnl": 24.944358386493093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69216760463115, + "entry_time": "2023-12-30T00:00:00", + "exit_price": 94.07388089953058, + "exit_time": "2023-12-31T00:00:00", + "pnl": 38.17132948994271, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.64149353573185, + "entry_time": "2024-01-02T00:00:00", + "exit_price": 94.71271228263036, + "exit_time": "2024-01-03T00:00:00", + "pnl": 7.121874689850927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.11471503048601, + "entry_time": "2024-01-05T00:00:00", + "exit_price": 94.98751858071931, + "exit_time": "2024-01-06T00:00:00", + "pnl": -12.719644976669997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7067835294734, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.74844014533139, + "exit_time": "2024-01-09T00:00:00", + "pnl": 4.16566158579883, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.02489656616589, + "entry_time": "2024-01-11T00:00:00", + "exit_price": 94.98294992874101, + "exit_time": "2024-01-12T00:00:00", + "pnl": -4.194663742488558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.71598064705562, + "entry_time": "2024-01-14T00:00:00", + "exit_price": 94.90144093756582, + "exit_time": "2024-01-15T00:00:00", + "pnl": 18.546029051020696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88369269337046, + "entry_time": "2024-01-17T00:00:00", + "exit_price": 94.99127786199946, + "exit_time": "2024-01-18T00:00:00", + "pnl": 10.75851686290008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.25279588129149, + "entry_time": "2024-01-20T00:00:00", + "exit_price": 94.98339215080473, + "exit_time": "2024-01-21T00:00:00", + "pnl": -26.94037304867578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84625570624047, + "entry_time": "2024-01-23T00:00:00", + "exit_price": 94.50594333071952, + "exit_time": "2024-01-24T00:00:00", + "pnl": -34.031237552095206, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50759103681193, + "entry_time": "2024-01-26T00:00:00", + "exit_price": 94.60423833142119, + "exit_time": "2024-01-27T00:00:00", + "pnl": 9.664729460925514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.58324904624197, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.89219195707862, + "exit_time": "2024-01-30T00:00:00", + "pnl": 30.894291083664882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65911048978346, + "entry_time": "2024-02-01T00:00:00", + "exit_price": 94.7149396953146, + "exit_time": "2024-02-02T00:00:00", + "pnl": 5.582920553113979, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.87432845164759, + "entry_time": "2024-02-04T00:00:00", + "exit_price": 94.68840177129488, + "exit_time": "2024-02-05T00:00:00", + "pnl": -18.592668035270776, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.93449198055023, + "entry_time": "2024-02-07T00:00:00", + "exit_price": 95.32948554144308, + "exit_time": "2024-02-08T00:00:00", + "pnl": 39.49935608928428, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32849848634218, + "entry_time": "2024-02-10T00:00:00", + "exit_price": 95.22062659109166, + "exit_time": "2024-02-11T00:00:00", + "pnl": -10.787189525052554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95224360650606, + "entry_time": "2024-02-13T00:00:00", + "exit_price": 95.11404601693097, + "exit_time": "2024-02-14T00:00:00", + "pnl": 16.18024104249116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79369852289173, + "entry_time": "2024-02-16T00:00:00", + "exit_price": 94.57121837540416, + "exit_time": "2024-02-17T00:00:00", + "pnl": -22.248014748757328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70539792020504, + "entry_time": "2024-02-19T00:00:00", + "exit_price": 94.81536726931864, + "exit_time": "2024-02-20T00:00:00", + "pnl": 10.996934911359801, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.66590107949516, + "entry_time": "2024-02-22T00:00:00", + "exit_price": 94.54759559550845, + "exit_time": "2024-02-23T00:00:00", + "pnl": -11.83054839867026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11939973938362, + "entry_time": "2024-02-25T00:00:00", + "exit_price": 94.21880305870137, + "exit_time": "2024-02-26T00:00:00", + "pnl": 9.940331931774438, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79422563292844, + "entry_time": "2024-02-28T00:00:00", + "exit_price": 93.71312689925841, + "exit_time": "2024-02-29T00:00:00", + "pnl": -8.109873367003217, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46426831854224, + "entry_time": "2024-03-02T00:00:00", + "exit_price": 93.10239283352094, + "exit_time": "2024-03-03T00:00:00", + "pnl": -36.187548502130085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37028780606191, + "entry_time": "2024-03-05T00:00:00", + "exit_price": 93.13498012432488, + "exit_time": "2024-03-06T00:00:00", + "pnl": -23.530768173702654, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.38863630293943, + "entry_time": "2024-03-08T00:00:00", + "exit_price": 93.41150008980253, + "exit_time": "2024-03-09T00:00:00", + "pnl": 2.286378686309831, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.14488289984781, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.17802365337732, + "exit_time": "2024-03-12T00:00:00", + "pnl": 3.3140753529508515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27104619189048, + "entry_time": "2024-03-14T00:00:00", + "exit_price": 92.98787909982833, + "exit_time": "2024-03-15T00:00:00", + "pnl": -28.31670920621434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11321145433926, + "entry_time": "2024-03-17T00:00:00", + "exit_price": 93.23295576374296, + "exit_time": "2024-03-18T00:00:00", + "pnl": 11.974430940369984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.85697546574279, + "entry_time": "2024-03-20T00:00:00", + "exit_price": 92.7517321560528, + "exit_time": "2024-03-21T00:00:00", + "pnl": -10.524330968999607, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50551757491745, + "entry_time": "2024-03-23T00:00:00", + "exit_price": 92.62546167858358, + "exit_time": "2024-03-24T00:00:00", + "pnl": 11.99441036661284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86332633060258, + "entry_time": "2024-03-26T00:00:00", + "exit_price": 92.76299264885851, + "exit_time": "2024-03-27T00:00:00", + "pnl": -10.033368174406121, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78913797285577, + "entry_time": "2024-03-29T00:00:00", + "exit_price": 93.00024160373006, + "exit_time": "2024-03-30T00:00:00", + "pnl": 21.110363087429107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9168412948554, + "entry_time": "2024-04-01T00:00:00", + "exit_price": 92.7772709282975, + "exit_time": "2024-04-02T00:00:00", + "pnl": -13.957036655790489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99344762670124, + "entry_time": "2024-04-04T00:00:00", + "exit_price": 92.45458704231757, + "exit_time": "2024-04-05T00:00:00", + "pnl": -53.886058438367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.40001356367094, + "entry_time": "2024-04-07T00:00:00", + "exit_price": 91.97082046191717, + "exit_time": "2024-04-08T00:00:00", + "pnl": -42.91931017537678, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01206001173375, + "entry_time": "2024-04-10T00:00:00", + "exit_price": 92.08005345968613, + "exit_time": "2024-04-11T00:00:00", + "pnl": 6.799344795237516, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22217203577799, + "entry_time": "2024-04-13T00:00:00", + "exit_price": 92.2425856744218, + "exit_time": "2024-04-14T00:00:00", + "pnl": 2.041363864381651, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46073627278375, + "entry_time": "2024-04-16T00:00:00", + "exit_price": 92.58143591458905, + "exit_time": "2024-04-17T00:00:00", + "pnl": 12.069964180530235, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95177802714637, + "entry_time": "2024-04-19T00:00:00", + "exit_price": 92.56745694254103, + "exit_time": "2024-04-20T00:00:00", + "pnl": -38.432108460534664, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81253269752307, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 92.86554139490539, + "exit_time": "2024-04-23T00:00:00", + "pnl": 5.30086973823245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90464875740813, + "entry_time": "2024-04-25T00:00:00", + "exit_price": 92.96373746132312, + "exit_time": "2024-04-26T00:00:00", + "pnl": 5.908870391499477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09789228558353, + "entry_time": "2024-04-28T00:00:00", + "exit_price": 93.19003786584736, + "exit_time": "2024-04-29T00:00:00", + "pnl": 9.214558026383202, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66999752477345, + "entry_time": "2024-05-01T00:00:00", + "exit_price": 92.45706703230238, + "exit_time": "2024-05-02T00:00:00", + "pnl": -21.293049247107376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2209401021726, + "entry_time": "2024-05-04T00:00:00", + "exit_price": 93.26995519560073, + "exit_time": "2024-05-05T00:00:00", + "pnl": 4.90150934281246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23034844043512, + "entry_time": "2024-05-07T00:00:00", + "exit_price": 93.41387280572972, + "exit_time": "2024-05-08T00:00:00", + "pnl": 18.352436529460192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33303611955198, + "entry_time": "2024-05-10T00:00:00", + "exit_price": 93.52307299324875, + "exit_time": "2024-05-11T00:00:00", + "pnl": 19.003687369676925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67190914597171, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.29815694731651, + "exit_time": "2024-05-14T00:00:00", + "pnl": -37.37521986551968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11959184333037, + "entry_time": "2024-05-16T00:00:00", + "exit_price": 92.78483612314953, + "exit_time": "2024-05-17T00:00:00", + "pnl": -33.47557201808371, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92001295323622, + "entry_time": "2024-05-19T00:00:00", + "exit_price": 92.94709162208174, + "exit_time": "2024-05-20T00:00:00", + "pnl": 2.7078668845518905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06260774305197, + "entry_time": "2024-05-22T00:00:00", + "exit_price": 93.1459174166961, + "exit_time": "2024-05-23T00:00:00", + "pnl": 8.330967364412345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06618787236135, + "entry_time": "2024-05-25T00:00:00", + "exit_price": 93.61303967582782, + "exit_time": "2024-05-26T00:00:00", + "pnl": 54.68518034664669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.941078352886, + "entry_time": "2024-05-28T00:00:00", + "exit_price": 94.01481054814181, + "exit_time": "2024-05-29T00:00:00", + "pnl": 7.373219525581476, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92069860353018, + "entry_time": "2024-05-31T00:00:00", + "exit_price": 93.87432907187284, + "exit_time": "2024-06-01T00:00:00", + "pnl": -4.636953165734781, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88014313205952, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.43750435674885, + "exit_time": "2024-06-04T00:00:00", + "pnl": -44.26387753106695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46298718335747, + "entry_time": "2024-06-06T00:00:00", + "exit_price": 93.92373570713617, + "exit_time": "2024-06-07T00:00:00", + "pnl": 46.07485237787046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93253015033824, + "entry_time": "2024-06-09T00:00:00", + "exit_price": 93.89138819536463, + "exit_time": "2024-06-10T00:00:00", + "pnl": -4.114195497361095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6779918521803, + "entry_time": "2024-06-12T00:00:00", + "exit_price": 93.51002812881958, + "exit_time": "2024-06-13T00:00:00", + "pnl": -16.796372336071386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.285974590119, + "entry_time": "2024-06-15T00:00:00", + "exit_price": 93.32248822367578, + "exit_time": "2024-06-16T00:00:00", + "pnl": 3.6513633556779723, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35524577583958, + "entry_time": "2024-06-18T00:00:00", + "exit_price": 93.73566009456992, + "exit_time": "2024-06-19T00:00:00", + "pnl": 38.041431873034526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68667788285592, + "entry_time": "2024-06-21T00:00:00", + "exit_price": 93.84911622521342, + "exit_time": "2024-06-22T00:00:00", + "pnl": 16.2438342357504, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68254626297609, + "entry_time": "2024-06-24T00:00:00", + "exit_price": 93.53753290340698, + "exit_time": "2024-06-25T00:00:00", + "pnl": -14.501335956910566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.40541279646612, + "entry_time": "2024-06-27T00:00:00", + "exit_price": 93.71834890975212, + "exit_time": "2024-06-28T00:00:00", + "pnl": 31.29361132859998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75716070422646, + "entry_time": "2024-06-30T00:00:00", + "exit_price": 93.82803454081426, + "exit_time": "2024-07-01T00:00:00", + "pnl": 7.087383658779345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73900139072163, + "entry_time": "2024-07-03T00:00:00", + "exit_price": 93.58423325500644, + "exit_time": "2024-07-04T00:00:00", + "pnl": -15.476813571518733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16188235681071, + "entry_time": "2024-07-06T00:00:00", + "exit_price": 93.02650792631081, + "exit_time": "2024-07-07T00:00:00", + "pnl": -13.537443049989406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00049424696185, + "entry_time": "2024-07-09T00:00:00", + "exit_price": 93.27869714616556, + "exit_time": "2024-07-10T00:00:00", + "pnl": 27.820289920370556, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18595899862997, + "entry_time": "2024-07-12T00:00:00", + "exit_price": 93.03056917274476, + "exit_time": "2024-07-13T00:00:00", + "pnl": -15.538982588520867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6959315804981, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.29325844026822, + "exit_time": "2024-07-16T00:00:00", + "pnl": -40.26731402298793, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24617524245163, + "entry_time": "2024-07-18T00:00:00", + "exit_price": 92.27923511016385, + "exit_time": "2024-07-19T00:00:00", + "pnl": 3.3059867712225355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24377176084563, + "entry_time": "2024-07-21T00:00:00", + "exit_price": 91.84290901749984, + "exit_time": "2024-07-22T00:00:00", + "pnl": -40.08627433457974, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45792359801233, + "entry_time": "2024-07-24T00:00:00", + "exit_price": 91.61079046047253, + "exit_time": "2024-07-25T00:00:00", + "pnl": 15.286686246020054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59272403631071, + "entry_time": "2024-07-27T00:00:00", + "exit_price": 91.6658144632232, + "exit_time": "2024-07-28T00:00:00", + "pnl": 7.309042691248635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.7676588013805, + "entry_time": "2024-07-30T00:00:00", + "exit_price": 91.83153611139085, + "exit_time": "2024-07-31T00:00:00", + "pnl": 6.387731001034069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47875371686978, + "entry_time": "2024-08-02T00:00:00", + "exit_price": 91.54124524065837, + "exit_time": "2024-08-03T00:00:00", + "pnl": 6.249152378859435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.99233076398606, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.9529292158228, + "exit_time": "2024-08-06T00:00:00", + "pnl": -3.940154816325503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9845811375129, + "entry_time": "2024-08-08T00:00:00", + "exit_price": 92.0553452779518, + "exit_time": "2024-08-09T00:00:00", + "pnl": 7.076414043889656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96933895446483, + "entry_time": "2024-08-11T00:00:00", + "exit_price": 92.33843538273938, + "exit_time": "2024-08-12T00:00:00", + "pnl": 36.90964282745455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7587929540311, + "entry_time": "2024-08-14T00:00:00", + "exit_price": 92.61541170919818, + "exit_time": "2024-08-15T00:00:00", + "pnl": -14.338124483290926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.48109292079488, + "entry_time": "2024-08-17T00:00:00", + "exit_price": 92.584127260661, + "exit_time": "2024-08-18T00:00:00", + "pnl": 10.303433986612731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73326548896144, + "entry_time": "2024-08-20T00:00:00", + "exit_price": 92.63121700232358, + "exit_time": "2024-08-21T00:00:00", + "pnl": -10.204848663785526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0636078149956, + "entry_time": "2024-08-23T00:00:00", + "exit_price": 92.8561585876055, + "exit_time": "2024-08-24T00:00:00", + "pnl": -20.744922739010008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92284538933916, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.11237349539573, + "exit_time": "2024-08-27T00:00:00", + "pnl": 18.952810605657078, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07021236134935, + "entry_time": "2024-08-29T00:00:00", + "exit_price": 93.17184698357968, + "exit_time": "2024-08-30T00:00:00", + "pnl": 10.163462223033548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31228518791787, + "entry_time": "2024-09-01T00:00:00", + "exit_price": 92.33590023205818, + "exit_time": "2024-09-02T00:00:00", + "pnl": 2.361504414031401, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50027778498863, + "entry_time": "2024-09-04T00:00:00", + "exit_price": 92.54209415864854, + "exit_time": "2024-09-05T00:00:00", + "pnl": 4.181637365991264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3677893725537, + "entry_time": "2024-09-07T00:00:00", + "exit_price": 92.22925202091126, + "exit_time": "2024-09-08T00:00:00", + "pnl": -13.853735164244085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09309676612557, + "entry_time": "2024-09-10T00:00:00", + "exit_price": 92.15732000186526, + "exit_time": "2024-09-11T00:00:00", + "pnl": 6.422323573968924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68995738997093, + "entry_time": "2024-09-13T00:00:00", + "exit_price": 91.28297081793372, + "exit_time": "2024-09-14T00:00:00", + "pnl": -40.69865720372121, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.49225030811708, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.33431283007668, + "exit_time": "2024-09-17T00:00:00", + "pnl": -15.793747804039526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00621404043055, + "entry_time": "2024-09-19T00:00:00", + "exit_price": 90.92641929792215, + "exit_time": "2024-09-20T00:00:00", + "pnl": -7.979474250839758, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07027528339762, + "entry_time": "2024-09-22T00:00:00", + "exit_price": 91.13008155599323, + "exit_time": "2024-09-23T00:00:00", + "pnl": 5.980627259560833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00907183642319, + "entry_time": "2024-09-25T00:00:00", + "exit_price": 91.23094904986101, + "exit_time": "2024-09-26T00:00:00", + "pnl": 22.18772134378213, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2825480931582, + "entry_time": "2024-09-28T00:00:00", + "exit_price": 90.91271666538603, + "exit_time": "2024-09-29T00:00:00", + "pnl": -36.983142777216926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05360990148436, + "entry_time": "2024-10-01T00:00:00", + "exit_price": 91.28838235720163, + "exit_time": "2024-10-02T00:00:00", + "pnl": 23.477245571726257, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79116186423771, + "entry_time": "2024-10-04T00:00:00", + "exit_price": 90.76779759668747, + "exit_time": "2024-10-05T00:00:00", + "pnl": -2.336426755023524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66567440561238, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 90.70161264561204, + "exit_time": "2024-10-08T00:00:00", + "pnl": 3.5938239999666166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83214429583118, + "entry_time": "2024-10-10T00:00:00", + "exit_price": 90.77606667466077, + "exit_time": "2024-10-11T00:00:00", + "pnl": -5.607762117041659, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66108486881463, + "entry_time": "2024-10-13T00:00:00", + "exit_price": 90.66515259357669, + "exit_time": "2024-10-14T00:00:00", + "pnl": 0.4067724762066405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.16857543076497, + "entry_time": "2024-10-16T00:00:00", + "exit_price": 90.40982511738886, + "exit_time": "2024-10-17T00:00:00", + "pnl": 24.124968662388824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.06344300783006, + "entry_time": "2024-10-19T00:00:00", + "exit_price": 89.82444237040852, + "exit_time": "2024-10-20T00:00:00", + "pnl": -23.900063742154032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.59077974741996, + "entry_time": "2024-10-22T00:00:00", + "exit_price": 89.57824858967784, + "exit_time": "2024-10-23T00:00:00", + "pnl": -1.2531157742117216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.18599707786814, + "entry_time": "2024-10-25T00:00:00", + "exit_price": 89.23587599762591, + "exit_time": "2024-10-26T00:00:00", + "pnl": 4.987891975777359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.52520755360774, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.53896573427002, + "exit_time": "2024-10-29T00:00:00", + "pnl": 1.3758180662279074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32372356389571, + "entry_time": "2024-10-31T00:00:00", + "exit_price": 89.39723460318574, + "exit_time": "2024-11-01T00:00:00", + "pnl": 7.351103929002534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.42867761884308, + "entry_time": "2024-11-03T00:00:00", + "exit_price": 89.41468909557778, + "exit_time": "2024-11-04T00:00:00", + "pnl": -1.3988523265297204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37521291073797, + "entry_time": "2024-11-06T00:00:00", + "exit_price": 89.28061929510595, + "exit_time": "2024-11-07T00:00:00", + "pnl": -9.459361563202151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37421531457154, + "entry_time": "2024-11-09T00:00:00", + "exit_price": 89.42880794685172, + "exit_time": "2024-11-10T00:00:00", + "pnl": 5.459263228017619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.10075544827296, + "entry_time": "2024-11-12T00:00:00", + "exit_price": 89.08909178471053, + "exit_time": "2024-11-13T00:00:00", + "pnl": -1.1663663562430315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.9283105563295, + "entry_time": "2024-11-15T00:00:00", + "exit_price": 88.97631673436179, + "exit_time": "2024-11-16T00:00:00", + "pnl": 4.8006178032281355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.83969795208085, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.97701708069182, + "exit_time": "2024-11-19T00:00:00", + "pnl": 13.731912861096873, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.24948915106788, + "entry_time": "2024-11-21T00:00:00", + "exit_price": 89.31081866218918, + "exit_time": "2024-11-22T00:00:00", + "pnl": 6.132951112130058, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.1566381078772, + "entry_time": "2024-11-24T00:00:00", + "exit_price": 89.05359196348086, + "exit_time": "2024-11-25T00:00:00", + "pnl": -10.304614439634463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.89974340615646, + "entry_time": "2024-11-27T00:00:00", + "exit_price": 88.86736216937868, + "exit_time": "2024-11-28T00:00:00", + "pnl": -3.2381236777780487, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.02917974715604, + "entry_time": "2024-11-30T00:00:00", + "exit_price": 89.10061155400963, + "exit_time": "2024-12-01T00:00:00", + "pnl": 7.143180685359596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.71230009060692, + "entry_time": "2024-12-03T00:00:00", + "exit_price": 88.55956047576315, + "exit_time": "2024-12-04T00:00:00", + "pnl": -15.273961484376741, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.33867736091129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.24521783497416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.33353996675463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.17535391574476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.17558936557836, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.82464445421311, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.14823158528606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.02303868942406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0898265784532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.0375220132344, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.69877148351581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.8094147843381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.88896279741591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.58446195759505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.94461858556683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.86726342876044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.264261049502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.97378019208324, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43666090180685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.64557703864863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.41486055220747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.62832834535065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.40627623062987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.9966907903866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.62784889129782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.91665393395704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.20129913778622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.36824311350031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.44539780996692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.29577808855632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.60087912978423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.67646038571121, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17445140133515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.07045121918839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.49723620471183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.5174230546468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5413500261472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.47975770399327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.29423417091141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.27541464305773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43920860251751, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.06079463387583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.37828233356667, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.30210368322795, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.8891828858322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.6817301819728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.39002953943762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.68517685658658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.65084298157255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.93501858046714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.1907166501479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.25659603867345, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36428253311259, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01156809266551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.31879308123833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.40136182036203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17903686528695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0619221034904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.25968317752123, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.56379928977212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.80666495491704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.94182055020374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.92425119368045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.78971486194605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.23057477534164, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.4049348801832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.24159987362269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.06843389735158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.22183940097844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.93299182979392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.91637693821662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.20188970935105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.57826653579693, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.48615354430639, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.48852996658736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.70097560384337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.56660104606993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.60339517911308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.5215727488348, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.3913600319206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.66423065390151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.49406633741951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.64849065100934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.63323070552582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.88914932519062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.96225788336264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.21454142458283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.08973549159177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.91131718633395, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.95365272243404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.3677264483084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.38542382708798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.727355594576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.80184598433505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.75895482632265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.65309620079978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.18275486854981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.08066364611346, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86355002974182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.8079829991331, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.50774498473834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.15500147527054, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.25388112126257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.46869004462158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.49982930970904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.64941137818613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08181708620197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.89782993828217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.34821493675021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0511570084608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36636841676064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.22802936588096, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.13124547885464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.97034570188329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84675502390373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82877025439984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.83150510044737, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.80556016637114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.10675350799055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.84453919660923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.88147160830762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.95771616416846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.25900520967262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.28214715432236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.64410132782972, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.78845498147822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.96240900085823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01654413042846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08257869239384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.92270971634117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.9249177043285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.5475977762062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85856446370276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.8876461806366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.75554506700362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.4712342394787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.13596092844963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.29084433077668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.50946620110103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42209873300993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16470383307056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.10251353436806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16007736983093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.25346405776058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.02466944517249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.03234873384025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.11031617256702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.14530663460309, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.4442900442657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39955675926143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.19954612220634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.33374471974878, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.17850638089598, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.31970147221125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.19274532121113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.3840327772038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.48120231354616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.7121932598933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86988580253298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.76604202197464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.79597689506201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42129188541651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.67647877199742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82191220927734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84470059887572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.72847566121298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.43094423441607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39808368032986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.31641481415083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.40267706340073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.60680412325432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.51452016846274, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.31471449163298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.43834781075664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84446638005844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.49607372712997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85869892480143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.87107213537678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.83017137699973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.73075043509533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85446221431528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.13025477242799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08577867542596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.20567187514531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.27862593574773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.19411735771268, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.916410701528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.80020190906805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.03429888110497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.99059510104857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.12230359240208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.21493112615859, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.7362497471537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.90953724611552, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.99997604721491, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.25158859302469, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98246224229298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.18380160087476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.54700954481861, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.87858935796136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.82466366840129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.79031352535364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.52782616930364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.71180131795903, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.66862984653359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.94388954493733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.40172293508901, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.27308992706585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.30251070708916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.36341600243385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.07297082017436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.63576619816114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.36545808934646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.425342939227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.59476724765915, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.41575843731752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.30499551372479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.2943417590765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.20190364871404, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.35429934455371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.25575482738782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.30124986928953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.90191386326036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.96508444596826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.75989432781597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.47851546822666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.43273982617148, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.78073270556935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.29707161405977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.17141051171173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.83897503233364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.92050920813638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.39298906893524, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.24960092613485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.15249367428707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.11254847884746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.6477102979142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.66187174327492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.22816086359947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.18924739108921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.15833017318171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.35388264537053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.30391448349607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.1765702619787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.03923857682982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.14087662618776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.60285889768487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.71610220194758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.43129513858887, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.7750138677335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.5417619126041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.26004415392279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.48237494714664, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.58658168452075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.75620116852377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.69650084660127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.92028780826493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.62951533581877, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.58269597074072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.65987379372794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.66612454309691, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.8169746660663, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.5926039176473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28582192646724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.47874410921285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.57232514477201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.07482838670386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.06329982176626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.939646337063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.02294071169972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.73925579999096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.99566659891293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.99166395939717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.91107729961162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.35440315345551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.19457800884426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.87539474258334, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.03831344319956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.84933568810729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.942984467456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.28778584744732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.02443267142746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.94057536205155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.72906200441219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.38445225202611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38197492987447, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.18213638354725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04715001455901, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19838818284391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.29725636974986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.23572569098852, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3432106471416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.46834681822006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.39304905252162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4607924127623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.87391242777782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.81782457593818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.74839547168068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.9804659897062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.1820620687209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53780103937676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.35114383691389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19430169329608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0736265695374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.56101740773187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02847405275406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02877565620591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02966575553104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71076966315076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5342590029927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87172892779671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8898807030855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7509399436349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70594283596789, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.83044892913243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71383587412238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.52870331564132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.68221846843574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68293629394864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76185935158753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.77694161620539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94666597863043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09046839544105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0093802192737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.78182814117551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.75541337031265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.72371690451082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60849664049482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.94340121095276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.85028148090369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7183641880944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.93201467581261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6600503714477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71003338575711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.64414870400898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73370138654631, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.51475031329109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60797476194675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42059367470232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66628705381636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.53531464201514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2030497935449, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62268440600192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.91948342162647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.67919849510083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.43887673234494, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.17984056111294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.94368190633774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.11465699863811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97059505880482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.29459604644765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53931157007439, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49631090115352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52393358151217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66942128922241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.4946582273999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.29424834791328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07603918687664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.33479567014805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.14550463966849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9928646204638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.96872153502625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87705988155102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.53452507075421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.56396146367423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.59385740536969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.64213975217385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78882758292927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.63683672368549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.48470633760584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39062489567554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.494696351115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.93573503075692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.98885415853535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.06245234985892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.0289821017493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.22900373831216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.3157346032948, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59973514861235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.77086454804387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82096590563263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.95769963997635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.21106339352885, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07551182524406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.09759300944572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33359941396125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2288848699624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2069451450579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46522997402728, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63157812424986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92215275507255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.81904355011355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34536862719393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.4540782896955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.65179701007457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58231165488735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59222373899847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41076247699506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.57987210255567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.93696117180936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88875391692817, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.67494277755462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99358787892747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.07975990716614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07047992178705, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33559891886243, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59225467831386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.63479260217548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80334597318698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.98346554786147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92321614880655, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83699346593512, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93109508241774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96354668527802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08641930356686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.23768236549668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08211844013991, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20846159911048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.13954155854589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.89054598561034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11646823351487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.10168176297485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.30038009222437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.41339845504724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.10852951715277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.84680988625497, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00138088356287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04342924144086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.01673785551608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8508081374985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87089994615239, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9378403552245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.05201413714099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0235397935625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26517251606933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.15470785076896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4932600250258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.51252060274227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53140073996916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90203063702091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26191114348926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0634456423351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.43521818420996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38568536751181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21262216293847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.23411145607675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.82330133886903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61660062265747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71484163940588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72855192282307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.3692642985158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37837200951205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.19352686807355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.28024660066703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.96384685743692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.14877036790756, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09572264391801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53876217367774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.64617178108719, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.85422093876446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60924422208079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52724603055836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46494136842418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44406941275119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.32264147745168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0360221167863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01384655286363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97262653583181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.28024889847717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.96758302287454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.25528568314509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.20092793334622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49508373939167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.73466658206335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46436704586412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.69111891541637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21128313549013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37756823246967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04218716563325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.00014735551822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.93318531635457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84116622880475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50637869144556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.66826656058106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36257300920573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60779676375832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36220969555443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.1193839744838, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.89096232869592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.75394086603562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.10653141004636, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.98502552303084, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03115476672883, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05866288388766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.80506699745925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97004409317438, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39339911911829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28070286679336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74175784445059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6733758391721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.81901224922302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.84844274508458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.60313885279771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.41938832519848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.64052127057325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54200410559555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73590345101391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.62782637305553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79185882856454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.8357946573913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79563500808236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.09144139124615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.91260250945975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.67552176869381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.66062267455895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64149069106048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37359630109037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.51652219716766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.54575759654936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58821852619887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76782809841714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6119124553235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74629736846254, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61327551923173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.32896871135786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13780861275266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.12507835931243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13114200203424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37230639398891, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.298526480022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.14580661294434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.26371087049277, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.19265250778471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.34688434505053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.27944969864926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.00376526097061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.12691845430324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13627424638673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.90552697963446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.86432013057937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.88314466139805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.85684478131836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.8333575750649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.87580958070879, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87723690769735, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02118341969194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.14559411024791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1102070847533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.03652679668627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.64848582455738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.5160908672533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.67122680039915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.49638519206744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.23851904732544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.12623758622358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.13616044249197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.97730849654188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.93950245741028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.92103698222829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.92708766921471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.318742774315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.23642124916759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.21999028274801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.22126197659611, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.84560909030802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.53569591871245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.0165686304024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91735297539282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.2390830156373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.14925296519219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.22089116397768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.87029928541635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.89974631246403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.06863681183862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.57589026049908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.50862549547844, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62801821971621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.81567744205196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.33854066905738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.96569574948703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.07274851876403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.95622489428452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.72051069276088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.55232295814028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.40473126616526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.65640141611814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56665701011867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.46095751045398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.76022002087706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.81381751472117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.23375682446748, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01190578025698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56046438309357, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.6501420569037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.45985538510016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.32205823485288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.4213362857644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.3254460973393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.36326200776878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1350438366559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.53738507774712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.43902960493799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.28282897059066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.42427634098117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.65923583486823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.60873415539405, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.39024714619487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.66523349021156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.82876323237488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.97466728886246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.89452843928451, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.67041116090726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.63870699300467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.60806866533521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.09022889967974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.33132395141395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.1422566167072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02336448195068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.85171345155105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92826438920278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.9967936460588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02558962193989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.86654130293297, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1805076876075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.20590970247865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.04093233048125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.94025278141096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1695372755258, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.55006804279205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.74946747581956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.08829699168929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.17204398025235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82928257766983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.80555288724541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03756487304749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.92246232242579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.12455329081938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.03614640032846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.43863634543025, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57880144701099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5662997648947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63602712862732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99359531127284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.20326657631179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.36371229951278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15013947578183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.39786147444195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32525340472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1699951830038, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94415449917722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06237685823791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.88599230986543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09341138541605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29146577709628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.45209900958335, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.38892182999521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42662435004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.86711355565461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.43026737045712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.68555551249223, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.34275603824345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26115762602807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.81665975574816, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69084237577945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.80375023000443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71118042427594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.46412500503037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.6314533607136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6742741594175, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69072074935896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.12667461230008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99949417466048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.92543412582965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.72977842157017, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5701038761525, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.59977663872266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.2927331361965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.40263092608106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28632878234235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.53250654562353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.49417223286694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21737477440588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21700275153675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.24257812297434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.33447437173405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.36500808099656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62192540785213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.95467067184597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.32280422773096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.27797141913928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.85159096418194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.9332147424965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.87171080557967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.72359330386428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.38266657654837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28429001378173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01211175536163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.84310882657518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.59049236660378, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.35514007446828, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9357580237877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05072699188574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00889117962727, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.18219892584725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.96556912199465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.87607469195584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60138099475903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55643441032785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88066522817982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.67510822228188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69837663925773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.91860336977558, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.70107216756422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66971331829183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87708149049162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72163687944706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.94898877051006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.95474043698636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6415881902333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.34129447656329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9434543592522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60307524718807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.18983136258927, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07720168711411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.00591795170635, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.73390898252362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87915537734213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05356230153482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.19249105693204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35715717263174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92376356586935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8642597181964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.08761417167571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3787010770275, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.22887351223902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.18791972112416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71839956451682, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.72871333258459, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71285525012034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.95484908903208, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09252551101909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19565426763862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34851063541004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.36918149511725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.29871325433136, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43191348926673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54163438380152, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70996022231523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.44351635290319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3607156455027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.25194927165909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.09482587993352, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.05964578316673, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1247824238807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60195304694001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5077083162264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32915625849455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41904859018952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86240170807343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74311994285968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92758592270172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.91004727072426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.90746519420465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.16764239198312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.44892482562022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.29820349772235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29660996193417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34630077913107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28533190136021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.32163037675376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.20619082469412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94806731557186, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.5296456958934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2046797163239, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32570812965447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.27835226241817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.18052001757422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.21374473155299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13943605219035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26046795573633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21960702536101, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64774686400108, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.31556350692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.46149005259649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.52377288657563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.23839203319807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6963758650249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70207115016164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1906639429263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.35726613372299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1634420410312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2066382813918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0471045722787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82199720210754, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8989666578373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.77857374465485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.70919453056075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.74465000028516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60934516564298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96618622577306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78501792806425, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.76326607151933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62556378625803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.65556548612001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68684981308908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.58597625405771, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86536967969084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.75020367672924, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75062990936559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.98349381034318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04847278769076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06193871613516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60529611931622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60807864200518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90198815097345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84425841280351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66689924421028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.6348345250126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74311085652141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.87596365908365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.15467982049428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06917346679761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16088604193162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1767131466551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59084973064017, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3728256379574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.83907971020484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05336598759212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.15556945611712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.11170249260897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26806948858284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.19864576006458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02469106007196, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.37555658552148, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4719110379968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.46329135212792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.72605970139526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42143976779836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5510290269881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42138738037778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.49725923626676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.83017838441384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.96394971087318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.80946954515628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.05895494780962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.7764741456602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.82916340306784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.49615933800648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53903204926397, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.2199238563033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.15553425915469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3233546324033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29143609072966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34909878462929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79549173605427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.86012460829116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62257045149929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.36740770267758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1123342756572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.28815691102787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.89234388227695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64456440149245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.62943347351336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64788638508941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1774162868962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.00402666791075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.04453321057154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96838361247781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88321586599363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.90884833929827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7179718780841, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74821494678119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9038655497103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83750554707963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88584036004717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9446210717662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.10339943212905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0848941093554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.14949796034026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8874166822761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.75795965886634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82124488293752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.65346951457661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61396660096294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54800539421142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.46513172439276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04018712803396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2845186523261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80052936345987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.65349927893294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93158855841354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.79425107834362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.55284494377143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33529354683158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.67881964988702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76309874382866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.06380422690371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34837478850592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28272356925105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.08986442511201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19668777653186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9155347262711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86963033561574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02605497205086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.07735953777274, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.92691564488518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.63814938665311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6176086632684, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71204578933798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41015509320589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42767992948878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.23852235526199, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.49442961672796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43422929731483, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.28736530415493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.12218377264868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10919349920911, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97579394436632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.87630575654731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64709318534976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49382854321888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15699292788067, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.04266303105983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9313781112256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.69530603069572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.82075180753827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.00003866180036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.769068469798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62148930928706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0232146586156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.05026787864644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.7648966725291, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.45047976504434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.57906184617835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73227416508321, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.39276167792192, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43027834183452, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.72614964359053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.22140030401876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.40388767907393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6481057355818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.68848188004498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71473698288804, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70268409440689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.43854075921617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44140071332018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74726961853332, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8365056762946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.88893089201021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26317095880032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.37686063355893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.01130398358468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92441725059159, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89449208176279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93827683979755, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6532995649937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.4263959037515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.75213347979019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.0270700566813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76146992741955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10225140410179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.81690399898379, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0438108934807, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.80207795946215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.12592905184013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15713134695487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21575520670791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.31507102860735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2320901589937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15393731859652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07037591089997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3198194947649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69216760463115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.07388089953058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.64149353573187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71271228263036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.11471503048601, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98751858071931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.7067835294734, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.74844014533139, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.02489656616589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98294992874101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.71598064705562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90144093756582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.88369269337046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99127786199946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.25279588129149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98339215080473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84625570624047, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.50594333071952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.50759103681195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.60423833142119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.58324904624199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.89219195707862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.65911048978346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.7149396953146, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.87432845164757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.68840177129488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.93449198055023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.32948554144308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.32849848634218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.22062659109166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.95224360650606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.11404601693097, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79369852289173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.57121837540416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.70539792020504, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.81536726931864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.66590107949516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.54759559550845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11939973938362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21880305870137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.79422563292844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71312689925841, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.46426831854224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.10239283352094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.37028780606191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.13498012432488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.38863630293943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41150008980253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.14488289984781, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.17802365337732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.27104619189048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.98787909982833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.11321145433928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.23295576374296, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.85697546574279, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7517321560528, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50551757491745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.62546167858358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86332633060258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.76299264885851, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78913797285577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.00024160373006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9168412948554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7772709282975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99344762670124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45458704231757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.40001356367094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97082046191717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01206001173375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.08005345968613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.22217203577799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2425856744218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46073627278375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.58143591458905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.95177802714637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.56745694254103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.81253269752307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.86554139490539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90464875740813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96373746132312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09789228558353, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19003786584736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66999752477344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45706703230238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2209401021726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26995519560073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.23034844043512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41387280572972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.33303611955198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.52307299324875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.67190914597171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29815694731651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.11959184333037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.78483612314953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92001295323621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94709162208174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06260774305197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1459174166961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06618787236135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61303967582782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.941078352886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.01481054814181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92069860353018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.87432907187284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88014313205952, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43750435674885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.46298718335747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.92373570713617, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93253015033825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.89138819536463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6779918521803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.51002812881958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.285974590119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32248822367578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35524577583958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73566009456992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6866778828559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.84911622521342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68254626297609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.53753290340698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.40541279646611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71834890975212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.75716070422646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82803454081426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73900139072163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58423325500644, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16188235681071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.02650792631081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.00049424696184, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.27869714616556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.18595899862997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.03056917274476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6959315804981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.29325844026822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24617524245163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.27923511016385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24377176084563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.84290901749984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.45792359801233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61079046047253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59272403631071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6658144632232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76765880138052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.83153611139085, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.47875371686978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54124524065837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.99233076398606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9529292158228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9845811375129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0553452779518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.96933895446485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33843538273938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.7587929540311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.61541170919818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.48109292079488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.584127260661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.73326548896145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63121700232358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06360781499562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8561585876055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92284538933916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11237349539573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07021236134935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.17184698357968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.31228518791787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33590023205818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50027778498863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.54209415864854, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3677893725537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.22925202091126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.09309676612556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15732000186526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.68995738997093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28297081793372, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.49225030811706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.33431283007668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.00621404043055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92641929792215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.07027528339762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13008155599323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.00907183642319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.23094904986101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.2825480931582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91271666538603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05360990148436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28838235720163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.79116186423771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.76779759668747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.66567440561238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.70161264561204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.83214429583118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.77606667466077, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.66108486881463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.66515259357669, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.16857543076497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.40982511738886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.06344300783007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.82444237040852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.59077974741996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.57824858967784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.18599707786814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.23587599762591, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.52520755360774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.53896573427002, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.32372356389571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.39723460318574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.42867761884308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.41468909557778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.37521291073797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.28061929510595, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.37421531457154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.42880794685172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.10075544827296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.08909178471053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.9283105563295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.97631673436179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.83969795208085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.97701708069182, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.24948915106788, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.31081866218918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.15663810787721, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.05359196348086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.89974340615646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.86736216937868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.02917974715604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.10061155400963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.71230009060692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.55956047576315, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.33867736091129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.24521783497416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.33353996675463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.17535391574476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.17558936557836, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.82464445421311, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.14823158528606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.02303868942406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0898265784532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0375220132344, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.69877148351581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.8094147843381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.88896279741591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.58446195759505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94461858556683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.86726342876044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.264261049502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.97378019208324, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43666090180685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.64557703864863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.41486055220747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.62832834535065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.40627623062987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9966907903866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.62784889129782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.91665393395704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20129913778622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36824311350031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.44539780996692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29577808855632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60087912978423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67646038571121, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17445140133515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.07045121918839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.49723620471183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5174230546468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5413500261472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.47975770399327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29423417091141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27541464305773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43920860251751, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.06079463387583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.37828233356667, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.30210368322795, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8891828858322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.6817301819728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39002953943762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68517685658658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.65084298157255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.93501858046714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.1907166501479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25659603867345, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36428253311259, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01156809266551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.31879308123833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.40136182036203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17903686528695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0619221034904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25968317752123, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.56379928977212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.80666495491704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94182055020374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.92425119368045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.78971486194605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.23057477534164, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4049348801832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.24159987362269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.06843389735158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.22183940097844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.93299182979392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.91637693821662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.20188970935105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.57826653579693, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48615354430639, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48852996658736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.70097560384337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.56660104606993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.60339517911308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.5215727488348, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3913600319206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.66423065390151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49406633741951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.64849065100934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.63323070552582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.88914932519062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.96225788336264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.21454142458283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.08973549159177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.91131718633395, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.95365272243404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3677264483084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.38542382708798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.727355594576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.80184598433505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.75895482632265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.65309620079978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18275486854981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08066364611346, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86355002974182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8079829991331, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.50774498473834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.15500147527054, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25388112126257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.46869004462158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.49982930970904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.64941137818613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08181708620197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89782993828217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.34821493675021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0511570084608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36636841676064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.22802936588096, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13124547885464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.97034570188329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84675502390373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82877025439984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.83150510044737, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.80556016637114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.10675350799055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84453919660923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.88147160830762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.95771616416846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25900520967262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.28214715432236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.64410132782972, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.78845498147822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.96240900085823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01654413042846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08257869239384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.92270971634117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9249177043285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.5475977762062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85856446370276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8876461806366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.75554506700362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4712342394787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.13596092844963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.29084433077668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.50946620110103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42209873300993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16470383307056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.10251353436806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16007736983093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25346405776058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.02466944517249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.03234873384025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11031617256702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.14530663460309, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4442900442657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39955675926143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.19954612220634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.33374471974878, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.17850638089598, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31970147221125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.19274532121113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3840327772038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.48120231354616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7121932598933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86988580253298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.76604202197464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79597689506201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42129188541651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67647877199742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82191220927734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84470059887572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.72847566121298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43094423441607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39808368032986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31641481415083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.40267706340073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60680412325432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.51452016846274, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31471449163298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43834781075664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84446638005844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.49607372712997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85869892480143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.87107213537678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.83017137699973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.73075043509533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85446221431528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13025477242799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08577867542596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20567187514531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27862593574773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.19411735771268, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.916410701528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.80020190906805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.03429888110497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99059510104857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.12230359240208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.21493112615859, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.7362497471537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.90953724611552, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99997604721491, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25158859302469, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98246224229298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.18380160087476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.54700954481861, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.87858935796136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82466366840129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79031352535364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.52782616930364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.71180131795903, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.66862984653359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.94388954493733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.40172293508901, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.27308992706585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30251070708916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.36341600243385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.07297082017436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.63576619816114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.36545808934646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.425342939227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.59476724765915, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.41575843731752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30499551372479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.2943417590765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.20190364871404, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.35429934455371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25575482738782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30124986928953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.90191386326036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.96508444596826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.75989432781597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.47851546822666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.43273982617148, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.78073270556935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.29707161405977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.17141051171173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.83897503233364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.92050920813638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.39298906893524, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.24960092613485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.15249367428707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11254847884746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.6477102979142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.66187174327492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.22816086359947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.18924739108921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.15833017318171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.35388264537053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.30391448349607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1765702619787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.03923857682982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.14087662618776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.60285889768487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.71610220194758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.43129513858887, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7750138677335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.5417619126041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.26004415392279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.48237494714664, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.58658168452075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.75620116852377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.69650084660127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.92028780826493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.62951533581877, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.58269597074072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.65987379372794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.66612454309691, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.8169746660663, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.5926039176473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28582192646724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.47874410921285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.57232514477201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.07482838670386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.06329982176626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.939646337063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.02294071169972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.73925579999096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.99566659891293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.99166395939717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.91107729961162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.35440315345551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.19457800884426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.87539474258334, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.03831344319956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.84933568810729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.942984467456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28778584744732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02443267142746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94057536205155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72906200441219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38445225202611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38197492987447, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18213638354725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04715001455901, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19838818284391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29725636974986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23572569098852, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3432106471416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46834681822006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.39304905252162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4607924127623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.87391242777782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81782457593818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.74839547168068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9804659897062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.1820620687209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53780103937676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.35114383691389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19430169329608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0736265695374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.56101740773187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02847405275406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02877565620591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02966575553104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71076966315076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5342590029927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87172892779671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8898807030855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7509399436349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70594283596789, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83044892913243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71383587412238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52870331564132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68221846843574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68293629394864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76185935158753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.77694161620539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94666597863043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09046839544105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0093802192737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.78182814117551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75541337031265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72371690451082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60849664049482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94340121095276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.85028148090369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7183641880944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93201467581261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6600503714477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71003338575711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64414870400898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73370138654631, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51475031329109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60797476194675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42059367470232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66628705381636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53531464201514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2030497935449, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62268440600192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.91948342162647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67919849510083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43887673234494, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17984056111294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94368190633774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.11465699863811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97059505880482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29459604644765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53931157007439, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49631090115352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52393358151217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66942128922241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.4946582273999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29424834791328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07603918687664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33479567014805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.14550463966849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9928646204638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96872153502625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.87705988155102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.53452507075421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.56396146367423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59385740536969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64213975217385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78882758292927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.63683672368549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.48470633760584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39062489567554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.494696351115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93573503075692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.98885415853535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06245234985892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0289821017493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.22900373831216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.3157346032948, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59973514861235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.77086454804387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82096590563263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.95769963997635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.21106339352885, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07551182524406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09759300944572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33359941396125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2288848699624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2069451450579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46522997402728, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63157812424986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92215275507255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81904355011355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34536862719393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4540782896955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65179701007457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58231165488735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59222373899847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41076247699506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.57987210255567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93696117180936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88875391692817, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67494277755462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99358787892747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07975990716614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07047992178705, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33559891886243, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59225467831386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63479260217548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80334597318698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.98346554786147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92321614880655, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83699346593512, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93109508241774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96354668527802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08641930356686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23768236549668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08211844013991, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20846159911048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.13954155854589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89054598561034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11646823351487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10168176297485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.30038009222437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.41339845504724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10852951715277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84680988625497, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00138088356287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04342924144086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01673785551608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8508081374985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87089994615239, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9378403552245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05201413714099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0235397935625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26517251606933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15470785076896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4932600250258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.51252060274227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53140073996916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90203063702091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26191114348926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0634456423351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43521818420996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38568536751181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21262216293847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23411145607675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82330133886903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61660062265747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71484163940588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72855192282307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3692642985158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37837200951205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19352686807355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28024660066703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96384685743692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14877036790756, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09572264391801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53876217367774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64617178108719, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85422093876446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60924422208079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52724603055836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46494136842418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44406941275119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32264147745168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0360221167863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01384655286363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97262653583181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.28024889847717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96758302287454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25528568314509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20092793334622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49508373939167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73466658206335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46436704586412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69111891541637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21128313549013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37756823246967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04218716563325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00014735551822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.93318531635457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84116622880475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50637869144556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66826656058106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36257300920573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60779676375832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36220969555443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.1193839744838, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.89096232869592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.75394086603562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.10653141004636, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.98502552303084, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03115476672883, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05866288388766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80506699745925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97004409317438, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39339911911829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28070286679336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74175784445059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6733758391721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81901224922302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84844274508458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.60313885279771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41938832519848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64052127057325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54200410559555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73590345101391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62782637305553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79185882856454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8357946573913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79563500808236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09144139124615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.91260250945975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.67552176869381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.66062267455895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64149069106048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37359630109037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.51652219716766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54575759654936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58821852619887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76782809841714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6119124553235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74629736846254, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61327551923173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.32896871135786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13780861275266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.12507835931243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13114200203424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37230639398891, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.298526480022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14580661294434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.26371087049277, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.19265250778471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.34688434505053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.27944969864926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00376526097061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.12691845430324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13627424638673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.90552697963446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86432013057937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.88314466139805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.85684478131836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.8333575750649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87580958070879, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87723690769735, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02118341969194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14559411024791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1102070847533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.03652679668627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.64848582455738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.5160908672533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.67122680039915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.49638519206744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.23851904732544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.12623758622358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.13616044249197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.97730849654188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.93950245741028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.92103698222829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.92708766921471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.318742774315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.23642124916759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.21999028274801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.22126197659611, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.84560909030802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.53569591871245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0165686304024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91735297539282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2390830156373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14925296519219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.22089116397768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87029928541635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.89974631246403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06863681183862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.57589026049908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.50862549547844, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62801821971621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81567744205196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33854066905738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.96569574948703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07274851876403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.95622489428452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.72051069276088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.55232295814028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.40473126616526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65640141611814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56665701011867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.46095751045398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.76022002087706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.81381751472117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23375682446748, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01190578025698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56046438309357, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.6501420569037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.45985538510016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.32205823485288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.4213362857644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.3254460973393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.36326200776878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1350438366559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.53738507774712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.43902960493799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.28282897059066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.42427634098117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65923583486823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60873415539405, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.39024714619487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66523349021156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.82876323237488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97466728886246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.89452843928451, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.67041116090726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.63870699300467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60806866533521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.09022889967974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33132395141395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1422566167072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02336448195068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.85171345155105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92826438920278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9967936460588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02558962193989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86654130293297, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1805076876075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20590970247865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.04093233048125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.94025278141096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1695372755258, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.55006804279205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74946747581956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.08829699168929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17204398025235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82928257766983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80555288724541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03756487304749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.92246232242579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12455329081938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03614640032846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43863634543025, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57880144701099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.5662997648947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63602712862732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99359531127284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20326657631179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36371229951278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15013947578183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.39786147444195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32525340472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1699951830038, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94415449917722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06237685823791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88599230986543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09341138541605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29146577709628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.45209900958335, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.38892182999521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42662435004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86711355565461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43026737045712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.68555551249223, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34275603824345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26115762602807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81665975574816, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69084237577945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80375023000443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71118042427594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46412500503037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6314533607136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6742741594175, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69072074935896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.12667461230008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99949417466048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.92543412582965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72977842157017, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5701038761525, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.59977663872266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2927331361965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40263092608106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28632878234235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53250654562353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49417223286694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21737477440588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21700275153675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.24257812297434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33447437173405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36500808099656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62192540785213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95467067184597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32280422773096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.27797141913928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.85159096418194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.9332147424965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.87171080557967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.72359330386428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.38266657654837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28429001378173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01211175536163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84310882657518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.59049236660378, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.35514007446828, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9357580237877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05072699188574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00889117962727, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18219892584725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96556912199465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87607469195584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60138099475903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55643441032785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88066522817982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67510822228188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69837663925773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91860336977558, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70107216756422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66971331829183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87708149049162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72163687944706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94898877051006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.95474043698636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6415881902333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34129447656329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9434543592522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60307524718807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.18983136258927, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07720168711411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00591795170635, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73390898252362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.87915537734213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05356230153482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.19249105693204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35715717263174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92376356586935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8642597181964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.08761417167571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3787010770275, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22887351223902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18791972112416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71839956451682, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72871333258459, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71285525012034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95484908903208, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09252551101909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19565426763862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34851063541004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36918149511725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29871325433136, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43191348926673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54163438380152, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70996022231523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.44351635290319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3607156455027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25194927165909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09482587993352, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.05964578316673, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1247824238807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60195304694001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5077083162264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32915625849455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41904859018952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86240170807343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74311994285968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92758592270172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91004727072426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.90746519420465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.16764239198312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.44892482562022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29820349772235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29660996193417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34630077913107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28533190136021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32163037675376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20619082469412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94806731557186, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5296456958934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2046797163239, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32570812965447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27835226241817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18052001757422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21374473155299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13943605219035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26046795573633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21960702536101, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64774686400108, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.31556350692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46149005259649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52377288657563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.23839203319807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6963758650249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70207115016164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1906639429263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35726613372299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1634420410312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2066382813918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0471045722787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82199720210754, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8989666578373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77857374465485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70919453056075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74465000028516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60934516564298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96618622577306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78501792806425, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76326607151933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62556378625803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.65556548612001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68684981308908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.58597625405771, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86536967969084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75020367672924, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75062990936559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98349381034318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04847278769076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06193871613516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60529611931622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60807864200518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90198815097345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84425841280351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66689924421028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6348345250126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74311085652141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87596365908365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15467982049428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06917346679761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16088604193162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1767131466551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59084973064017, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3728256379574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83907971020484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05336598759212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15556945611712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11170249260897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26806948858284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19864576006458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02469106007196, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37555658552148, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4719110379968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46329135212792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72605970139526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42143976779836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5510290269881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42138738037778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49725923626676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.83017838441384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.96394971087318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80946954515628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.05895494780962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7764741456602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.82916340306784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49615933800648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53903204926397, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2199238563033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15553425915469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3233546324033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29143609072966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34909878462929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79549173605427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.86012460829116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62257045149929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36740770267758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1123342756572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28815691102787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89234388227695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64456440149245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.62943347351336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64788638508941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1774162868962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00402666791075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04453321057154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96838361247781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88321586599363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.90884833929827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7179718780841, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74821494678119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9038655497103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83750554707963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88584036004717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9446210717662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10339943212905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0848941093554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14949796034026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8874166822761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75795965886634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82124488293752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65346951457661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61396660096294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54800539421142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46513172439276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04018712803396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2845186523261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80052936345987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65349927893294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93158855841354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79425107834362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55284494377143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33529354683158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67881964988702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76309874382866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.06380422690371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34837478850592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28272356925105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08986442511201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19668777653186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9155347262711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86963033561574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02605497205086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07735953777274, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92691564488518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63814938665311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6176086632684, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71204578933798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41015509320589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42767992948878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23852235526199, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49442961672796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43422929731483, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28736530415493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12218377264868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10919349920911, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97579394436632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87630575654731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64709318534976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49382854321888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15699292788067, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.04266303105983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9313781112256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.69530603069572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82075180753827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00003866180036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.769068469798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62148930928706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0232146586156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05026787864644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.7648966725291, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45047976504434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.57906184617835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73227416508321, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39276167792192, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43027834183452, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.72614964359053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22140030401876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40388767907393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6481057355818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68848188004498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71473698288804, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70268409440689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43854075921617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44140071332018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74726961853332, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8365056762946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88893089201021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26317095880032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37686063355893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.01130398358468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92441725059159, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89449208176279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93827683979755, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6532995649937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4263959037515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75213347979019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0270700566813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76146992741955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10225140410179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81690399898379, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0438108934807, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.80207795946215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12592905184013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15713134695487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21575520670791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31507102860735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2320901589937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15393731859652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07037591089997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3198194947649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69216760463115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07388089953058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.64149353573187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71271228263036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.11471503048601, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98751858071931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7067835294734, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.74844014533139, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02489656616589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98294992874101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71598064705562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90144093756582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.88369269337046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99127786199946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.25279588129149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98339215080473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84625570624047, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50594333071952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50759103681195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.60423833142119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58324904624199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.89219195707862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.65911048978346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7149396953146, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.87432845164757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.68840177129488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.93449198055023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32948554144308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32849848634218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.22062659109166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95224360650606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.11404601693097, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79369852289173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.57121837540416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.70539792020504, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81536726931864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.66590107949516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.54759559550845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11939973938362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21880305870137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79422563292844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71312689925841, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46426831854224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10239283352094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37028780606191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13498012432488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.38863630293943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41150008980253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14488289984781, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.17802365337732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27104619189048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98787909982833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11321145433928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23295576374296, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85697546574279, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7517321560528, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50551757491745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62546167858358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86332633060258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76299264885851, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78913797285577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00024160373006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9168412948554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7772709282975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99344762670124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45458704231757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40001356367094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97082046191717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01206001173375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.08005345968613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22217203577799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2425856744218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46073627278375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.58143591458905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95177802714637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56745694254103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81253269752307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86554139490539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90464875740813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96373746132312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09789228558353, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19003786584736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66999752477344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45706703230238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2209401021726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26995519560073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23034844043512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41387280572972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33303611955198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52307299324875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67190914597171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29815694731651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11959184333037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78483612314953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92001295323621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94709162208174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06260774305197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1459174166961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06618787236135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61303967582782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.941078352886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01481054814181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92069860353018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87432907187284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88014313205952, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43750435674885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46298718335747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92373570713617, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93253015033825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89138819536463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6779918521803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51002812881958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.285974590119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32248822367578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35524577583958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73566009456992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6866778828559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84911622521342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68254626297609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53753290340698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.40541279646611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71834890975212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75716070422646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82803454081426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73900139072163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58423325500644, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16188235681071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.02650792631081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00049424696184, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27869714616556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18595899862997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03056917274476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6959315804981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29325844026822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24617524245163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.27923511016385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24377176084563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84290901749984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45792359801233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61079046047253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59272403631071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6658144632232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76765880138052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.83153611139085, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47875371686978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54124524065837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.99233076398606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9529292158228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9845811375129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0553452779518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96933895446485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33843538273938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7587929540311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.61541170919818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.48109292079488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.584127260661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73326548896145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63121700232358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06360781499562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8561585876055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92284538933916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11237349539573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07021236134935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.17184698357968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.31228518791787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33590023205818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50027778498863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.54209415864854, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3677893725537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22925202091126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09309676612556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15732000186526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.68995738997093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28297081793372, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.49225030811706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33431283007668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00621404043055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92641929792215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07027528339762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13008155599323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00907183642319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23094904986101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2825480931582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91271666538603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05360990148436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28838235720163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.79116186423771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.76779759668747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66567440561238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.70161264561204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.83214429583118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.77606667466077, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66108486881463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66515259357669, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.16857543076497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.40982511738886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.06344300783007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.82444237040852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.59077974741996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.57824858967784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.18599707786814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.23587599762591, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.52520755360774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.53896573427002, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.32372356389571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.39723460318574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.42867761884308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.41468909557778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.37521291073797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.28061929510595, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.37421531457154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.42880794685172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.10075544827296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.08909178471053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.9283105563295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.97631673436179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.83969795208085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.97701708069182, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.24948915106788, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.31081866218918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.15663810787721, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.05359196348086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.89974340615646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.86736216937868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.02917974715604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.10061155400963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.71230009060692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.55956047576315, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "VectorBT OSS", + "passed": true, + "scenario_id": "17" + }, + "detail": null, + "duration_seconds": 3.6247302379924804, + "framework": "vectorbt_oss", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.33867736091129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.24521783497416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.33353996675463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.17535391574476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.17558936557836, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.82464445421311, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.14823158528606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.02303868942406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0898265784532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.0375220132344, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.69877148351581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.8094147843381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.88896279741591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.58446195759505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94461858556683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.86726342876044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.264261049502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.97378019208324, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43666090180685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.64557703864863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.41486055220747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.62832834535065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.40627623062987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9966907903866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.62784889129782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.91665393395704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20129913778622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36824311350031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.44539780996692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29577808855632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60087912978423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67646038571121, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17445140133515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.07045121918839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.49723620471183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5174230546468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5413500261472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.47975770399327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29423417091141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27541464305773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43920860251751, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.06079463387583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.37828233356667, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.30210368322795, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8891828858322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.6817301819728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39002953943762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68517685658658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.65084298157255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.93501858046714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.1907166501479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25659603867345, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36428253311259, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01156809266551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.31879308123833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.40136182036203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17903686528695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0619221034904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25968317752123, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.56379928977212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.80666495491704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94182055020374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.92425119368045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.78971486194605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.23057477534164, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4049348801832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.24159987362269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.06843389735158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.22183940097844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.93299182979392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.91637693821662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.20188970935105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.57826653579693, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48615354430639, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48852996658736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.70097560384337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.56660104606993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.60339517911308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.5215727488348, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3913600319206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.66423065390151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49406633741951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.64849065100934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.63323070552582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.88914932519062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.96225788336264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.21454142458283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.08973549159177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.91131718633395, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.95365272243404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3677264483084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.38542382708798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.727355594576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.80184598433505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.75895482632265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.65309620079978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.18275486854981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08066364611346, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86355002974182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8079829991331, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.50774498473834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.15500147527054, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25388112126257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.46869004462158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.49982930970904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.64941137818613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08181708620197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89782993828217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.34821493675021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0511570084608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36636841676064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.22802936588096, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13124547885464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.97034570188329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84675502390373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82877025439984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.83150510044737, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.80556016637114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.10675350799055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84453919660923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.88147160830762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.95771616416846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25900520967262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.28214715432236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.64410132782972, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.78845498147822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.96240900085823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01654413042846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08257869239384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.92270971634117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9249177043285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.5475977762062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85856446370276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8876461806366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.75554506700362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4712342394787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.13596092844963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.29084433077668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.50946620110103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42209873300993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16470383307056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.10251353436806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16007736983093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25346405776058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.02466944517249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.03234873384025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11031617256702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.14530663460309, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4442900442657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39955675926143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.19954612220634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.33374471974878, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.17850638089598, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31970147221125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.19274532121113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3840327772038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.48120231354616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7121932598933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86988580253298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.76604202197464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79597689506201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42129188541651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67647877199742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82191220927734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84470059887572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.72847566121298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43094423441607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39808368032986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31641481415083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.40267706340073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60680412325432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.51452016846274, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31471449163298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43834781075664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84446638005844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.49607372712997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85869892480143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.87107213537678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.83017137699973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.73075043509533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85446221431528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13025477242799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.08577867542596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20567187514531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27862593574773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.19411735771268, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.916410701528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.80020190906805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.03429888110497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99059510104857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.12230359240208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.21493112615859, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.7362497471537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.90953724611552, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99997604721491, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25158859302469, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98246224229298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.18380160087476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.54700954481861, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.87858935796136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82466366840129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79031352535364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.52782616930364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.71180131795903, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.66862984653359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.94388954493733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.40172293508901, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.27308992706585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30251070708916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.36341600243385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.07297082017436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.63576619816114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.36545808934646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.425342939227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.59476724765915, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.41575843731752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30499551372479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.2943417590765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.20190364871404, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.35429934455371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.25575482738782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.30124986928953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.90191386326036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.96508444596826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.75989432781597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.47851546822666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.43273982617148, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.78073270556935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.29707161405977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.17141051171173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.83897503233364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.92050920813638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.39298906893524, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.24960092613485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.15249367428707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11254847884746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.6477102979142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.66187174327492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.22816086359947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.18924739108921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.15833017318171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.35388264537053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.30391448349607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1765702619787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.03923857682982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.14087662618776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.60285889768487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.71610220194758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.43129513858887, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7750138677335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.5417619126041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.26004415392279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.48237494714664, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.58658168452075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.75620116852377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.69650084660127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.92028780826493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.62951533581877, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.58269597074072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.65987379372794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.66612454309691, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.8169746660663, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.5926039176473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28582192646724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.47874410921285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.57232514477201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.07482838670386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.06329982176626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.939646337063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.02294071169972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.73925579999096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.99566659891293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.99166395939717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.91107729961162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.35440315345551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.19457800884426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.87539474258334, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.03831344319956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.84933568810729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.942984467456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28778584744732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02443267142746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94057536205155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72906200441219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38445225202611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38197492987447, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18213638354725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04715001455901, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19838818284391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29725636974986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23572569098852, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3432106471416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46834681822006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.39304905252162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4607924127623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.87391242777782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81782457593818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.74839547168068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9804659897062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.1820620687209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53780103937676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.35114383691389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19430169329608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0736265695374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.56101740773187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02847405275406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02877565620591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02966575553104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71076966315076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5342590029927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87172892779671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8898807030855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7509399436349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70594283596789, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83044892913243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71383587412238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52870331564132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68221846843574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68293629394864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76185935158753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.77694161620539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94666597863043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09046839544105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0093802192737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.78182814117551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75541337031265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72371690451082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60849664049482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94340121095276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.85028148090369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7183641880944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93201467581261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6600503714477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71003338575711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64414870400898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73370138654631, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51475031329109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60797476194675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42059367470232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66628705381636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53531464201514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2030497935449, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62268440600192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.91948342162647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67919849510083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43887673234494, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17984056111294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94368190633774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.11465699863811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97059505880482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29459604644765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53931157007439, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49631090115352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52393358151217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66942128922241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.4946582273999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29424834791328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07603918687664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33479567014805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.14550463966849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9928646204638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96872153502625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.87705988155102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.53452507075421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.56396146367423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59385740536969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64213975217385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78882758292927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.63683672368549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.48470633760584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39062489567554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.494696351115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93573503075692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.98885415853535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06245234985892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0289821017493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.22900373831216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.3157346032948, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59973514861235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.77086454804387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82096590563263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.95769963997635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.21106339352885, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07551182524406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09759300944572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33359941396125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2288848699624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2069451450579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46522997402728, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63157812424986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92215275507255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81904355011355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34536862719393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4540782896955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65179701007457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58231165488735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59222373899847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41076247699506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.57987210255567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93696117180936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88875391692817, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67494277755462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99358787892747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07975990716614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07047992178705, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33559891886243, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59225467831386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63479260217548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80334597318698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.98346554786147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92321614880655, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83699346593512, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93109508241774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96354668527802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08641930356686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23768236549668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08211844013991, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20846159911048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.13954155854589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89054598561034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11646823351487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10168176297485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.30038009222437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.41339845504724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10852951715277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84680988625497, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00138088356287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04342924144086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01673785551608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8508081374985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87089994615239, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9378403552245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05201413714099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0235397935625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26517251606933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15470785076896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4932600250258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.51252060274227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53140073996916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90203063702091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26191114348926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0634456423351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43521818420996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38568536751181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21262216293847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23411145607675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82330133886903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61660062265747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71484163940588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72855192282307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3692642985158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37837200951205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19352686807355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28024660066703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96384685743692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14877036790756, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09572264391801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53876217367774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64617178108719, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85422093876446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60924422208079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52724603055836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46494136842418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44406941275119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32264147745168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0360221167863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01384655286363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97262653583181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.28024889847717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96758302287454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25528568314509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20092793334622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49508373939167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73466658206335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46436704586412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69111891541637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21128313549013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37756823246967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04218716563325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00014735551822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.93318531635457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84116622880475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50637869144556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66826656058106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36257300920573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60779676375832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36220969555443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.1193839744838, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.89096232869592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.75394086603562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.10653141004636, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.98502552303084, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03115476672883, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05866288388766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80506699745925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97004409317438, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39339911911829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28070286679336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74175784445059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6733758391721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81901224922302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84844274508458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.60313885279771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41938832519848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64052127057325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54200410559555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73590345101391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62782637305553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79185882856454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8357946573913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79563500808236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09144139124615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.91260250945975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.67552176869381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.66062267455895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64149069106048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37359630109037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.51652219716766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54575759654936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58821852619887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76782809841714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6119124553235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74629736846254, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61327551923173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.32896871135786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13780861275266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.12507835931243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13114200203424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37230639398891, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.298526480022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14580661294434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.26371087049277, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.19265250778471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.34688434505053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.27944969864926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00376526097061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.12691845430324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13627424638673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.90552697963446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86432013057937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.88314466139805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.85684478131836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.8333575750649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87580958070879, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87723690769735, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02118341969194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14559411024791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1102070847533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.03652679668627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.64848582455738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.5160908672533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.67122680039915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.49638519206744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.23851904732544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.12623758622358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.13616044249197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.97730849654188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.93950245741028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.92103698222829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.92708766921471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.318742774315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.23642124916759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.21999028274801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.22126197659611, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.84560909030802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.53569591871245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0165686304024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91735297539282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2390830156373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.14925296519219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.22089116397768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87029928541635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.89974631246403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06863681183862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.57589026049908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.50862549547844, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62801821971621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81567744205196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33854066905738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.96569574948703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07274851876403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.95622489428452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.72051069276088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.55232295814028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.40473126616526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65640141611814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56665701011867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.46095751045398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.76022002087706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.81381751472117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23375682446748, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01190578025698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56046438309357, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.6501420569037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.45985538510016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.32205823485288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.4213362857644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.3254460973393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.36326200776878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1350438366559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.53738507774712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.43902960493799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.28282897059066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.42427634098117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65923583486823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60873415539405, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.39024714619487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66523349021156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.82876323237488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97466728886246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.89452843928451, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.67041116090726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.63870699300467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60806866533521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.09022889967974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33132395141395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1422566167072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02336448195068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.85171345155105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92826438920278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9967936460588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02558962193989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86654130293297, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1805076876075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20590970247865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.04093233048125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.94025278141096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1695372755258, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.55006804279205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74946747581956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.08829699168929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17204398025235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82928257766983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80555288724541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03756487304749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.92246232242579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12455329081938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03614640032846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43863634543025, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57880144701099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.5662997648947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63602712862732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99359531127284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20326657631179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36371229951278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15013947578183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.39786147444195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32525340472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1699951830038, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94415449917722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06237685823791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88599230986543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09341138541605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29146577709628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.45209900958335, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.38892182999521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42662435004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86711355565461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43026737045712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.68555551249223, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34275603824345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26115762602807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81665975574816, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69084237577945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80375023000443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71118042427594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46412500503037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6314533607136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6742741594175, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69072074935896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.12667461230008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99949417466048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.92543412582965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72977842157017, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5701038761525, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.59977663872266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2927331361965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40263092608106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28632878234235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53250654562353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49417223286694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21737477440588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21700275153675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.24257812297434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33447437173405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36500808099656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62192540785213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95467067184597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32280422773096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.27797141913928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.85159096418194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.9332147424965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.87171080557967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.72359330386428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.38266657654837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28429001378173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01211175536163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84310882657518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.59049236660378, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.35514007446828, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9357580237877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05072699188574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00889117962727, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18219892584725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96556912199465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87607469195584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60138099475903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55643441032785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88066522817982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67510822228188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69837663925773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91860336977558, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70107216756422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66971331829183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87708149049162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72163687944706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94898877051006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.95474043698636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6415881902333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34129447656329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9434543592522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60307524718807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.18983136258927, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07720168711411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00591795170635, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73390898252362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.87915537734213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05356230153482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.19249105693204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35715717263174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92376356586935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8642597181964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.08761417167571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3787010770275, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22887351223902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18791972112416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71839956451682, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72871333258459, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71285525012034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95484908903208, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09252551101909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19565426763862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34851063541004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36918149511725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29871325433136, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43191348926673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54163438380152, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70996022231523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.44351635290319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3607156455027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25194927165909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09482587993352, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.05964578316673, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1247824238807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60195304694001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5077083162264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32915625849455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41904859018952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86240170807343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74311994285968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92758592270172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91004727072426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.90746519420465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.16764239198312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.44892482562022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29820349772235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29660996193417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34630077913107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28533190136021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32163037675376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20619082469412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94806731557186, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5296456958934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2046797163239, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32570812965447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27835226241817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18052001757422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21374473155299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13943605219035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26046795573633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21960702536101, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64774686400108, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.31556350692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46149005259649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52377288657563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.23839203319807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6963758650249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70207115016164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1906639429263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35726613372299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1634420410312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2066382813918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0471045722787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82199720210754, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8989666578373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77857374465485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70919453056075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74465000028516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60934516564298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96618622577306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78501792806425, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76326607151933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62556378625803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.65556548612001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68684981308908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.58597625405771, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86536967969084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75020367672924, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75062990936559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98349381034318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04847278769076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06193871613516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60529611931622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60807864200518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90198815097345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84425841280351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66689924421028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6348345250126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74311085652141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87596365908365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15467982049428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06917346679761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16088604193162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1767131466551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59084973064017, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3728256379574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83907971020484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05336598759212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15556945611712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11170249260897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26806948858284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19864576006458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02469106007196, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37555658552148, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4719110379968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46329135212792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.72605970139526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42143976779836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5510290269881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42138738037778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49725923626676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.83017838441384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.96394971087318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80946954515628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.05895494780962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7764741456602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.82916340306784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49615933800648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53903204926397, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2199238563033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15553425915469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3233546324033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29143609072966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34909878462929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79549173605427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.86012460829116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62257045149929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36740770267758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1123342756572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28815691102787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89234388227695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64456440149245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.62943347351336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64788638508941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1774162868962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00402666791075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04453321057154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96838361247781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88321586599363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.90884833929827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7179718780841, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74821494678119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9038655497103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83750554707963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88584036004717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9446210717662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10339943212905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0848941093554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14949796034026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8874166822761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75795965886634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82124488293752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65346951457661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61396660096294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54800539421142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46513172439276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04018712803396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2845186523261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80052936345987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65349927893294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93158855841354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79425107834362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55284494377143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33529354683158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67881964988702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76309874382866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.06380422690371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34837478850592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.28272356925105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08986442511201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.19668777653186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9155347262711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86963033561574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02605497205086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07735953777274, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92691564488518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63814938665311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6176086632684, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71204578933798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41015509320589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42767992948878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23852235526199, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49442961672796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43422929731483, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28736530415493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12218377264868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10919349920911, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97579394436632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87630575654731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64709318534976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49382854321888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15699292788067, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.04266303105983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9313781112256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.69530603069572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82075180753827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00003866180036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.769068469798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62148930928706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0232146586156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05026787864644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.7648966725291, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45047976504434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.57906184617835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73227416508321, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39276167792192, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43027834183452, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.72614964359053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22140030401876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40388767907393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6481057355818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68848188004498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71473698288804, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70268409440689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43854075921617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44140071332018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74726961853332, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8365056762946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88893089201021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26317095880032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37686063355893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.01130398358468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92441725059159, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89449208176279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93827683979755, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6532995649937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4263959037515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75213347979019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.0270700566813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76146992741955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10225140410179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81690399898379, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0438108934807, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.80207795946215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12592905184013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15713134695487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21575520670791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31507102860735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2320901589937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15393731859652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07037591089997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3198194947649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69216760463115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07388089953058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.64149353573187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71271228263036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.11471503048601, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98751858071931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7067835294734, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.74844014533139, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02489656616589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98294992874101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71598064705562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90144093756582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.88369269337046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99127786199946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.25279588129149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98339215080473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84625570624047, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50594333071952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50759103681195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.60423833142119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58324904624199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.89219195707862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.65911048978346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.7149396953146, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.87432845164757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.68840177129488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.93449198055023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32948554144308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.32849848634218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.22062659109166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95224360650606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.11404601693097, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79369852289173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.57121837540416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.70539792020504, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.81536726931864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.66590107949516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.54759559550845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11939973938362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21880305870137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79422563292844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71312689925841, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46426831854224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10239283352094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37028780606191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13498012432488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.38863630293943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41150008980253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14488289984781, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.17802365337732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27104619189048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98787909982833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11321145433928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23295576374296, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85697546574279, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7517321560528, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50551757491745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62546167858358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86332633060258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76299264885851, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78913797285577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00024160373006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9168412948554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7772709282975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99344762670124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45458704231757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40001356367094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97082046191717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01206001173375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.08005345968613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22217203577799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2425856744218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.46073627278375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.58143591458905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95177802714637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56745694254103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81253269752307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86554139490539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90464875740813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96373746132312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09789228558353, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19003786584736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66999752477344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45706703230238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2209401021726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26995519560073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23034844043512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41387280572972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33303611955198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52307299324875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.67190914597171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29815694731651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11959184333037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78483612314953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92001295323621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94709162208174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06260774305197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1459174166961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06618787236135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61303967582782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.941078352886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01481054814181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92069860353018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87432907187284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88014313205952, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.43750435674885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.46298718335747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92373570713617, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93253015033825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89138819536463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6779918521803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51002812881958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.285974590119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32248822367578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35524577583958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73566009456992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6866778828559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84911622521342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68254626297609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53753290340698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.40541279646611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71834890975212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.75716070422646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82803454081426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73900139072163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58423325500644, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16188235681071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.02650792631081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00049424696184, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27869714616556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.18595899862997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03056917274476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.6959315804981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.29325844026822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24617524245163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.27923511016385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24377176084563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84290901749984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45792359801233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61079046047253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59272403631071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.6658144632232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76765880138052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.83153611139085, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47875371686978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54124524065837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.99233076398606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9529292158228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9845811375129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0553452779518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96933895446485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33843538273938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7587929540311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.61541170919818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.48109292079488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.584127260661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73326548896145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63121700232358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06360781499562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8561585876055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92284538933916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11237349539573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07021236134935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.17184698357968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.31228518791787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.33590023205818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50027778498863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.54209415864854, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3677893725537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.22925202091126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09309676612556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15732000186526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.68995738997093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28297081793372, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.49225030811706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.33431283007668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00621404043055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92641929792215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07027528339762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13008155599323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.00907183642319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23094904986101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2825480931582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91271666538603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05360990148436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28838235720163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.79116186423771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.76779759668747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66567440561238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.70161264561204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.83214429583118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.77606667466077, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66108486881463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.66515259357669, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.16857543076497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.40982511738886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.06344300783007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.82444237040852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.59077974741996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.57824858967784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.18599707786814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.23587599762591, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.52520755360774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.53896573427002, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.32372356389571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.39723460318574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.42867761884308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.41468909557778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.37521291073797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.28061929510595, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.37421531457154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.42880794685172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.10075544827296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.08909178471053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.9283105563295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.97631673436179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.83969795208085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.97701708069182, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.24948915106788, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.31081866218918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.15663810787721, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.05359196348086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.89974340615646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.86736216937868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.02917974715604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.10061155400963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.71230009060692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.55956047576315, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-04T00:00:00" + } + ], + "final_value": 99082.81840069561, + "framework": "VectorBT OSS", + "num_trades": 600, + "total_pnl": -917.1815993043856, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33867736091129, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 100.24521783497416, + "exit_time": "2020-01-03T00:00:00", + "pnl": -9.345952593713491, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33353996675463, + "entry_time": "2020-01-05T00:00:00", + "exit_price": 100.17535391574476, + "exit_time": "2020-01-06T00:00:00", + "pnl": -15.81860510098636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.17558936557836, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 99.82464445421311, + "exit_time": "2020-01-09T00:00:00", + "pnl": -35.09449113652465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.14823158528606, + "entry_time": "2020-01-11T00:00:00", + "exit_price": 100.02303868942406, + "exit_time": "2020-01-12T00:00:00", + "pnl": -12.519289586199989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0898265784532, + "entry_time": "2020-01-14T00:00:00", + "exit_price": 100.0375220132344, + "exit_time": "2020-01-15T00:00:00", + "pnl": -5.2304565218804555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.69877148351581, + "entry_time": "2020-01-17T00:00:00", + "exit_price": 99.8094147843381, + "exit_time": "2020-01-18T00:00:00", + "pnl": 11.064330082228935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.88896279741591, + "entry_time": "2020-01-20T00:00:00", + "exit_price": 99.58446195759505, + "exit_time": "2020-01-21T00:00:00", + "pnl": -30.450083982086085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.94461858556683, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 99.86726342876044, + "exit_time": "2020-01-24T00:00:00", + "pnl": -7.735515680639082, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.264261049502, + "entry_time": "2020-01-26T00:00:00", + "exit_price": 99.97378019208324, + "exit_time": "2020-01-27T00:00:00", + "pnl": -29.048085741875695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43666090180685, + "entry_time": "2020-01-29T00:00:00", + "exit_price": 99.64557703864863, + "exit_time": "2020-01-30T00:00:00", + "pnl": 20.891613684177912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.41486055220747, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 99.62832834535065, + "exit_time": "2020-02-02T00:00:00", + "pnl": 21.3467793143181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.40627623062987, + "entry_time": "2020-02-04T00:00:00", + "exit_price": 98.9966907903866, + "exit_time": "2020-02-05T00:00:00", + "pnl": -40.95854402432764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.62784889129782, + "entry_time": "2020-02-07T00:00:00", + "exit_price": 98.91665393395704, + "exit_time": "2020-02-08T00:00:00", + "pnl": 28.880504265922013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20129913778622, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 99.36824311350031, + "exit_time": "2020-02-11T00:00:00", + "pnl": 16.69439757140907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.44539780996692, + "entry_time": "2020-02-13T00:00:00", + "exit_price": 99.29577808855632, + "exit_time": "2020-02-14T00:00:00", + "pnl": -14.961972141060187, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60087912978423, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 98.67646038571121, + "exit_time": "2020-02-17T00:00:00", + "pnl": 7.5581255926977065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17445140133515, + "entry_time": "2020-02-19T00:00:00", + "exit_price": 99.07045121918839, + "exit_time": "2020-02-20T00:00:00", + "pnl": -10.400018214676265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.49723620471183, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 99.5174230546468, + "exit_time": "2020-02-23T00:00:00", + "pnl": 2.0186849934972884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5413500261472, + "entry_time": "2020-02-25T00:00:00", + "exit_price": 99.47975770399327, + "exit_time": "2020-02-26T00:00:00", + "pnl": -6.1592322153927626, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.29423417091141, + "entry_time": "2020-02-28T00:00:00", + "exit_price": 99.27541464305773, + "exit_time": "2020-02-29T00:00:00", + "pnl": -1.8819527853679574, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.4392086025175, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.06079463387583, + "exit_time": "2020-03-03T00:00:00", + "pnl": -37.841396864166654, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.37828233356667, + "entry_time": "2020-03-05T00:00:00", + "exit_price": 99.30210368322795, + "exit_time": "2020-03-06T00:00:00", + "pnl": -7.617865033871851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.8891828858322, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 98.6817301819728, + "exit_time": "2020-03-09T00:00:00", + "pnl": -20.745270385940273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.39002953943762, + "entry_time": "2020-03-11T00:00:00", + "exit_price": 98.68517685658658, + "exit_time": "2020-03-12T00:00:00", + "pnl": 29.51473171489596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.65084298157255, + "entry_time": "2020-03-14T00:00:00", + "exit_price": 98.93501858046714, + "exit_time": "2020-03-15T00:00:00", + "pnl": 28.4175598894592, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.19071665014789, + "entry_time": "2020-03-17T00:00:00", + "exit_price": 99.25659603867345, + "exit_time": "2020-03-18T00:00:00", + "pnl": 6.587938852555908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36428253311259, + "entry_time": "2020-03-20T00:00:00", + "exit_price": 99.01156809266551, + "exit_time": "2020-03-21T00:00:00", + "pnl": -35.27144404470732, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31879308123833, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.40136182036203, + "exit_time": "2020-03-24T00:00:00", + "pnl": 8.25687391237011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17903686528695, + "entry_time": "2020-03-26T00:00:00", + "exit_price": 99.0619221034904, + "exit_time": "2020-03-27T00:00:00", + "pnl": -11.711476179654312, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25968317752123, + "entry_time": "2020-03-29T00:00:00", + "exit_price": 99.56379928977212, + "exit_time": "2020-03-30T00:00:00", + "pnl": 30.41161122508953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.80666495491704, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 99.94182055020374, + "exit_time": "2020-04-02T00:00:00", + "pnl": 13.515559528670451, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.92425119368045, + "entry_time": "2020-04-04T00:00:00", + "exit_price": 99.78971486194605, + "exit_time": "2020-04-05T00:00:00", + "pnl": -13.453633173439528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.23057477534162, + "entry_time": "2020-04-07T00:00:00", + "exit_price": 100.4049348801832, + "exit_time": "2020-04-08T00:00:00", + "pnl": 17.43601048415826, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.24159987362269, + "entry_time": "2020-04-10T00:00:00", + "exit_price": 100.06843389735158, + "exit_time": "2020-04-11T00:00:00", + "pnl": -17.316597627110752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.22183940097844, + "entry_time": "2020-04-13T00:00:00", + "exit_price": 99.93299182979392, + "exit_time": "2020-04-14T00:00:00", + "pnl": -28.884757118451887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91637693821662, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 100.20188970935105, + "exit_time": "2020-04-17T00:00:00", + "pnl": 28.55127711344352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.57826653579691, + "entry_time": "2020-04-19T00:00:00", + "exit_price": 100.48615354430639, + "exit_time": "2020-04-20T00:00:00", + "pnl": -9.211299149052365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.48852996658735, + "entry_time": "2020-04-22T00:00:00", + "exit_price": 100.70097560384337, + "exit_time": "2020-04-23T00:00:00", + "pnl": 21.24456372560246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.56660104606993, + "entry_time": "2020-04-25T00:00:00", + "exit_price": 100.60339517911308, + "exit_time": "2020-04-26T00:00:00", + "pnl": 3.679413304314494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5215727488348, + "entry_time": "2020-04-28T00:00:00", + "exit_price": 100.3913600319206, + "exit_time": "2020-04-29T00:00:00", + "pnl": -13.021271691420111, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.6642306539015, + "entry_time": "2020-05-01T00:00:00", + "exit_price": 100.49406633741951, + "exit_time": "2020-05-02T00:00:00", + "pnl": -17.016431648198704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64849065100934, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.63323070552582, + "exit_time": "2020-05-05T00:00:00", + "pnl": -1.5259945483521165, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88914932519062, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 100.96225788336264, + "exit_time": "2020-05-08T00:00:00", + "pnl": 7.310855817202366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.21454142458283, + "entry_time": "2020-05-10T00:00:00", + "exit_price": 101.08973549159177, + "exit_time": "2020-05-11T00:00:00", + "pnl": -12.480593299106602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.91131718633395, + "entry_time": "2020-05-13T00:00:00", + "exit_price": 100.95365272243404, + "exit_time": "2020-05-14T00:00:00", + "pnl": 4.2335536100097215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3677264483084, + "entry_time": "2020-05-16T00:00:00", + "exit_price": 100.38542382708798, + "exit_time": "2020-05-17T00:00:00", + "pnl": 1.7697378779573114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.727355594576, + "entry_time": "2020-05-19T00:00:00", + "exit_price": 99.80184598433505, + "exit_time": "2020-05-20T00:00:00", + "pnl": 7.449038975904898, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.75895482632264, + "entry_time": "2020-05-22T00:00:00", + "exit_price": 99.65309620079978, + "exit_time": "2020-05-23T00:00:00", + "pnl": -10.585862552285619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.18275486854981, + "entry_time": "2020-05-25T00:00:00", + "exit_price": 99.08066364611346, + "exit_time": "2020-05-26T00:00:00", + "pnl": -10.209122243634283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86355002974182, + "entry_time": "2020-05-28T00:00:00", + "exit_price": 98.8079829991331, + "exit_time": "2020-05-29T00:00:00", + "pnl": -5.556703060871371, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50774498473835, + "entry_time": "2020-05-31T00:00:00", + "exit_price": 98.15500147527054, + "exit_time": "2020-06-01T00:00:00", + "pnl": -35.2743509467814, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25388112126257, + "entry_time": "2020-06-03T00:00:00", + "exit_price": 98.46869004462158, + "exit_time": "2020-06-04T00:00:00", + "pnl": 21.480892335901558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.49982930970904, + "entry_time": "2020-06-06T00:00:00", + "exit_price": 98.64941137818613, + "exit_time": "2020-06-07T00:00:00", + "pnl": 14.958206847708766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08181708620197, + "entry_time": "2020-06-09T00:00:00", + "exit_price": 98.89782993828217, + "exit_time": "2020-06-10T00:00:00", + "pnl": -18.398714791979387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.34821493675021, + "entry_time": "2020-06-12T00:00:00", + "exit_price": 99.0511570084608, + "exit_time": "2020-06-13T00:00:00", + "pnl": -29.705792828940503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36636841676064, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 99.22802936588096, + "exit_time": "2020-06-16T00:00:00", + "pnl": -13.833905087967935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.13124547885464, + "entry_time": "2020-06-18T00:00:00", + "exit_price": 98.97034570188329, + "exit_time": "2020-06-19T00:00:00", + "pnl": -16.089977697134827, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84675502390374, + "entry_time": "2020-06-21T00:00:00", + "exit_price": 98.82877025439984, + "exit_time": "2020-06-22T00:00:00", + "pnl": -1.7984769503897269, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83150510044737, + "entry_time": "2020-06-24T00:00:00", + "exit_price": 98.80556016637114, + "exit_time": "2020-06-25T00:00:00", + "pnl": -2.594493407623588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.10675350799055, + "entry_time": "2020-06-27T00:00:00", + "exit_price": 98.84453919660923, + "exit_time": "2020-06-28T00:00:00", + "pnl": -26.22143113813138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88147160830762, + "entry_time": "2020-06-30T00:00:00", + "exit_price": 98.95771616416846, + "exit_time": "2020-07-01T00:00:00", + "pnl": 7.624455586083911, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25900520967261, + "entry_time": "2020-07-03T00:00:00", + "exit_price": 99.28214715432236, + "exit_time": "2020-07-04T00:00:00", + "pnl": 2.3141944649751167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.64410132782972, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 98.78845498147822, + "exit_time": "2020-07-07T00:00:00", + "pnl": 14.435365364850838, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96240900085823, + "entry_time": "2020-07-09T00:00:00", + "exit_price": 99.01654413042846, + "exit_time": "2020-07-10T00:00:00", + "pnl": 5.413512957022704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08257869239384, + "entry_time": "2020-07-12T00:00:00", + "exit_price": 98.92270971634117, + "exit_time": "2020-07-13T00:00:00", + "pnl": -15.986897605266392, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9249177043285, + "entry_time": "2020-07-15T00:00:00", + "exit_price": 98.5475977762062, + "exit_time": "2020-07-16T00:00:00", + "pnl": -37.73199281222901, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85856446370276, + "entry_time": "2020-07-18T00:00:00", + "exit_price": 98.8876461806366, + "exit_time": "2020-07-19T00:00:00", + "pnl": 2.9081716933831103, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.75554506700362, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 98.4712342394787, + "exit_time": "2020-07-22T00:00:00", + "pnl": -28.431082752491932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.13596092844963, + "entry_time": "2020-07-24T00:00:00", + "exit_price": 98.29084433077668, + "exit_time": "2020-07-25T00:00:00", + "pnl": 15.488340232704445, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50946620110103, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 98.42209873300993, + "exit_time": "2020-07-28T00:00:00", + "pnl": -8.73674680911023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16470383307056, + "entry_time": "2020-07-30T00:00:00", + "exit_price": 98.10251353436806, + "exit_time": "2020-07-31T00:00:00", + "pnl": -6.219029870250381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16007736983093, + "entry_time": "2020-08-02T00:00:00", + "exit_price": 98.25346405776058, + "exit_time": "2020-08-03T00:00:00", + "pnl": 9.338668792965166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.02466944517249, + "entry_time": "2020-08-05T00:00:00", + "exit_price": 98.03234873384025, + "exit_time": "2020-08-06T00:00:00", + "pnl": 0.7679288667759465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11031617256702, + "entry_time": "2020-08-08T00:00:00", + "exit_price": 98.14530663460309, + "exit_time": "2020-08-09T00:00:00", + "pnl": 3.4990462036063263, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.44429004426568, + "entry_time": "2020-08-11T00:00:00", + "exit_price": 98.39955675926143, + "exit_time": "2020-08-12T00:00:00", + "pnl": -4.473328500425566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19954612220634, + "entry_time": "2020-08-14T00:00:00", + "exit_price": 98.33374471974878, + "exit_time": "2020-08-15T00:00:00", + "pnl": 13.419859754243646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.17850638089598, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.31970147221125, + "exit_time": "2020-08-18T00:00:00", + "pnl": 14.119509131526797, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19274532121113, + "entry_time": "2020-08-20T00:00:00", + "exit_price": 98.3840327772038, + "exit_time": "2020-08-21T00:00:00", + "pnl": 19.128745599266495, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48120231354616, + "entry_time": "2020-08-23T00:00:00", + "exit_price": 98.7121932598933, + "exit_time": "2020-08-24T00:00:00", + "pnl": 23.099094634713424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86988580253298, + "entry_time": "2020-08-26T00:00:00", + "exit_price": 98.76604202197464, + "exit_time": "2020-08-27T00:00:00", + "pnl": -10.384378055833565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.79597689506201, + "entry_time": "2020-08-29T00:00:00", + "exit_price": 98.42129188541651, + "exit_time": "2020-08-30T00:00:00", + "pnl": -37.468500964550344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67647877199742, + "entry_time": "2020-09-01T00:00:00", + "exit_price": 98.82191220927734, + "exit_time": "2020-09-02T00:00:00", + "pnl": 14.543343727991953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84470059887572, + "entry_time": "2020-09-04T00:00:00", + "exit_price": 98.72847566121298, + "exit_time": "2020-09-05T00:00:00", + "pnl": -11.622493766273578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43094423441607, + "entry_time": "2020-09-07T00:00:00", + "exit_price": 98.39808368032986, + "exit_time": "2020-09-08T00:00:00", + "pnl": -3.28605540862128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31641481415083, + "entry_time": "2020-09-10T00:00:00", + "exit_price": 98.40267706340073, + "exit_time": "2020-09-11T00:00:00", + "pnl": 8.626224924989856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60680412325432, + "entry_time": "2020-09-13T00:00:00", + "exit_price": 98.51452016846274, + "exit_time": "2020-09-14T00:00:00", + "pnl": -9.22839547915828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31471449163298, + "entry_time": "2020-09-16T00:00:00", + "exit_price": 98.43834781075664, + "exit_time": "2020-09-17T00:00:00", + "pnl": 12.363331912365538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84446638005844, + "entry_time": "2020-09-19T00:00:00", + "exit_price": 98.49607372712997, + "exit_time": "2020-09-20T00:00:00", + "pnl": -34.83926529284673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85869892480143, + "entry_time": "2020-09-22T00:00:00", + "exit_price": 98.87107213537678, + "exit_time": "2020-09-23T00:00:00", + "pnl": 1.237321057534757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83017137699973, + "entry_time": "2020-09-25T00:00:00", + "exit_price": 98.73075043509533, + "exit_time": "2020-09-26T00:00:00", + "pnl": -9.942094190439832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85446221431528, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.13025477242799, + "exit_time": "2020-09-29T00:00:00", + "pnl": 27.579255811271253, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08577867542596, + "entry_time": "2020-10-01T00:00:00", + "exit_price": 99.20567187514531, + "exit_time": "2020-10-02T00:00:00", + "pnl": 11.989319971935686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27862593574773, + "entry_time": "2020-10-04T00:00:00", + "exit_price": 99.19411735771268, + "exit_time": "2020-10-05T00:00:00", + "pnl": -8.450857803504164, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.91641070152801, + "entry_time": "2020-10-07T00:00:00", + "exit_price": 98.80020190906805, + "exit_time": "2020-10-08T00:00:00", + "pnl": -11.620879245995752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.03429888110497, + "entry_time": "2020-10-10T00:00:00", + "exit_price": 97.99059510104857, + "exit_time": "2020-10-11T00:00:00", + "pnl": -4.3703780056404185, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.12230359240208, + "entry_time": "2020-10-13T00:00:00", + "exit_price": 98.21493112615859, + "exit_time": "2020-10-14T00:00:00", + "pnl": 9.2627533756513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7362497471537, + "entry_time": "2020-10-16T00:00:00", + "exit_price": 97.90953724611552, + "exit_time": "2020-10-17T00:00:00", + "pnl": 17.32874989618125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99997604721491, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.25158859302469, + "exit_time": "2020-10-20T00:00:00", + "pnl": 25.161254580977754, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98246224229298, + "entry_time": "2020-10-22T00:00:00", + "exit_price": 98.18380160087476, + "exit_time": "2020-10-23T00:00:00", + "pnl": 20.133935858177665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.54700954481861, + "entry_time": "2020-10-25T00:00:00", + "exit_price": 98.87858935796136, + "exit_time": "2020-10-26T00:00:00", + "pnl": 33.157981314275276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.82466366840129, + "entry_time": "2020-10-28T00:00:00", + "exit_price": 98.79031352535364, + "exit_time": "2020-10-29T00:00:00", + "pnl": -3.4350143047646498, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.52782616930364, + "entry_time": "2020-10-31T00:00:00", + "exit_price": 98.71180131795903, + "exit_time": "2020-11-01T00:00:00", + "pnl": 18.39751486553922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.66862984653359, + "entry_time": "2020-11-03T00:00:00", + "exit_price": 98.94388954493733, + "exit_time": "2020-11-04T00:00:00", + "pnl": 27.525969840374387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.40172293508903, + "entry_time": "2020-11-06T00:00:00", + "exit_price": 98.27308992706585, + "exit_time": "2020-11-07T00:00:00", + "pnl": -12.863300802317212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30251070708916, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 98.36341600243385, + "exit_time": "2020-11-10T00:00:00", + "pnl": 6.090529534469624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07297082017436, + "entry_time": "2020-11-12T00:00:00", + "exit_price": 98.63576619816114, + "exit_time": "2020-11-13T00:00:00", + "pnl": 56.27953779867738, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.36545808934646, + "entry_time": "2020-11-15T00:00:00", + "exit_price": 98.425342939227, + "exit_time": "2020-11-16T00:00:00", + "pnl": 5.988484988053244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.59476724765915, + "entry_time": "2020-11-18T00:00:00", + "exit_price": 98.41575843731752, + "exit_time": "2020-11-19T00:00:00", + "pnl": -17.900881034162808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30499551372479, + "entry_time": "2020-11-21T00:00:00", + "exit_price": 98.2943417590765, + "exit_time": "2020-11-22T00:00:00", + "pnl": -1.0653754648288327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.20190364871404, + "entry_time": "2020-11-24T00:00:00", + "exit_price": 98.35429934455371, + "exit_time": "2020-11-25T00:00:00", + "pnl": 15.239569583967238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25575482738783, + "entry_time": "2020-11-27T00:00:00", + "exit_price": 98.30124986928953, + "exit_time": "2020-11-28T00:00:00", + "pnl": 4.549504190170239, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.90191386326036, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.96508444596826, + "exit_time": "2020-12-01T00:00:00", + "pnl": 6.317058270789744, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.75989432781597, + "entry_time": "2020-12-03T00:00:00", + "exit_price": 97.47851546822666, + "exit_time": "2020-12-04T00:00:00", + "pnl": -28.137885958931008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.43273982617148, + "entry_time": "2020-12-06T00:00:00", + "exit_price": 97.78073270556935, + "exit_time": "2020-12-07T00:00:00", + "pnl": 34.79928793978644, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.29707161405977, + "entry_time": "2020-12-09T00:00:00", + "exit_price": 97.17141051171173, + "exit_time": "2020-12-10T00:00:00", + "pnl": -12.56611023480474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.83897503233364, + "entry_time": "2020-12-12T00:00:00", + "exit_price": 96.92050920813638, + "exit_time": "2020-12-13T00:00:00", + "pnl": 8.153417580274436, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.39298906893524, + "entry_time": "2020-12-15T00:00:00", + "exit_price": 97.24960092613485, + "exit_time": "2020-12-16T00:00:00", + "pnl": -14.338814280039003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.15249367428707, + "entry_time": "2020-12-18T00:00:00", + "exit_price": 98.11254847884746, + "exit_time": "2020-12-19T00:00:00", + "pnl": -3.9945195439614167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6477102979142, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 97.66187174327492, + "exit_time": "2020-12-22T00:00:00", + "pnl": 1.4161445360713287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.22816086359948, + "entry_time": "2020-12-24T00:00:00", + "exit_price": 97.18924739108921, + "exit_time": "2020-12-25T00:00:00", + "pnl": -3.891347251027355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.15833017318171, + "entry_time": "2020-12-27T00:00:00", + "exit_price": 97.35388264537053, + "exit_time": "2020-12-28T00:00:00", + "pnl": 19.555247218882243, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30391448349606, + "entry_time": "2020-12-30T00:00:00", + "exit_price": 97.1765702619787, + "exit_time": "2020-12-31T00:00:00", + "pnl": -12.734422151736169, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.03923857682982, + "entry_time": "2021-01-02T00:00:00", + "exit_price": 97.14087662618776, + "exit_time": "2021-01-03T00:00:00", + "pnl": 10.163804935794474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.60285889768487, + "entry_time": "2021-01-05T00:00:00", + "exit_price": 96.71610220194758, + "exit_time": "2021-01-06T00:00:00", + "pnl": 11.32433042627099, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.43129513858887, + "entry_time": "2021-01-08T00:00:00", + "exit_price": 96.7750138677335, + "exit_time": "2021-01-09T00:00:00", + "pnl": 34.37187291446406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.5417619126041, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.26004415392279, + "exit_time": "2021-01-12T00:00:00", + "pnl": -28.17177586813102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.48237494714664, + "entry_time": "2021-01-14T00:00:00", + "exit_price": 96.58658168452075, + "exit_time": "2021-01-15T00:00:00", + "pnl": 10.420673737411335, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.75620116852377, + "entry_time": "2021-01-17T00:00:00", + "exit_price": 96.69650084660127, + "exit_time": "2021-01-18T00:00:00", + "pnl": -5.970032192250585, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.92028780826493, + "entry_time": "2021-01-20T00:00:00", + "exit_price": 95.62951533581877, + "exit_time": "2021-01-21T00:00:00", + "pnl": -29.077247244616444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.58269597074072, + "entry_time": "2021-01-23T00:00:00", + "exit_price": 95.65987379372794, + "exit_time": "2021-01-24T00:00:00", + "pnl": 7.717782298722398, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.66612454309693, + "entry_time": "2021-01-26T00:00:00", + "exit_price": 95.8169746660663, + "exit_time": "2021-01-27T00:00:00", + "pnl": 15.08501229693735, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5926039176473, + "entry_time": "2021-01-29T00:00:00", + "exit_price": 95.28582192646724, + "exit_time": "2021-01-30T00:00:00", + "pnl": -30.678199118005978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.47874410921285, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.57232514477201, + "exit_time": "2021-02-02T00:00:00", + "pnl": 9.35810355591542, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.07482838670384, + "entry_time": "2021-02-04T00:00:00", + "exit_price": 96.06329982176626, + "exit_time": "2021-02-05T00:00:00", + "pnl": -1.1528564937577812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.93964633706301, + "entry_time": "2021-02-07T00:00:00", + "exit_price": 96.02294071169972, + "exit_time": "2021-02-08T00:00:00", + "pnl": 8.329437463670786, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.73925579999096, + "entry_time": "2021-02-10T00:00:00", + "exit_price": 95.99566659891293, + "exit_time": "2021-02-11T00:00:00", + "pnl": 25.641079892197638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.99166395939717, + "entry_time": "2021-02-13T00:00:00", + "exit_price": 95.91107729961162, + "exit_time": "2021-02-14T00:00:00", + "pnl": -8.058665978555268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.35440315345551, + "entry_time": "2021-02-16T00:00:00", + "exit_price": 96.19457800884426, + "exit_time": "2021-02-17T00:00:00", + "pnl": -15.982514461124708, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87539474258334, + "entry_time": "2021-02-19T00:00:00", + "exit_price": 96.03831344319956, + "exit_time": "2021-02-20T00:00:00", + "pnl": 16.291870061621694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.84933568810729, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.942984467456, + "exit_time": "2021-02-23T00:00:00", + "pnl": 9.364877934871174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28778584744732, + "entry_time": "2021-02-25T00:00:00", + "exit_price": 95.02443267142746, + "exit_time": "2021-02-26T00:00:00", + "pnl": -26.33531760198622, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94057536205155, + "entry_time": "2021-02-28T00:00:00", + "exit_price": 94.72906200441219, + "exit_time": "2021-03-01T00:00:00", + "pnl": -21.151335763936174, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38445225202611, + "entry_time": "2021-03-03T00:00:00", + "exit_price": 94.38197492987447, + "exit_time": "2021-03-04T00:00:00", + "pnl": -0.24773221516340982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18213638354725, + "entry_time": "2021-03-06T00:00:00", + "exit_price": 94.04715001455901, + "exit_time": "2021-03-07T00:00:00", + "pnl": -13.49863689882369, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19838818284391, + "entry_time": "2021-03-09T00:00:00", + "exit_price": 94.29725636974986, + "exit_time": "2021-03-10T00:00:00", + "pnl": 9.886818690594623, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23572569098852, + "entry_time": "2021-03-12T00:00:00", + "exit_price": 94.3432106471416, + "exit_time": "2021-03-13T00:00:00", + "pnl": 10.748495615308684, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46834681822006, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.39304905252162, + "exit_time": "2021-03-16T00:00:00", + "pnl": -7.529776569843705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46079241276229, + "entry_time": "2021-03-18T00:00:00", + "exit_price": 94.87391242777782, + "exit_time": "2021-03-19T00:00:00", + "pnl": 41.31200150155365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81782457593818, + "entry_time": "2021-03-21T00:00:00", + "exit_price": 94.74839547168068, + "exit_time": "2021-03-22T00:00:00", + "pnl": -6.94291042574946, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9804659897062, + "entry_time": "2021-03-24T00:00:00", + "exit_price": 95.1820620687209, + "exit_time": "2021-03-25T00:00:00", + "pnl": 20.1596079014692, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53780103937676, + "entry_time": "2021-03-27T00:00:00", + "exit_price": 94.35114383691389, + "exit_time": "2021-03-28T00:00:00", + "pnl": -18.66572024628681, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19430169329607, + "entry_time": "2021-03-30T00:00:00", + "exit_price": 94.0736265695374, + "exit_time": "2021-03-31T00:00:00", + "pnl": -12.067512375867295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.56101740773187, + "entry_time": "2021-04-02T00:00:00", + "exit_price": 94.02847405275406, + "exit_time": "2021-04-03T00:00:00", + "pnl": -53.2543354977804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02877565620591, + "entry_time": "2021-04-05T00:00:00", + "exit_price": 94.02966575553104, + "exit_time": "2021-04-06T00:00:00", + "pnl": 0.08900993251330647, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71076966315076, + "entry_time": "2021-04-08T00:00:00", + "exit_price": 93.5342590029927, + "exit_time": "2021-04-09T00:00:00", + "pnl": -17.65106601580584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87172892779671, + "entry_time": "2021-04-11T00:00:00", + "exit_price": 93.8898807030855, + "exit_time": "2021-04-12T00:00:00", + "pnl": 1.8151775288785643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75093994363492, + "entry_time": "2021-04-14T00:00:00", + "exit_price": 93.70594283596789, + "exit_time": "2021-04-15T00:00:00", + "pnl": -4.499710766702947, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83044892913243, + "entry_time": "2021-04-17T00:00:00", + "exit_price": 93.71383587412238, + "exit_time": "2021-04-18T00:00:00", + "pnl": -11.661305501004904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52870331564132, + "entry_time": "2021-04-20T00:00:00", + "exit_price": 93.68221846843574, + "exit_time": "2021-04-21T00:00:00", + "pnl": 15.35151527944123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68293629394864, + "entry_time": "2021-04-23T00:00:00", + "exit_price": 93.76185935158753, + "exit_time": "2021-04-24T00:00:00", + "pnl": 7.892305763888885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77694161620539, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.94666597863043, + "exit_time": "2021-04-27T00:00:00", + "pnl": 16.97243624250433, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09046839544106, + "entry_time": "2021-04-29T00:00:00", + "exit_price": 94.0093802192737, + "exit_time": "2021-04-30T00:00:00", + "pnl": -8.108817616736985, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7818281411755, + "entry_time": "2021-05-02T00:00:00", + "exit_price": 93.75541337031265, + "exit_time": "2021-05-03T00:00:00", + "pnl": -2.641477086284283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72371690451082, + "entry_time": "2021-05-05T00:00:00", + "exit_price": 93.60849664049482, + "exit_time": "2021-05-06T00:00:00", + "pnl": -11.522026401600272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94340121095276, + "entry_time": "2021-05-08T00:00:00", + "exit_price": 93.85028148090369, + "exit_time": "2021-05-09T00:00:00", + "pnl": -9.311973004906804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7183641880944, + "entry_time": "2021-05-11T00:00:00", + "exit_price": 93.93201467581261, + "exit_time": "2021-05-12T00:00:00", + "pnl": 21.365048771821193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66005037144768, + "entry_time": "2021-05-14T00:00:00", + "exit_price": 93.71003338575711, + "exit_time": "2021-05-15T00:00:00", + "pnl": 4.998301430943286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64414870400898, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 93.73370138654631, + "exit_time": "2021-05-18T00:00:00", + "pnl": 8.955268253733095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5147503132911, + "entry_time": "2021-05-20T00:00:00", + "exit_price": 93.60797476194675, + "exit_time": "2021-05-21T00:00:00", + "pnl": 9.322444865564705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42059367470232, + "entry_time": "2021-05-23T00:00:00", + "exit_price": 93.66628705381636, + "exit_time": "2021-05-24T00:00:00", + "pnl": 24.569337911404432, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53531464201515, + "entry_time": "2021-05-26T00:00:00", + "exit_price": 93.2030497935449, + "exit_time": "2021-05-27T00:00:00", + "pnl": -33.22648484702455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62268440600192, + "entry_time": "2021-05-29T00:00:00", + "exit_price": 92.91948342162647, + "exit_time": "2021-05-30T00:00:00", + "pnl": 29.679901562454347, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67919849510082, + "entry_time": "2021-06-01T00:00:00", + "exit_price": 92.43887673234494, + "exit_time": "2021-06-02T00:00:00", + "pnl": -24.032176275588313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.17984056111294, + "entry_time": "2021-06-04T00:00:00", + "exit_price": 91.94368190633774, + "exit_time": "2021-06-05T00:00:00", + "pnl": -23.61586547751955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.11465699863811, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.97059505880482, + "exit_time": "2021-06-08T00:00:00", + "pnl": -14.406193983329274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29459604644767, + "entry_time": "2021-06-10T00:00:00", + "exit_price": 92.53931157007439, + "exit_time": "2021-06-11T00:00:00", + "pnl": 24.471552362672355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49631090115352, + "entry_time": "2021-06-13T00:00:00", + "exit_price": 92.52393358151217, + "exit_time": "2021-06-14T00:00:00", + "pnl": 2.762268035864679, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66942128922241, + "entry_time": "2021-06-16T00:00:00", + "exit_price": 92.4946582273999, + "exit_time": "2021-06-17T00:00:00", + "pnl": -17.476306182251733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2942483479133, + "entry_time": "2021-06-19T00:00:00", + "exit_price": 92.07603918687664, + "exit_time": "2021-06-20T00:00:00", + "pnl": -21.82091610366541, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.33479567014805, + "entry_time": "2021-06-22T00:00:00", + "exit_price": 92.14550463966849, + "exit_time": "2021-06-23T00:00:00", + "pnl": -18.92910304795663, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9928646204638, + "entry_time": "2021-06-25T00:00:00", + "exit_price": 91.96872153502625, + "exit_time": "2021-06-26T00:00:00", + "pnl": -2.4143085437557943, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87705988155102, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.53452507075421, + "exit_time": "2021-06-29T00:00:00", + "pnl": -34.253481079680625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.56396146367425, + "entry_time": "2021-07-01T00:00:00", + "exit_price": 91.59385740536969, + "exit_time": "2021-07-02T00:00:00", + "pnl": 2.9895941695443184, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64213975217385, + "entry_time": "2021-07-04T00:00:00", + "exit_price": 91.78882758292927, + "exit_time": "2021-07-05T00:00:00", + "pnl": 14.668783075542535, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63683672368548, + "entry_time": "2021-07-07T00:00:00", + "exit_price": 91.48470633760584, + "exit_time": "2021-07-08T00:00:00", + "pnl": -15.21303860796337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39062489567554, + "entry_time": "2021-07-10T00:00:00", + "exit_price": 91.494696351115, + "exit_time": "2021-07-11T00:00:00", + "pnl": 10.407145543945262, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93573503075692, + "entry_time": "2021-07-13T00:00:00", + "exit_price": 90.98885415853535, + "exit_time": "2021-07-14T00:00:00", + "pnl": 5.31191277784302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06245234985892, + "entry_time": "2021-07-16T00:00:00", + "exit_price": 91.0289821017493, + "exit_time": "2021-07-17T00:00:00", + "pnl": -3.3470248109608747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22900373831217, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.3157346032948, + "exit_time": "2021-07-20T00:00:00", + "pnl": 8.673086498262705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59973514861234, + "entry_time": "2021-07-22T00:00:00", + "exit_price": 91.77086454804387, + "exit_time": "2021-07-23T00:00:00", + "pnl": 17.11293994315355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82096590563263, + "entry_time": "2021-07-25T00:00:00", + "exit_price": 91.95769963997635, + "exit_time": "2021-07-26T00:00:00", + "pnl": 13.673373434372138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.21106339352883, + "entry_time": "2021-07-28T00:00:00", + "exit_price": 92.07551182524406, + "exit_time": "2021-07-29T00:00:00", + "pnl": -13.555156828476811, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09759300944572, + "entry_time": "2021-07-31T00:00:00", + "exit_price": 92.33359941396125, + "exit_time": "2021-08-01T00:00:00", + "pnl": 23.600640451553545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2288848699624, + "entry_time": "2021-08-03T00:00:00", + "exit_price": 92.2069451450579, + "exit_time": "2021-08-04T00:00:00", + "pnl": -2.1939724904498803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46522997402728, + "entry_time": "2021-08-06T00:00:00", + "exit_price": 92.63157812424986, + "exit_time": "2021-08-07T00:00:00", + "pnl": 16.6348150222575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92215275507255, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 92.81904355011355, + "exit_time": "2021-08-10T00:00:00", + "pnl": -10.310920495899722, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34536862719393, + "entry_time": "2021-08-12T00:00:00", + "exit_price": 93.4540782896955, + "exit_time": "2021-08-13T00:00:00", + "pnl": 10.870966250156755, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65179701007457, + "entry_time": "2021-08-15T00:00:00", + "exit_price": 93.58231165488735, + "exit_time": "2021-08-16T00:00:00", + "pnl": -6.948535518722565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59222373899847, + "entry_time": "2021-08-18T00:00:00", + "exit_price": 93.41076247699506, + "exit_time": "2021-08-19T00:00:00", + "pnl": -18.146126200340973, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57987210255567, + "entry_time": "2021-08-21T00:00:00", + "exit_price": 93.93696117180936, + "exit_time": "2021-08-22T00:00:00", + "pnl": 35.70890692536892, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88875391692817, + "entry_time": "2021-08-24T00:00:00", + "exit_price": 93.67494277755462, + "exit_time": "2021-08-25T00:00:00", + "pnl": -21.381113937354712, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99358787892747, + "entry_time": "2021-08-27T00:00:00", + "exit_price": 93.07975990716614, + "exit_time": "2021-08-28T00:00:00", + "pnl": 8.617202823866421, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07047992178704, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.33559891886243, + "exit_time": "2021-08-31T00:00:00", + "pnl": 26.511899707539044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59225467831385, + "entry_time": "2021-09-02T00:00:00", + "exit_price": 93.63479260217548, + "exit_time": "2021-09-03T00:00:00", + "pnl": 4.253792386163013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80334597318696, + "entry_time": "2021-09-05T00:00:00", + "exit_price": 93.98346554786147, + "exit_time": "2021-09-06T00:00:00", + "pnl": 18.011957467450657, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92321614880655, + "entry_time": "2021-09-08T00:00:00", + "exit_price": 93.83699346593512, + "exit_time": "2021-09-09T00:00:00", + "pnl": -8.622268287142276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93109508241774, + "entry_time": "2021-09-11T00:00:00", + "exit_price": 93.96354668527802, + "exit_time": "2021-09-12T00:00:00", + "pnl": 3.245160286027726, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08641930356686, + "entry_time": "2021-09-14T00:00:00", + "exit_price": 94.23768236549668, + "exit_time": "2021-09-15T00:00:00", + "pnl": 15.126306192982497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08211844013991, + "entry_time": "2021-09-17T00:00:00", + "exit_price": 94.20846159911048, + "exit_time": "2021-09-18T00:00:00", + "pnl": 12.634315897057036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.13954155854589, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 93.89054598561034, + "exit_time": "2021-09-21T00:00:00", + "pnl": -24.899557293554153, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11646823351487, + "entry_time": "2021-09-23T00:00:00", + "exit_price": 94.10168176297485, + "exit_time": "2021-09-24T00:00:00", + "pnl": -1.4786470540016694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30038009222437, + "entry_time": "2021-09-26T00:00:00", + "exit_price": 94.41339845504724, + "exit_time": "2021-09-27T00:00:00", + "pnl": 11.30183628228707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10852951715279, + "entry_time": "2021-09-29T00:00:00", + "exit_price": 93.84680988625497, + "exit_time": "2021-09-30T00:00:00", + "pnl": -26.171963089781514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00138088356287, + "entry_time": "2021-10-02T00:00:00", + "exit_price": 94.04342924144086, + "exit_time": "2021-10-03T00:00:00", + "pnl": 4.2048357877988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01673785551607, + "entry_time": "2021-10-05T00:00:00", + "exit_price": 93.8508081374985, + "exit_time": "2021-10-06T00:00:00", + "pnl": -16.592971801756562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87089994615239, + "entry_time": "2021-10-08T00:00:00", + "exit_price": 93.9378403552245, + "exit_time": "2021-10-09T00:00:00", + "pnl": 6.694040907210308, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05201413714097, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.0235397935625, + "exit_time": "2021-10-12T00:00:00", + "pnl": -2.8474343578466232, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26517251606933, + "entry_time": "2021-10-14T00:00:00", + "exit_price": 94.15470785076896, + "exit_time": "2021-10-15T00:00:00", + "pnl": -11.04646653003698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4932600250258, + "entry_time": "2021-10-17T00:00:00", + "exit_price": 94.51252060274227, + "exit_time": "2021-10-18T00:00:00", + "pnl": 1.9260577716465832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53140073996916, + "entry_time": "2021-10-20T00:00:00", + "exit_price": 94.90203063702091, + "exit_time": "2021-10-21T00:00:00", + "pnl": 37.06298970517565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26191114348926, + "entry_time": "2021-10-23T00:00:00", + "exit_price": 94.0634456423351, + "exit_time": "2021-10-24T00:00:00", + "pnl": -19.84655011541605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43521818420996, + "entry_time": "2021-10-26T00:00:00", + "exit_price": 94.38568536751181, + "exit_time": "2021-10-27T00:00:00", + "pnl": -4.953281669814658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21262216293847, + "entry_time": "2021-10-29T00:00:00", + "exit_price": 94.23411145607675, + "exit_time": "2021-10-30T00:00:00", + "pnl": 2.1489293138273524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82330133886903, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 93.61660062265747, + "exit_time": "2021-11-02T00:00:00", + "pnl": -20.670071621155728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71484163940588, + "entry_time": "2021-11-04T00:00:00", + "exit_price": 93.72855192282307, + "exit_time": "2021-11-05T00:00:00", + "pnl": 1.3710283417196933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36926429851582, + "entry_time": "2021-11-07T00:00:00", + "exit_price": 93.37837200951205, + "exit_time": "2021-11-08T00:00:00", + "pnl": 0.9107710996232754, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19352686807355, + "entry_time": "2021-11-10T00:00:00", + "exit_price": 93.28024660066703, + "exit_time": "2021-11-11T00:00:00", + "pnl": 8.671973259347965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9638468574369, + "entry_time": "2021-11-13T00:00:00", + "exit_price": 93.14877036790756, + "exit_time": "2021-11-14T00:00:00", + "pnl": 18.49235104706537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09572264391801, + "entry_time": "2021-11-16T00:00:00", + "exit_price": 92.53876217367774, + "exit_time": "2021-11-17T00:00:00", + "pnl": -55.696047024026996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.64617178108719, + "entry_time": "2021-11-19T00:00:00", + "exit_price": 92.85422093876446, + "exit_time": "2021-11-20T00:00:00", + "pnl": 20.804915767726584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6092442220808, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 92.52724603055836, + "exit_time": "2021-11-23T00:00:00", + "pnl": -8.199819152244459, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46494136842416, + "entry_time": "2021-11-25T00:00:00", + "exit_price": 92.44406941275119, + "exit_time": "2021-11-26T00:00:00", + "pnl": -2.0871955672973286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32264147745168, + "entry_time": "2021-11-28T00:00:00", + "exit_price": 92.0360221167863, + "exit_time": "2021-11-29T00:00:00", + "pnl": -28.661936066538374, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01384655286364, + "entry_time": "2021-12-01T00:00:00", + "exit_price": 91.97262653583181, + "exit_time": "2021-12-02T00:00:00", + "pnl": -4.122001703183287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.28024889847717, + "entry_time": "2021-12-04T00:00:00", + "exit_price": 91.96758302287454, + "exit_time": "2021-12-05T00:00:00", + "pnl": -31.266587560263304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25528568314509, + "entry_time": "2021-12-07T00:00:00", + "exit_price": 92.20092793334622, + "exit_time": "2021-12-08T00:00:00", + "pnl": -5.435774979886787, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49508373939166, + "entry_time": "2021-12-10T00:00:00", + "exit_price": 92.73466658206335, + "exit_time": "2021-12-11T00:00:00", + "pnl": 23.95828426716946, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46436704586412, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.69111891541637, + "exit_time": "2021-12-14T00:00:00", + "pnl": 22.675186955224547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21128313549013, + "entry_time": "2021-12-16T00:00:00", + "exit_price": 93.37756823246967, + "exit_time": "2021-12-17T00:00:00", + "pnl": 16.628509697953575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04218716563327, + "entry_time": "2021-12-19T00:00:00", + "exit_price": 93.00014735551822, + "exit_time": "2021-12-20T00:00:00", + "pnl": -4.203981011504254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.93318531635458, + "entry_time": "2021-12-22T00:00:00", + "exit_price": 92.84116622880475, + "exit_time": "2021-12-23T00:00:00", + "pnl": -9.201908754982924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50637869144558, + "entry_time": "2021-12-25T00:00:00", + "exit_price": 92.66826656058106, + "exit_time": "2021-12-26T00:00:00", + "pnl": 16.18878691354837, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36257300920573, + "entry_time": "2021-12-28T00:00:00", + "exit_price": 92.60779676375832, + "exit_time": "2021-12-29T00:00:00", + "pnl": 24.522375455258327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36220969555443, + "entry_time": "2021-12-31T00:00:00", + "exit_price": 92.1193839744838, + "exit_time": "2022-01-01T00:00:00", + "pnl": -24.28257210706306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89096232869592, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.75394086603562, + "exit_time": "2022-01-04T00:00:00", + "pnl": -13.702146266030013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.10653141004636, + "entry_time": "2022-01-06T00:00:00", + "exit_price": 91.98502552303084, + "exit_time": "2022-01-07T00:00:00", + "pnl": -12.150588701551612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03115476672883, + "entry_time": "2022-01-09T00:00:00", + "exit_price": 92.05866288388766, + "exit_time": "2022-01-10T00:00:00", + "pnl": 2.750811715883117, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.80506699745925, + "entry_time": "2022-01-12T00:00:00", + "exit_price": 91.97004409317438, + "exit_time": "2022-01-13T00:00:00", + "pnl": 16.49770957151304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.3933991191183, + "entry_time": "2022-01-15T00:00:00", + "exit_price": 91.28070286679336, + "exit_time": "2022-01-16T00:00:00", + "pnl": -11.269625232493752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74175784445059, + "entry_time": "2022-01-18T00:00:00", + "exit_price": 91.6733758391721, + "exit_time": "2022-01-19T00:00:00", + "pnl": -6.838200527849381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81901224922302, + "entry_time": "2022-01-21T00:00:00", + "exit_price": 91.84844274508458, + "exit_time": "2022-01-22T00:00:00", + "pnl": 2.9430495861561212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.60313885279771, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.41938832519848, + "exit_time": "2022-01-25T00:00:00", + "pnl": -18.375052759922994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64052127057325, + "entry_time": "2022-01-27T00:00:00", + "exit_price": 91.54200410559555, + "exit_time": "2022-01-28T00:00:00", + "pnl": -9.851716497769303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73590345101391, + "entry_time": "2022-01-30T00:00:00", + "exit_price": 91.62782637305553, + "exit_time": "2022-01-31T00:00:00", + "pnl": -10.80770779583844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79185882856454, + "entry_time": "2022-02-02T00:00:00", + "exit_price": 91.8357946573913, + "exit_time": "2022-02-03T00:00:00", + "pnl": 4.393582882676128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79563500808236, + "entry_time": "2022-02-05T00:00:00", + "exit_price": 92.09144139124615, + "exit_time": "2022-02-06T00:00:00", + "pnl": 29.580638316379293, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.91260250945975, + "entry_time": "2022-02-08T00:00:00", + "exit_price": 91.67552176869381, + "exit_time": "2022-02-09T00:00:00", + "pnl": -23.708074076593277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66062267455895, + "entry_time": "2022-02-11T00:00:00", + "exit_price": 91.64149069106048, + "exit_time": "2022-02-12T00:00:00", + "pnl": -1.913198349846823, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37359630109036, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.51652219716766, + "exit_time": "2022-02-15T00:00:00", + "pnl": 14.292589607730122, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.54575759654935, + "entry_time": "2022-02-17T00:00:00", + "exit_price": 91.58821852619887, + "exit_time": "2022-02-18T00:00:00", + "pnl": 4.246092964952197, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76782809841714, + "entry_time": "2022-02-20T00:00:00", + "exit_price": 91.6119124553235, + "exit_time": "2022-02-21T00:00:00", + "pnl": -15.591564309363548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74629736846254, + "entry_time": "2022-02-23T00:00:00", + "exit_price": 91.61327551923173, + "exit_time": "2022-02-24T00:00:00", + "pnl": -13.302184923080063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.32896871135786, + "entry_time": "2022-02-26T00:00:00", + "exit_price": 91.13780861275266, + "exit_time": "2022-02-27T00:00:00", + "pnl": -19.11600986051951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12507835931243, + "entry_time": "2022-03-01T00:00:00", + "exit_price": 91.13114200203424, + "exit_time": "2022-03-02T00:00:00", + "pnl": 0.6063642721812812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37230639398891, + "entry_time": "2022-03-04T00:00:00", + "exit_price": 91.298526480022, + "exit_time": "2022-03-05T00:00:00", + "pnl": -7.37799139669022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14580661294434, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.26371087049277, + "exit_time": "2022-03-08T00:00:00", + "pnl": 11.79042575484317, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.19265250778471, + "entry_time": "2022-03-10T00:00:00", + "exit_price": 91.34688434505053, + "exit_time": "2022-03-11T00:00:00", + "pnl": 15.423183726581158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.27944969864926, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 91.00376526097061, + "exit_time": "2022-03-14T00:00:00", + "pnl": -27.568443767864892, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12691845430324, + "entry_time": "2022-03-16T00:00:00", + "exit_price": 91.13627424638673, + "exit_time": "2022-03-17T00:00:00", + "pnl": 0.9355792083496794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.90552697963444, + "entry_time": "2022-03-19T00:00:00", + "exit_price": 90.86432013057937, + "exit_time": "2022-03-20T00:00:00", + "pnl": -4.1206849055072325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88314466139805, + "entry_time": "2022-03-22T00:00:00", + "exit_price": 90.85684478131836, + "exit_time": "2022-03-23T00:00:00", + "pnl": -2.629988007969075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8333575750649, + "entry_time": "2022-03-25T00:00:00", + "exit_price": 90.87580958070879, + "exit_time": "2022-03-26T00:00:00", + "pnl": 4.245200564389506, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87723690769735, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.02118341969194, + "exit_time": "2022-03-29T00:00:00", + "pnl": 14.394651199458508, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14559411024791, + "entry_time": "2022-03-31T00:00:00", + "exit_price": 91.1102070847533, + "exit_time": "2022-04-01T00:00:00", + "pnl": -3.5387025494614477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.03652679668626, + "entry_time": "2022-04-03T00:00:00", + "exit_price": 90.64848582455738, + "exit_time": "2022-04-04T00:00:00", + "pnl": -38.80409721288771, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.5160908672533, + "entry_time": "2022-04-06T00:00:00", + "exit_price": 90.67122680039915, + "exit_time": "2022-04-07T00:00:00", + "pnl": 15.513593314585705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49638519206742, + "entry_time": "2022-04-09T00:00:00", + "exit_price": 90.23851904732544, + "exit_time": "2022-04-10T00:00:00", + "pnl": -25.78661447419819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.12623758622358, + "entry_time": "2022-04-12T00:00:00", + "exit_price": 90.13616044249197, + "exit_time": "2022-04-13T00:00:00", + "pnl": 0.9922856268389069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.97730849654188, + "entry_time": "2022-04-15T00:00:00", + "exit_price": 89.93950245741028, + "exit_time": "2022-04-16T00:00:00", + "pnl": -3.7806039131595526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.92103698222829, + "entry_time": "2022-04-18T00:00:00", + "exit_price": 89.92708766921471, + "exit_time": "2022-04-19T00:00:00", + "pnl": 0.6050686986426967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.318742774315, + "entry_time": "2022-04-21T00:00:00", + "exit_price": 90.23642124916759, + "exit_time": "2022-04-22T00:00:00", + "pnl": -8.232152514740676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.21999028274803, + "entry_time": "2022-04-24T00:00:00", + "exit_price": 90.22126197659611, + "exit_time": "2022-04-25T00:00:00", + "pnl": 0.12716938480821227, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84560909030803, + "entry_time": "2022-04-27T00:00:00", + "exit_price": 90.53569591871245, + "exit_time": "2022-04-28T00:00:00", + "pnl": -30.991317159558207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0165686304024, + "entry_time": "2022-04-30T00:00:00", + "exit_price": 90.91735297539282, + "exit_time": "2022-05-01T00:00:00", + "pnl": -9.921565500958707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23908301563729, + "entry_time": "2022-05-03T00:00:00", + "exit_price": 91.14925296519219, + "exit_time": "2022-05-04T00:00:00", + "pnl": -8.98300504451015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22089116397768, + "entry_time": "2022-05-06T00:00:00", + "exit_price": 90.87029928541635, + "exit_time": "2022-05-07T00:00:00", + "pnl": -35.05918785613318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89974631246403, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.06863681183862, + "exit_time": "2022-05-10T00:00:00", + "pnl": 16.889049937458367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.57589026049908, + "entry_time": "2022-05-12T00:00:00", + "exit_price": 91.50862549547844, + "exit_time": "2022-05-13T00:00:00", + "pnl": -6.726476502063861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62801821971621, + "entry_time": "2022-05-15T00:00:00", + "exit_price": 91.81567744205196, + "exit_time": "2022-05-16T00:00:00", + "pnl": 18.76592223357534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.33854066905738, + "entry_time": "2022-05-18T00:00:00", + "exit_price": 90.96569574948703, + "exit_time": "2022-05-19T00:00:00", + "pnl": -37.28449195703547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07274851876404, + "entry_time": "2022-05-21T00:00:00", + "exit_price": 90.95622489428452, + "exit_time": "2022-05-22T00:00:00", + "pnl": -11.652362447952669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.7205106927609, + "entry_time": "2022-05-24T00:00:00", + "exit_price": 90.55232295814028, + "exit_time": "2022-05-25T00:00:00", + "pnl": -16.818773462061642, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.40473126616526, + "entry_time": "2022-05-27T00:00:00", + "exit_price": 90.65640141611814, + "exit_time": "2022-05-28T00:00:00", + "pnl": 25.16701499528864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56665701011867, + "entry_time": "2022-05-30T00:00:00", + "exit_price": 90.46095751045398, + "exit_time": "2022-05-31T00:00:00", + "pnl": -10.569949966469494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.76022002087706, + "entry_time": "2022-06-02T00:00:00", + "exit_price": 90.81381751472117, + "exit_time": "2022-06-03T00:00:00", + "pnl": 5.359749384410861, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23375682446748, + "entry_time": "2022-06-05T00:00:00", + "exit_price": 91.01190578025698, + "exit_time": "2022-06-06T00:00:00", + "pnl": -22.185104421049573, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56046438309357, + "entry_time": "2022-06-08T00:00:00", + "exit_price": 90.6501420569037, + "exit_time": "2022-06-09T00:00:00", + "pnl": 8.967767381012948, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45985538510017, + "entry_time": "2022-06-11T00:00:00", + "exit_price": 90.32205823485288, + "exit_time": "2022-06-12T00:00:00", + "pnl": -13.779715024729455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.4213362857644, + "entry_time": "2022-06-14T00:00:00", + "exit_price": 90.3254460973393, + "exit_time": "2022-06-15T00:00:00", + "pnl": -9.5890188425102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.3632620077688, + "entry_time": "2022-06-17T00:00:00", + "exit_price": 90.1350438366559, + "exit_time": "2022-06-18T00:00:00", + "pnl": -22.821817111289988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.53738507774712, + "entry_time": "2022-06-20T00:00:00", + "exit_price": 90.43902960493799, + "exit_time": "2022-06-21T00:00:00", + "pnl": -9.835547280913204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28282897059066, + "entry_time": "2022-06-23T00:00:00", + "exit_price": 90.42427634098117, + "exit_time": "2022-06-24T00:00:00", + "pnl": 14.14473703905088, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.65923583486823, + "entry_time": "2022-06-26T00:00:00", + "exit_price": 90.60873415539405, + "exit_time": "2022-06-27T00:00:00", + "pnl": -5.0501679474180605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.39024714619487, + "entry_time": "2022-06-29T00:00:00", + "exit_price": 90.66523349021156, + "exit_time": "2022-06-30T00:00:00", + "pnl": 27.49863440166962, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82876323237488, + "entry_time": "2022-07-02T00:00:00", + "exit_price": 90.97466728886246, + "exit_time": "2022-07-03T00:00:00", + "pnl": 14.590405648758065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89452843928451, + "entry_time": "2022-07-05T00:00:00", + "exit_price": 90.67041116090726, + "exit_time": "2022-07-06T00:00:00", + "pnl": -22.411727837724982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63870699300467, + "entry_time": "2022-07-08T00:00:00", + "exit_price": 90.60806866533521, + "exit_time": "2022-07-09T00:00:00", + "pnl": -3.0638327669464616, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09022889967974, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 91.33132395141395, + "exit_time": "2022-07-12T00:00:00", + "pnl": 24.109505173420587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1422566167072, + "entry_time": "2022-07-14T00:00:00", + "exit_price": 91.02336448195068, + "exit_time": "2022-07-15T00:00:00", + "pnl": -11.889213475652127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.85171345155103, + "entry_time": "2022-07-17T00:00:00", + "exit_price": 90.92826438920278, + "exit_time": "2022-07-18T00:00:00", + "pnl": 7.65509376517457, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.99679364605882, + "entry_time": "2022-07-20T00:00:00", + "exit_price": 91.02558962193989, + "exit_time": "2022-07-21T00:00:00", + "pnl": 2.8795975881067193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86654130293296, + "entry_time": "2022-07-23T00:00:00", + "exit_price": 91.1805076876075, + "exit_time": "2022-07-24T00:00:00", + "pnl": 31.396638467454352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20590970247866, + "entry_time": "2022-07-26T00:00:00", + "exit_price": 91.04093233048125, + "exit_time": "2022-07-27T00:00:00", + "pnl": -16.497737199740925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.94025278141096, + "entry_time": "2022-07-29T00:00:00", + "exit_price": 91.1695372755258, + "exit_time": "2022-07-30T00:00:00", + "pnl": 22.928449411483598, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55006804279205, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.74946747581956, + "exit_time": "2022-08-02T00:00:00", + "pnl": 19.939943302750862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.08829699168929, + "entry_time": "2022-08-04T00:00:00", + "exit_price": 92.17204398025235, + "exit_time": "2022-08-05T00:00:00", + "pnl": 8.374698856306395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82928257766984, + "entry_time": "2022-08-07T00:00:00", + "exit_price": 91.80555288724541, + "exit_time": "2022-08-08T00:00:00", + "pnl": -2.3729690424431737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03756487304749, + "entry_time": "2022-08-10T00:00:00", + "exit_price": 91.92246232242579, + "exit_time": "2022-08-11T00:00:00", + "pnl": -11.51025506216996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12455329081939, + "entry_time": "2022-08-13T00:00:00", + "exit_price": 92.03614640032846, + "exit_time": "2022-08-14T00:00:00", + "pnl": -8.840689049092987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43863634543025, + "entry_time": "2022-08-16T00:00:00", + "exit_price": 92.57880144701099, + "exit_time": "2022-08-17T00:00:00", + "pnl": 14.016510158073459, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56629976489471, + "entry_time": "2022-08-19T00:00:00", + "exit_price": 92.63602712862732, + "exit_time": "2022-08-20T00:00:00", + "pnl": 6.972736373261057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99359531127284, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.20326657631179, + "exit_time": "2022-08-23T00:00:00", + "pnl": 20.967126503894917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36371229951278, + "entry_time": "2022-08-25T00:00:00", + "exit_price": 93.15013947578183, + "exit_time": "2022-08-26T00:00:00", + "pnl": -21.357282373095643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39786147444197, + "entry_time": "2022-08-28T00:00:00", + "exit_price": 93.32525340472, + "exit_time": "2022-08-29T00:00:00", + "pnl": -7.260806972196576, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1699951830038, + "entry_time": "2022-08-31T00:00:00", + "exit_price": 92.94415449917722, + "exit_time": "2022-09-01T00:00:00", + "pnl": -22.584068382658984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06237685823791, + "entry_time": "2022-09-03T00:00:00", + "exit_price": 92.88599230986543, + "exit_time": "2022-09-04T00:00:00", + "pnl": -17.63845483724822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09341138541603, + "entry_time": "2022-09-06T00:00:00", + "exit_price": 93.29146577709628, + "exit_time": "2022-09-07T00:00:00", + "pnl": 19.805439168024463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.45209900958335, + "entry_time": "2022-09-09T00:00:00", + "exit_price": 93.38892182999521, + "exit_time": "2022-09-10T00:00:00", + "pnl": -6.317717958813773, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42662435004, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 93.86711355565461, + "exit_time": "2022-09-13T00:00:00", + "pnl": 44.0489205614611, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43026737045712, + "entry_time": "2022-09-15T00:00:00", + "exit_price": 94.68555551249223, + "exit_time": "2022-09-16T00:00:00", + "pnl": 25.528814203511274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.34275603824344, + "entry_time": "2022-09-18T00:00:00", + "exit_price": 94.26115762602807, + "exit_time": "2022-09-19T00:00:00", + "pnl": -8.159841221537079, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81665975574816, + "entry_time": "2022-09-21T00:00:00", + "exit_price": 94.69084237577945, + "exit_time": "2022-09-22T00:00:00", + "pnl": -12.581737996870856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.80375023000443, + "entry_time": "2022-09-24T00:00:00", + "exit_price": 94.71118042427594, + "exit_time": "2022-09-25T00:00:00", + "pnl": -9.25698057284876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46412500503037, + "entry_time": "2022-09-27T00:00:00", + "exit_price": 94.6314533607136, + "exit_time": "2022-09-28T00:00:00", + "pnl": 16.73283556832388, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6742741594175, + "entry_time": "2022-09-30T00:00:00", + "exit_price": 94.69072074935896, + "exit_time": "2022-10-01T00:00:00", + "pnl": 1.6446589941466527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.12667461230008, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 94.99949417466048, + "exit_time": "2022-10-04T00:00:00", + "pnl": -12.718043763959486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92543412582965, + "entry_time": "2022-10-06T00:00:00", + "exit_price": 94.72977842157017, + "exit_time": "2022-10-07T00:00:00", + "pnl": -19.565570425947953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5701038761525, + "entry_time": "2022-10-09T00:00:00", + "exit_price": 94.59977663872266, + "exit_time": "2022-10-10T00:00:00", + "pnl": 2.967276257015783, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29273313619652, + "entry_time": "2022-10-12T00:00:00", + "exit_price": 94.40263092608106, + "exit_time": "2022-10-13T00:00:00", + "pnl": 10.98977898845419, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28632878234235, + "entry_time": "2022-10-15T00:00:00", + "exit_price": 94.53250654562353, + "exit_time": "2022-10-16T00:00:00", + "pnl": 24.61777632811817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49417223286694, + "entry_time": "2022-10-18T00:00:00", + "exit_price": 94.21737477440588, + "exit_time": "2022-10-19T00:00:00", + "pnl": -27.67974584610613, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21700275153675, + "entry_time": "2022-10-21T00:00:00", + "exit_price": 94.24257812297434, + "exit_time": "2022-10-22T00:00:00", + "pnl": 2.5575371437582817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33447437173405, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.36500808099656, + "exit_time": "2022-10-25T00:00:00", + "pnl": 3.0533709262513753, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62192540785215, + "entry_time": "2022-10-27T00:00:00", + "exit_price": 94.95467067184597, + "exit_time": "2022-10-28T00:00:00", + "pnl": 33.274526399382864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32280422773096, + "entry_time": "2022-10-30T00:00:00", + "exit_price": 95.27797141913928, + "exit_time": "2022-10-31T00:00:00", + "pnl": -4.483280859167849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.85159096418194, + "entry_time": "2022-11-02T00:00:00", + "exit_price": 95.9332147424965, + "exit_time": "2022-11-03T00:00:00", + "pnl": 8.162377831456524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87171080557965, + "entry_time": "2022-11-05T00:00:00", + "exit_price": 95.72359330386428, + "exit_time": "2022-11-06T00:00:00", + "pnl": -14.811750171537597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38266657654839, + "entry_time": "2022-11-08T00:00:00", + "exit_price": 95.28429001378173, + "exit_time": "2022-11-09T00:00:00", + "pnl": -9.837656276665996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01211175536164, + "entry_time": "2022-11-11T00:00:00", + "exit_price": 94.84310882657518, + "exit_time": "2022-11-12T00:00:00", + "pnl": -16.900292878646894, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.59049236660377, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.35514007446828, + "exit_time": "2022-11-15T00:00:00", + "pnl": -23.535229213548803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9357580237877, + "entry_time": "2022-11-17T00:00:00", + "exit_price": 94.05072699188574, + "exit_time": "2022-11-18T00:00:00", + "pnl": 11.496896809804014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00889117962726, + "entry_time": "2022-11-20T00:00:00", + "exit_price": 94.18219892584725, + "exit_time": "2022-11-21T00:00:00", + "pnl": 17.330774621999012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96556912199465, + "entry_time": "2022-11-23T00:00:00", + "exit_price": 93.87607469195584, + "exit_time": "2022-11-24T00:00:00", + "pnl": -8.949443003881186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60138099475903, + "entry_time": "2022-11-26T00:00:00", + "exit_price": 93.55643441032785, + "exit_time": "2022-11-27T00:00:00", + "pnl": -4.494658443117316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88066522817982, + "entry_time": "2022-11-29T00:00:00", + "exit_price": 93.67510822228188, + "exit_time": "2022-11-30T00:00:00", + "pnl": -20.555700589794412, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69837663925773, + "entry_time": "2022-12-02T00:00:00", + "exit_price": 93.91860336977558, + "exit_time": "2022-12-03T00:00:00", + "pnl": 22.02267305178509, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.70107216756422, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.66971331829183, + "exit_time": "2022-12-06T00:00:00", + "pnl": -3.135884927239374, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87708149049162, + "entry_time": "2022-12-08T00:00:00", + "exit_price": 93.72163687944706, + "exit_time": "2022-12-09T00:00:00", + "pnl": -15.54446110445582, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94898877051006, + "entry_time": "2022-12-11T00:00:00", + "exit_price": 93.95474043698636, + "exit_time": "2022-12-12T00:00:00", + "pnl": 0.5751666476299988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6415881902333, + "entry_time": "2022-12-14T00:00:00", + "exit_price": 93.34129447656329, + "exit_time": "2022-12-15T00:00:00", + "pnl": -30.029371367001545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94345435925221, + "entry_time": "2022-12-17T00:00:00", + "exit_price": 92.60307524718807, + "exit_time": "2022-12-18T00:00:00", + "pnl": -34.03791120641415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.18983136258926, + "entry_time": "2022-12-20T00:00:00", + "exit_price": 92.07720168711411, + "exit_time": "2022-12-21T00:00:00", + "pnl": -11.26296754751479, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00591795170637, + "entry_time": "2022-12-23T00:00:00", + "exit_price": 91.73390898252362, + "exit_time": "2022-12-24T00:00:00", + "pnl": -27.200896918274964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87915537734212, + "entry_time": "2022-12-26T00:00:00", + "exit_price": 92.05356230153482, + "exit_time": "2022-12-27T00:00:00", + "pnl": 17.44069241927093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.19249105693206, + "entry_time": "2022-12-29T00:00:00", + "exit_price": 92.35715717263174, + "exit_time": "2022-12-30T00:00:00", + "pnl": 16.466611569968848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92376356586936, + "entry_time": "2023-01-01T00:00:00", + "exit_price": 92.8642597181964, + "exit_time": "2023-01-02T00:00:00", + "pnl": -5.950384767297123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08761417167571, + "entry_time": "2023-01-04T00:00:00", + "exit_price": 93.3787010770275, + "exit_time": "2023-01-05T00:00:00", + "pnl": 29.108690535178994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22887351223902, + "entry_time": "2023-01-07T00:00:00", + "exit_price": 93.18791972112416, + "exit_time": "2023-01-08T00:00:00", + "pnl": -4.095379111485897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71839956451682, + "entry_time": "2023-01-10T00:00:00", + "exit_price": 92.72871333258459, + "exit_time": "2023-01-11T00:00:00", + "pnl": 1.0313768067774731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71285525012034, + "entry_time": "2023-01-13T00:00:00", + "exit_price": 92.95484908903208, + "exit_time": "2023-01-14T00:00:00", + "pnl": 24.19938389117391, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09252551101909, + "entry_time": "2023-01-16T00:00:00", + "exit_price": 93.19565426763862, + "exit_time": "2023-01-17T00:00:00", + "pnl": 10.312875661952603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34851063541004, + "entry_time": "2023-01-19T00:00:00", + "exit_price": 93.36918149511725, + "exit_time": "2023-01-20T00:00:00", + "pnl": 2.067085970720939, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.29871325433136, + "entry_time": "2023-01-22T00:00:00", + "exit_price": 93.43191348926673, + "exit_time": "2023-01-23T00:00:00", + "pnl": 13.320023493537292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54163438380152, + "entry_time": "2023-01-25T00:00:00", + "exit_price": 93.70996022231523, + "exit_time": "2023-01-26T00:00:00", + "pnl": 16.83258385137094, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44351635290319, + "entry_time": "2023-01-28T00:00:00", + "exit_price": 93.3607156455027, + "exit_time": "2023-01-29T00:00:00", + "pnl": -8.280070740049439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25194927165909, + "entry_time": "2023-01-31T00:00:00", + "exit_price": 93.09482587993352, + "exit_time": "2023-02-01T00:00:00", + "pnl": -15.712339172556256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05964578316673, + "entry_time": "2023-02-03T00:00:00", + "exit_price": 93.1247824238807, + "exit_time": "2023-02-04T00:00:00", + "pnl": 6.513664071397329, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60195304694001, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.5077083162264, + "exit_time": "2023-02-07T00:00:00", + "pnl": -9.424473071361206, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32915625849455, + "entry_time": "2023-02-09T00:00:00", + "exit_price": 93.41904859018952, + "exit_time": "2023-02-10T00:00:00", + "pnl": 8.989233169496913, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86240170807343, + "entry_time": "2023-02-12T00:00:00", + "exit_price": 93.74311994285968, + "exit_time": "2023-02-13T00:00:00", + "pnl": -11.928176521375633, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92758592270172, + "entry_time": "2023-02-15T00:00:00", + "exit_price": 93.91004727072426, + "exit_time": "2023-02-16T00:00:00", + "pnl": -1.7538651977460518, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.90746519420465, + "entry_time": "2023-02-18T00:00:00", + "exit_price": 94.16764239198312, + "exit_time": "2023-02-19T00:00:00", + "pnl": 26.017719777847503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.44892482562024, + "entry_time": "2023-02-21T00:00:00", + "exit_price": 94.29820349772235, + "exit_time": "2023-02-22T00:00:00", + "pnl": -15.072132789788384, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29660996193417, + "entry_time": "2023-02-24T00:00:00", + "exit_price": 94.34630077913107, + "exit_time": "2023-02-25T00:00:00", + "pnl": 4.969081719690394, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28533190136021, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.32163037675376, + "exit_time": "2023-02-28T00:00:00", + "pnl": 3.629847539355069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20619082469412, + "entry_time": "2023-03-02T00:00:00", + "exit_price": 93.94806731557186, + "exit_time": "2023-03-03T00:00:00", + "pnl": -25.812350912225668, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5296456958934, + "entry_time": "2023-03-05T00:00:00", + "exit_price": 93.2046797163239, + "exit_time": "2023-03-06T00:00:00", + "pnl": -32.49659795694981, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32570812965447, + "entry_time": "2023-03-08T00:00:00", + "exit_price": 93.27835226241817, + "exit_time": "2023-03-09T00:00:00", + "pnl": -4.735586723630547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18052001757422, + "entry_time": "2023-03-11T00:00:00", + "exit_price": 93.21374473155299, + "exit_time": "2023-03-12T00:00:00", + "pnl": 3.322471397876825, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13943605219033, + "entry_time": "2023-03-14T00:00:00", + "exit_price": 93.26046795573633, + "exit_time": "2023-03-15T00:00:00", + "pnl": 12.103190354599747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21960702536101, + "entry_time": "2023-03-17T00:00:00", + "exit_price": 92.64774686400108, + "exit_time": "2023-03-18T00:00:00", + "pnl": -57.18601613599361, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31556350692, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.46149005259649, + "exit_time": "2023-03-21T00:00:00", + "pnl": 14.592654567648822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52377288657563, + "entry_time": "2023-03-23T00:00:00", + "exit_price": 92.23839203319807, + "exit_time": "2023-03-24T00:00:00", + "pnl": -28.53808533775606, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6963758650249, + "entry_time": "2023-03-26T00:00:00", + "exit_price": 92.70207115016164, + "exit_time": "2023-03-27T00:00:00", + "pnl": 0.5695285136738448, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1906639429263, + "entry_time": "2023-03-29T00:00:00", + "exit_price": 93.35726613372299, + "exit_time": "2023-03-30T00:00:00", + "pnl": 16.66021907966808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16344204103119, + "entry_time": "2023-04-01T00:00:00", + "exit_price": 93.2066382813918, + "exit_time": "2023-04-02T00:00:00", + "pnl": 4.319624036061498, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0471045722787, + "entry_time": "2023-04-04T00:00:00", + "exit_price": 92.82199720210754, + "exit_time": "2023-04-05T00:00:00", + "pnl": -22.5107370171159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8989666578373, + "entry_time": "2023-04-07T00:00:00", + "exit_price": 92.77857374465485, + "exit_time": "2023-04-08T00:00:00", + "pnl": -12.03929131824566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.70919453056075, + "entry_time": "2023-04-10T00:00:00", + "exit_price": 92.74465000028516, + "exit_time": "2023-04-11T00:00:00", + "pnl": 3.545546972441116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60934516564298, + "entry_time": "2023-04-13T00:00:00", + "exit_price": 92.96618622577306, + "exit_time": "2023-04-14T00:00:00", + "pnl": 35.68410601300798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78501792806425, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.76326607151933, + "exit_time": "2023-04-17T00:00:00", + "pnl": -2.1751856544923953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62556378625803, + "entry_time": "2023-04-19T00:00:00", + "exit_price": 92.65556548612001, + "exit_time": "2023-04-20T00:00:00", + "pnl": 3.0001699861983866, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68684981308908, + "entry_time": "2023-04-22T00:00:00", + "exit_price": 92.58597625405771, + "exit_time": "2023-04-23T00:00:00", + "pnl": -10.087355903137052, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86536967969084, + "entry_time": "2023-04-25T00:00:00", + "exit_price": 92.75020367672924, + "exit_time": "2023-04-26T00:00:00", + "pnl": -11.516600296160107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75062990936559, + "entry_time": "2023-04-28T00:00:00", + "exit_price": 92.98349381034318, + "exit_time": "2023-04-29T00:00:00", + "pnl": 23.286390097759124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04847278769076, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 93.06193871613516, + "exit_time": "2023-05-02T00:00:00", + "pnl": 1.3465928444404085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60529611931622, + "entry_time": "2023-05-04T00:00:00", + "exit_price": 92.60807864200518, + "exit_time": "2023-05-05T00:00:00", + "pnl": 0.2782522688960398, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90198815097345, + "entry_time": "2023-05-07T00:00:00", + "exit_price": 92.84425841280351, + "exit_time": "2023-05-08T00:00:00", + "pnl": -5.772973816993954, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66689924421028, + "entry_time": "2023-05-10T00:00:00", + "exit_price": 92.6348345250126, + "exit_time": "2023-05-11T00:00:00", + "pnl": -3.2064719197691716, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74311085652141, + "entry_time": "2023-05-13T00:00:00", + "exit_price": 92.87596365908365, + "exit_time": "2023-05-14T00:00:00", + "pnl": 13.285280256224041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15467982049428, + "entry_time": "2023-05-16T00:00:00", + "exit_price": 93.06917346679761, + "exit_time": "2023-05-17T00:00:00", + "pnl": -8.550635369667248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16088604193163, + "entry_time": "2023-05-19T00:00:00", + "exit_price": 93.1767131466551, + "exit_time": "2023-05-20T00:00:00", + "pnl": 1.5827104723470597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59084973064017, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.3728256379574, + "exit_time": "2023-05-23T00:00:00", + "pnl": -21.80240926827679, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83907971020484, + "entry_time": "2023-05-25T00:00:00", + "exit_price": 94.05336598759212, + "exit_time": "2023-05-26T00:00:00", + "pnl": 21.428627738727357, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15556945611712, + "entry_time": "2023-05-28T00:00:00", + "exit_price": 94.11170249260897, + "exit_time": "2023-05-29T00:00:00", + "pnl": -4.3866963508151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26806948858284, + "entry_time": "2023-05-31T00:00:00", + "exit_price": 94.19864576006458, + "exit_time": "2023-06-01T00:00:00", + "pnl": -6.942372851825951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02469106007196, + "entry_time": "2023-06-03T00:00:00", + "exit_price": 94.37555658552148, + "exit_time": "2023-06-04T00:00:00", + "pnl": 35.0865525449521, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.47191103799679, + "entry_time": "2023-06-06T00:00:00", + "exit_price": 94.46329135212792, + "exit_time": "2023-06-07T00:00:00", + "pnl": -0.861968586886519, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.72605970139526, + "entry_time": "2023-06-09T00:00:00", + "exit_price": 94.42143976779836, + "exit_time": "2023-06-10T00:00:00", + "pnl": -30.461993359689643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5510290269881, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.42138738037778, + "exit_time": "2023-06-13T00:00:00", + "pnl": -12.964164661032385, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49725923626676, + "entry_time": "2023-06-15T00:00:00", + "exit_price": 94.83017838441384, + "exit_time": "2023-06-16T00:00:00", + "pnl": 33.291914814708434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.96394971087318, + "entry_time": "2023-06-18T00:00:00", + "exit_price": 94.80946954515628, + "exit_time": "2023-06-19T00:00:00", + "pnl": -15.44801657169046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.05895494780961, + "entry_time": "2023-06-21T00:00:00", + "exit_price": 94.7764741456602, + "exit_time": "2023-06-22T00:00:00", + "pnl": -28.248080214940785, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.82916340306784, + "entry_time": "2023-06-24T00:00:00", + "exit_price": 94.49615933800648, + "exit_time": "2023-06-25T00:00:00", + "pnl": -33.30040650613597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53903204926397, + "entry_time": "2023-06-27T00:00:00", + "exit_price": 94.2199238563033, + "exit_time": "2023-06-28T00:00:00", + "pnl": -31.91081929606696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15553425915468, + "entry_time": "2023-06-30T00:00:00", + "exit_price": 94.3233546324033, + "exit_time": "2023-07-01T00:00:00", + "pnl": 16.782037324861676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29143609072966, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.34909878462929, + "exit_time": "2023-07-04T00:00:00", + "pnl": 5.766269389962986, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79549173605429, + "entry_time": "2023-07-06T00:00:00", + "exit_price": 94.86012460829116, + "exit_time": "2023-07-07T00:00:00", + "pnl": 6.463287223687075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62257045149929, + "entry_time": "2023-07-09T00:00:00", + "exit_price": 94.36740770267758, + "exit_time": "2023-07-10T00:00:00", + "pnl": -25.516274882170364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11233427565722, + "entry_time": "2023-07-12T00:00:00", + "exit_price": 94.28815691102787, + "exit_time": "2023-07-13T00:00:00", + "pnl": 17.582263537065046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89234388227695, + "entry_time": "2023-07-15T00:00:00", + "exit_price": 93.64456440149245, + "exit_time": "2023-07-16T00:00:00", + "pnl": -24.77794807845015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.62943347351336, + "entry_time": "2023-07-18T00:00:00", + "exit_price": 93.64788638508941, + "exit_time": "2023-07-19T00:00:00", + "pnl": 1.8452911576048336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1774162868962, + "entry_time": "2023-07-21T00:00:00", + "exit_price": 94.00402666791075, + "exit_time": "2023-07-22T00:00:00", + "pnl": -17.338961898545335, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.04453321057153, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.96838361247781, + "exit_time": "2023-07-25T00:00:00", + "pnl": -7.614959809372124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88321586599362, + "entry_time": "2023-07-27T00:00:00", + "exit_price": 93.90884833929827, + "exit_time": "2023-07-28T00:00:00", + "pnl": 2.5632473304654013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7179718780841, + "entry_time": "2023-07-30T00:00:00", + "exit_price": 93.74821494678119, + "exit_time": "2023-07-31T00:00:00", + "pnl": 3.024306869708937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9038655497103, + "entry_time": "2023-08-02T00:00:00", + "exit_price": 93.83750554707963, + "exit_time": "2023-08-03T00:00:00", + "pnl": -6.6360002630673876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88584036004717, + "entry_time": "2023-08-05T00:00:00", + "exit_price": 93.9446210717662, + "exit_time": "2023-08-06T00:00:00", + "pnl": 5.878071171903798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10339943212904, + "entry_time": "2023-08-08T00:00:00", + "exit_price": 94.0848941093554, + "exit_time": "2023-08-09T00:00:00", + "pnl": -1.8505322773634703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.14949796034026, + "entry_time": "2023-08-11T00:00:00", + "exit_price": 93.8874166822761, + "exit_time": "2023-08-12T00:00:00", + "pnl": -26.20812780641586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75795965886635, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 93.82124488293752, + "exit_time": "2023-08-15T00:00:00", + "pnl": 6.328522407116566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65346951457661, + "entry_time": "2023-08-17T00:00:00", + "exit_price": 93.61396660096294, + "exit_time": "2023-08-18T00:00:00", + "pnl": -3.9502913613674195, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54800539421142, + "entry_time": "2023-08-20T00:00:00", + "exit_price": 93.46513172439276, + "exit_time": "2023-08-21T00:00:00", + "pnl": -8.287366981865318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04018712803396, + "entry_time": "2023-08-23T00:00:00", + "exit_price": 93.2845186523261, + "exit_time": "2023-08-24T00:00:00", + "pnl": 24.433152429213578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80052936345986, + "entry_time": "2023-08-26T00:00:00", + "exit_price": 93.65349927893294, + "exit_time": "2023-08-27T00:00:00", + "pnl": -14.70300845269179, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93158855841354, + "entry_time": "2023-08-29T00:00:00", + "exit_price": 93.79425107834362, + "exit_time": "2023-08-30T00:00:00", + "pnl": -13.733748006991675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55284494377143, + "entry_time": "2023-09-01T00:00:00", + "exit_price": 93.33529354683158, + "exit_time": "2023-09-02T00:00:00", + "pnl": -21.75513969398537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.678819649887, + "entry_time": "2023-09-04T00:00:00", + "exit_price": 93.76309874382866, + "exit_time": "2023-09-05T00:00:00", + "pnl": 8.427909394166022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.06380422690373, + "entry_time": "2023-09-07T00:00:00", + "exit_price": 94.34837478850592, + "exit_time": "2023-09-08T00:00:00", + "pnl": 28.45705616021945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28272356925105, + "entry_time": "2023-09-10T00:00:00", + "exit_price": 94.08986442511201, + "exit_time": "2023-09-11T00:00:00", + "pnl": -19.285914413903527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19668777653186, + "entry_time": "2023-09-13T00:00:00", + "exit_price": 93.9155347262711, + "exit_time": "2023-09-14T00:00:00", + "pnl": -28.115305026075532, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86963033561572, + "entry_time": "2023-09-16T00:00:00", + "exit_price": 94.02605497205086, + "exit_time": "2023-09-17T00:00:00", + "pnl": 15.642463643513338, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07735953777274, + "entry_time": "2023-09-19T00:00:00", + "exit_price": 93.92691564488518, + "exit_time": "2023-09-20T00:00:00", + "pnl": -15.044389288755156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.63814938665311, + "entry_time": "2023-09-22T00:00:00", + "exit_price": 93.6176086632684, + "exit_time": "2023-09-23T00:00:00", + "pnl": -2.054072338471258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71204578933798, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.41015509320589, + "exit_time": "2023-09-26T00:00:00", + "pnl": -30.189069613209085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42767992948876, + "entry_time": "2023-09-28T00:00:00", + "exit_price": 93.23852235526199, + "exit_time": "2023-09-29T00:00:00", + "pnl": -18.915757422676904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49442961672796, + "entry_time": "2023-10-01T00:00:00", + "exit_price": 93.43422929731483, + "exit_time": "2023-10-02T00:00:00", + "pnl": -6.020031941312709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.28736530415493, + "entry_time": "2023-10-04T00:00:00", + "exit_price": 93.12218377264868, + "exit_time": "2023-10-05T00:00:00", + "pnl": -16.518153150624926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1091934992091, + "entry_time": "2023-10-07T00:00:00", + "exit_price": 92.97579394436632, + "exit_time": "2023-10-08T00:00:00", + "pnl": -13.33995548427822, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87630575654731, + "entry_time": "2023-10-10T00:00:00", + "exit_price": 92.64709318534976, + "exit_time": "2023-10-11T00:00:00", + "pnl": -22.921257119755012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49382854321888, + "entry_time": "2023-10-13T00:00:00", + "exit_price": 92.15699292788067, + "exit_time": "2023-10-14T00:00:00", + "pnl": -33.68356153382166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04266303105983, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.9313781112256, + "exit_time": "2023-10-17T00:00:00", + "pnl": -11.128491983423316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.69530603069572, + "entry_time": "2023-10-19T00:00:00", + "exit_price": 91.82075180753827, + "exit_time": "2023-10-20T00:00:00", + "pnl": 12.544577684255387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00003866180036, + "entry_time": "2023-10-22T00:00:00", + "exit_price": 91.769068469798, + "exit_time": "2023-10-23T00:00:00", + "pnl": -23.09701920023599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62148930928706, + "entry_time": "2023-10-25T00:00:00", + "exit_price": 92.0232146586156, + "exit_time": "2023-10-26T00:00:00", + "pnl": 40.172534932854376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05026787864645, + "entry_time": "2023-10-28T00:00:00", + "exit_price": 91.7648966725291, + "exit_time": "2023-10-29T00:00:00", + "pnl": -28.53712061173468, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45047976504434, + "entry_time": "2023-10-31T00:00:00", + "exit_price": 91.57906184617835, + "exit_time": "2023-11-01T00:00:00", + "pnl": 12.858208113401304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73227416508321, + "entry_time": "2023-11-03T00:00:00", + "exit_price": 91.39276167792192, + "exit_time": "2023-11-04T00:00:00", + "pnl": -33.951248716128646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43027834183452, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.72614964359053, + "exit_time": "2023-11-07T00:00:00", + "pnl": 29.587130175600862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22140030401876, + "entry_time": "2023-11-09T00:00:00", + "exit_price": 92.40388767907393, + "exit_time": "2023-11-10T00:00:00", + "pnl": 18.248737505517454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6481057355818, + "entry_time": "2023-11-12T00:00:00", + "exit_price": 92.68848188004498, + "exit_time": "2023-11-13T00:00:00", + "pnl": 4.037614446318116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71473698288804, + "entry_time": "2023-11-15T00:00:00", + "exit_price": 92.70268409440689, + "exit_time": "2023-11-16T00:00:00", + "pnl": -1.2052888481150603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43854075921618, + "entry_time": "2023-11-18T00:00:00", + "exit_price": 92.44140071332018, + "exit_time": "2023-11-19T00:00:00", + "pnl": 0.28599541039966425, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74726961853332, + "entry_time": "2023-11-21T00:00:00", + "exit_price": 92.8365056762946, + "exit_time": "2023-11-22T00:00:00", + "pnl": 8.92360577612834, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88893089201021, + "entry_time": "2023-11-24T00:00:00", + "exit_price": 93.26317095880032, + "exit_time": "2023-11-25T00:00:00", + "pnl": 37.4240066790108, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37686063355893, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 93.01130398358468, + "exit_time": "2023-11-28T00:00:00", + "pnl": -36.5556649974252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9244172505916, + "entry_time": "2023-11-30T00:00:00", + "exit_price": 92.89449208176279, + "exit_time": "2023-12-01T00:00:00", + "pnl": -2.992516882881091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93827683979754, + "entry_time": "2023-12-03T00:00:00", + "exit_price": 93.6532995649937, + "exit_time": "2023-12-04T00:00:00", + "pnl": -28.497727480383617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42639590375148, + "entry_time": "2023-12-06T00:00:00", + "exit_price": 93.75213347979019, + "exit_time": "2023-12-07T00:00:00", + "pnl": 32.57375760387049, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.0270700566813, + "entry_time": "2023-12-09T00:00:00", + "exit_price": 93.76146992741955, + "exit_time": "2023-12-10T00:00:00", + "pnl": -26.56001292617418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10225140410179, + "entry_time": "2023-12-12T00:00:00", + "exit_price": 92.81690399898379, + "exit_time": "2023-12-13T00:00:00", + "pnl": -28.534740511800294, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0438108934807, + "entry_time": "2023-12-15T00:00:00", + "exit_price": 92.80207795946215, + "exit_time": "2023-12-16T00:00:00", + "pnl": -24.173293401854323, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12592905184015, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 93.15713134695487, + "exit_time": "2023-12-19T00:00:00", + "pnl": 3.1202295114724166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21575520670791, + "entry_time": "2023-12-21T00:00:00", + "exit_price": 93.31507102860735, + "exit_time": "2023-12-22T00:00:00", + "pnl": 9.93158218994381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2320901589937, + "entry_time": "2023-12-24T00:00:00", + "exit_price": 93.15393731859652, + "exit_time": "2023-12-25T00:00:00", + "pnl": -7.815284039718051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07037591089997, + "entry_time": "2023-12-27T00:00:00", + "exit_price": 93.3198194947649, + "exit_time": "2023-12-28T00:00:00", + "pnl": 24.944358386493093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69216760463115, + "entry_time": "2023-12-30T00:00:00", + "exit_price": 94.07388089953058, + "exit_time": "2023-12-31T00:00:00", + "pnl": 38.17132948994271, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.64149353573185, + "entry_time": "2024-01-02T00:00:00", + "exit_price": 94.71271228263036, + "exit_time": "2024-01-03T00:00:00", + "pnl": 7.121874689850927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.11471503048601, + "entry_time": "2024-01-05T00:00:00", + "exit_price": 94.98751858071931, + "exit_time": "2024-01-06T00:00:00", + "pnl": -12.719644976669997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7067835294734, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.74844014533139, + "exit_time": "2024-01-09T00:00:00", + "pnl": 4.16566158579883, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.02489656616589, + "entry_time": "2024-01-11T00:00:00", + "exit_price": 94.98294992874101, + "exit_time": "2024-01-12T00:00:00", + "pnl": -4.194663742488558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.71598064705562, + "entry_time": "2024-01-14T00:00:00", + "exit_price": 94.90144093756582, + "exit_time": "2024-01-15T00:00:00", + "pnl": 18.546029051020696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88369269337046, + "entry_time": "2024-01-17T00:00:00", + "exit_price": 94.99127786199946, + "exit_time": "2024-01-18T00:00:00", + "pnl": 10.75851686290008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.25279588129149, + "entry_time": "2024-01-20T00:00:00", + "exit_price": 94.98339215080473, + "exit_time": "2024-01-21T00:00:00", + "pnl": -26.94037304867578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84625570624047, + "entry_time": "2024-01-23T00:00:00", + "exit_price": 94.50594333071952, + "exit_time": "2024-01-24T00:00:00", + "pnl": -34.031237552095206, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50759103681193, + "entry_time": "2024-01-26T00:00:00", + "exit_price": 94.60423833142119, + "exit_time": "2024-01-27T00:00:00", + "pnl": 9.664729460925514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.58324904624197, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.89219195707862, + "exit_time": "2024-01-30T00:00:00", + "pnl": 30.894291083664882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65911048978346, + "entry_time": "2024-02-01T00:00:00", + "exit_price": 94.7149396953146, + "exit_time": "2024-02-02T00:00:00", + "pnl": 5.582920553113979, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.87432845164759, + "entry_time": "2024-02-04T00:00:00", + "exit_price": 94.68840177129488, + "exit_time": "2024-02-05T00:00:00", + "pnl": -18.592668035270776, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.93449198055023, + "entry_time": "2024-02-07T00:00:00", + "exit_price": 95.32948554144308, + "exit_time": "2024-02-08T00:00:00", + "pnl": 39.49935608928428, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32849848634218, + "entry_time": "2024-02-10T00:00:00", + "exit_price": 95.22062659109166, + "exit_time": "2024-02-11T00:00:00", + "pnl": -10.787189525052554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95224360650606, + "entry_time": "2024-02-13T00:00:00", + "exit_price": 95.11404601693097, + "exit_time": "2024-02-14T00:00:00", + "pnl": 16.18024104249116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79369852289173, + "entry_time": "2024-02-16T00:00:00", + "exit_price": 94.57121837540416, + "exit_time": "2024-02-17T00:00:00", + "pnl": -22.248014748757328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70539792020504, + "entry_time": "2024-02-19T00:00:00", + "exit_price": 94.81536726931864, + "exit_time": "2024-02-20T00:00:00", + "pnl": 10.996934911359801, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.66590107949516, + "entry_time": "2024-02-22T00:00:00", + "exit_price": 94.54759559550845, + "exit_time": "2024-02-23T00:00:00", + "pnl": -11.83054839867026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11939973938362, + "entry_time": "2024-02-25T00:00:00", + "exit_price": 94.21880305870137, + "exit_time": "2024-02-26T00:00:00", + "pnl": 9.940331931774438, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79422563292844, + "entry_time": "2024-02-28T00:00:00", + "exit_price": 93.71312689925841, + "exit_time": "2024-02-29T00:00:00", + "pnl": -8.109873367003217, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46426831854224, + "entry_time": "2024-03-02T00:00:00", + "exit_price": 93.10239283352094, + "exit_time": "2024-03-03T00:00:00", + "pnl": -36.187548502130085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37028780606191, + "entry_time": "2024-03-05T00:00:00", + "exit_price": 93.13498012432488, + "exit_time": "2024-03-06T00:00:00", + "pnl": -23.530768173702654, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.38863630293943, + "entry_time": "2024-03-08T00:00:00", + "exit_price": 93.41150008980253, + "exit_time": "2024-03-09T00:00:00", + "pnl": 2.286378686309831, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.14488289984781, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.17802365337732, + "exit_time": "2024-03-12T00:00:00", + "pnl": 3.3140753529508515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27104619189048, + "entry_time": "2024-03-14T00:00:00", + "exit_price": 92.98787909982833, + "exit_time": "2024-03-15T00:00:00", + "pnl": -28.31670920621434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11321145433926, + "entry_time": "2024-03-17T00:00:00", + "exit_price": 93.23295576374296, + "exit_time": "2024-03-18T00:00:00", + "pnl": 11.974430940369984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.85697546574279, + "entry_time": "2024-03-20T00:00:00", + "exit_price": 92.7517321560528, + "exit_time": "2024-03-21T00:00:00", + "pnl": -10.524330968999607, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50551757491745, + "entry_time": "2024-03-23T00:00:00", + "exit_price": 92.62546167858358, + "exit_time": "2024-03-24T00:00:00", + "pnl": 11.99441036661284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86332633060258, + "entry_time": "2024-03-26T00:00:00", + "exit_price": 92.76299264885851, + "exit_time": "2024-03-27T00:00:00", + "pnl": -10.033368174406121, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78913797285577, + "entry_time": "2024-03-29T00:00:00", + "exit_price": 93.00024160373006, + "exit_time": "2024-03-30T00:00:00", + "pnl": 21.110363087429107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9168412948554, + "entry_time": "2024-04-01T00:00:00", + "exit_price": 92.7772709282975, + "exit_time": "2024-04-02T00:00:00", + "pnl": -13.957036655790489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99344762670124, + "entry_time": "2024-04-04T00:00:00", + "exit_price": 92.45458704231757, + "exit_time": "2024-04-05T00:00:00", + "pnl": -53.886058438367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.40001356367094, + "entry_time": "2024-04-07T00:00:00", + "exit_price": 91.97082046191717, + "exit_time": "2024-04-08T00:00:00", + "pnl": -42.91931017537678, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01206001173375, + "entry_time": "2024-04-10T00:00:00", + "exit_price": 92.08005345968613, + "exit_time": "2024-04-11T00:00:00", + "pnl": 6.799344795237516, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22217203577799, + "entry_time": "2024-04-13T00:00:00", + "exit_price": 92.2425856744218, + "exit_time": "2024-04-14T00:00:00", + "pnl": 2.041363864381651, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46073627278375, + "entry_time": "2024-04-16T00:00:00", + "exit_price": 92.58143591458905, + "exit_time": "2024-04-17T00:00:00", + "pnl": 12.069964180530235, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95177802714637, + "entry_time": "2024-04-19T00:00:00", + "exit_price": 92.56745694254103, + "exit_time": "2024-04-20T00:00:00", + "pnl": -38.432108460534664, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81253269752307, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 92.86554139490539, + "exit_time": "2024-04-23T00:00:00", + "pnl": 5.30086973823245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90464875740813, + "entry_time": "2024-04-25T00:00:00", + "exit_price": 92.96373746132312, + "exit_time": "2024-04-26T00:00:00", + "pnl": 5.908870391499477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09789228558353, + "entry_time": "2024-04-28T00:00:00", + "exit_price": 93.19003786584736, + "exit_time": "2024-04-29T00:00:00", + "pnl": 9.214558026383202, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66999752477345, + "entry_time": "2024-05-01T00:00:00", + "exit_price": 92.45706703230238, + "exit_time": "2024-05-02T00:00:00", + "pnl": -21.293049247107376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2209401021726, + "entry_time": "2024-05-04T00:00:00", + "exit_price": 93.26995519560073, + "exit_time": "2024-05-05T00:00:00", + "pnl": 4.90150934281246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23034844043512, + "entry_time": "2024-05-07T00:00:00", + "exit_price": 93.41387280572972, + "exit_time": "2024-05-08T00:00:00", + "pnl": 18.352436529460192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33303611955198, + "entry_time": "2024-05-10T00:00:00", + "exit_price": 93.52307299324875, + "exit_time": "2024-05-11T00:00:00", + "pnl": 19.003687369676925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67190914597171, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.29815694731651, + "exit_time": "2024-05-14T00:00:00", + "pnl": -37.37521986551968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11959184333037, + "entry_time": "2024-05-16T00:00:00", + "exit_price": 92.78483612314953, + "exit_time": "2024-05-17T00:00:00", + "pnl": -33.47557201808371, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92001295323622, + "entry_time": "2024-05-19T00:00:00", + "exit_price": 92.94709162208174, + "exit_time": "2024-05-20T00:00:00", + "pnl": 2.7078668845518905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06260774305197, + "entry_time": "2024-05-22T00:00:00", + "exit_price": 93.1459174166961, + "exit_time": "2024-05-23T00:00:00", + "pnl": 8.330967364412345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06618787236135, + "entry_time": "2024-05-25T00:00:00", + "exit_price": 93.61303967582782, + "exit_time": "2024-05-26T00:00:00", + "pnl": 54.68518034664669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.941078352886, + "entry_time": "2024-05-28T00:00:00", + "exit_price": 94.01481054814181, + "exit_time": "2024-05-29T00:00:00", + "pnl": 7.373219525581476, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92069860353018, + "entry_time": "2024-05-31T00:00:00", + "exit_price": 93.87432907187284, + "exit_time": "2024-06-01T00:00:00", + "pnl": -4.636953165734781, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88014313205952, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.43750435674885, + "exit_time": "2024-06-04T00:00:00", + "pnl": -44.26387753106695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46298718335747, + "entry_time": "2024-06-06T00:00:00", + "exit_price": 93.92373570713617, + "exit_time": "2024-06-07T00:00:00", + "pnl": 46.07485237787046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93253015033824, + "entry_time": "2024-06-09T00:00:00", + "exit_price": 93.89138819536463, + "exit_time": "2024-06-10T00:00:00", + "pnl": -4.114195497361095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6779918521803, + "entry_time": "2024-06-12T00:00:00", + "exit_price": 93.51002812881958, + "exit_time": "2024-06-13T00:00:00", + "pnl": -16.796372336071386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.285974590119, + "entry_time": "2024-06-15T00:00:00", + "exit_price": 93.32248822367578, + "exit_time": "2024-06-16T00:00:00", + "pnl": 3.6513633556779723, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35524577583958, + "entry_time": "2024-06-18T00:00:00", + "exit_price": 93.73566009456992, + "exit_time": "2024-06-19T00:00:00", + "pnl": 38.041431873034526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68667788285592, + "entry_time": "2024-06-21T00:00:00", + "exit_price": 93.84911622521342, + "exit_time": "2024-06-22T00:00:00", + "pnl": 16.2438342357504, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68254626297609, + "entry_time": "2024-06-24T00:00:00", + "exit_price": 93.53753290340698, + "exit_time": "2024-06-25T00:00:00", + "pnl": -14.501335956910566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.40541279646612, + "entry_time": "2024-06-27T00:00:00", + "exit_price": 93.71834890975212, + "exit_time": "2024-06-28T00:00:00", + "pnl": 31.29361132859998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75716070422646, + "entry_time": "2024-06-30T00:00:00", + "exit_price": 93.82803454081426, + "exit_time": "2024-07-01T00:00:00", + "pnl": 7.087383658779345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73900139072163, + "entry_time": "2024-07-03T00:00:00", + "exit_price": 93.58423325500644, + "exit_time": "2024-07-04T00:00:00", + "pnl": -15.476813571518733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16188235681071, + "entry_time": "2024-07-06T00:00:00", + "exit_price": 93.02650792631081, + "exit_time": "2024-07-07T00:00:00", + "pnl": -13.537443049989406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00049424696185, + "entry_time": "2024-07-09T00:00:00", + "exit_price": 93.27869714616556, + "exit_time": "2024-07-10T00:00:00", + "pnl": 27.820289920370556, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18595899862997, + "entry_time": "2024-07-12T00:00:00", + "exit_price": 93.03056917274476, + "exit_time": "2024-07-13T00:00:00", + "pnl": -15.538982588520867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6959315804981, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.29325844026822, + "exit_time": "2024-07-16T00:00:00", + "pnl": -40.26731402298793, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24617524245163, + "entry_time": "2024-07-18T00:00:00", + "exit_price": 92.27923511016385, + "exit_time": "2024-07-19T00:00:00", + "pnl": 3.3059867712225355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24377176084563, + "entry_time": "2024-07-21T00:00:00", + "exit_price": 91.84290901749984, + "exit_time": "2024-07-22T00:00:00", + "pnl": -40.08627433457974, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45792359801233, + "entry_time": "2024-07-24T00:00:00", + "exit_price": 91.61079046047253, + "exit_time": "2024-07-25T00:00:00", + "pnl": 15.286686246020054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59272403631071, + "entry_time": "2024-07-27T00:00:00", + "exit_price": 91.6658144632232, + "exit_time": "2024-07-28T00:00:00", + "pnl": 7.309042691248635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.7676588013805, + "entry_time": "2024-07-30T00:00:00", + "exit_price": 91.83153611139085, + "exit_time": "2024-07-31T00:00:00", + "pnl": 6.387731001034069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47875371686978, + "entry_time": "2024-08-02T00:00:00", + "exit_price": 91.54124524065837, + "exit_time": "2024-08-03T00:00:00", + "pnl": 6.249152378859435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.99233076398606, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.9529292158228, + "exit_time": "2024-08-06T00:00:00", + "pnl": -3.940154816325503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9845811375129, + "entry_time": "2024-08-08T00:00:00", + "exit_price": 92.0553452779518, + "exit_time": "2024-08-09T00:00:00", + "pnl": 7.076414043889656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96933895446483, + "entry_time": "2024-08-11T00:00:00", + "exit_price": 92.33843538273938, + "exit_time": "2024-08-12T00:00:00", + "pnl": 36.90964282745455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7587929540311, + "entry_time": "2024-08-14T00:00:00", + "exit_price": 92.61541170919818, + "exit_time": "2024-08-15T00:00:00", + "pnl": -14.338124483290926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.48109292079488, + "entry_time": "2024-08-17T00:00:00", + "exit_price": 92.584127260661, + "exit_time": "2024-08-18T00:00:00", + "pnl": 10.303433986612731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73326548896144, + "entry_time": "2024-08-20T00:00:00", + "exit_price": 92.63121700232358, + "exit_time": "2024-08-21T00:00:00", + "pnl": -10.204848663785526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0636078149956, + "entry_time": "2024-08-23T00:00:00", + "exit_price": 92.8561585876055, + "exit_time": "2024-08-24T00:00:00", + "pnl": -20.744922739010008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92284538933916, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.11237349539573, + "exit_time": "2024-08-27T00:00:00", + "pnl": 18.952810605657078, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07021236134935, + "entry_time": "2024-08-29T00:00:00", + "exit_price": 93.17184698357968, + "exit_time": "2024-08-30T00:00:00", + "pnl": 10.163462223033548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31228518791787, + "entry_time": "2024-09-01T00:00:00", + "exit_price": 92.33590023205818, + "exit_time": "2024-09-02T00:00:00", + "pnl": 2.361504414031401, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50027778498863, + "entry_time": "2024-09-04T00:00:00", + "exit_price": 92.54209415864854, + "exit_time": "2024-09-05T00:00:00", + "pnl": 4.181637365991264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3677893725537, + "entry_time": "2024-09-07T00:00:00", + "exit_price": 92.22925202091126, + "exit_time": "2024-09-08T00:00:00", + "pnl": -13.853735164244085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09309676612557, + "entry_time": "2024-09-10T00:00:00", + "exit_price": 92.15732000186526, + "exit_time": "2024-09-11T00:00:00", + "pnl": 6.422323573968924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68995738997093, + "entry_time": "2024-09-13T00:00:00", + "exit_price": 91.28297081793372, + "exit_time": "2024-09-14T00:00:00", + "pnl": -40.69865720372121, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.49225030811708, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.33431283007668, + "exit_time": "2024-09-17T00:00:00", + "pnl": -15.793747804039526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00621404043055, + "entry_time": "2024-09-19T00:00:00", + "exit_price": 90.92641929792215, + "exit_time": "2024-09-20T00:00:00", + "pnl": -7.979474250839758, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07027528339762, + "entry_time": "2024-09-22T00:00:00", + "exit_price": 91.13008155599323, + "exit_time": "2024-09-23T00:00:00", + "pnl": 5.980627259560833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00907183642319, + "entry_time": "2024-09-25T00:00:00", + "exit_price": 91.23094904986101, + "exit_time": "2024-09-26T00:00:00", + "pnl": 22.18772134378213, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2825480931582, + "entry_time": "2024-09-28T00:00:00", + "exit_price": 90.91271666538603, + "exit_time": "2024-09-29T00:00:00", + "pnl": -36.983142777216926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05360990148436, + "entry_time": "2024-10-01T00:00:00", + "exit_price": 91.28838235720163, + "exit_time": "2024-10-02T00:00:00", + "pnl": 23.477245571726257, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79116186423771, + "entry_time": "2024-10-04T00:00:00", + "exit_price": 90.76779759668747, + "exit_time": "2024-10-05T00:00:00", + "pnl": -2.336426755023524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66567440561238, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 90.70161264561204, + "exit_time": "2024-10-08T00:00:00", + "pnl": 3.5938239999666166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83214429583118, + "entry_time": "2024-10-10T00:00:00", + "exit_price": 90.77606667466077, + "exit_time": "2024-10-11T00:00:00", + "pnl": -5.607762117041659, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66108486881463, + "entry_time": "2024-10-13T00:00:00", + "exit_price": 90.66515259357669, + "exit_time": "2024-10-14T00:00:00", + "pnl": 0.4067724762066405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.16857543076497, + "entry_time": "2024-10-16T00:00:00", + "exit_price": 90.40982511738886, + "exit_time": "2024-10-17T00:00:00", + "pnl": 24.124968662388824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.06344300783006, + "entry_time": "2024-10-19T00:00:00", + "exit_price": 89.82444237040852, + "exit_time": "2024-10-20T00:00:00", + "pnl": -23.900063742154032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.59077974741996, + "entry_time": "2024-10-22T00:00:00", + "exit_price": 89.57824858967784, + "exit_time": "2024-10-23T00:00:00", + "pnl": -1.2531157742117216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.18599707786814, + "entry_time": "2024-10-25T00:00:00", + "exit_price": 89.23587599762591, + "exit_time": "2024-10-26T00:00:00", + "pnl": 4.987891975777359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.52520755360774, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.53896573427002, + "exit_time": "2024-10-29T00:00:00", + "pnl": 1.3758180662279074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32372356389571, + "entry_time": "2024-10-31T00:00:00", + "exit_price": 89.39723460318574, + "exit_time": "2024-11-01T00:00:00", + "pnl": 7.351103929002534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.42867761884308, + "entry_time": "2024-11-03T00:00:00", + "exit_price": 89.41468909557778, + "exit_time": "2024-11-04T00:00:00", + "pnl": -1.3988523265297204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37521291073797, + "entry_time": "2024-11-06T00:00:00", + "exit_price": 89.28061929510595, + "exit_time": "2024-11-07T00:00:00", + "pnl": -9.459361563202151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37421531457154, + "entry_time": "2024-11-09T00:00:00", + "exit_price": 89.42880794685172, + "exit_time": "2024-11-10T00:00:00", + "pnl": 5.459263228017619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.10075544827296, + "entry_time": "2024-11-12T00:00:00", + "exit_price": 89.08909178471053, + "exit_time": "2024-11-13T00:00:00", + "pnl": -1.1663663562430315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.9283105563295, + "entry_time": "2024-11-15T00:00:00", + "exit_price": 88.97631673436179, + "exit_time": "2024-11-16T00:00:00", + "pnl": 4.8006178032281355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.83969795208085, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.97701708069182, + "exit_time": "2024-11-19T00:00:00", + "pnl": 13.731912861096873, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.24948915106788, + "entry_time": "2024-11-21T00:00:00", + "exit_price": 89.31081866218918, + "exit_time": "2024-11-22T00:00:00", + "pnl": 6.132951112130058, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.1566381078772, + "entry_time": "2024-11-24T00:00:00", + "exit_price": 89.05359196348086, + "exit_time": "2024-11-25T00:00:00", + "pnl": -10.304614439634463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.89974340615646, + "entry_time": "2024-11-27T00:00:00", + "exit_price": 88.86736216937868, + "exit_time": "2024-11-28T00:00:00", + "pnl": -3.2381236777780487, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.02917974715604, + "entry_time": "2024-11-30T00:00:00", + "exit_price": 89.10061155400963, + "exit_time": "2024-12-01T00:00:00", + "pnl": 7.143180685359596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.71230009060692, + "entry_time": "2024-12-03T00:00:00", + "exit_price": 88.55956047576315, + "exit_time": "2024-12-04T00:00:00", + "pnl": -15.273961484376741, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.33867736091129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.24521783497416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.33353996675463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.17535391574476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.17558936557836, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.82464445421311, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.14823158528606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.02303868942406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.0898265784532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.0375220132344, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.69877148351581, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.8094147843381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.88896279741591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.58446195759505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.94461858556683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.86726342876044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.264261049502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.97378019208324, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43666090180685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.64557703864863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.41486055220747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.62832834535065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.40627623062987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.9966907903866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.62784889129782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.91665393395704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.20129913778622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.36824311350031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.44539780996692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.29577808855632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.60087912978423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.67646038571121, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17445140133515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.07045121918839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.49723620471183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.5174230546468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5413500261472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.47975770399327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.29423417091141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.27541464305773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43920860251751, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.06079463387583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.37828233356667, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.30210368322795, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.8891828858322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.6817301819728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.39002953943762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.68517685658658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.65084298157255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.93501858046714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.1907166501479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.25659603867345, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36428253311259, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01156809266551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.31879308123833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.40136182036203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17903686528695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0619221034904, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.25968317752123, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.56379928977212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.80666495491704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.94182055020374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.92425119368045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.78971486194605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.23057477534164, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.4049348801832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.24159987362269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.06843389735158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.22183940097844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.93299182979392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.91637693821662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.20188970935105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.57826653579693, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.48615354430639, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.48852996658736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.70097560384337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.56660104606993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.60339517911308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.5215727488348, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.3913600319206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.66423065390151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.49406633741951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.64849065100934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.63323070552582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.88914932519062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.96225788336264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.21454142458283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.08973549159177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.91131718633395, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.95365272243404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.3677264483084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.38542382708798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.727355594576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.80184598433505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.75895482632265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.65309620079978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.18275486854981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.08066364611346, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86355002974182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.8079829991331, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.50774498473834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.15500147527054, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.25388112126257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.46869004462158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.49982930970904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.64941137818613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08181708620197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.89782993828217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.34821493675021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0511570084608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36636841676064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.22802936588096, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.13124547885464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.97034570188329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84675502390373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82877025439984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.83150510044737, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.80556016637114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.10675350799055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.84453919660923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.88147160830762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.95771616416846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.25900520967262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.28214715432236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.64410132782972, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.78845498147822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.96240900085823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01654413042846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08257869239384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.92270971634117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.9249177043285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.5475977762062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85856446370276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.8876461806366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.75554506700362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.4712342394787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.13596092844963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.29084433077668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.50946620110103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42209873300993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16470383307056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.10251353436806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16007736983093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.25346405776058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.02466944517249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.03234873384025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.11031617256702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.14530663460309, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.4442900442657, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39955675926143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.19954612220634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.33374471974878, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.17850638089598, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.31970147221125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.19274532121113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.3840327772038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.48120231354616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.7121932598933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86988580253298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.76604202197464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.79597689506201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42129188541651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.67647877199742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82191220927734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84470059887572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.72847566121298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.43094423441607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39808368032986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.31641481415083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.40267706340073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.60680412325432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.51452016846274, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.31471449163298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.43834781075664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84446638005844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.49607372712997, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85869892480143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.87107213537678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.83017137699973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.73075043509533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85446221431528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.13025477242799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.08577867542596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.20567187514531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.27862593574773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.19411735771268, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.916410701528, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.80020190906805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.03429888110497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.99059510104857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.12230359240208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.21493112615859, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.7362497471537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.90953724611552, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.99997604721491, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.25158859302469, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98246224229298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.18380160087476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.54700954481861, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.87858935796136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.82466366840129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.79031352535364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.52782616930364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.71180131795903, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.66862984653359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.94388954493733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.40172293508901, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.27308992706585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.30251070708916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.36341600243385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.07297082017436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.63576619816114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.36545808934646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.425342939227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.59476724765915, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.41575843731752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.30499551372479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.2943417590765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.20190364871404, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.35429934455371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.25575482738782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.30124986928953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.90191386326036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.96508444596826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.75989432781597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.47851546822666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.43273982617148, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.78073270556935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.29707161405977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.17141051171173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.83897503233364, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.92050920813638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.39298906893524, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.24960092613485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.15249367428707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.11254847884746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.6477102979142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.66187174327492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.22816086359947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.18924739108921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.15833017318171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.35388264537053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.30391448349607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.1765702619787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.03923857682982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.14087662618776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.60285889768487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.71610220194758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.43129513858887, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.7750138677335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.5417619126041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.26004415392279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.48237494714664, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.58658168452075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.75620116852377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.69650084660127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.92028780826493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.62951533581877, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.58269597074072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.65987379372794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.66612454309691, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.8169746660663, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.5926039176473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28582192646724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.47874410921285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.57232514477201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.07482838670386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.06329982176626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.939646337063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.02294071169972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.73925579999096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.99566659891293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.99166395939717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.91107729961162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.35440315345551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.19457800884426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.87539474258334, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.03831344319956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.84933568810729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.942984467456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.28778584744732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.02443267142746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.94057536205155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.72906200441219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.38445225202611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38197492987447, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.18213638354725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04715001455901, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19838818284391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.29725636974986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.23572569098852, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3432106471416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.46834681822006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.39304905252162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4607924127623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.87391242777782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.81782457593818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.74839547168068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.9804659897062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.1820620687209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53780103937676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.35114383691389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19430169329608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0736265695374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.56101740773187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02847405275406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02877565620591, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02966575553104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71076966315076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5342590029927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87172892779671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8898807030855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7509399436349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70594283596789, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.83044892913243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71383587412238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.52870331564132, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.68221846843574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68293629394864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76185935158753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.77694161620539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94666597863043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09046839544105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0093802192737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.78182814117551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.75541337031265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.72371690451082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60849664049482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.94340121095276, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.85028148090369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7183641880944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.93201467581261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6600503714477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71003338575711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.64414870400898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73370138654631, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.51475031329109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60797476194675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42059367470232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66628705381636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.53531464201514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2030497935449, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62268440600192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.91948342162647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.67919849510083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.43887673234494, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.17984056111294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.94368190633774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.11465699863811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97059505880482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.29459604644765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53931157007439, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49631090115352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52393358151217, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66942128922241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.4946582273999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.29424834791328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07603918687664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.33479567014805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.14550463966849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9928646204638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.96872153502625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87705988155102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.53452507075421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.56396146367423, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.59385740536969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.64213975217385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78882758292927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.63683672368549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.48470633760584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39062489567554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.494696351115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.93573503075692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.98885415853535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.06245234985892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.0289821017493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.22900373831216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.3157346032948, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59973514861235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.77086454804387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82096590563263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.95769963997635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.21106339352885, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07551182524406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.09759300944572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33359941396125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2288848699624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2069451450579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46522997402728, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63157812424986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92215275507255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.81904355011355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34536862719393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.4540782896955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.65179701007457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58231165488735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59222373899847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41076247699506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.57987210255567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.93696117180936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88875391692817, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.67494277755462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99358787892747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.07975990716614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07047992178705, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33559891886243, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59225467831386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.63479260217548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80334597318698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.98346554786147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92321614880655, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83699346593512, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93109508241774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96354668527802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08641930356686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.23768236549668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08211844013991, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20846159911048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.13954155854589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.89054598561034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11646823351487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.10168176297485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.30038009222437, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.41339845504724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.10852951715277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.84680988625497, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00138088356287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04342924144086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.01673785551608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8508081374985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87089994615239, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9378403552245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.05201413714099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0235397935625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26517251606933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.15470785076896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4932600250258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.51252060274227, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53140073996916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90203063702091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26191114348926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0634456423351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.43521818420996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38568536751181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21262216293847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.23411145607675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.82330133886903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61660062265747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71484163940588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72855192282307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.3692642985158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37837200951205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.19352686807355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.28024660066703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.96384685743692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.14877036790756, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09572264391801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53876217367774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.64617178108719, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.85422093876446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60924422208079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52724603055836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46494136842418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44406941275119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.32264147745168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0360221167863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01384655286363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97262653583181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.28024889847717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.96758302287454, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.25528568314509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.20092793334622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49508373939167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.73466658206335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46436704586412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.69111891541637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21128313549013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37756823246967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04218716563325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.00014735551822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.93318531635457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84116622880475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50637869144556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.66826656058106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36257300920573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60779676375832, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36220969555443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.1193839744838, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.89096232869592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.75394086603562, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.10653141004636, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.98502552303084, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03115476672883, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05866288388766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.80506699745925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97004409317438, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39339911911829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28070286679336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74175784445059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6733758391721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.81901224922302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.84844274508458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.60313885279771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.41938832519848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.64052127057325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54200410559555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73590345101391, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.62782637305553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79185882856454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.8357946573913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79563500808236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.09144139124615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.91260250945975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.67552176869381, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.66062267455895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64149069106048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37359630109037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.51652219716766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.54575759654936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58821852619887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76782809841714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6119124553235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74629736846254, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61327551923173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.32896871135786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13780861275266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.12507835931243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13114200203424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37230639398891, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.298526480022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.14580661294434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.26371087049277, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.19265250778471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.34688434505053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.27944969864926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.00376526097061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.12691845430324, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13627424638673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.90552697963446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.86432013057937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.88314466139805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.85684478131836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.8333575750649, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.87580958070879, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87723690769735, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02118341969194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.14559411024791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1102070847533, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.03652679668627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.64848582455738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.5160908672533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.67122680039915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.49638519206744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.23851904732544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.12623758622358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.13616044249197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.97730849654188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.93950245741028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.92103698222829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.92708766921471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.318742774315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.23642124916759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.21999028274801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.22126197659611, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.84560909030802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.53569591871245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.0165686304024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91735297539282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.2390830156373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.14925296519219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.22089116397768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.87029928541635, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.89974631246403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.06863681183862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.57589026049908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.50862549547844, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62801821971621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.81567744205196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.33854066905738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.96569574948703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.07274851876403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.95622489428452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.72051069276088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.55232295814028, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.40473126616526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.65640141611814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56665701011867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.46095751045398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.76022002087706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.81381751472117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.23375682446748, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01190578025698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56046438309357, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.6501420569037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.45985538510016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.32205823485288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.4213362857644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.3254460973393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.36326200776878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1350438366559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.53738507774712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.43902960493799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.28282897059066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.42427634098117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.65923583486823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.60873415539405, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.39024714619487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.66523349021156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.82876323237488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.97466728886246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.89452843928451, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.67041116090726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.63870699300467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.60806866533521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.09022889967974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.33132395141395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.1422566167072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02336448195068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.85171345155105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92826438920278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.9967936460588, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02558962193989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.86654130293297, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1805076876075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.20590970247865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.04093233048125, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.94025278141096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.1695372755258, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.55006804279205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.74946747581956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.08829699168929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.17204398025235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82928257766983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.80555288724541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03756487304749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.92246232242579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.12455329081938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.03614640032846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.43863634543025, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57880144701099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5662997648947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63602712862732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99359531127284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.20326657631179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.36371229951278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15013947578183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.39786147444195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32525340472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1699951830038, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94415449917722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06237685823791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.88599230986543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09341138541605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29146577709628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.45209900958335, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.38892182999521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42662435004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.86711355565461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.43026737045712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.68555551249223, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.34275603824345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26115762602807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.81665975574816, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69084237577945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.80375023000443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71118042427594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.46412500503037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.6314533607136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6742741594175, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69072074935896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.12667461230008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99949417466048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.92543412582965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.72977842157017, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5701038761525, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.59977663872266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.2927331361965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.40263092608106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28632878234235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.53250654562353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.49417223286694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21737477440588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21700275153675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.24257812297434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.33447437173405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.36500808099656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62192540785213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.95467067184597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.32280422773096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.27797141913928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.85159096418194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.9332147424965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.87171080557967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.72359330386428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.38266657654837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28429001378173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01211175536163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.84310882657518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.59049236660378, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.35514007446828, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9357580237877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05072699188574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00889117962727, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.18219892584725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.96556912199465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.87607469195584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60138099475903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55643441032785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88066522817982, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.67510822228188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69837663925773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.91860336977558, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.70107216756422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66971331829183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87708149049162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72163687944706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.94898877051006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.95474043698636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6415881902333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.34129447656329, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9434543592522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60307524718807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.18983136258927, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07720168711411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.00591795170635, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.73390898252362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87915537734213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05356230153482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.19249105693204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35715717263174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92376356586935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8642597181964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.08761417167571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3787010770275, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.22887351223902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.18791972112416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71839956451682, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.72871333258459, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71285525012034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.95484908903208, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09252551101909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19565426763862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34851063541004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.36918149511725, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.29871325433136, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43191348926673, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54163438380152, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70996022231523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.44351635290319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3607156455027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.25194927165909, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.09482587993352, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.05964578316673, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1247824238807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60195304694001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5077083162264, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32915625849455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41904859018952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86240170807343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74311994285968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92758592270172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.91004727072426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.90746519420465, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.16764239198312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.44892482562022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.29820349772235, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29660996193417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34630077913107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28533190136021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.32163037675376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.20619082469412, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94806731557186, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.5296456958934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2046797163239, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32570812965447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.27835226241817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.18052001757422, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.21374473155299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13943605219035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26046795573633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21960702536101, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64774686400108, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.31556350692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.46149005259649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.52377288657563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.23839203319807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6963758650249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70207115016164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1906639429263, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.35726613372299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1634420410312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2066382813918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0471045722787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82199720210754, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8989666578373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.77857374465485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.70919453056075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.74465000028516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60934516564298, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96618622577306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78501792806425, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.76326607151933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62556378625803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.65556548612001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68684981308908, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.58597625405771, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86536967969084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.75020367672924, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75062990936559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.98349381034318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04847278769076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06193871613516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.60529611931622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60807864200518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90198815097345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84425841280351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66689924421028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.6348345250126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74311085652141, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.87596365908365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.15467982049428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06917346679761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16088604193162, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1767131466551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59084973064017, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3728256379574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.83907971020484, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05336598759212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.15556945611712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.11170249260897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26806948858284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.19864576006458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02469106007196, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.37555658552148, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.4719110379968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.46329135212792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.72605970139526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42143976779836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5510290269881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42138738037778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.49725923626676, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.83017838441384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.96394971087318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.80946954515628, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.05895494780962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.7764741456602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.82916340306784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.49615933800648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53903204926397, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.2199238563033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.15553425915469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3233546324033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29143609072966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34909878462929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79549173605427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.86012460829116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62257045149929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.36740770267758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1123342756572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.28815691102787, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.89234388227695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64456440149245, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.62943347351336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64788638508941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1774162868962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.00402666791075, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.04453321057154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96838361247781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88321586599363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.90884833929827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7179718780841, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74821494678119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9038655497103, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83750554707963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88584036004717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9446210717662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.10339943212905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.0848941093554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.14949796034026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8874166822761, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.75795965886634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82124488293752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.65346951457661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61396660096294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54800539421142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.46513172439276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04018712803396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2845186523261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80052936345987, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.65349927893294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93158855841354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.79425107834362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.55284494377143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33529354683158, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.67881964988702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76309874382866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.06380422690371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34837478850592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.28272356925105, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.08986442511201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.19668777653186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9155347262711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86963033561574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02605497205086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.07735953777274, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.92691564488518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.63814938665311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6176086632684, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71204578933798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41015509320589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42767992948878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.23852235526199, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.49442961672796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43422929731483, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.28736530415493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.12218377264868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10919349920911, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97579394436632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.87630575654731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64709318534976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49382854321888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15699292788067, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.04266303105983, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9313781112256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.69530603069572, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.82075180753827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.00003866180036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.769068469798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62148930928706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0232146586156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.05026787864644, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.7648966725291, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.45047976504434, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.57906184617835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.73227416508321, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.39276167792192, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43027834183452, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.72614964359053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.22140030401876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.40388767907393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6481057355818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.68848188004498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71473698288804, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70268409440689, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.43854075921617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44140071332018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74726961853332, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8365056762946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.88893089201021, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26317095880032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.37686063355893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.01130398358468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92441725059159, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89449208176279, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93827683979755, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6532995649937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.4263959037515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.75213347979019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.0270700566813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.76146992741955, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10225140410179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.81690399898379, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0438108934807, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.80207795946215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.12592905184013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15713134695487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21575520670791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.31507102860735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2320901589937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.15393731859652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07037591089997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3198194947649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69216760463115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.07388089953058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.64149353573187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71271228263036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.11471503048601, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98751858071931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.7067835294734, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.74844014533139, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.02489656616589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98294992874101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.71598064705562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90144093756582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.88369269337046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99127786199946, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.25279588129149, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98339215080473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84625570624047, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.50594333071952, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.50759103681195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.60423833142119, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.58324904624199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.89219195707862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.65911048978346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.7149396953146, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.87432845164757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.68840177129488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.93449198055023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.32948554144308, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.32849848634218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.22062659109166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.95224360650606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.11404601693097, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79369852289173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.57121837540416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.70539792020504, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.81536726931864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.66590107949516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.54759559550845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11939973938362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21880305870137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.79422563292844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71312689925841, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.46426831854224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.10239283352094, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.37028780606191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.13498012432488, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.38863630293943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41150008980253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.14488289984781, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.17802365337732, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.27104619189048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.98787909982833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.11321145433928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.23295576374296, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.85697546574279, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7517321560528, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50551757491745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.62546167858358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86332633060258, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.76299264885851, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78913797285577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.00024160373006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9168412948554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7772709282975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99344762670124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45458704231757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.40001356367094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97082046191717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01206001173375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.08005345968613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.22217203577799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2425856744218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.46073627278375, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.58143591458905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.95177802714637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.56745694254103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.81253269752307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.86554139490539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90464875740813, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96373746132312, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09789228558353, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19003786584736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66999752477344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45706703230238, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2209401021726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26995519560073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.23034844043512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.41387280572972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.33303611955198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.52307299324875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.67190914597171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29815694731651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.11959184333037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.78483612314953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92001295323621, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94709162208174, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06260774305197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.1459174166961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06618787236135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61303967582782, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.941078352886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.01481054814181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92069860353018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.87432907187284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88014313205952, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.43750435674885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.46298718335747, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.92373570713617, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93253015033825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.89138819536463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6779918521803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.51002812881958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.285974590119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32248822367578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35524577583958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73566009456992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.6866778828559, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.84911622521342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68254626297609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.53753290340698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.40541279646611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.71834890975212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.75716070422646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82803454081426, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73900139072163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58423325500644, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16188235681071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.02650792631081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.00049424696184, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.27869714616556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.18595899862997, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.03056917274476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.6959315804981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.29325844026822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24617524245163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.27923511016385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24377176084563, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.84290901749984, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.45792359801233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61079046047253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59272403631071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.6658144632232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76765880138052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.83153611139085, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.47875371686978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54124524065837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.99233076398606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9529292158228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9845811375129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0553452779518, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.96933895446485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33843538273938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.7587929540311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.61541170919818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.48109292079488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.584127260661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.73326548896145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63121700232358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06360781499562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8561585876055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92284538933916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11237349539573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07021236134935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.17184698357968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.31228518791787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.33590023205818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50027778498863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.54209415864854, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3677893725537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.22925202091126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.09309676612556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15732000186526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.68995738997093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28297081793372, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.49225030811706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.33431283007668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.00621404043055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92641929792215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.07027528339762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13008155599323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.00907183642319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.23094904986101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.2825480931582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91271666538603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05360990148436, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28838235720163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.79116186423771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.76779759668747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.66567440561238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.70161264561204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.83214429583118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.77606667466077, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.66108486881463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.66515259357669, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.16857543076497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.40982511738886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.06344300783007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.82444237040852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.59077974741996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.57824858967784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.18599707786814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.23587599762591, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.52520755360774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.53896573427002, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.32372356389571, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.39723460318574, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.42867761884308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.41468909557778, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.37521291073797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.28061929510595, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.37421531457154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.42880794685172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.10075544827296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.08909178471053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.9283105563295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.97631673436179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.83969795208085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.97701708069182, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.24948915106788, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.31081866218918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.15663810787721, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.05359196348086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.89974340615646, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.86736216937868, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.02917974715604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.10061155400963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.71230009060692, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.55956047576315, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-04T00:00:00" + } + ], + "final_value": 99082.81840069593, + "framework": "ml4t.backtest", + "num_trades": 600, + "total_pnl": -917.1815993040655, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33867736091129, + "entry_time": "2020-01-02T00:00:00", + "exit_price": 100.24521783497416, + "exit_reason": "signal", + "exit_time": "2020-01-03T00:00:00", + "pnl": -9.345952593714173, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.33353996675463, + "entry_time": "2020-01-05T00:00:00", + "exit_price": 100.17535391574476, + "exit_reason": "signal", + "exit_time": "2020-01-06T00:00:00", + "pnl": -15.818605100987043, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.17558936557836, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 99.82464445421311, + "exit_reason": "signal", + "exit_time": "2020-01-09T00:00:00", + "pnl": -35.094491136524084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.14823158528606, + "entry_time": "2020-01-11T00:00:00", + "exit_price": 100.02303868942406, + "exit_reason": "signal", + "exit_time": "2020-01-12T00:00:00", + "pnl": -12.519289586200102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.0898265784532, + "entry_time": "2020-01-14T00:00:00", + "exit_price": 100.0375220132344, + "exit_reason": "signal", + "exit_time": "2020-01-15T00:00:00", + "pnl": -5.2304565218801145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.69877148351581, + "entry_time": "2020-01-17T00:00:00", + "exit_price": 99.8094147843381, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": 11.06433008222848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.88896279741591, + "entry_time": "2020-01-20T00:00:00", + "exit_price": 99.58446195759505, + "exit_reason": "signal", + "exit_time": "2020-01-21T00:00:00", + "pnl": -30.450083982086653, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.94461858556683, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 99.86726342876044, + "exit_reason": "signal", + "exit_time": "2020-01-24T00:00:00", + "pnl": -7.735515680638855, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.264261049502, + "entry_time": "2020-01-26T00:00:00", + "exit_price": 99.97378019208324, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": -29.048085741877003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43666090180685, + "entry_time": "2020-01-29T00:00:00", + "exit_price": 99.64557703864863, + "exit_reason": "signal", + "exit_time": "2020-01-30T00:00:00", + "pnl": 20.891613684178083, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.41486055220747, + "entry_time": "2020-02-01T00:00:00", + "exit_price": 99.62832834535065, + "exit_reason": "signal", + "exit_time": "2020-02-02T00:00:00", + "pnl": 21.346779314319065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.40627623062987, + "entry_time": "2020-02-04T00:00:00", + "exit_price": 98.9966907903866, + "exit_reason": "signal", + "exit_time": "2020-02-05T00:00:00", + "pnl": -40.95854402432633, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.62784889129782, + "entry_time": "2020-02-07T00:00:00", + "exit_price": 98.91665393395704, + "exit_reason": "signal", + "exit_time": "2020-02-08T00:00:00", + "pnl": 28.880504265922355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20129913778622, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 99.36824311350031, + "exit_reason": "signal", + "exit_time": "2020-02-11T00:00:00", + "pnl": 16.694397571409354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.44539780996692, + "entry_time": "2020-02-13T00:00:00", + "exit_price": 99.29577808855632, + "exit_reason": "signal", + "exit_time": "2020-02-14T00:00:00", + "pnl": -14.96197214105996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60087912978423, + "entry_time": "2020-02-16T00:00:00", + "exit_price": 98.67646038571121, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": 7.558125592699071, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17445140133515, + "entry_time": "2020-02-19T00:00:00", + "exit_price": 99.07045121918839, + "exit_reason": "signal", + "exit_time": "2020-02-20T00:00:00", + "pnl": -10.400018214677402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.49723620471183, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 99.5174230546468, + "exit_reason": "signal", + "exit_time": "2020-02-23T00:00:00", + "pnl": 2.0186849934980273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5413500261472, + "entry_time": "2020-02-25T00:00:00", + "exit_price": 99.47975770399327, + "exit_reason": "signal", + "exit_time": "2020-02-26T00:00:00", + "pnl": -6.159232215391967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.29423417091141, + "entry_time": "2020-02-28T00:00:00", + "exit_price": 99.27541464305773, + "exit_reason": "signal", + "exit_time": "2020-02-29T00:00:00", + "pnl": -1.8819527853665932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43920860251751, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.06079463387583, + "exit_reason": "signal", + "exit_time": "2020-03-03T00:00:00", + "pnl": -37.84139686416711, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.37828233356667, + "entry_time": "2020-03-05T00:00:00", + "exit_price": 99.30210368322795, + "exit_reason": "signal", + "exit_time": "2020-03-06T00:00:00", + "pnl": -7.617865033871567, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.8891828858322, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 98.6817301819728, + "exit_reason": "signal", + "exit_time": "2020-03-09T00:00:00", + "pnl": -20.745270385939875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.39002953943762, + "entry_time": "2020-03-11T00:00:00", + "exit_price": 98.68517685658658, + "exit_reason": "signal", + "exit_time": "2020-03-12T00:00:00", + "pnl": 29.514731714896698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.65084298157255, + "entry_time": "2020-03-14T00:00:00", + "exit_price": 98.93501858046714, + "exit_reason": "signal", + "exit_time": "2020-03-15T00:00:00", + "pnl": 28.41755988945988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.1907166501479, + "entry_time": "2020-03-17T00:00:00", + "exit_price": 99.25659603867345, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 6.587938852555453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36428253311259, + "entry_time": "2020-03-20T00:00:00", + "exit_price": 99.01156809266551, + "exit_reason": "signal", + "exit_time": "2020-03-21T00:00:00", + "pnl": -35.271444044707096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31879308123833, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.40136182036203, + "exit_reason": "signal", + "exit_time": "2020-03-24T00:00:00", + "pnl": 8.256873912370793, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17903686528695, + "entry_time": "2020-03-26T00:00:00", + "exit_price": 99.0619221034904, + "exit_reason": "signal", + "exit_time": "2020-03-27T00:00:00", + "pnl": -11.71147617965471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25968317752123, + "entry_time": "2020-03-29T00:00:00", + "exit_price": 99.56379928977212, + "exit_reason": "signal", + "exit_time": "2020-03-30T00:00:00", + "pnl": 30.411611225090383, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.80666495491704, + "entry_time": "2020-04-01T00:00:00", + "exit_price": 99.94182055020374, + "exit_reason": "signal", + "exit_time": "2020-04-02T00:00:00", + "pnl": 13.515559528670565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.92425119368045, + "entry_time": "2020-04-04T00:00:00", + "exit_price": 99.78971486194605, + "exit_reason": "signal", + "exit_time": "2020-04-05T00:00:00", + "pnl": -13.453633173439812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.23057477534164, + "entry_time": "2020-04-07T00:00:00", + "exit_price": 100.4049348801832, + "exit_reason": "signal", + "exit_time": "2020-04-08T00:00:00", + "pnl": 17.436010484158032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.24159987362269, + "entry_time": "2020-04-10T00:00:00", + "exit_price": 100.06843389735158, + "exit_reason": "signal", + "exit_time": "2020-04-11T00:00:00", + "pnl": -17.31659762711024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.22183940097844, + "entry_time": "2020-04-13T00:00:00", + "exit_price": 99.93299182979392, + "exit_reason": "signal", + "exit_time": "2020-04-14T00:00:00", + "pnl": -28.8847571184524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91637693821662, + "entry_time": "2020-04-16T00:00:00", + "exit_price": 100.20188970935105, + "exit_reason": "signal", + "exit_time": "2020-04-17T00:00:00", + "pnl": 28.551277113443575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.57826653579693, + "entry_time": "2020-04-19T00:00:00", + "exit_price": 100.48615354430639, + "exit_reason": "signal", + "exit_time": "2020-04-20T00:00:00", + "pnl": -9.211299149052138, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.48852996658736, + "entry_time": "2020-04-22T00:00:00", + "exit_price": 100.70097560384337, + "exit_reason": "signal", + "exit_time": "2020-04-23T00:00:00", + "pnl": 21.244563725602347, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.56660104606993, + "entry_time": "2020-04-25T00:00:00", + "exit_price": 100.60339517911308, + "exit_reason": "signal", + "exit_time": "2020-04-26T00:00:00", + "pnl": 3.6794133043149486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5215727488348, + "entry_time": "2020-04-28T00:00:00", + "exit_price": 100.3913600319206, + "exit_reason": "signal", + "exit_time": "2020-04-29T00:00:00", + "pnl": -13.021271691421134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.66423065390151, + "entry_time": "2020-05-01T00:00:00", + "exit_price": 100.49406633741951, + "exit_reason": "signal", + "exit_time": "2020-05-02T00:00:00", + "pnl": -17.016431648198704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64849065100934, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.63323070552582, + "exit_reason": "signal", + "exit_time": "2020-05-05T00:00:00", + "pnl": -1.5259945483521733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88914932519062, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 100.96225788336264, + "exit_reason": "signal", + "exit_time": "2020-05-08T00:00:00", + "pnl": 7.310855817202537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.21454142458283, + "entry_time": "2020-05-10T00:00:00", + "exit_price": 101.08973549159177, + "exit_reason": "signal", + "exit_time": "2020-05-11T00:00:00", + "pnl": -12.480593299107568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.91131718633395, + "entry_time": "2020-05-13T00:00:00", + "exit_price": 100.95365272243404, + "exit_reason": "signal", + "exit_time": "2020-05-14T00:00:00", + "pnl": 4.233553610009039, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3677264483084, + "entry_time": "2020-05-16T00:00:00", + "exit_price": 100.38542382708798, + "exit_reason": "signal", + "exit_time": "2020-05-17T00:00:00", + "pnl": 1.7697378779575956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.727355594576, + "entry_time": "2020-05-19T00:00:00", + "exit_price": 99.80184598433505, + "exit_reason": "signal", + "exit_time": "2020-05-20T00:00:00", + "pnl": 7.449038975904841, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.75895482632265, + "entry_time": "2020-05-22T00:00:00", + "exit_price": 99.65309620079978, + "exit_reason": "signal", + "exit_time": "2020-05-23T00:00:00", + "pnl": -10.585862552286926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.18275486854981, + "entry_time": "2020-05-25T00:00:00", + "exit_price": 99.08066364611346, + "exit_reason": "signal", + "exit_time": "2020-05-26T00:00:00", + "pnl": -10.209122243633828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86355002974182, + "entry_time": "2020-05-28T00:00:00", + "exit_price": 98.8079829991331, + "exit_reason": "signal", + "exit_time": "2020-05-29T00:00:00", + "pnl": -5.556703060870859, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50774498473834, + "entry_time": "2020-05-31T00:00:00", + "exit_price": 98.15500147527054, + "exit_reason": "signal", + "exit_time": "2020-06-01T00:00:00", + "pnl": -35.27435094678003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25388112126257, + "entry_time": "2020-06-03T00:00:00", + "exit_price": 98.46869004462158, + "exit_reason": "signal", + "exit_time": "2020-06-04T00:00:00", + "pnl": 21.480892335901444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.49982930970904, + "entry_time": "2020-06-06T00:00:00", + "exit_price": 98.64941137818613, + "exit_reason": "signal", + "exit_time": "2020-06-07T00:00:00", + "pnl": 14.958206847708425, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08181708620197, + "entry_time": "2020-06-09T00:00:00", + "exit_price": 98.89782993828217, + "exit_reason": "signal", + "exit_time": "2020-06-10T00:00:00", + "pnl": -18.398714791979728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.34821493675021, + "entry_time": "2020-06-12T00:00:00", + "exit_price": 99.0511570084608, + "exit_reason": "signal", + "exit_time": "2020-06-13T00:00:00", + "pnl": -29.705792828939593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36636841676064, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 99.22802936588096, + "exit_reason": "signal", + "exit_time": "2020-06-16T00:00:00", + "pnl": -13.83390508796765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.13124547885464, + "entry_time": "2020-06-18T00:00:00", + "exit_price": 98.97034570188329, + "exit_reason": "signal", + "exit_time": "2020-06-19T00:00:00", + "pnl": -16.0899776971346, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84675502390373, + "entry_time": "2020-06-21T00:00:00", + "exit_price": 98.82877025439984, + "exit_reason": "signal", + "exit_time": "2020-06-22T00:00:00", + "pnl": -1.7984769503891584, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83150510044737, + "entry_time": "2020-06-24T00:00:00", + "exit_price": 98.80556016637114, + "exit_reason": "signal", + "exit_time": "2020-06-25T00:00:00", + "pnl": -2.594493407623304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.10675350799055, + "entry_time": "2020-06-27T00:00:00", + "exit_price": 98.84453919660923, + "exit_reason": "signal", + "exit_time": "2020-06-28T00:00:00", + "pnl": -26.221431138130356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88147160830762, + "entry_time": "2020-06-30T00:00:00", + "exit_price": 98.95771616416846, + "exit_reason": "signal", + "exit_time": "2020-07-01T00:00:00", + "pnl": 7.624455586083059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.25900520967262, + "entry_time": "2020-07-03T00:00:00", + "exit_price": 99.28214715432236, + "exit_reason": "signal", + "exit_time": "2020-07-04T00:00:00", + "pnl": 2.314194464974207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.64410132782972, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 98.78845498147822, + "exit_reason": "signal", + "exit_time": "2020-07-07T00:00:00", + "pnl": 14.43536536485044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96240900085823, + "entry_time": "2020-07-09T00:00:00", + "exit_price": 99.01654413042846, + "exit_reason": "signal", + "exit_time": "2020-07-10T00:00:00", + "pnl": 5.413512957024068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08257869239384, + "entry_time": "2020-07-12T00:00:00", + "exit_price": 98.92270971634117, + "exit_reason": "signal", + "exit_time": "2020-07-13T00:00:00", + "pnl": -15.986897605265767, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9249177043285, + "entry_time": "2020-07-15T00:00:00", + "exit_price": 98.5475977762062, + "exit_reason": "signal", + "exit_time": "2020-07-16T00:00:00", + "pnl": -37.73199281222878, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85856446370276, + "entry_time": "2020-07-18T00:00:00", + "exit_price": 98.8876461806366, + "exit_reason": "signal", + "exit_time": "2020-07-19T00:00:00", + "pnl": 2.9081716933833377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.75554506700362, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 98.4712342394787, + "exit_reason": "signal", + "exit_time": "2020-07-22T00:00:00", + "pnl": -28.43108275249142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.13596092844963, + "entry_time": "2020-07-24T00:00:00", + "exit_price": 98.29084433077668, + "exit_reason": "signal", + "exit_time": "2020-07-25T00:00:00", + "pnl": 15.488340232703194, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.50946620110103, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 98.42209873300993, + "exit_reason": "signal", + "exit_time": "2020-07-28T00:00:00", + "pnl": -8.736746809110628, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16470383307056, + "entry_time": "2020-07-30T00:00:00", + "exit_price": 98.10251353436806, + "exit_reason": "signal", + "exit_time": "2020-07-31T00:00:00", + "pnl": -6.219029870249869, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16007736983093, + "entry_time": "2020-08-02T00:00:00", + "exit_price": 98.25346405776058, + "exit_reason": "signal", + "exit_time": "2020-08-03T00:00:00", + "pnl": 9.338668792965109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.02466944517249, + "entry_time": "2020-08-05T00:00:00", + "exit_price": 98.03234873384025, + "exit_reason": "signal", + "exit_time": "2020-08-06T00:00:00", + "pnl": 0.767928866775037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11031617256702, + "entry_time": "2020-08-08T00:00:00", + "exit_price": 98.14530663460309, + "exit_reason": "signal", + "exit_time": "2020-08-09T00:00:00", + "pnl": 3.499046203607577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.4442900442657, + "entry_time": "2020-08-11T00:00:00", + "exit_price": 98.39955675926143, + "exit_reason": "signal", + "exit_time": "2020-08-12T00:00:00", + "pnl": -4.4733285004258505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19954612220634, + "entry_time": "2020-08-14T00:00:00", + "exit_price": 98.33374471974878, + "exit_reason": "signal", + "exit_time": "2020-08-15T00:00:00", + "pnl": 13.41985975424359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.17850638089598, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.31970147221125, + "exit_reason": "signal", + "exit_time": "2020-08-18T00:00:00", + "pnl": 14.119509131527593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.19274532121113, + "entry_time": "2020-08-20T00:00:00", + "exit_price": 98.3840327772038, + "exit_reason": "signal", + "exit_time": "2020-08-21T00:00:00", + "pnl": 19.12874559926604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48120231354616, + "entry_time": "2020-08-23T00:00:00", + "exit_price": 98.7121932598933, + "exit_reason": "signal", + "exit_time": "2020-08-24T00:00:00", + "pnl": 23.099094634713765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86988580253298, + "entry_time": "2020-08-26T00:00:00", + "exit_price": 98.76604202197464, + "exit_reason": "signal", + "exit_time": "2020-08-27T00:00:00", + "pnl": -10.384378055832713, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.79597689506201, + "entry_time": "2020-08-29T00:00:00", + "exit_price": 98.42129188541651, + "exit_reason": "signal", + "exit_time": "2020-08-30T00:00:00", + "pnl": -37.46850096455091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67647877199742, + "entry_time": "2020-09-01T00:00:00", + "exit_price": 98.82191220927734, + "exit_reason": "signal", + "exit_time": "2020-09-02T00:00:00", + "pnl": 14.543343727991669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84470059887572, + "entry_time": "2020-09-04T00:00:00", + "exit_price": 98.72847566121298, + "exit_reason": "signal", + "exit_time": "2020-09-05T00:00:00", + "pnl": -11.622493766273692, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43094423441607, + "entry_time": "2020-09-07T00:00:00", + "exit_price": 98.39808368032986, + "exit_reason": "signal", + "exit_time": "2020-09-08T00:00:00", + "pnl": -3.2860554086219054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31641481415083, + "entry_time": "2020-09-10T00:00:00", + "exit_price": 98.40267706340073, + "exit_reason": "signal", + "exit_time": "2020-09-11T00:00:00", + "pnl": 8.62622492499031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.60680412325432, + "entry_time": "2020-09-13T00:00:00", + "exit_price": 98.51452016846274, + "exit_reason": "signal", + "exit_time": "2020-09-14T00:00:00", + "pnl": -9.22839547915828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.31471449163298, + "entry_time": "2020-09-16T00:00:00", + "exit_price": 98.43834781075664, + "exit_reason": "signal", + "exit_time": "2020-09-17T00:00:00", + "pnl": 12.363331912365538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84446638005844, + "entry_time": "2020-09-19T00:00:00", + "exit_price": 98.49607372712997, + "exit_reason": "signal", + "exit_time": "2020-09-20T00:00:00", + "pnl": -34.8392652928469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85869892480143, + "entry_time": "2020-09-22T00:00:00", + "exit_price": 98.87107213537678, + "exit_reason": "signal", + "exit_time": "2020-09-23T00:00:00", + "pnl": 1.237321057535155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.83017137699973, + "entry_time": "2020-09-25T00:00:00", + "exit_price": 98.73075043509533, + "exit_reason": "signal", + "exit_time": "2020-09-26T00:00:00", + "pnl": -9.942094190440912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85446221431528, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.13025477242799, + "exit_reason": "signal", + "exit_time": "2020-09-29T00:00:00", + "pnl": 27.57925581127165, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.08577867542596, + "entry_time": "2020-10-01T00:00:00", + "exit_price": 99.20567187514531, + "exit_reason": "signal", + "exit_time": "2020-10-02T00:00:00", + "pnl": 11.989319971935402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27862593574773, + "entry_time": "2020-10-04T00:00:00", + "exit_price": 99.19411735771268, + "exit_reason": "signal", + "exit_time": "2020-10-05T00:00:00", + "pnl": -8.450857803505642, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.916410701528, + "entry_time": "2020-10-07T00:00:00", + "exit_price": 98.80020190906805, + "exit_reason": "signal", + "exit_time": "2020-10-08T00:00:00", + "pnl": -11.620879245994729, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.03429888110497, + "entry_time": "2020-10-10T00:00:00", + "exit_price": 97.99059510104857, + "exit_reason": "signal", + "exit_time": "2020-10-11T00:00:00", + "pnl": -4.370378005640305, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.12230359240208, + "entry_time": "2020-10-13T00:00:00", + "exit_price": 98.21493112615859, + "exit_reason": "signal", + "exit_time": "2020-10-14T00:00:00", + "pnl": 9.2627533756513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7362497471537, + "entry_time": "2020-10-16T00:00:00", + "exit_price": 97.90953724611552, + "exit_reason": "signal", + "exit_time": "2020-10-17T00:00:00", + "pnl": 17.328749896181762, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99997604721491, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.25158859302469, + "exit_reason": "signal", + "exit_time": "2020-10-20T00:00:00", + "pnl": 25.161254580978493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98246224229298, + "entry_time": "2020-10-22T00:00:00", + "exit_price": 98.18380160087476, + "exit_reason": "signal", + "exit_time": "2020-10-23T00:00:00", + "pnl": 20.13393585817721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.54700954481861, + "entry_time": "2020-10-25T00:00:00", + "exit_price": 98.87858935796136, + "exit_reason": "signal", + "exit_time": "2020-10-26T00:00:00", + "pnl": 33.157981314274366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.82466366840129, + "entry_time": "2020-10-28T00:00:00", + "exit_price": 98.79031352535364, + "exit_reason": "signal", + "exit_time": "2020-10-29T00:00:00", + "pnl": -3.435014304764991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.52782616930364, + "entry_time": "2020-10-31T00:00:00", + "exit_price": 98.71180131795903, + "exit_reason": "signal", + "exit_time": "2020-11-01T00:00:00", + "pnl": 18.39751486553905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.66862984653359, + "entry_time": "2020-11-03T00:00:00", + "exit_price": 98.94388954493733, + "exit_reason": "signal", + "exit_time": "2020-11-04T00:00:00", + "pnl": 27.525969840375183, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.40172293508901, + "entry_time": "2020-11-06T00:00:00", + "exit_price": 98.27308992706585, + "exit_reason": "signal", + "exit_time": "2020-11-07T00:00:00", + "pnl": -12.863300802317099, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30251070708916, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 98.36341600243385, + "exit_reason": "signal", + "exit_time": "2020-11-10T00:00:00", + "pnl": 6.090529534470988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07297082017436, + "entry_time": "2020-11-12T00:00:00", + "exit_price": 98.63576619816114, + "exit_reason": "signal", + "exit_time": "2020-11-13T00:00:00", + "pnl": 56.279537798676756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.36545808934646, + "entry_time": "2020-11-15T00:00:00", + "exit_price": 98.425342939227, + "exit_reason": "signal", + "exit_time": "2020-11-16T00:00:00", + "pnl": 5.988484988052733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.59476724765915, + "entry_time": "2020-11-18T00:00:00", + "exit_price": 98.41575843731752, + "exit_reason": "signal", + "exit_time": "2020-11-19T00:00:00", + "pnl": -17.900881034162012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.30499551372479, + "entry_time": "2020-11-21T00:00:00", + "exit_price": 98.2943417590765, + "exit_reason": "signal", + "exit_time": "2020-11-22T00:00:00", + "pnl": -1.0653754648283211, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.20190364871404, + "entry_time": "2020-11-24T00:00:00", + "exit_price": 98.35429934455371, + "exit_reason": "signal", + "exit_time": "2020-11-25T00:00:00", + "pnl": 15.23956958396775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.25575482738782, + "entry_time": "2020-11-27T00:00:00", + "exit_price": 98.30124986928953, + "exit_reason": "signal", + "exit_time": "2020-11-28T00:00:00", + "pnl": 4.54950419017041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.90191386326036, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.96508444596826, + "exit_reason": "signal", + "exit_time": "2020-12-01T00:00:00", + "pnl": 6.3170582707898575, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.75989432781597, + "entry_time": "2020-12-03T00:00:00", + "exit_price": 97.47851546822666, + "exit_reason": "signal", + "exit_time": "2020-12-04T00:00:00", + "pnl": -28.137885958929473, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.43273982617148, + "entry_time": "2020-12-06T00:00:00", + "exit_price": 97.78073270556935, + "exit_reason": "signal", + "exit_time": "2020-12-07T00:00:00", + "pnl": 34.799287939786154, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.29707161405977, + "entry_time": "2020-12-09T00:00:00", + "exit_price": 97.17141051171173, + "exit_reason": "signal", + "exit_time": "2020-12-10T00:00:00", + "pnl": -12.566110234804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.83897503233364, + "entry_time": "2020-12-12T00:00:00", + "exit_price": 96.92050920813638, + "exit_reason": "signal", + "exit_time": "2020-12-13T00:00:00", + "pnl": 8.153417580273526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.39298906893524, + "entry_time": "2020-12-15T00:00:00", + "exit_price": 97.24960092613485, + "exit_reason": "signal", + "exit_time": "2020-12-16T00:00:00", + "pnl": -14.338814280039514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.15249367428707, + "entry_time": "2020-12-18T00:00:00", + "exit_price": 98.11254847884746, + "exit_reason": "signal", + "exit_time": "2020-12-19T00:00:00", + "pnl": -3.99451954396136, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6477102979142, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 97.66187174327492, + "exit_reason": "signal", + "exit_time": "2020-12-22T00:00:00", + "pnl": 1.4161445360714424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.22816086359947, + "entry_time": "2020-12-24T00:00:00", + "exit_price": 97.18924739108921, + "exit_reason": "signal", + "exit_time": "2020-12-25T00:00:00", + "pnl": -3.891347251026673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.15833017318171, + "entry_time": "2020-12-27T00:00:00", + "exit_price": 97.35388264537053, + "exit_reason": "signal", + "exit_time": "2020-12-28T00:00:00", + "pnl": 19.55524721888287, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30391448349607, + "entry_time": "2020-12-30T00:00:00", + "exit_price": 97.1765702619787, + "exit_reason": "signal", + "exit_time": "2020-12-31T00:00:00", + "pnl": -12.734422151735998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.03923857682982, + "entry_time": "2021-01-02T00:00:00", + "exit_price": 97.14087662618776, + "exit_reason": "signal", + "exit_time": "2021-01-03T00:00:00", + "pnl": 10.16380493579527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.60285889768487, + "entry_time": "2021-01-05T00:00:00", + "exit_price": 96.71610220194758, + "exit_reason": "signal", + "exit_time": "2021-01-06T00:00:00", + "pnl": 11.324330426270535, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.43129513858887, + "entry_time": "2021-01-08T00:00:00", + "exit_price": 96.7750138677335, + "exit_reason": "signal", + "exit_time": "2021-01-09T00:00:00", + "pnl": 34.37187291446389, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.5417619126041, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.26004415392279, + "exit_reason": "signal", + "exit_time": "2021-01-12T00:00:00", + "pnl": -28.17177586813159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.48237494714664, + "entry_time": "2021-01-14T00:00:00", + "exit_price": 96.58658168452075, + "exit_reason": "signal", + "exit_time": "2021-01-15T00:00:00", + "pnl": 10.420673737411562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.75620116852377, + "entry_time": "2021-01-17T00:00:00", + "exit_price": 96.69650084660127, + "exit_reason": "signal", + "exit_time": "2021-01-18T00:00:00", + "pnl": -5.970032192250073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.92028780826493, + "entry_time": "2021-01-20T00:00:00", + "exit_price": 95.62951533581877, + "exit_reason": "signal", + "exit_time": "2021-01-21T00:00:00", + "pnl": -29.077247244616956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.58269597074072, + "entry_time": "2021-01-23T00:00:00", + "exit_price": 95.65987379372794, + "exit_reason": "signal", + "exit_time": "2021-01-24T00:00:00", + "pnl": 7.71778229872325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.66612454309691, + "entry_time": "2021-01-26T00:00:00", + "exit_price": 95.8169746660663, + "exit_reason": "signal", + "exit_time": "2021-01-27T00:00:00", + "pnl": 15.085012296938658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5926039176473, + "entry_time": "2021-01-29T00:00:00", + "exit_price": 95.28582192646724, + "exit_reason": "signal", + "exit_time": "2021-01-30T00:00:00", + "pnl": -30.678199118006887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.47874410921285, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.57232514477201, + "exit_reason": "signal", + "exit_time": "2021-02-02T00:00:00", + "pnl": 9.358103555914568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.07482838670386, + "entry_time": "2021-02-04T00:00:00", + "exit_price": 96.06329982176626, + "exit_reason": "signal", + "exit_time": "2021-02-05T00:00:00", + "pnl": -1.1528564937580086, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.939646337063, + "entry_time": "2021-02-07T00:00:00", + "exit_price": 96.02294071169972, + "exit_reason": "signal", + "exit_time": "2021-02-08T00:00:00", + "pnl": 8.329437463671638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.73925579999096, + "entry_time": "2021-02-10T00:00:00", + "exit_price": 95.99566659891293, + "exit_reason": "signal", + "exit_time": "2021-02-11T00:00:00", + "pnl": 25.64107989219883, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.99166395939717, + "entry_time": "2021-02-13T00:00:00", + "exit_price": 95.91107729961162, + "exit_reason": "signal", + "exit_time": "2021-02-14T00:00:00", + "pnl": -8.058665978554927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.35440315345551, + "entry_time": "2021-02-16T00:00:00", + "exit_price": 96.19457800884426, + "exit_reason": "signal", + "exit_time": "2021-02-17T00:00:00", + "pnl": -15.982514461125902, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87539474258334, + "entry_time": "2021-02-19T00:00:00", + "exit_price": 96.03831344319956, + "exit_reason": "signal", + "exit_time": "2021-02-20T00:00:00", + "pnl": 16.29187006162101, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.84933568810729, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.942984467456, + "exit_reason": "signal", + "exit_time": "2021-02-23T00:00:00", + "pnl": 9.364877934871402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28778584744732, + "entry_time": "2021-02-25T00:00:00", + "exit_price": 95.02443267142746, + "exit_reason": "signal", + "exit_time": "2021-02-26T00:00:00", + "pnl": -26.33531760198639, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94057536205155, + "entry_time": "2021-02-28T00:00:00", + "exit_price": 94.72906200441219, + "exit_reason": "signal", + "exit_time": "2021-03-01T00:00:00", + "pnl": -21.151335763936004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38445225202611, + "entry_time": "2021-03-03T00:00:00", + "exit_price": 94.38197492987447, + "exit_reason": "signal", + "exit_time": "2021-03-04T00:00:00", + "pnl": -0.247732215164433, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18213638354725, + "entry_time": "2021-03-06T00:00:00", + "exit_price": 94.04715001455901, + "exit_reason": "signal", + "exit_time": "2021-03-07T00:00:00", + "pnl": -13.498636898822951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19838818284391, + "entry_time": "2021-03-09T00:00:00", + "exit_price": 94.29725636974986, + "exit_reason": "signal", + "exit_time": "2021-03-10T00:00:00", + "pnl": 9.886818690594737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23572569098852, + "entry_time": "2021-03-12T00:00:00", + "exit_price": 94.3432106471416, + "exit_reason": "signal", + "exit_time": "2021-03-13T00:00:00", + "pnl": 10.748495615309366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46834681822006, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.39304905252162, + "exit_reason": "signal", + "exit_time": "2021-03-16T00:00:00", + "pnl": -7.529776569843307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4607924127623, + "entry_time": "2021-03-18T00:00:00", + "exit_price": 94.87391242777782, + "exit_reason": "signal", + "exit_time": "2021-03-19T00:00:00", + "pnl": 41.31200150155382, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81782457593818, + "entry_time": "2021-03-21T00:00:00", + "exit_price": 94.74839547168068, + "exit_reason": "signal", + "exit_time": "2021-03-22T00:00:00", + "pnl": -6.942910425748778, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9804659897062, + "entry_time": "2021-03-24T00:00:00", + "exit_price": 95.1820620687209, + "exit_reason": "signal", + "exit_time": "2021-03-25T00:00:00", + "pnl": 20.159607901468917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53780103937676, + "entry_time": "2021-03-27T00:00:00", + "exit_price": 94.35114383691389, + "exit_reason": "signal", + "exit_time": "2021-03-28T00:00:00", + "pnl": -18.665720246286583, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19430169329608, + "entry_time": "2021-03-30T00:00:00", + "exit_price": 94.0736265695374, + "exit_reason": "signal", + "exit_time": "2021-03-31T00:00:00", + "pnl": -12.067512375868318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.56101740773187, + "entry_time": "2021-04-02T00:00:00", + "exit_price": 94.02847405275406, + "exit_reason": "signal", + "exit_time": "2021-04-03T00:00:00", + "pnl": -53.25433549778063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02877565620591, + "entry_time": "2021-04-05T00:00:00", + "exit_price": 94.02966575553104, + "exit_reason": "signal", + "exit_time": "2021-04-06T00:00:00", + "pnl": 0.08900993251336331, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71076966315076, + "entry_time": "2021-04-08T00:00:00", + "exit_price": 93.5342590029927, + "exit_reason": "signal", + "exit_time": "2021-04-09T00:00:00", + "pnl": -17.651066015805554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87172892779671, + "entry_time": "2021-04-11T00:00:00", + "exit_price": 93.8898807030855, + "exit_reason": "signal", + "exit_time": "2021-04-12T00:00:00", + "pnl": 1.8151775288788485, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7509399436349, + "entry_time": "2021-04-14T00:00:00", + "exit_price": 93.70594283596789, + "exit_reason": "signal", + "exit_time": "2021-04-15T00:00:00", + "pnl": -4.499710766702265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83044892913243, + "entry_time": "2021-04-17T00:00:00", + "exit_price": 93.71383587412238, + "exit_reason": "signal", + "exit_time": "2021-04-18T00:00:00", + "pnl": -11.6613055010057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52870331564132, + "entry_time": "2021-04-20T00:00:00", + "exit_price": 93.68221846843574, + "exit_reason": "signal", + "exit_time": "2021-04-21T00:00:00", + "pnl": 15.351515279440719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68293629394864, + "entry_time": "2021-04-23T00:00:00", + "exit_price": 93.76185935158753, + "exit_reason": "signal", + "exit_time": "2021-04-24T00:00:00", + "pnl": 7.892305763889453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77694161620539, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.94666597863043, + "exit_reason": "signal", + "exit_time": "2021-04-27T00:00:00", + "pnl": 16.972436242504045, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09046839544105, + "entry_time": "2021-04-29T00:00:00", + "exit_price": 94.0093802192737, + "exit_reason": "signal", + "exit_time": "2021-04-30T00:00:00", + "pnl": -8.108817616735905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.78182814117551, + "entry_time": "2021-05-02T00:00:00", + "exit_price": 93.75541337031265, + "exit_reason": "signal", + "exit_time": "2021-05-03T00:00:00", + "pnl": -2.6414770862847945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72371690451082, + "entry_time": "2021-05-05T00:00:00", + "exit_price": 93.60849664049482, + "exit_reason": "signal", + "exit_time": "2021-05-06T00:00:00", + "pnl": -11.52202640160067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94340121095276, + "entry_time": "2021-05-08T00:00:00", + "exit_price": 93.85028148090369, + "exit_reason": "signal", + "exit_time": "2021-05-09T00:00:00", + "pnl": -9.311973004907486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7183641880944, + "entry_time": "2021-05-11T00:00:00", + "exit_price": 93.93201467581261, + "exit_reason": "signal", + "exit_time": "2021-05-12T00:00:00", + "pnl": 21.36504877182051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6600503714477, + "entry_time": "2021-05-14T00:00:00", + "exit_price": 93.71003338575711, + "exit_reason": "signal", + "exit_time": "2021-05-15T00:00:00", + "pnl": 4.998301430941865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64414870400898, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 93.73370138654631, + "exit_reason": "signal", + "exit_time": "2021-05-18T00:00:00", + "pnl": 8.955268253732356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.51475031329109, + "entry_time": "2021-05-20T00:00:00", + "exit_price": 93.60797476194675, + "exit_reason": "signal", + "exit_time": "2021-05-21T00:00:00", + "pnl": 9.322444865565558, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42059367470232, + "entry_time": "2021-05-23T00:00:00", + "exit_price": 93.66628705381636, + "exit_reason": "signal", + "exit_time": "2021-05-24T00:00:00", + "pnl": 24.569337911403636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53531464201514, + "entry_time": "2021-05-26T00:00:00", + "exit_price": 93.2030497935449, + "exit_reason": "signal", + "exit_time": "2021-05-27T00:00:00", + "pnl": -33.22648484702404, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62268440600192, + "entry_time": "2021-05-29T00:00:00", + "exit_price": 92.91948342162647, + "exit_reason": "signal", + "exit_time": "2021-05-30T00:00:00", + "pnl": 29.67990156245469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67919849510083, + "entry_time": "2021-06-01T00:00:00", + "exit_price": 92.43887673234494, + "exit_reason": "signal", + "exit_time": "2021-06-02T00:00:00", + "pnl": -24.032176275588427, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.17984056111294, + "entry_time": "2021-06-04T00:00:00", + "exit_price": 91.94368190633774, + "exit_reason": "signal", + "exit_time": "2021-06-05T00:00:00", + "pnl": -23.615865477519037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.11465699863811, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.97059505880482, + "exit_reason": "signal", + "exit_time": "2021-06-08T00:00:00", + "pnl": -14.406193983330013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29459604644765, + "entry_time": "2021-06-10T00:00:00", + "exit_price": 92.53931157007439, + "exit_reason": "signal", + "exit_time": "2021-06-11T00:00:00", + "pnl": 24.47155236267281, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49631090115352, + "entry_time": "2021-06-13T00:00:00", + "exit_price": 92.52393358151217, + "exit_reason": "signal", + "exit_time": "2021-06-14T00:00:00", + "pnl": 2.762268035865418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66942128922241, + "entry_time": "2021-06-16T00:00:00", + "exit_price": 92.4946582273999, + "exit_reason": "signal", + "exit_time": "2021-06-17T00:00:00", + "pnl": -17.4763061822523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.29424834791328, + "entry_time": "2021-06-19T00:00:00", + "exit_price": 92.07603918687664, + "exit_reason": "signal", + "exit_time": "2021-06-20T00:00:00", + "pnl": -21.820916103664786, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.33479567014805, + "entry_time": "2021-06-22T00:00:00", + "exit_price": 92.14550463966849, + "exit_reason": "signal", + "exit_time": "2021-06-23T00:00:00", + "pnl": -18.929103047956232, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9928646204638, + "entry_time": "2021-06-25T00:00:00", + "exit_price": 91.96872153502625, + "exit_reason": "signal", + "exit_time": "2021-06-26T00:00:00", + "pnl": -2.4143085437553964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87705988155102, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.53452507075421, + "exit_reason": "signal", + "exit_time": "2021-06-29T00:00:00", + "pnl": -34.25348107968057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.56396146367423, + "entry_time": "2021-07-01T00:00:00", + "exit_price": 91.59385740536969, + "exit_reason": "signal", + "exit_time": "2021-07-02T00:00:00", + "pnl": 2.9895941695449437, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64213975217385, + "entry_time": "2021-07-04T00:00:00", + "exit_price": 91.78882758292927, + "exit_reason": "signal", + "exit_time": "2021-07-05T00:00:00", + "pnl": 14.668783075543615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63683672368549, + "entry_time": "2021-07-07T00:00:00", + "exit_price": 91.48470633760584, + "exit_reason": "signal", + "exit_time": "2021-07-08T00:00:00", + "pnl": -15.213038607964336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39062489567554, + "entry_time": "2021-07-10T00:00:00", + "exit_price": 91.494696351115, + "exit_reason": "signal", + "exit_time": "2021-07-11T00:00:00", + "pnl": 10.407145543946172, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93573503075692, + "entry_time": "2021-07-13T00:00:00", + "exit_price": 90.98885415853535, + "exit_reason": "signal", + "exit_time": "2021-07-14T00:00:00", + "pnl": 5.3119127778427355, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06245234985892, + "entry_time": "2021-07-16T00:00:00", + "exit_price": 91.0289821017493, + "exit_reason": "signal", + "exit_time": "2021-07-17T00:00:00", + "pnl": -3.3470248109606473, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22900373831216, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.3157346032948, + "exit_reason": "signal", + "exit_time": "2021-07-20T00:00:00", + "pnl": 8.673086498263729, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59973514861235, + "entry_time": "2021-07-22T00:00:00", + "exit_price": 91.77086454804387, + "exit_reason": "signal", + "exit_time": "2021-07-23T00:00:00", + "pnl": 17.112939943153833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82096590563263, + "entry_time": "2021-07-25T00:00:00", + "exit_price": 91.95769963997635, + "exit_reason": "signal", + "exit_time": "2021-07-26T00:00:00", + "pnl": 13.673373434372479, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.21106339352885, + "entry_time": "2021-07-28T00:00:00", + "exit_price": 92.07551182524406, + "exit_reason": "signal", + "exit_time": "2021-07-29T00:00:00", + "pnl": -13.555156828477266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09759300944572, + "entry_time": "2021-07-31T00:00:00", + "exit_price": 92.33359941396125, + "exit_reason": "signal", + "exit_time": "2021-08-01T00:00:00", + "pnl": 23.600640451553772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2288848699624, + "entry_time": "2021-08-03T00:00:00", + "exit_price": 92.2069451450579, + "exit_reason": "signal", + "exit_time": "2021-08-04T00:00:00", + "pnl": -2.193972490449596, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46522997402728, + "entry_time": "2021-08-06T00:00:00", + "exit_price": 92.63157812424986, + "exit_reason": "signal", + "exit_time": "2021-08-07T00:00:00", + "pnl": 16.634815022258408, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92215275507255, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 92.81904355011355, + "exit_reason": "signal", + "exit_time": "2021-08-10T00:00:00", + "pnl": -10.310920495900064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34536862719393, + "entry_time": "2021-08-12T00:00:00", + "exit_price": 93.4540782896955, + "exit_reason": "signal", + "exit_time": "2021-08-13T00:00:00", + "pnl": 10.870966250156926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65179701007457, + "entry_time": "2021-08-15T00:00:00", + "exit_price": 93.58231165488735, + "exit_reason": "signal", + "exit_time": "2021-08-16T00:00:00", + "pnl": -6.948535518722565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59222373899847, + "entry_time": "2021-08-18T00:00:00", + "exit_price": 93.41076247699506, + "exit_reason": "signal", + "exit_time": "2021-08-19T00:00:00", + "pnl": -18.146126200341314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57987210255567, + "entry_time": "2021-08-21T00:00:00", + "exit_price": 93.93696117180936, + "exit_reason": "signal", + "exit_time": "2021-08-22T00:00:00", + "pnl": 35.708906925368865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88875391692817, + "entry_time": "2021-08-24T00:00:00", + "exit_price": 93.67494277755462, + "exit_reason": "signal", + "exit_time": "2021-08-25T00:00:00", + "pnl": -21.381113937353803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99358787892747, + "entry_time": "2021-08-27T00:00:00", + "exit_price": 93.07975990716614, + "exit_reason": "signal", + "exit_time": "2021-08-28T00:00:00", + "pnl": 8.617202823867046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07047992178705, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.33559891886243, + "exit_reason": "signal", + "exit_time": "2021-08-31T00:00:00", + "pnl": 26.51189970753876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59225467831386, + "entry_time": "2021-09-02T00:00:00", + "exit_price": 93.63479260217548, + "exit_reason": "signal", + "exit_time": "2021-09-03T00:00:00", + "pnl": 4.2537923861618765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80334597318698, + "entry_time": "2021-09-05T00:00:00", + "exit_price": 93.98346554786147, + "exit_reason": "signal", + "exit_time": "2021-09-06T00:00:00", + "pnl": 18.011957467449975, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92321614880655, + "entry_time": "2021-09-08T00:00:00", + "exit_price": 93.83699346593512, + "exit_reason": "signal", + "exit_time": "2021-09-09T00:00:00", + "pnl": -8.622268287143015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93109508241774, + "entry_time": "2021-09-11T00:00:00", + "exit_price": 93.96354668527802, + "exit_reason": "signal", + "exit_time": "2021-09-12T00:00:00", + "pnl": 3.245160286027385, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08641930356686, + "entry_time": "2021-09-14T00:00:00", + "exit_price": 94.23768236549668, + "exit_reason": "signal", + "exit_time": "2021-09-15T00:00:00", + "pnl": 15.126306192982156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08211844013991, + "entry_time": "2021-09-17T00:00:00", + "exit_price": 94.20846159911048, + "exit_reason": "signal", + "exit_time": "2021-09-18T00:00:00", + "pnl": 12.634315897057604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.13954155854589, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 93.89054598561034, + "exit_reason": "signal", + "exit_time": "2021-09-21T00:00:00", + "pnl": -24.89955729355279, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11646823351487, + "entry_time": "2021-09-23T00:00:00", + "exit_price": 94.10168176297485, + "exit_reason": "signal", + "exit_time": "2021-09-24T00:00:00", + "pnl": -1.4786470540020673, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30038009222437, + "entry_time": "2021-09-26T00:00:00", + "exit_price": 94.41339845504724, + "exit_reason": "signal", + "exit_time": "2021-09-27T00:00:00", + "pnl": 11.301836282287695, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10852951715277, + "entry_time": "2021-09-29T00:00:00", + "exit_price": 93.84680988625497, + "exit_reason": "signal", + "exit_time": "2021-09-30T00:00:00", + "pnl": -26.171963089780547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00138088356287, + "entry_time": "2021-10-02T00:00:00", + "exit_price": 94.04342924144086, + "exit_reason": "signal", + "exit_time": "2021-10-03T00:00:00", + "pnl": 4.204835787799311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01673785551608, + "entry_time": "2021-10-05T00:00:00", + "exit_price": 93.8508081374985, + "exit_reason": "signal", + "exit_time": "2021-10-06T00:00:00", + "pnl": -16.592971801757812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87089994615239, + "entry_time": "2021-10-08T00:00:00", + "exit_price": 93.9378403552245, + "exit_reason": "signal", + "exit_time": "2021-10-09T00:00:00", + "pnl": 6.694040907210365, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05201413714099, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.0235397935625, + "exit_reason": "signal", + "exit_time": "2021-10-12T00:00:00", + "pnl": -2.8474343578473054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26517251606933, + "entry_time": "2021-10-14T00:00:00", + "exit_price": 94.15470785076896, + "exit_reason": "signal", + "exit_time": "2021-10-15T00:00:00", + "pnl": -11.046466530036923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4932600250258, + "entry_time": "2021-10-17T00:00:00", + "exit_price": 94.51252060274227, + "exit_reason": "signal", + "exit_time": "2021-10-18T00:00:00", + "pnl": 1.9260577716468106, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53140073996916, + "entry_time": "2021-10-20T00:00:00", + "exit_price": 94.90203063702091, + "exit_reason": "signal", + "exit_time": "2021-10-21T00:00:00", + "pnl": 37.062989705174914, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26191114348926, + "entry_time": "2021-10-23T00:00:00", + "exit_price": 94.0634456423351, + "exit_reason": "signal", + "exit_time": "2021-10-24T00:00:00", + "pnl": -19.846550115415084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43521818420996, + "entry_time": "2021-10-26T00:00:00", + "exit_price": 94.38568536751181, + "exit_reason": "signal", + "exit_time": "2021-10-27T00:00:00", + "pnl": -4.953281669813805, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21262216293847, + "entry_time": "2021-10-29T00:00:00", + "exit_price": 94.23411145607675, + "exit_reason": "signal", + "exit_time": "2021-10-30T00:00:00", + "pnl": 2.148929313827466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82330133886903, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 93.61660062265747, + "exit_reason": "signal", + "exit_time": "2021-11-02T00:00:00", + "pnl": -20.67007162115442, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71484163940588, + "entry_time": "2021-11-04T00:00:00", + "exit_price": 93.72855192282307, + "exit_reason": "signal", + "exit_time": "2021-11-05T00:00:00", + "pnl": 1.3710283417203755, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3692642985158, + "entry_time": "2021-11-07T00:00:00", + "exit_price": 93.37837200951205, + "exit_reason": "signal", + "exit_time": "2021-11-08T00:00:00", + "pnl": 0.9107710996231617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19352686807355, + "entry_time": "2021-11-10T00:00:00", + "exit_price": 93.28024660066703, + "exit_reason": "signal", + "exit_time": "2021-11-11T00:00:00", + "pnl": 8.671973259348306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96384685743692, + "entry_time": "2021-11-13T00:00:00", + "exit_price": 93.14877036790756, + "exit_reason": "signal", + "exit_time": "2021-11-14T00:00:00", + "pnl": 18.492351047065313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09572264391801, + "entry_time": "2021-11-16T00:00:00", + "exit_price": 92.53876217367774, + "exit_reason": "signal", + "exit_time": "2021-11-17T00:00:00", + "pnl": -55.6960470240283, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.64617178108719, + "entry_time": "2021-11-19T00:00:00", + "exit_price": 92.85422093876446, + "exit_reason": "signal", + "exit_time": "2021-11-20T00:00:00", + "pnl": 20.804915767725106, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60924422208079, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 92.52724603055836, + "exit_reason": "signal", + "exit_time": "2021-11-23T00:00:00", + "pnl": -8.199819152243435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46494136842418, + "entry_time": "2021-11-25T00:00:00", + "exit_price": 92.44406941275119, + "exit_reason": "signal", + "exit_time": "2021-11-26T00:00:00", + "pnl": -2.0871955672973854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32264147745168, + "entry_time": "2021-11-28T00:00:00", + "exit_price": 92.0360221167863, + "exit_reason": "signal", + "exit_time": "2021-11-29T00:00:00", + "pnl": -28.661936066539056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01384655286363, + "entry_time": "2021-12-01T00:00:00", + "exit_price": 91.97262653583181, + "exit_reason": "signal", + "exit_time": "2021-12-02T00:00:00", + "pnl": -4.122001703182832, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.28024889847717, + "entry_time": "2021-12-04T00:00:00", + "exit_price": 91.96758302287454, + "exit_reason": "signal", + "exit_time": "2021-12-05T00:00:00", + "pnl": -31.26658756026336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25528568314509, + "entry_time": "2021-12-07T00:00:00", + "exit_price": 92.20092793334622, + "exit_reason": "signal", + "exit_time": "2021-12-08T00:00:00", + "pnl": -5.435774979885537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49508373939167, + "entry_time": "2021-12-10T00:00:00", + "exit_price": 92.73466658206335, + "exit_reason": "signal", + "exit_time": "2021-12-11T00:00:00", + "pnl": 23.958284267167983, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46436704586412, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.69111891541637, + "exit_reason": "signal", + "exit_time": "2021-12-14T00:00:00", + "pnl": 22.67518695522449, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21128313549013, + "entry_time": "2021-12-16T00:00:00", + "exit_price": 93.37756823246967, + "exit_reason": "signal", + "exit_time": "2021-12-17T00:00:00", + "pnl": 16.628509697953632, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04218716563325, + "entry_time": "2021-12-19T00:00:00", + "exit_price": 93.00014735551822, + "exit_reason": "signal", + "exit_time": "2021-12-20T00:00:00", + "pnl": -4.203981011503856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.93318531635457, + "entry_time": "2021-12-22T00:00:00", + "exit_price": 92.84116622880475, + "exit_reason": "signal", + "exit_time": "2021-12-23T00:00:00", + "pnl": -9.20190875498156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50637869144556, + "entry_time": "2021-12-25T00:00:00", + "exit_price": 92.66826656058106, + "exit_reason": "signal", + "exit_time": "2021-12-26T00:00:00", + "pnl": 16.188786913549848, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36257300920573, + "entry_time": "2021-12-28T00:00:00", + "exit_price": 92.60779676375832, + "exit_reason": "signal", + "exit_time": "2021-12-29T00:00:00", + "pnl": 24.522375455258953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36220969555443, + "entry_time": "2021-12-31T00:00:00", + "exit_price": 92.1193839744838, + "exit_reason": "signal", + "exit_time": "2022-01-01T00:00:00", + "pnl": -24.28257210706397, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89096232869592, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.75394086603562, + "exit_reason": "signal", + "exit_time": "2022-01-04T00:00:00", + "pnl": -13.702146266028649, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.10653141004636, + "entry_time": "2022-01-06T00:00:00", + "exit_price": 91.98502552303084, + "exit_reason": "signal", + "exit_time": "2022-01-07T00:00:00", + "pnl": -12.150588701551897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03115476672883, + "entry_time": "2022-01-09T00:00:00", + "exit_price": 92.05866288388766, + "exit_reason": "signal", + "exit_time": "2022-01-10T00:00:00", + "pnl": 2.7508117158831737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.80506699745925, + "entry_time": "2022-01-12T00:00:00", + "exit_price": 91.97004409317438, + "exit_reason": "signal", + "exit_time": "2022-01-13T00:00:00", + "pnl": 16.49770957151304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39339911911829, + "entry_time": "2022-01-15T00:00:00", + "exit_price": 91.28070286679336, + "exit_reason": "signal", + "exit_time": "2022-01-16T00:00:00", + "pnl": -11.269625232493127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74175784445059, + "entry_time": "2022-01-18T00:00:00", + "exit_price": 91.6733758391721, + "exit_reason": "signal", + "exit_time": "2022-01-19T00:00:00", + "pnl": -6.83820052784904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81901224922302, + "entry_time": "2022-01-21T00:00:00", + "exit_price": 91.84844274508458, + "exit_reason": "signal", + "exit_time": "2022-01-22T00:00:00", + "pnl": 2.9430495861561212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.60313885279771, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.41938832519848, + "exit_reason": "signal", + "exit_time": "2022-01-25T00:00:00", + "pnl": -18.375052759922255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.64052127057325, + "entry_time": "2022-01-27T00:00:00", + "exit_price": 91.54200410559555, + "exit_reason": "signal", + "exit_time": "2022-01-28T00:00:00", + "pnl": -9.851716497769303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73590345101391, + "entry_time": "2022-01-30T00:00:00", + "exit_price": 91.62782637305553, + "exit_reason": "signal", + "exit_time": "2022-01-31T00:00:00", + "pnl": -10.807707795838724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79185882856454, + "entry_time": "2022-02-02T00:00:00", + "exit_price": 91.8357946573913, + "exit_reason": "signal", + "exit_time": "2022-02-03T00:00:00", + "pnl": 4.393582882676128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79563500808236, + "entry_time": "2022-02-05T00:00:00", + "exit_price": 92.09144139124615, + "exit_reason": "signal", + "exit_time": "2022-02-06T00:00:00", + "pnl": 29.58063831637992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.91260250945975, + "entry_time": "2022-02-08T00:00:00", + "exit_price": 91.67552176869381, + "exit_reason": "signal", + "exit_time": "2022-02-09T00:00:00", + "pnl": -23.70807407659231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66062267455895, + "entry_time": "2022-02-11T00:00:00", + "exit_price": 91.64149069106048, + "exit_reason": "signal", + "exit_time": "2022-02-12T00:00:00", + "pnl": -1.9131983498464251, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37359630109037, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.51652219716766, + "exit_reason": "signal", + "exit_time": "2022-02-15T00:00:00", + "pnl": 14.292589607728587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.54575759654936, + "entry_time": "2022-02-17T00:00:00", + "exit_price": 91.58821852619887, + "exit_reason": "signal", + "exit_time": "2022-02-18T00:00:00", + "pnl": 4.246092964951458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76782809841714, + "entry_time": "2022-02-20T00:00:00", + "exit_price": 91.6119124553235, + "exit_reason": "signal", + "exit_time": "2022-02-21T00:00:00", + "pnl": -15.591564309363093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74629736846254, + "entry_time": "2022-02-23T00:00:00", + "exit_price": 91.61327551923173, + "exit_reason": "signal", + "exit_time": "2022-02-24T00:00:00", + "pnl": -13.30218492307904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.32896871135786, + "entry_time": "2022-02-26T00:00:00", + "exit_price": 91.13780861275266, + "exit_reason": "signal", + "exit_time": "2022-02-27T00:00:00", + "pnl": -19.116009860519625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12507835931243, + "entry_time": "2022-03-01T00:00:00", + "exit_price": 91.13114200203424, + "exit_reason": "signal", + "exit_time": "2022-03-02T00:00:00", + "pnl": 0.6063642721801443, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37230639398891, + "entry_time": "2022-03-04T00:00:00", + "exit_price": 91.298526480022, + "exit_reason": "signal", + "exit_time": "2022-03-05T00:00:00", + "pnl": -7.377991396690049, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14580661294434, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.26371087049277, + "exit_reason": "signal", + "exit_time": "2022-03-08T00:00:00", + "pnl": 11.790425754843454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.19265250778471, + "entry_time": "2022-03-10T00:00:00", + "exit_price": 91.34688434505053, + "exit_reason": "signal", + "exit_time": "2022-03-11T00:00:00", + "pnl": 15.423183726581556, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.27944969864926, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 91.00376526097061, + "exit_reason": "signal", + "exit_time": "2022-03-14T00:00:00", + "pnl": -27.568443767864665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.12691845430324, + "entry_time": "2022-03-16T00:00:00", + "exit_price": 91.13627424638673, + "exit_reason": "signal", + "exit_time": "2022-03-17T00:00:00", + "pnl": 0.9355792083497363, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.90552697963446, + "entry_time": "2022-03-19T00:00:00", + "exit_price": 90.86432013057937, + "exit_reason": "signal", + "exit_time": "2022-03-20T00:00:00", + "pnl": -4.120684905507005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88314466139805, + "entry_time": "2022-03-22T00:00:00", + "exit_price": 90.85684478131836, + "exit_reason": "signal", + "exit_time": "2022-03-23T00:00:00", + "pnl": -2.6299880079695868, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8333575750649, + "entry_time": "2022-03-25T00:00:00", + "exit_price": 90.87580958070879, + "exit_reason": "signal", + "exit_time": "2022-03-26T00:00:00", + "pnl": 4.245200564389961, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87723690769735, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.02118341969194, + "exit_reason": "signal", + "exit_time": "2022-03-29T00:00:00", + "pnl": 14.394651199458167, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.14559411024791, + "entry_time": "2022-03-31T00:00:00", + "exit_price": 91.1102070847533, + "exit_reason": "signal", + "exit_time": "2022-04-01T00:00:00", + "pnl": -3.5387025494619593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.03652679668627, + "entry_time": "2022-04-03T00:00:00", + "exit_price": 90.64848582455738, + "exit_reason": "signal", + "exit_time": "2022-04-04T00:00:00", + "pnl": -38.80409721288743, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.5160908672533, + "entry_time": "2022-04-06T00:00:00", + "exit_price": 90.67122680039915, + "exit_reason": "signal", + "exit_time": "2022-04-07T00:00:00", + "pnl": 15.513593314586615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49638519206744, + "entry_time": "2022-04-09T00:00:00", + "exit_price": 90.23851904732544, + "exit_reason": "signal", + "exit_time": "2022-04-10T00:00:00", + "pnl": -25.78661447419836, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.12623758622358, + "entry_time": "2022-04-12T00:00:00", + "exit_price": 90.13616044249197, + "exit_reason": "signal", + "exit_time": "2022-04-13T00:00:00", + "pnl": 0.9922856268385658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.97730849654188, + "entry_time": "2022-04-15T00:00:00", + "exit_price": 89.93950245741028, + "exit_reason": "signal", + "exit_time": "2022-04-16T00:00:00", + "pnl": -3.7806039131592115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.92103698222829, + "entry_time": "2022-04-18T00:00:00", + "exit_price": 89.92708766921471, + "exit_reason": "signal", + "exit_time": "2022-04-19T00:00:00", + "pnl": 0.6050686986418441, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.318742774315, + "entry_time": "2022-04-21T00:00:00", + "exit_price": 90.23642124916759, + "exit_reason": "signal", + "exit_time": "2022-04-22T00:00:00", + "pnl": -8.232152514739937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.21999028274801, + "entry_time": "2022-04-24T00:00:00", + "exit_price": 90.22126197659611, + "exit_reason": "signal", + "exit_time": "2022-04-25T00:00:00", + "pnl": 0.12716938480843964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84560909030802, + "entry_time": "2022-04-27T00:00:00", + "exit_price": 90.53569591871245, + "exit_reason": "signal", + "exit_time": "2022-04-28T00:00:00", + "pnl": -30.991317159558093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0165686304024, + "entry_time": "2022-04-30T00:00:00", + "exit_price": 90.91735297539282, + "exit_reason": "signal", + "exit_time": "2022-05-01T00:00:00", + "pnl": -9.921565500957513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2390830156373, + "entry_time": "2022-05-03T00:00:00", + "exit_price": 91.14925296519219, + "exit_reason": "signal", + "exit_time": "2022-05-04T00:00:00", + "pnl": -8.983005044510719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.22089116397768, + "entry_time": "2022-05-06T00:00:00", + "exit_price": 90.87029928541635, + "exit_reason": "signal", + "exit_time": "2022-05-07T00:00:00", + "pnl": -35.059187856133576, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89974631246403, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.06863681183862, + "exit_reason": "signal", + "exit_time": "2022-05-10T00:00:00", + "pnl": 16.889049937459276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.57589026049908, + "entry_time": "2022-05-12T00:00:00", + "exit_price": 91.50862549547844, + "exit_reason": "signal", + "exit_time": "2022-05-13T00:00:00", + "pnl": -6.726476502062724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62801821971621, + "entry_time": "2022-05-15T00:00:00", + "exit_price": 91.81567744205196, + "exit_reason": "signal", + "exit_time": "2022-05-16T00:00:00", + "pnl": 18.76592223357511, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.33854066905738, + "entry_time": "2022-05-18T00:00:00", + "exit_price": 90.96569574948703, + "exit_reason": "signal", + "exit_time": "2022-05-19T00:00:00", + "pnl": -37.28449195703615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07274851876403, + "entry_time": "2022-05-21T00:00:00", + "exit_price": 90.95622489428452, + "exit_reason": "signal", + "exit_time": "2022-05-22T00:00:00", + "pnl": -11.652362447952328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.72051069276088, + "entry_time": "2022-05-24T00:00:00", + "exit_price": 90.55232295814028, + "exit_reason": "signal", + "exit_time": "2022-05-25T00:00:00", + "pnl": -16.818773462060562, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.40473126616526, + "entry_time": "2022-05-27T00:00:00", + "exit_price": 90.65640141611814, + "exit_reason": "signal", + "exit_time": "2022-05-28T00:00:00", + "pnl": 25.16701499528972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56665701011867, + "entry_time": "2022-05-30T00:00:00", + "exit_price": 90.46095751045398, + "exit_reason": "signal", + "exit_time": "2022-05-31T00:00:00", + "pnl": -10.569949966469721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.76022002087706, + "entry_time": "2022-06-02T00:00:00", + "exit_price": 90.81381751472117, + "exit_reason": "signal", + "exit_time": "2022-06-03T00:00:00", + "pnl": 5.359749384409952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23375682446748, + "entry_time": "2022-06-05T00:00:00", + "exit_price": 91.01190578025698, + "exit_reason": "signal", + "exit_time": "2022-06-06T00:00:00", + "pnl": -22.18510442104889, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56046438309357, + "entry_time": "2022-06-08T00:00:00", + "exit_price": 90.6501420569037, + "exit_reason": "signal", + "exit_time": "2022-06-09T00:00:00", + "pnl": 8.96776738101289, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45985538510016, + "entry_time": "2022-06-11T00:00:00", + "exit_price": 90.32205823485288, + "exit_reason": "signal", + "exit_time": "2022-06-12T00:00:00", + "pnl": -13.77971502472792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.4213362857644, + "entry_time": "2022-06-14T00:00:00", + "exit_price": 90.3254460973393, + "exit_reason": "signal", + "exit_time": "2022-06-15T00:00:00", + "pnl": -9.589018842509176, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.36326200776878, + "entry_time": "2022-06-17T00:00:00", + "exit_price": 90.1350438366559, + "exit_reason": "signal", + "exit_time": "2022-06-18T00:00:00", + "pnl": -22.82181711128942, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.53738507774712, + "entry_time": "2022-06-20T00:00:00", + "exit_price": 90.43902960493799, + "exit_reason": "signal", + "exit_time": "2022-06-21T00:00:00", + "pnl": -9.835547280912579, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28282897059066, + "entry_time": "2022-06-23T00:00:00", + "exit_price": 90.42427634098117, + "exit_reason": "signal", + "exit_time": "2022-06-24T00:00:00", + "pnl": 14.144737039050597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.65923583486823, + "entry_time": "2022-06-26T00:00:00", + "exit_price": 90.60873415539405, + "exit_reason": "signal", + "exit_time": "2022-06-27T00:00:00", + "pnl": -5.050167947418231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.39024714619487, + "entry_time": "2022-06-29T00:00:00", + "exit_price": 90.66523349021156, + "exit_reason": "signal", + "exit_time": "2022-06-30T00:00:00", + "pnl": 27.498634401668824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82876323237488, + "entry_time": "2022-07-02T00:00:00", + "exit_price": 90.97466728886246, + "exit_reason": "signal", + "exit_time": "2022-07-03T00:00:00", + "pnl": 14.590405648757951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.89452843928451, + "entry_time": "2022-07-05T00:00:00", + "exit_price": 90.67041116090726, + "exit_reason": "signal", + "exit_time": "2022-07-06T00:00:00", + "pnl": -22.411727837725266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63870699300467, + "entry_time": "2022-07-08T00:00:00", + "exit_price": 90.60806866533521, + "exit_reason": "signal", + "exit_time": "2022-07-09T00:00:00", + "pnl": -3.0638327669457794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09022889967974, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 91.33132395141395, + "exit_reason": "signal", + "exit_time": "2022-07-12T00:00:00", + "pnl": 24.109505173419166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1422566167072, + "entry_time": "2022-07-14T00:00:00", + "exit_price": 91.02336448195068, + "exit_reason": "signal", + "exit_time": "2022-07-15T00:00:00", + "pnl": -11.889213475651559, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.85171345155105, + "entry_time": "2022-07-17T00:00:00", + "exit_price": 90.92826438920278, + "exit_reason": "signal", + "exit_time": "2022-07-18T00:00:00", + "pnl": 7.65509376517366, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9967936460588, + "entry_time": "2022-07-20T00:00:00", + "exit_price": 91.02558962193989, + "exit_reason": "signal", + "exit_time": "2022-07-21T00:00:00", + "pnl": 2.879597588107572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86654130293297, + "entry_time": "2022-07-23T00:00:00", + "exit_price": 91.1805076876075, + "exit_reason": "signal", + "exit_time": "2022-07-24T00:00:00", + "pnl": 31.39663846745316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20590970247865, + "entry_time": "2022-07-26T00:00:00", + "exit_price": 91.04093233048125, + "exit_reason": "signal", + "exit_time": "2022-07-27T00:00:00", + "pnl": -16.497737199741096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.94025278141096, + "entry_time": "2022-07-29T00:00:00", + "exit_price": 91.1695372755258, + "exit_reason": "signal", + "exit_time": "2022-07-30T00:00:00", + "pnl": 22.928449411483598, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55006804279205, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.74946747581956, + "exit_reason": "signal", + "exit_time": "2022-08-02T00:00:00", + "pnl": 19.939943302752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.08829699168929, + "entry_time": "2022-08-04T00:00:00", + "exit_price": 92.17204398025235, + "exit_reason": "signal", + "exit_time": "2022-08-05T00:00:00", + "pnl": 8.374698856305258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82928257766983, + "entry_time": "2022-08-07T00:00:00", + "exit_price": 91.80555288724541, + "exit_reason": "signal", + "exit_time": "2022-08-08T00:00:00", + "pnl": -2.3729690424424916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03756487304749, + "entry_time": "2022-08-10T00:00:00", + "exit_price": 91.92246232242579, + "exit_reason": "signal", + "exit_time": "2022-08-11T00:00:00", + "pnl": -11.510255062170472, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12455329081938, + "entry_time": "2022-08-13T00:00:00", + "exit_price": 92.03614640032846, + "exit_reason": "signal", + "exit_time": "2022-08-14T00:00:00", + "pnl": -8.840689049091452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43863634543025, + "entry_time": "2022-08-16T00:00:00", + "exit_price": 92.57880144701099, + "exit_reason": "signal", + "exit_time": "2022-08-17T00:00:00", + "pnl": 14.016510158073288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5662997648947, + "entry_time": "2022-08-19T00:00:00", + "exit_price": 92.63602712862732, + "exit_reason": "signal", + "exit_time": "2022-08-20T00:00:00", + "pnl": 6.972736373261796, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99359531127284, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.20326657631179, + "exit_reason": "signal", + "exit_time": "2022-08-23T00:00:00", + "pnl": 20.967126503895997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36371229951278, + "entry_time": "2022-08-25T00:00:00", + "exit_price": 93.15013947578183, + "exit_reason": "signal", + "exit_time": "2022-08-26T00:00:00", + "pnl": -21.357282373095586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39786147444195, + "entry_time": "2022-08-28T00:00:00", + "exit_price": 93.32525340472, + "exit_reason": "signal", + "exit_time": "2022-08-29T00:00:00", + "pnl": -7.260806972195496, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1699951830038, + "entry_time": "2022-08-31T00:00:00", + "exit_price": 92.94415449917722, + "exit_reason": "signal", + "exit_time": "2022-09-01T00:00:00", + "pnl": -22.584068382659098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06237685823791, + "entry_time": "2022-09-03T00:00:00", + "exit_price": 92.88599230986543, + "exit_reason": "signal", + "exit_time": "2022-09-04T00:00:00", + "pnl": -17.63845483724799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09341138541605, + "entry_time": "2022-09-06T00:00:00", + "exit_price": 93.29146577709628, + "exit_reason": "signal", + "exit_time": "2022-09-07T00:00:00", + "pnl": 19.80543916802344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.45209900958335, + "entry_time": "2022-09-09T00:00:00", + "exit_price": 93.38892182999521, + "exit_reason": "signal", + "exit_time": "2022-09-10T00:00:00", + "pnl": -6.317717958812864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42662435004, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 93.86711355565461, + "exit_reason": "signal", + "exit_time": "2022-09-13T00:00:00", + "pnl": 44.04892056146127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.43026737045712, + "entry_time": "2022-09-15T00:00:00", + "exit_price": 94.68555551249223, + "exit_reason": "signal", + "exit_time": "2022-09-16T00:00:00", + "pnl": 25.5288142035115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.34275603824345, + "entry_time": "2022-09-18T00:00:00", + "exit_price": 94.26115762602807, + "exit_reason": "signal", + "exit_time": "2022-09-19T00:00:00", + "pnl": -8.159841221537135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.81665975574816, + "entry_time": "2022-09-21T00:00:00", + "exit_price": 94.69084237577945, + "exit_reason": "signal", + "exit_time": "2022-09-22T00:00:00", + "pnl": -12.581737996872107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.80375023000443, + "entry_time": "2022-09-24T00:00:00", + "exit_price": 94.71118042427594, + "exit_reason": "signal", + "exit_time": "2022-09-25T00:00:00", + "pnl": -9.256980572848988, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.46412500503037, + "entry_time": "2022-09-27T00:00:00", + "exit_price": 94.6314533607136, + "exit_reason": "signal", + "exit_time": "2022-09-28T00:00:00", + "pnl": 16.732835568323935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6742741594175, + "entry_time": "2022-09-30T00:00:00", + "exit_price": 94.69072074935896, + "exit_reason": "signal", + "exit_time": "2022-10-01T00:00:00", + "pnl": 1.6446589941460843, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.12667461230008, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 94.99949417466048, + "exit_reason": "signal", + "exit_time": "2022-10-04T00:00:00", + "pnl": -12.71804376395994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92543412582965, + "entry_time": "2022-10-06T00:00:00", + "exit_price": 94.72977842157017, + "exit_reason": "signal", + "exit_time": "2022-10-07T00:00:00", + "pnl": -19.565570425947953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5701038761525, + "entry_time": "2022-10-09T00:00:00", + "exit_price": 94.59977663872266, + "exit_reason": "signal", + "exit_time": "2022-10-10T00:00:00", + "pnl": 2.967276257015328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2927331361965, + "entry_time": "2022-10-12T00:00:00", + "exit_price": 94.40263092608106, + "exit_reason": "signal", + "exit_time": "2022-10-13T00:00:00", + "pnl": 10.989778988454418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28632878234235, + "entry_time": "2022-10-15T00:00:00", + "exit_price": 94.53250654562353, + "exit_reason": "signal", + "exit_time": "2022-10-16T00:00:00", + "pnl": 24.617776328117543, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49417223286694, + "entry_time": "2022-10-18T00:00:00", + "exit_price": 94.21737477440588, + "exit_reason": "signal", + "exit_time": "2022-10-19T00:00:00", + "pnl": -27.679745846106016, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21700275153675, + "entry_time": "2022-10-21T00:00:00", + "exit_price": 94.24257812297434, + "exit_reason": "signal", + "exit_time": "2022-10-22T00:00:00", + "pnl": 2.557537143758964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33447437173405, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.36500808099656, + "exit_reason": "signal", + "exit_time": "2022-10-25T00:00:00", + "pnl": 3.0533709262508637, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62192540785213, + "entry_time": "2022-10-27T00:00:00", + "exit_price": 94.95467067184597, + "exit_reason": "signal", + "exit_time": "2022-10-28T00:00:00", + "pnl": 33.27452639938383, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32280422773096, + "entry_time": "2022-10-30T00:00:00", + "exit_price": 95.27797141913928, + "exit_reason": "signal", + "exit_time": "2022-10-31T00:00:00", + "pnl": -4.48328085916728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.85159096418194, + "entry_time": "2022-11-02T00:00:00", + "exit_price": 95.9332147424965, + "exit_reason": "signal", + "exit_time": "2022-11-03T00:00:00", + "pnl": 8.162377831456979, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.87171080557967, + "entry_time": "2022-11-05T00:00:00", + "exit_price": 95.72359330386428, + "exit_reason": "signal", + "exit_time": "2022-11-06T00:00:00", + "pnl": -14.811750171538733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38266657654837, + "entry_time": "2022-11-08T00:00:00", + "exit_price": 95.28429001378173, + "exit_reason": "signal", + "exit_time": "2022-11-09T00:00:00", + "pnl": -9.837656276666166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01211175536163, + "entry_time": "2022-11-11T00:00:00", + "exit_price": 94.84310882657518, + "exit_reason": "signal", + "exit_time": "2022-11-12T00:00:00", + "pnl": -16.900292878646724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.59049236660378, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.35514007446828, + "exit_reason": "signal", + "exit_time": "2022-11-15T00:00:00", + "pnl": -23.535229213550338, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9357580237877, + "entry_time": "2022-11-17T00:00:00", + "exit_price": 94.05072699188574, + "exit_reason": "signal", + "exit_time": "2022-11-18T00:00:00", + "pnl": 11.49689680980373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00889117962727, + "entry_time": "2022-11-20T00:00:00", + "exit_price": 94.18219892584725, + "exit_reason": "signal", + "exit_time": "2022-11-21T00:00:00", + "pnl": 17.33077462199799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96556912199465, + "entry_time": "2022-11-23T00:00:00", + "exit_price": 93.87607469195584, + "exit_reason": "signal", + "exit_time": "2022-11-24T00:00:00", + "pnl": -8.949443003881242, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60138099475903, + "entry_time": "2022-11-26T00:00:00", + "exit_price": 93.55643441032785, + "exit_reason": "signal", + "exit_time": "2022-11-27T00:00:00", + "pnl": -4.49465844311635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88066522817982, + "entry_time": "2022-11-29T00:00:00", + "exit_price": 93.67510822228188, + "exit_reason": "signal", + "exit_time": "2022-11-30T00:00:00", + "pnl": -20.55570058979538, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69837663925773, + "entry_time": "2022-12-02T00:00:00", + "exit_price": 93.91860336977558, + "exit_reason": "signal", + "exit_time": "2022-12-03T00:00:00", + "pnl": 22.022673051784295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.70107216756422, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.66971331829183, + "exit_reason": "signal", + "exit_time": "2022-12-06T00:00:00", + "pnl": -3.135884927238294, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87708149049162, + "entry_time": "2022-12-08T00:00:00", + "exit_price": 93.72163687944706, + "exit_reason": "signal", + "exit_time": "2022-12-09T00:00:00", + "pnl": -15.544461104454967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.94898877051006, + "entry_time": "2022-12-11T00:00:00", + "exit_price": 93.95474043698636, + "exit_reason": "signal", + "exit_time": "2022-12-12T00:00:00", + "pnl": 0.5751666476298851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6415881902333, + "entry_time": "2022-12-14T00:00:00", + "exit_price": 93.34129447656329, + "exit_reason": "signal", + "exit_time": "2022-12-15T00:00:00", + "pnl": -30.02937136700166, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9434543592522, + "entry_time": "2022-12-17T00:00:00", + "exit_price": 92.60307524718807, + "exit_reason": "signal", + "exit_time": "2022-12-18T00:00:00", + "pnl": -34.0379112064129, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.18983136258927, + "entry_time": "2022-12-20T00:00:00", + "exit_price": 92.07720168711411, + "exit_reason": "signal", + "exit_time": "2022-12-21T00:00:00", + "pnl": -11.262967547514563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00591795170635, + "entry_time": "2022-12-23T00:00:00", + "exit_price": 91.73390898252362, + "exit_reason": "signal", + "exit_time": "2022-12-24T00:00:00", + "pnl": -27.200896918275248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87915537734213, + "entry_time": "2022-12-26T00:00:00", + "exit_price": 92.05356230153482, + "exit_reason": "signal", + "exit_time": "2022-12-27T00:00:00", + "pnl": 17.440692419269908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.19249105693204, + "entry_time": "2022-12-29T00:00:00", + "exit_price": 92.35715717263174, + "exit_reason": "signal", + "exit_time": "2022-12-30T00:00:00", + "pnl": 16.466611569969245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92376356586935, + "entry_time": "2023-01-01T00:00:00", + "exit_price": 92.8642597181964, + "exit_reason": "signal", + "exit_time": "2023-01-02T00:00:00", + "pnl": -5.950384767296782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08761417167571, + "entry_time": "2023-01-04T00:00:00", + "exit_price": 93.3787010770275, + "exit_reason": "signal", + "exit_time": "2023-01-05T00:00:00", + "pnl": 29.108690535180358, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22887351223902, + "entry_time": "2023-01-07T00:00:00", + "exit_price": 93.18791972112416, + "exit_reason": "signal", + "exit_time": "2023-01-08T00:00:00", + "pnl": -4.0953791114861815, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71839956451682, + "entry_time": "2023-01-10T00:00:00", + "exit_price": 92.72871333258459, + "exit_reason": "signal", + "exit_time": "2023-01-11T00:00:00", + "pnl": 1.031376806777189, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71285525012034, + "entry_time": "2023-01-13T00:00:00", + "exit_price": 92.95484908903208, + "exit_reason": "signal", + "exit_time": "2023-01-14T00:00:00", + "pnl": 24.199383891174875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09252551101909, + "entry_time": "2023-01-16T00:00:00", + "exit_price": 93.19565426763862, + "exit_reason": "signal", + "exit_time": "2023-01-17T00:00:00", + "pnl": 10.312875661953512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34851063541004, + "entry_time": "2023-01-19T00:00:00", + "exit_price": 93.36918149511725, + "exit_reason": "signal", + "exit_time": "2023-01-20T00:00:00", + "pnl": 2.0670859707206546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.29871325433136, + "entry_time": "2023-01-22T00:00:00", + "exit_price": 93.43191348926673, + "exit_reason": "signal", + "exit_time": "2023-01-23T00:00:00", + "pnl": 13.32002349353752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54163438380152, + "entry_time": "2023-01-25T00:00:00", + "exit_price": 93.70996022231523, + "exit_reason": "signal", + "exit_time": "2023-01-26T00:00:00", + "pnl": 16.832583851371965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44351635290319, + "entry_time": "2023-01-28T00:00:00", + "exit_price": 93.3607156455027, + "exit_reason": "signal", + "exit_time": "2023-01-29T00:00:00", + "pnl": -8.280070740049268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25194927165909, + "entry_time": "2023-01-31T00:00:00", + "exit_price": 93.09482587993352, + "exit_reason": "signal", + "exit_time": "2023-02-01T00:00:00", + "pnl": -15.712339172556312, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05964578316673, + "entry_time": "2023-02-03T00:00:00", + "exit_price": 93.1247824238807, + "exit_reason": "signal", + "exit_time": "2023-02-04T00:00:00", + "pnl": 6.513664071397216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60195304694001, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.5077083162264, + "exit_reason": "signal", + "exit_time": "2023-02-07T00:00:00", + "pnl": -9.424473071361717, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32915625849455, + "entry_time": "2023-02-09T00:00:00", + "exit_price": 93.41904859018952, + "exit_reason": "signal", + "exit_time": "2023-02-10T00:00:00", + "pnl": 8.98923316949731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86240170807343, + "entry_time": "2023-02-12T00:00:00", + "exit_price": 93.74311994285968, + "exit_reason": "signal", + "exit_time": "2023-02-13T00:00:00", + "pnl": -11.928176521374553, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92758592270172, + "entry_time": "2023-02-15T00:00:00", + "exit_price": 93.91004727072426, + "exit_reason": "signal", + "exit_time": "2023-02-16T00:00:00", + "pnl": -1.7538651977465634, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.90746519420465, + "entry_time": "2023-02-18T00:00:00", + "exit_price": 94.16764239198312, + "exit_reason": "signal", + "exit_time": "2023-02-19T00:00:00", + "pnl": 26.01771977784665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.44892482562022, + "entry_time": "2023-02-21T00:00:00", + "exit_price": 94.29820349772235, + "exit_reason": "signal", + "exit_time": "2023-02-22T00:00:00", + "pnl": -15.072132789788157, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29660996193417, + "entry_time": "2023-02-24T00:00:00", + "exit_price": 94.34630077913107, + "exit_reason": "signal", + "exit_time": "2023-02-25T00:00:00", + "pnl": 4.9690817196897115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28533190136021, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.32163037675376, + "exit_reason": "signal", + "exit_time": "2023-02-28T00:00:00", + "pnl": 3.6298475393559784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20619082469412, + "entry_time": "2023-03-02T00:00:00", + "exit_price": 93.94806731557186, + "exit_reason": "signal", + "exit_time": "2023-03-03T00:00:00", + "pnl": -25.812350912225156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.5296456958934, + "entry_time": "2023-03-05T00:00:00", + "exit_price": 93.2046797163239, + "exit_reason": "signal", + "exit_time": "2023-03-06T00:00:00", + "pnl": -32.4965979569497, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32570812965447, + "entry_time": "2023-03-08T00:00:00", + "exit_price": 93.27835226241817, + "exit_reason": "signal", + "exit_time": "2023-03-09T00:00:00", + "pnl": -4.73558672362924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18052001757422, + "entry_time": "2023-03-11T00:00:00", + "exit_price": 93.21374473155299, + "exit_reason": "signal", + "exit_time": "2023-03-12T00:00:00", + "pnl": 3.322471397877962, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13943605219035, + "entry_time": "2023-03-14T00:00:00", + "exit_price": 93.26046795573633, + "exit_reason": "signal", + "exit_time": "2023-03-15T00:00:00", + "pnl": 12.103190354599064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21960702536101, + "entry_time": "2023-03-17T00:00:00", + "exit_price": 92.64774686400108, + "exit_reason": "signal", + "exit_time": "2023-03-18T00:00:00", + "pnl": -57.18601613599458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31556350692, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.46149005259649, + "exit_reason": "signal", + "exit_time": "2023-03-21T00:00:00", + "pnl": 14.592654567648424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52377288657563, + "entry_time": "2023-03-23T00:00:00", + "exit_price": 92.23839203319807, + "exit_reason": "signal", + "exit_time": "2023-03-24T00:00:00", + "pnl": -28.538085337755547, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6963758650249, + "entry_time": "2023-03-26T00:00:00", + "exit_price": 92.70207115016164, + "exit_reason": "signal", + "exit_time": "2023-03-27T00:00:00", + "pnl": 0.5695285136735038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1906639429263, + "entry_time": "2023-03-29T00:00:00", + "exit_price": 93.35726613372299, + "exit_reason": "signal", + "exit_time": "2023-03-30T00:00:00", + "pnl": 16.660219079667513, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1634420410312, + "entry_time": "2023-04-01T00:00:00", + "exit_price": 93.2066382813918, + "exit_reason": "signal", + "exit_time": "2023-04-02T00:00:00", + "pnl": 4.319624036061214, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0471045722787, + "entry_time": "2023-04-04T00:00:00", + "exit_price": 92.82199720210754, + "exit_reason": "signal", + "exit_time": "2023-04-05T00:00:00", + "pnl": -22.51073701711539, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8989666578373, + "entry_time": "2023-04-07T00:00:00", + "exit_price": 92.77857374465485, + "exit_reason": "signal", + "exit_time": "2023-04-08T00:00:00", + "pnl": -12.039291318245887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.70919453056075, + "entry_time": "2023-04-10T00:00:00", + "exit_price": 92.74465000028516, + "exit_reason": "signal", + "exit_time": "2023-04-11T00:00:00", + "pnl": 3.5455469724420254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60934516564298, + "entry_time": "2023-04-13T00:00:00", + "exit_price": 92.96618622577306, + "exit_reason": "signal", + "exit_time": "2023-04-14T00:00:00", + "pnl": 35.684106013008204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78501792806425, + "entry_time": "2023-04-16T00:00:00", + "exit_price": 92.76326607151933, + "exit_reason": "signal", + "exit_time": "2023-04-17T00:00:00", + "pnl": -2.175185654492452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62556378625803, + "entry_time": "2023-04-19T00:00:00", + "exit_price": 92.65556548612001, + "exit_reason": "signal", + "exit_time": "2023-04-20T00:00:00", + "pnl": 3.000169986198671, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68684981308908, + "entry_time": "2023-04-22T00:00:00", + "exit_price": 92.58597625405771, + "exit_reason": "signal", + "exit_time": "2023-04-23T00:00:00", + "pnl": -10.087355903136995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86536967969084, + "entry_time": "2023-04-25T00:00:00", + "exit_price": 92.75020367672924, + "exit_reason": "signal", + "exit_time": "2023-04-26T00:00:00", + "pnl": -11.516600296161414, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75062990936559, + "entry_time": "2023-04-28T00:00:00", + "exit_price": 92.98349381034318, + "exit_reason": "signal", + "exit_time": "2023-04-29T00:00:00", + "pnl": 23.286390097759067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04847278769076, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 93.06193871613516, + "exit_reason": "signal", + "exit_time": "2023-05-02T00:00:00", + "pnl": 1.346592844440238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.60529611931622, + "entry_time": "2023-05-04T00:00:00", + "exit_price": 92.60807864200518, + "exit_reason": "signal", + "exit_time": "2023-05-05T00:00:00", + "pnl": 0.27825226889581245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90198815097345, + "entry_time": "2023-05-07T00:00:00", + "exit_price": 92.84425841280351, + "exit_reason": "signal", + "exit_time": "2023-05-08T00:00:00", + "pnl": -5.772973816992817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66689924421028, + "entry_time": "2023-05-10T00:00:00", + "exit_price": 92.6348345250126, + "exit_reason": "signal", + "exit_time": "2023-05-11T00:00:00", + "pnl": -3.206471919769683, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74311085652141, + "entry_time": "2023-05-13T00:00:00", + "exit_price": 92.87596365908365, + "exit_reason": "signal", + "exit_time": "2023-05-14T00:00:00", + "pnl": 13.285280256222904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15467982049428, + "entry_time": "2023-05-16T00:00:00", + "exit_price": 93.06917346679761, + "exit_reason": "signal", + "exit_time": "2023-05-17T00:00:00", + "pnl": -8.550635369667361, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16088604193162, + "entry_time": "2023-05-19T00:00:00", + "exit_price": 93.1767131466551, + "exit_reason": "signal", + "exit_time": "2023-05-20T00:00:00", + "pnl": 1.5827104723484808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59084973064017, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.3728256379574, + "exit_reason": "signal", + "exit_time": "2023-05-23T00:00:00", + "pnl": -21.80240926827537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.83907971020484, + "entry_time": "2023-05-25T00:00:00", + "exit_price": 94.05336598759212, + "exit_reason": "signal", + "exit_time": "2023-05-26T00:00:00", + "pnl": 21.4286277387273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15556945611712, + "entry_time": "2023-05-28T00:00:00", + "exit_price": 94.11170249260897, + "exit_reason": "signal", + "exit_time": "2023-05-29T00:00:00", + "pnl": -4.386696350815328, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26806948858284, + "entry_time": "2023-05-31T00:00:00", + "exit_price": 94.19864576006458, + "exit_reason": "signal", + "exit_time": "2023-06-01T00:00:00", + "pnl": -6.9423728518268035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02469106007196, + "entry_time": "2023-06-03T00:00:00", + "exit_price": 94.37555658552148, + "exit_reason": "signal", + "exit_time": "2023-06-04T00:00:00", + "pnl": 35.0865525449517, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.4719110379968, + "entry_time": "2023-06-06T00:00:00", + "exit_price": 94.46329135212792, + "exit_reason": "signal", + "exit_time": "2023-06-07T00:00:00", + "pnl": -0.8619685868870874, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.72605970139526, + "entry_time": "2023-06-09T00:00:00", + "exit_price": 94.42143976779836, + "exit_reason": "signal", + "exit_time": "2023-06-10T00:00:00", + "pnl": -30.461993359689586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5510290269881, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.42138738037778, + "exit_reason": "signal", + "exit_time": "2023-06-13T00:00:00", + "pnl": -12.964164661032555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.49725923626676, + "entry_time": "2023-06-15T00:00:00", + "exit_price": 94.83017838441384, + "exit_reason": "signal", + "exit_time": "2023-06-16T00:00:00", + "pnl": 33.291914814708434, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.96394971087318, + "entry_time": "2023-06-18T00:00:00", + "exit_price": 94.80946954515628, + "exit_reason": "signal", + "exit_time": "2023-06-19T00:00:00", + "pnl": -15.44801657169046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.05895494780962, + "entry_time": "2023-06-21T00:00:00", + "exit_price": 94.7764741456602, + "exit_reason": "signal", + "exit_time": "2023-06-22T00:00:00", + "pnl": -28.248080214942092, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.82916340306784, + "entry_time": "2023-06-24T00:00:00", + "exit_price": 94.49615933800648, + "exit_reason": "signal", + "exit_time": "2023-06-25T00:00:00", + "pnl": -33.300406506135914, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53903204926397, + "entry_time": "2023-06-27T00:00:00", + "exit_price": 94.2199238563033, + "exit_reason": "signal", + "exit_time": "2023-06-28T00:00:00", + "pnl": -31.91081929606662, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.15553425915469, + "entry_time": "2023-06-30T00:00:00", + "exit_price": 94.3233546324033, + "exit_reason": "signal", + "exit_time": "2023-07-01T00:00:00", + "pnl": 16.78203732486145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29143609072966, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.34909878462929, + "exit_reason": "signal", + "exit_time": "2023-07-04T00:00:00", + "pnl": 5.766269389963782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79549173605427, + "entry_time": "2023-07-06T00:00:00", + "exit_price": 94.86012460829116, + "exit_reason": "signal", + "exit_time": "2023-07-07T00:00:00", + "pnl": 6.463287223687075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62257045149929, + "entry_time": "2023-07-09T00:00:00", + "exit_price": 94.36740770267758, + "exit_reason": "signal", + "exit_time": "2023-07-10T00:00:00", + "pnl": -25.516274882171274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1123342756572, + "entry_time": "2023-07-12T00:00:00", + "exit_price": 94.28815691102787, + "exit_reason": "signal", + "exit_time": "2023-07-13T00:00:00", + "pnl": 17.582263537065955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89234388227695, + "entry_time": "2023-07-15T00:00:00", + "exit_price": 93.64456440149245, + "exit_reason": "signal", + "exit_time": "2023-07-16T00:00:00", + "pnl": -24.77794807845021, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.62943347351336, + "entry_time": "2023-07-18T00:00:00", + "exit_price": 93.64788638508941, + "exit_reason": "signal", + "exit_time": "2023-07-19T00:00:00", + "pnl": 1.8452911576041515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1774162868962, + "entry_time": "2023-07-21T00:00:00", + "exit_price": 94.00402666791075, + "exit_reason": "signal", + "exit_time": "2023-07-22T00:00:00", + "pnl": -17.338961898545676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.04453321057154, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.96838361247781, + "exit_reason": "signal", + "exit_time": "2023-07-25T00:00:00", + "pnl": -7.614959809372522, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88321586599363, + "entry_time": "2023-07-27T00:00:00", + "exit_price": 93.90884833929827, + "exit_reason": "signal", + "exit_time": "2023-07-28T00:00:00", + "pnl": 2.5632473304649466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7179718780841, + "entry_time": "2023-07-30T00:00:00", + "exit_price": 93.74821494678119, + "exit_reason": "signal", + "exit_time": "2023-07-31T00:00:00", + "pnl": 3.0243068697091076, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9038655497103, + "entry_time": "2023-08-02T00:00:00", + "exit_price": 93.83750554707963, + "exit_reason": "signal", + "exit_time": "2023-08-03T00:00:00", + "pnl": -6.6360002630663075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88584036004717, + "entry_time": "2023-08-05T00:00:00", + "exit_price": 93.9446210717662, + "exit_reason": "signal", + "exit_time": "2023-08-06T00:00:00", + "pnl": 5.878071171904594, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.10339943212905, + "entry_time": "2023-08-08T00:00:00", + "exit_price": 94.0848941093554, + "exit_reason": "signal", + "exit_time": "2023-08-09T00:00:00", + "pnl": -1.850532277363527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.14949796034026, + "entry_time": "2023-08-11T00:00:00", + "exit_price": 93.8874166822761, + "exit_reason": "signal", + "exit_time": "2023-08-12T00:00:00", + "pnl": -26.208127806416087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75795965886634, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 93.82124488293752, + "exit_reason": "signal", + "exit_time": "2023-08-15T00:00:00", + "pnl": 6.328522407116907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.65346951457661, + "entry_time": "2023-08-17T00:00:00", + "exit_price": 93.61396660096294, + "exit_reason": "signal", + "exit_time": "2023-08-18T00:00:00", + "pnl": -3.950291361366908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54800539421142, + "entry_time": "2023-08-20T00:00:00", + "exit_price": 93.46513172439276, + "exit_reason": "signal", + "exit_time": "2023-08-21T00:00:00", + "pnl": -8.287366981865489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04018712803396, + "entry_time": "2023-08-23T00:00:00", + "exit_price": 93.2845186523261, + "exit_reason": "signal", + "exit_time": "2023-08-24T00:00:00", + "pnl": 24.433152429213806, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80052936345987, + "entry_time": "2023-08-26T00:00:00", + "exit_price": 93.65349927893294, + "exit_reason": "signal", + "exit_time": "2023-08-27T00:00:00", + "pnl": -14.703008452692302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93158855841354, + "entry_time": "2023-08-29T00:00:00", + "exit_price": 93.79425107834362, + "exit_reason": "signal", + "exit_time": "2023-08-30T00:00:00", + "pnl": -13.733748006990936, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55284494377143, + "entry_time": "2023-09-01T00:00:00", + "exit_price": 93.33529354683158, + "exit_reason": "signal", + "exit_time": "2023-09-02T00:00:00", + "pnl": -21.755139693985257, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67881964988702, + "entry_time": "2023-09-04T00:00:00", + "exit_price": 93.76309874382866, + "exit_reason": "signal", + "exit_time": "2023-09-05T00:00:00", + "pnl": 8.427909394165908, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.06380422690371, + "entry_time": "2023-09-07T00:00:00", + "exit_price": 94.34837478850592, + "exit_reason": "signal", + "exit_time": "2023-09-08T00:00:00", + "pnl": 28.45705616021951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.28272356925105, + "entry_time": "2023-09-10T00:00:00", + "exit_price": 94.08986442511201, + "exit_reason": "signal", + "exit_time": "2023-09-11T00:00:00", + "pnl": -19.28591441390381, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.19668777653186, + "entry_time": "2023-09-13T00:00:00", + "exit_price": 93.9155347262711, + "exit_reason": "signal", + "exit_time": "2023-09-14T00:00:00", + "pnl": -28.115305026074566, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86963033561574, + "entry_time": "2023-09-16T00:00:00", + "exit_price": 94.02605497205086, + "exit_reason": "signal", + "exit_time": "2023-09-17T00:00:00", + "pnl": 15.64246364351311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07735953777274, + "entry_time": "2023-09-19T00:00:00", + "exit_price": 93.92691564488518, + "exit_reason": "signal", + "exit_time": "2023-09-20T00:00:00", + "pnl": -15.044389288754246, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.63814938665311, + "entry_time": "2023-09-22T00:00:00", + "exit_price": 93.6176086632684, + "exit_reason": "signal", + "exit_time": "2023-09-23T00:00:00", + "pnl": -2.0540723384710873, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71204578933798, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.41015509320589, + "exit_reason": "signal", + "exit_time": "2023-09-26T00:00:00", + "pnl": -30.18906961320863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42767992948878, + "entry_time": "2023-09-28T00:00:00", + "exit_price": 93.23852235526199, + "exit_reason": "signal", + "exit_time": "2023-09-29T00:00:00", + "pnl": -18.915757422677416, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49442961672796, + "entry_time": "2023-10-01T00:00:00", + "exit_price": 93.43422929731483, + "exit_reason": "signal", + "exit_time": "2023-10-02T00:00:00", + "pnl": -6.020031941312482, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.28736530415493, + "entry_time": "2023-10-04T00:00:00", + "exit_price": 93.12218377264868, + "exit_reason": "signal", + "exit_time": "2023-10-05T00:00:00", + "pnl": -16.51815315062595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10919349920911, + "entry_time": "2023-10-07T00:00:00", + "exit_price": 92.97579394436632, + "exit_reason": "signal", + "exit_time": "2023-10-08T00:00:00", + "pnl": -13.339955484278107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87630575654731, + "entry_time": "2023-10-10T00:00:00", + "exit_price": 92.64709318534976, + "exit_reason": "signal", + "exit_time": "2023-10-11T00:00:00", + "pnl": -22.921257119754955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49382854321888, + "entry_time": "2023-10-13T00:00:00", + "exit_price": 92.15699292788067, + "exit_reason": "signal", + "exit_time": "2023-10-14T00:00:00", + "pnl": -33.683561533820466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04266303105983, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.9313781112256, + "exit_reason": "signal", + "exit_time": "2023-10-17T00:00:00", + "pnl": -11.128491983423373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.69530603069572, + "entry_time": "2023-10-19T00:00:00", + "exit_price": 91.82075180753827, + "exit_reason": "signal", + "exit_time": "2023-10-20T00:00:00", + "pnl": 12.544577684255273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.00003866180036, + "entry_time": "2023-10-22T00:00:00", + "exit_price": 91.769068469798, + "exit_reason": "signal", + "exit_time": "2023-10-23T00:00:00", + "pnl": -23.09701920023508, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62148930928706, + "entry_time": "2023-10-25T00:00:00", + "exit_price": 92.0232146586156, + "exit_reason": "signal", + "exit_time": "2023-10-26T00:00:00", + "pnl": 40.17253493285352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05026787864644, + "entry_time": "2023-10-28T00:00:00", + "exit_price": 91.7648966725291, + "exit_reason": "signal", + "exit_time": "2023-10-29T00:00:00", + "pnl": -28.53712061173428, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45047976504434, + "entry_time": "2023-10-31T00:00:00", + "exit_price": 91.57906184617835, + "exit_reason": "signal", + "exit_time": "2023-11-01T00:00:00", + "pnl": 12.858208113402725, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73227416508321, + "entry_time": "2023-11-03T00:00:00", + "exit_price": 91.39276167792192, + "exit_reason": "signal", + "exit_time": "2023-11-04T00:00:00", + "pnl": -33.95124871613007, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43027834183452, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.72614964359053, + "exit_reason": "signal", + "exit_time": "2023-11-07T00:00:00", + "pnl": 29.58713017559967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22140030401876, + "entry_time": "2023-11-09T00:00:00", + "exit_price": 92.40388767907393, + "exit_reason": "signal", + "exit_time": "2023-11-10T00:00:00", + "pnl": 18.248737505517056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6481057355818, + "entry_time": "2023-11-12T00:00:00", + "exit_price": 92.68848188004498, + "exit_reason": "signal", + "exit_time": "2023-11-13T00:00:00", + "pnl": 4.037614446318912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71473698288804, + "entry_time": "2023-11-15T00:00:00", + "exit_price": 92.70268409440689, + "exit_reason": "signal", + "exit_time": "2023-11-16T00:00:00", + "pnl": -1.2052888481157424, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.43854075921617, + "entry_time": "2023-11-18T00:00:00", + "exit_price": 92.44140071332018, + "exit_reason": "signal", + "exit_time": "2023-11-19T00:00:00", + "pnl": 0.28599541040057375, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74726961853332, + "entry_time": "2023-11-21T00:00:00", + "exit_price": 92.8365056762946, + "exit_reason": "signal", + "exit_time": "2023-11-22T00:00:00", + "pnl": 8.92360577612817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88893089201021, + "entry_time": "2023-11-24T00:00:00", + "exit_price": 93.26317095880032, + "exit_reason": "signal", + "exit_time": "2023-11-25T00:00:00", + "pnl": 37.424006679009835, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37686063355893, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 93.01130398358468, + "exit_reason": "signal", + "exit_time": "2023-11-28T00:00:00", + "pnl": -36.55566499742599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92441725059159, + "entry_time": "2023-11-30T00:00:00", + "exit_price": 92.89449208176279, + "exit_reason": "signal", + "exit_time": "2023-12-01T00:00:00", + "pnl": -2.9925168828794995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93827683979755, + "entry_time": "2023-12-03T00:00:00", + "exit_price": 93.6532995649937, + "exit_reason": "signal", + "exit_time": "2023-12-04T00:00:00", + "pnl": -28.49772748038413, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.4263959037515, + "entry_time": "2023-12-06T00:00:00", + "exit_price": 93.75213347979019, + "exit_reason": "signal", + "exit_time": "2023-12-07T00:00:00", + "pnl": 32.573757603870035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.0270700566813, + "entry_time": "2023-12-09T00:00:00", + "exit_price": 93.76146992741955, + "exit_reason": "signal", + "exit_time": "2023-12-10T00:00:00", + "pnl": -26.56001292617475, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10225140410179, + "entry_time": "2023-12-12T00:00:00", + "exit_price": 92.81690399898379, + "exit_reason": "signal", + "exit_time": "2023-12-13T00:00:00", + "pnl": -28.5347405117991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0438108934807, + "entry_time": "2023-12-15T00:00:00", + "exit_price": 92.80207795946215, + "exit_reason": "signal", + "exit_time": "2023-12-16T00:00:00", + "pnl": -24.173293401854608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12592905184013, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 93.15713134695487, + "exit_reason": "signal", + "exit_time": "2023-12-19T00:00:00", + "pnl": 3.120229511472644, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21575520670791, + "entry_time": "2023-12-21T00:00:00", + "exit_price": 93.31507102860735, + "exit_reason": "signal", + "exit_time": "2023-12-22T00:00:00", + "pnl": 9.931582189943583, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2320901589937, + "entry_time": "2023-12-24T00:00:00", + "exit_price": 93.15393731859652, + "exit_reason": "signal", + "exit_time": "2023-12-25T00:00:00", + "pnl": -7.815284039717881, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07037591089997, + "entry_time": "2023-12-27T00:00:00", + "exit_price": 93.3198194947649, + "exit_reason": "signal", + "exit_time": "2023-12-28T00:00:00", + "pnl": 24.94435838649406, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69216760463115, + "entry_time": "2023-12-30T00:00:00", + "exit_price": 94.07388089953058, + "exit_reason": "signal", + "exit_time": "2023-12-31T00:00:00", + "pnl": 38.171329489941854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.64149353573187, + "entry_time": "2024-01-02T00:00:00", + "exit_price": 94.71271228263036, + "exit_reason": "signal", + "exit_time": "2024-01-03T00:00:00", + "pnl": 7.121874689850301, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.11471503048601, + "entry_time": "2024-01-05T00:00:00", + "exit_price": 94.98751858071931, + "exit_reason": "signal", + "exit_time": "2024-01-06T00:00:00", + "pnl": -12.71964497666886, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7067835294734, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.74844014533139, + "exit_reason": "signal", + "exit_time": "2024-01-09T00:00:00", + "pnl": 4.165661585799171, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.02489656616589, + "entry_time": "2024-01-11T00:00:00", + "exit_price": 94.98294992874101, + "exit_reason": "signal", + "exit_time": "2024-01-12T00:00:00", + "pnl": -4.194663742489865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.71598064705562, + "entry_time": "2024-01-14T00:00:00", + "exit_price": 94.90144093756582, + "exit_reason": "signal", + "exit_time": "2024-01-15T00:00:00", + "pnl": 18.546029051020014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88369269337046, + "entry_time": "2024-01-17T00:00:00", + "exit_price": 94.99127786199946, + "exit_reason": "signal", + "exit_time": "2024-01-18T00:00:00", + "pnl": 10.758516862899342, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.25279588129149, + "entry_time": "2024-01-20T00:00:00", + "exit_price": 94.98339215080473, + "exit_reason": "signal", + "exit_time": "2024-01-21T00:00:00", + "pnl": -26.94037304867561, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84625570624047, + "entry_time": "2024-01-23T00:00:00", + "exit_price": 94.50594333071952, + "exit_reason": "signal", + "exit_time": "2024-01-24T00:00:00", + "pnl": -34.03123755209526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50759103681195, + "entry_time": "2024-01-26T00:00:00", + "exit_price": 94.60423833142119, + "exit_reason": "signal", + "exit_time": "2024-01-27T00:00:00", + "pnl": 9.664729460924718, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.58324904624199, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.89219195707862, + "exit_reason": "signal", + "exit_time": "2024-01-30T00:00:00", + "pnl": 30.89429108366494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65911048978346, + "entry_time": "2024-02-01T00:00:00", + "exit_price": 94.7149396953146, + "exit_reason": "signal", + "exit_time": "2024-02-02T00:00:00", + "pnl": 5.5829205531154, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.87432845164757, + "entry_time": "2024-02-04T00:00:00", + "exit_price": 94.68840177129488, + "exit_reason": "signal", + "exit_time": "2024-02-05T00:00:00", + "pnl": -18.592668035269526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.93449198055023, + "entry_time": "2024-02-07T00:00:00", + "exit_price": 95.32948554144308, + "exit_reason": "signal", + "exit_time": "2024-02-08T00:00:00", + "pnl": 39.49935608928536, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.32849848634218, + "entry_time": "2024-02-10T00:00:00", + "exit_price": 95.22062659109166, + "exit_reason": "signal", + "exit_time": "2024-02-11T00:00:00", + "pnl": -10.787189525051872, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95224360650606, + "entry_time": "2024-02-13T00:00:00", + "exit_price": 95.11404601693097, + "exit_reason": "signal", + "exit_time": "2024-02-14T00:00:00", + "pnl": 16.180241042491616, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79369852289173, + "entry_time": "2024-02-16T00:00:00", + "exit_price": 94.57121837540416, + "exit_reason": "signal", + "exit_time": "2024-02-17T00:00:00", + "pnl": -22.248014748758578, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70539792020504, + "entry_time": "2024-02-19T00:00:00", + "exit_price": 94.81536726931864, + "exit_reason": "signal", + "exit_time": "2024-02-20T00:00:00", + "pnl": 10.996934911359858, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.66590107949516, + "entry_time": "2024-02-22T00:00:00", + "exit_price": 94.54759559550845, + "exit_reason": "signal", + "exit_time": "2024-02-23T00:00:00", + "pnl": -11.830548398671453, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11939973938362, + "entry_time": "2024-02-25T00:00:00", + "exit_price": 94.21880305870137, + "exit_reason": "signal", + "exit_time": "2024-02-26T00:00:00", + "pnl": 9.940331931773471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79422563292844, + "entry_time": "2024-02-28T00:00:00", + "exit_price": 93.71312689925841, + "exit_reason": "signal", + "exit_time": "2024-02-29T00:00:00", + "pnl": -8.109873367004184, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46426831854224, + "entry_time": "2024-03-02T00:00:00", + "exit_price": 93.10239283352094, + "exit_reason": "signal", + "exit_time": "2024-03-03T00:00:00", + "pnl": -36.187548502130085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.37028780606191, + "entry_time": "2024-03-05T00:00:00", + "exit_price": 93.13498012432488, + "exit_reason": "signal", + "exit_time": "2024-03-06T00:00:00", + "pnl": -23.53076817370311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.38863630293943, + "entry_time": "2024-03-08T00:00:00", + "exit_price": 93.41150008980253, + "exit_reason": "signal", + "exit_time": "2024-03-09T00:00:00", + "pnl": 2.2863786863108544, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.14488289984781, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.17802365337732, + "exit_reason": "signal", + "exit_time": "2024-03-12T00:00:00", + "pnl": 3.314075352951477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27104619189048, + "entry_time": "2024-03-14T00:00:00", + "exit_price": 92.98787909982833, + "exit_reason": "signal", + "exit_time": "2024-03-15T00:00:00", + "pnl": -28.316709206214, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11321145433928, + "entry_time": "2024-03-17T00:00:00", + "exit_price": 93.23295576374296, + "exit_reason": "signal", + "exit_time": "2024-03-18T00:00:00", + "pnl": 11.97443094036862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.85697546574279, + "entry_time": "2024-03-20T00:00:00", + "exit_price": 92.7517321560528, + "exit_reason": "signal", + "exit_time": "2024-03-21T00:00:00", + "pnl": -10.524330968999493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50551757491745, + "entry_time": "2024-03-23T00:00:00", + "exit_price": 92.62546167858358, + "exit_reason": "signal", + "exit_time": "2024-03-24T00:00:00", + "pnl": 11.99441036661301, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86332633060258, + "entry_time": "2024-03-26T00:00:00", + "exit_price": 92.76299264885851, + "exit_reason": "signal", + "exit_time": "2024-03-27T00:00:00", + "pnl": -10.03336817440686, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78913797285577, + "entry_time": "2024-03-29T00:00:00", + "exit_price": 93.00024160373006, + "exit_reason": "signal", + "exit_time": "2024-03-30T00:00:00", + "pnl": 21.110363087429505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9168412948554, + "entry_time": "2024-04-01T00:00:00", + "exit_price": 92.7772709282975, + "exit_reason": "signal", + "exit_time": "2024-04-02T00:00:00", + "pnl": -13.957036655790944, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99344762670124, + "entry_time": "2024-04-04T00:00:00", + "exit_price": 92.45458704231757, + "exit_reason": "signal", + "exit_time": "2024-04-05T00:00:00", + "pnl": -53.8860584383674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.40001356367094, + "entry_time": "2024-04-07T00:00:00", + "exit_price": 91.97082046191717, + "exit_reason": "signal", + "exit_time": "2024-04-08T00:00:00", + "pnl": -42.91931017537718, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01206001173375, + "entry_time": "2024-04-10T00:00:00", + "exit_price": 92.08005345968613, + "exit_reason": "signal", + "exit_time": "2024-04-11T00:00:00", + "pnl": 6.79934479523763, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.22217203577799, + "entry_time": "2024-04-13T00:00:00", + "exit_price": 92.2425856744218, + "exit_reason": "signal", + "exit_time": "2024-04-14T00:00:00", + "pnl": 2.0413638643822196, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.46073627278375, + "entry_time": "2024-04-16T00:00:00", + "exit_price": 92.58143591458905, + "exit_reason": "signal", + "exit_time": "2024-04-17T00:00:00", + "pnl": 12.069964180531315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95177802714637, + "entry_time": "2024-04-19T00:00:00", + "exit_price": 92.56745694254103, + "exit_reason": "signal", + "exit_time": "2024-04-20T00:00:00", + "pnl": -38.43210846053444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81253269752307, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 92.86554139490539, + "exit_reason": "signal", + "exit_time": "2024-04-23T00:00:00", + "pnl": 5.300869738231995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90464875740813, + "entry_time": "2024-04-25T00:00:00", + "exit_price": 92.96373746132312, + "exit_reason": "signal", + "exit_time": "2024-04-26T00:00:00", + "pnl": 5.908870391500386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09789228558353, + "entry_time": "2024-04-28T00:00:00", + "exit_price": 93.19003786584736, + "exit_reason": "signal", + "exit_time": "2024-04-29T00:00:00", + "pnl": 9.214558026382292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66999752477344, + "entry_time": "2024-05-01T00:00:00", + "exit_price": 92.45706703230238, + "exit_reason": "signal", + "exit_time": "2024-05-02T00:00:00", + "pnl": -21.293049247105955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2209401021726, + "entry_time": "2024-05-04T00:00:00", + "exit_price": 93.26995519560073, + "exit_reason": "signal", + "exit_time": "2024-05-05T00:00:00", + "pnl": 4.901509342811551, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23034844043512, + "entry_time": "2024-05-07T00:00:00", + "exit_price": 93.41387280572972, + "exit_reason": "signal", + "exit_time": "2024-05-08T00:00:00", + "pnl": 18.352436529459737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33303611955198, + "entry_time": "2024-05-10T00:00:00", + "exit_price": 93.52307299324875, + "exit_reason": "signal", + "exit_time": "2024-05-11T00:00:00", + "pnl": 19.00368736967721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.67190914597171, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.29815694731651, + "exit_reason": "signal", + "exit_time": "2024-05-14T00:00:00", + "pnl": -37.375219865520194, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.11959184333037, + "entry_time": "2024-05-16T00:00:00", + "exit_price": 92.78483612314953, + "exit_reason": "signal", + "exit_time": "2024-05-17T00:00:00", + "pnl": -33.47557201808377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92001295323621, + "entry_time": "2024-05-19T00:00:00", + "exit_price": 92.94709162208174, + "exit_reason": "signal", + "exit_time": "2024-05-20T00:00:00", + "pnl": 2.7078668845515494, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06260774305197, + "entry_time": "2024-05-22T00:00:00", + "exit_price": 93.1459174166961, + "exit_reason": "signal", + "exit_time": "2024-05-23T00:00:00", + "pnl": 8.330967364412572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06618787236135, + "entry_time": "2024-05-25T00:00:00", + "exit_price": 93.61303967582782, + "exit_reason": "signal", + "exit_time": "2024-05-26T00:00:00", + "pnl": 54.68518034664703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.941078352886, + "entry_time": "2024-05-28T00:00:00", + "exit_price": 94.01481054814181, + "exit_reason": "signal", + "exit_time": "2024-05-29T00:00:00", + "pnl": 7.3732195255815896, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92069860353018, + "entry_time": "2024-05-31T00:00:00", + "exit_price": 93.87432907187284, + "exit_reason": "signal", + "exit_time": "2024-06-01T00:00:00", + "pnl": -4.636953165734667, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88014313205952, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.43750435674885, + "exit_reason": "signal", + "exit_time": "2024-06-04T00:00:00", + "pnl": -44.2638775310661, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.46298718335747, + "entry_time": "2024-06-06T00:00:00", + "exit_price": 93.92373570713617, + "exit_reason": "signal", + "exit_time": "2024-06-07T00:00:00", + "pnl": 46.07485237786932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93253015033825, + "entry_time": "2024-06-09T00:00:00", + "exit_price": 93.89138819536463, + "exit_reason": "signal", + "exit_time": "2024-06-10T00:00:00", + "pnl": -4.1141954973609245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6779918521803, + "entry_time": "2024-06-12T00:00:00", + "exit_price": 93.51002812881958, + "exit_reason": "signal", + "exit_time": "2024-06-13T00:00:00", + "pnl": -16.796372336071727, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.285974590119, + "entry_time": "2024-06-15T00:00:00", + "exit_price": 93.32248822367578, + "exit_reason": "signal", + "exit_time": "2024-06-16T00:00:00", + "pnl": 3.651363355676949, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35524577583958, + "entry_time": "2024-06-18T00:00:00", + "exit_price": 93.73566009456992, + "exit_reason": "signal", + "exit_time": "2024-06-19T00:00:00", + "pnl": 38.041431873034526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.6866778828559, + "entry_time": "2024-06-21T00:00:00", + "exit_price": 93.84911622521342, + "exit_reason": "signal", + "exit_time": "2024-06-22T00:00:00", + "pnl": 16.24383423575091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68254626297609, + "entry_time": "2024-06-24T00:00:00", + "exit_price": 93.53753290340698, + "exit_reason": "signal", + "exit_time": "2024-06-25T00:00:00", + "pnl": -14.501335956909315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.40541279646611, + "entry_time": "2024-06-27T00:00:00", + "exit_price": 93.71834890975212, + "exit_reason": "signal", + "exit_time": "2024-06-28T00:00:00", + "pnl": 31.2936113286014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.75716070422646, + "entry_time": "2024-06-30T00:00:00", + "exit_price": 93.82803454081426, + "exit_reason": "signal", + "exit_time": "2024-07-01T00:00:00", + "pnl": 7.0873836587798, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73900139072163, + "entry_time": "2024-07-03T00:00:00", + "exit_price": 93.58423325500644, + "exit_reason": "signal", + "exit_time": "2024-07-04T00:00:00", + "pnl": -15.476813571518505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16188235681071, + "entry_time": "2024-07-06T00:00:00", + "exit_price": 93.02650792631081, + "exit_reason": "signal", + "exit_time": "2024-07-07T00:00:00", + "pnl": -13.537443049990543, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00049424696184, + "entry_time": "2024-07-09T00:00:00", + "exit_price": 93.27869714616556, + "exit_reason": "signal", + "exit_time": "2024-07-10T00:00:00", + "pnl": 27.82028992037158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.18595899862997, + "entry_time": "2024-07-12T00:00:00", + "exit_price": 93.03056917274476, + "exit_reason": "signal", + "exit_time": "2024-07-13T00:00:00", + "pnl": -15.538982588521321, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.6959315804981, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.29325844026822, + "exit_reason": "signal", + "exit_time": "2024-07-16T00:00:00", + "pnl": -40.26731402298719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24617524245163, + "entry_time": "2024-07-18T00:00:00", + "exit_price": 92.27923511016385, + "exit_reason": "signal", + "exit_time": "2024-07-19T00:00:00", + "pnl": 3.3059867712217965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24377176084563, + "entry_time": "2024-07-21T00:00:00", + "exit_price": 91.84290901749984, + "exit_reason": "signal", + "exit_time": "2024-07-22T00:00:00", + "pnl": -40.086274334578775, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.45792359801233, + "entry_time": "2024-07-24T00:00:00", + "exit_price": 91.61079046047253, + "exit_reason": "signal", + "exit_time": "2024-07-25T00:00:00", + "pnl": 15.286686246019599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59272403631071, + "entry_time": "2024-07-27T00:00:00", + "exit_price": 91.6658144632232, + "exit_reason": "signal", + "exit_time": "2024-07-28T00:00:00", + "pnl": 7.309042691247669, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76765880138052, + "entry_time": "2024-07-30T00:00:00", + "exit_price": 91.83153611139085, + "exit_reason": "signal", + "exit_time": "2024-07-31T00:00:00", + "pnl": 6.387731001033899, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47875371686978, + "entry_time": "2024-08-02T00:00:00", + "exit_price": 91.54124524065837, + "exit_reason": "signal", + "exit_time": "2024-08-03T00:00:00", + "pnl": 6.249152378859435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.99233076398606, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.9529292158228, + "exit_reason": "signal", + "exit_time": "2024-08-06T00:00:00", + "pnl": -3.9401548163259577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9845811375129, + "entry_time": "2024-08-08T00:00:00", + "exit_price": 92.0553452779518, + "exit_reason": "signal", + "exit_time": "2024-08-09T00:00:00", + "pnl": 7.076414043889599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96933895446485, + "entry_time": "2024-08-11T00:00:00", + "exit_price": 92.33843538273938, + "exit_reason": "signal", + "exit_time": "2024-08-12T00:00:00", + "pnl": 36.909642827453354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7587929540311, + "entry_time": "2024-08-14T00:00:00", + "exit_price": 92.61541170919818, + "exit_reason": "signal", + "exit_time": "2024-08-15T00:00:00", + "pnl": -14.338124483290812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.48109292079488, + "entry_time": "2024-08-17T00:00:00", + "exit_price": 92.584127260661, + "exit_reason": "signal", + "exit_time": "2024-08-18T00:00:00", + "pnl": 10.303433986613527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73326548896145, + "entry_time": "2024-08-20T00:00:00", + "exit_price": 92.63121700232358, + "exit_reason": "signal", + "exit_time": "2024-08-21T00:00:00", + "pnl": -10.204848663786834, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06360781499562, + "entry_time": "2024-08-23T00:00:00", + "exit_price": 92.8561585876055, + "exit_reason": "signal", + "exit_time": "2024-08-24T00:00:00", + "pnl": -20.74492273900978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92284538933916, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.11237349539573, + "exit_reason": "signal", + "exit_time": "2024-08-27T00:00:00", + "pnl": 18.95281060565685, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07021236134935, + "entry_time": "2024-08-29T00:00:00", + "exit_price": 93.17184698357968, + "exit_reason": "signal", + "exit_time": "2024-08-30T00:00:00", + "pnl": 10.163462223034003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.31228518791787, + "entry_time": "2024-09-01T00:00:00", + "exit_price": 92.33590023205818, + "exit_reason": "signal", + "exit_time": "2024-09-02T00:00:00", + "pnl": 2.361504414031515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50027778498863, + "entry_time": "2024-09-04T00:00:00", + "exit_price": 92.54209415864854, + "exit_reason": "signal", + "exit_time": "2024-09-05T00:00:00", + "pnl": 4.181637365991264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3677893725537, + "entry_time": "2024-09-07T00:00:00", + "exit_price": 92.22925202091126, + "exit_reason": "signal", + "exit_time": "2024-09-08T00:00:00", + "pnl": -13.853735164244426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09309676612556, + "entry_time": "2024-09-10T00:00:00", + "exit_price": 92.15732000186526, + "exit_reason": "signal", + "exit_time": "2024-09-11T00:00:00", + "pnl": 6.422323573970061, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68995738997093, + "entry_time": "2024-09-13T00:00:00", + "exit_price": 91.28297081793372, + "exit_reason": "signal", + "exit_time": "2024-09-14T00:00:00", + "pnl": -40.69865720372218, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.49225030811706, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.33431283007668, + "exit_reason": "signal", + "exit_time": "2024-09-17T00:00:00", + "pnl": -15.793747804038503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00621404043055, + "entry_time": "2024-09-19T00:00:00", + "exit_price": 90.92641929792215, + "exit_reason": "signal", + "exit_time": "2024-09-20T00:00:00", + "pnl": -7.979474250840212, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.07027528339762, + "entry_time": "2024-09-22T00:00:00", + "exit_price": 91.13008155599323, + "exit_reason": "signal", + "exit_time": "2024-09-23T00:00:00", + "pnl": 5.9806272595615155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.00907183642319, + "entry_time": "2024-09-25T00:00:00", + "exit_price": 91.23094904986101, + "exit_reason": "signal", + "exit_time": "2024-09-26T00:00:00", + "pnl": 22.18772134378196, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.2825480931582, + "entry_time": "2024-09-28T00:00:00", + "exit_price": 90.91271666538603, + "exit_reason": "signal", + "exit_time": "2024-09-29T00:00:00", + "pnl": -36.983142777216926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05360990148436, + "entry_time": "2024-10-01T00:00:00", + "exit_price": 91.28838235720163, + "exit_reason": "signal", + "exit_time": "2024-10-02T00:00:00", + "pnl": 23.4772455717266, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79116186423771, + "entry_time": "2024-10-04T00:00:00", + "exit_price": 90.76779759668747, + "exit_reason": "signal", + "exit_time": "2024-10-05T00:00:00", + "pnl": -2.3364267550241493, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66567440561238, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 90.70161264561204, + "exit_reason": "signal", + "exit_time": "2024-10-08T00:00:00", + "pnl": 3.593823999966844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83214429583118, + "entry_time": "2024-10-10T00:00:00", + "exit_price": 90.77606667466077, + "exit_reason": "signal", + "exit_time": "2024-10-11T00:00:00", + "pnl": -5.607762117042512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.66108486881463, + "entry_time": "2024-10-13T00:00:00", + "exit_price": 90.66515259357669, + "exit_reason": "signal", + "exit_time": "2024-10-14T00:00:00", + "pnl": 0.4067724762062426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.16857543076497, + "entry_time": "2024-10-16T00:00:00", + "exit_price": 90.40982511738886, + "exit_reason": "signal", + "exit_time": "2024-10-17T00:00:00", + "pnl": 24.12496866238871, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.06344300783007, + "entry_time": "2024-10-19T00:00:00", + "exit_price": 89.82444237040852, + "exit_reason": "signal", + "exit_time": "2024-10-20T00:00:00", + "pnl": -23.90006374215409, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.59077974741996, + "entry_time": "2024-10-22T00:00:00", + "exit_price": 89.57824858967784, + "exit_reason": "signal", + "exit_time": "2024-10-23T00:00:00", + "pnl": -1.2531157742123469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.18599707786814, + "entry_time": "2024-10-25T00:00:00", + "exit_price": 89.23587599762591, + "exit_reason": "signal", + "exit_time": "2024-10-26T00:00:00", + "pnl": 4.987891975777529, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.52520755360774, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.53896573427002, + "exit_reason": "signal", + "exit_time": "2024-10-29T00:00:00", + "pnl": 1.375818066228021, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32372356389571, + "entry_time": "2024-10-31T00:00:00", + "exit_price": 89.39723460318574, + "exit_reason": "signal", + "exit_time": "2024-11-01T00:00:00", + "pnl": 7.35110392900242, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.42867761884308, + "entry_time": "2024-11-03T00:00:00", + "exit_price": 89.41468909557778, + "exit_reason": "signal", + "exit_time": "2024-11-04T00:00:00", + "pnl": -1.3988523265306867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37521291073797, + "entry_time": "2024-11-06T00:00:00", + "exit_price": 89.28061929510595, + "exit_reason": "signal", + "exit_time": "2024-11-07T00:00:00", + "pnl": -9.459361563202037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.37421531457154, + "entry_time": "2024-11-09T00:00:00", + "exit_price": 89.42880794685172, + "exit_reason": "signal", + "exit_time": "2024-11-10T00:00:00", + "pnl": 5.459263228018244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.10075544827296, + "entry_time": "2024-11-12T00:00:00", + "exit_price": 89.08909178471053, + "exit_reason": "signal", + "exit_time": "2024-11-13T00:00:00", + "pnl": -1.1663663562430884, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.9283105563295, + "entry_time": "2024-11-15T00:00:00", + "exit_price": 88.97631673436179, + "exit_reason": "signal", + "exit_time": "2024-11-16T00:00:00", + "pnl": 4.800617803228306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.83969795208085, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.97701708069182, + "exit_reason": "signal", + "exit_time": "2024-11-19T00:00:00", + "pnl": 13.731912861096134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.24948915106788, + "entry_time": "2024-11-21T00:00:00", + "exit_price": 89.31081866218918, + "exit_reason": "signal", + "exit_time": "2024-11-22T00:00:00", + "pnl": 6.132951112129376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.15663810787721, + "entry_time": "2024-11-24T00:00:00", + "exit_price": 89.05359196348086, + "exit_reason": "signal", + "exit_time": "2024-11-25T00:00:00", + "pnl": -10.30461443963577, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.89974340615646, + "entry_time": "2024-11-27T00:00:00", + "exit_price": 88.86736216937868, + "exit_reason": "signal", + "exit_time": "2024-11-28T00:00:00", + "pnl": -3.238123677778276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.02917974715604, + "entry_time": "2024-11-30T00:00:00", + "exit_price": 89.10061155400963, + "exit_reason": "signal", + "exit_time": "2024-12-01T00:00:00", + "pnl": 7.143180685359766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.71230009060692, + "entry_time": "2024-12-03T00:00:00", + "exit_price": 88.55956047576315, + "exit_reason": "signal", + "exit_time": "2024-12-04T00:00:00", + "pnl": -15.273961484375832, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.vectorbt_oss", + "path": "validation/frameworks/vectorbt_oss.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "ce6e7cf59f08a661ad5efc075866be9e9a9e33011f59b12a18a187c00585a1ac", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d0e0852cea9e321d72793f0f7fd7479d70d67ea3b367cbab817e4e3067af4e32" + }, + "framework_target": { + "actual_version": "1.1.0", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "version": "1.1.0" + }, + "input_digest": "dd491bc06ca31652f04962d8927c33330abf1b3bedaf108f9d9b222834fb9c4b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 1800, + "entry_signals": 600, + "exit_signals": 600, + "framework_closed_trades": 600, + "framework_fills": 1200, + "framework_intents": 1200, + "framework_orders": null, + "ml4t_closed_trades": 600, + "ml4t_fills": 1200, + "ml4t_intents": 1200, + "ml4t_orders": null + } + }, + "release_blocking": false, + "required": true, + "scenario_id": "17", + "scenario_name": "High Event Count", "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "Backtrader=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98208.50651014279, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 1.4551915228366852e-11, + "expected": 98208.50651014278, + "message": "Backtrader=$98,208.5065101428, ML4T=$98,208.5065101428 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1791.49348985721, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 1.4551915228366852e-11, + "expected": -1791.4934898572246, + "message": "Backtrader=$-1,791.4934898572, ML4T=$-1,791.4934898572 (exact_diff=$0.0000000000; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 805.8409540009688, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1016.3741264942128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -548.0946220352507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -266.1460687623003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.05372935177999, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -615.6728551091792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 232.59521379023863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -32.36999674283288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 4.394524157898559, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 148.3674917782546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -504.03400444082854, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 805.8409540009691, + "pnl": 805.8409540009691, + "pnlcomm": 805.8409540009691, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1016.3741264942132, + "pnl": -1016.3741264942132, + "pnlcomm": -1016.3741264942132, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -548.0946220352507, + "pnl": -548.0946220352507, + "pnlcomm": -548.0946220352507, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -266.14606876230056, + "pnl": -266.14606876230056, + "pnlcomm": -266.14606876230056, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.05372935177998, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -615.6728551091788, + "pnl": -615.6728551091788, + "pnlcomm": -615.6728551091788, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 232.59521379023766, + "pnl": 232.59521379023766, + "pnlcomm": 232.59521379023766, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -32.36999674283254, + "pnl": -32.36999674283254, + "pnlcomm": -32.36999674283254, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 4.394524157898161, + "pnl": 4.394524157898161, + "pnlcomm": 4.394524157898161, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 148.36749177825368, + "pnl": 148.36749177825368, + "pnlcomm": 148.36749177825368, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -504.0340044408296, + "pnl": -504.0340044408296, + "pnlcomm": -504.0340044408296, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.05372935177999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.1805182750142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.71152184475136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 83.38209984017583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.05372935177998, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.18051827501421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.71152184475137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.38209984017584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "01" + }, "detail": null, + "duration_seconds": 0.2181082998868078, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 0.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.05372935177998, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.18051827501421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.71152184475137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.38209984017584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98208.50651014278, + "framework": "Backtrader", + "num_trades": 10, + "total_pnl": -1791.4934898572246, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 805.8409540009691, + "pnl": 805.8409540009691, + "pnlcomm": 805.8409540009691, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1016.3741264942132, + "pnl": -1016.3741264942132, + "pnlcomm": -1016.3741264942132, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -548.0946220352507, + "pnl": -548.0946220352507, + "pnlcomm": -548.0946220352507, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -266.14606876230056, + "pnl": -266.14606876230056, + "pnlcomm": -266.14606876230056, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.05372935177998, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -615.6728551091788, + "pnl": -615.6728551091788, + "pnlcomm": -615.6728551091788, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 232.59521379023766, + "pnl": 232.59521379023766, + "pnlcomm": 232.59521379023766, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -32.36999674283254, + "pnl": -32.36999674283254, + "pnlcomm": -32.36999674283254, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 4.394524157898161, + "pnl": 4.394524157898161, + "pnlcomm": 4.394524157898161, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 148.36749177825368, + "pnl": 148.36749177825368, + "pnlcomm": 148.36749177825368, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -504.0340044408296, + "pnl": -504.0340044408296, + "pnlcomm": -504.0340044408296, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.05372935177999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.1805182750142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.71152184475136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 83.38209984017583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98208.50651014279, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1791.49348985721, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 805.8409540009688, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1016.3741264942128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -548.0946220352507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -266.1460687623003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.05372935177999, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -615.6728551091792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 232.59521379023863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -32.36999674283288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 4.394524157898559, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 148.3674917782546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -504.03400444082854, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d34babef0534a871f927ab6553a49d7b7e35a03283516b1741835d49381d2e0d" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "01", @@ -330,8 +164228,1371 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "Backtrader=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98208.50651014279, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 1.4551915228366852e-11, + "expected": 98208.50651014278, + "message": "Backtrader=$98,208.5065101428, ML4T=$98,208.5065101428 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1791.49348985721, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 1.4551915228366852e-11, + "expected": -1791.4934898572246, + "message": "Backtrader=$-1,791.4934898572, ML4T=$-1,791.4934898572 (exact_diff=$0.0000000000; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 805.8409540009688, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1016.3741264942128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -548.0946220352507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -266.1460687623003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.05372935177999, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -615.6728551091792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 232.59521379023863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -32.36999674283288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 4.394524157898559, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 148.3674917782546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -504.03400444082854, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 805.8409540009691, + "pnl": 805.8409540009691, + "pnlcomm": 805.8409540009691, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1016.3741264942132, + "pnl": -1016.3741264942132, + "pnlcomm": -1016.3741264942132, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -548.0946220352507, + "pnl": -548.0946220352507, + "pnlcomm": -548.0946220352507, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -266.14606876230056, + "pnl": -266.14606876230056, + "pnlcomm": -266.14606876230056, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.05372935177998, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -615.6728551091788, + "pnl": -615.6728551091788, + "pnlcomm": -615.6728551091788, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 232.59521379023766, + "pnl": 232.59521379023766, + "pnlcomm": 232.59521379023766, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -32.36999674283254, + "pnl": -32.36999674283254, + "pnlcomm": -32.36999674283254, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 4.394524157898161, + "pnl": 4.394524157898161, + "pnlcomm": 4.394524157898161, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 148.36749177825368, + "pnl": 148.36749177825368, + "pnlcomm": 148.36749177825368, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -504.0340044408296, + "pnl": -504.0340044408296, + "pnlcomm": -504.0340044408296, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.05372935177999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.1805182750142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.71152184475136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 83.38209984017583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.05372935177998, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.18051827501421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.71152184475137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.38209984017584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "02" + }, "detail": null, + "duration_seconds": 0.22164393798448145, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 0.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.05372935177998, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.18051827501421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.71152184475137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.38209984017584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98208.50651014278, + "framework": "Backtrader", + "num_trades": 10, + "total_pnl": -1791.4934898572246, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 805.8409540009691, + "pnl": 805.8409540009691, + "pnlcomm": 805.8409540009691, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1016.3741264942132, + "pnl": -1016.3741264942132, + "pnlcomm": -1016.3741264942132, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -548.0946220352507, + "pnl": -548.0946220352507, + "pnlcomm": -548.0946220352507, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -266.14606876230056, + "pnl": -266.14606876230056, + "pnlcomm": -266.14606876230056, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.05372935177998, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -615.6728551091788, + "pnl": -615.6728551091788, + "pnlcomm": -615.6728551091788, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 232.59521379023766, + "pnl": 232.59521379023766, + "pnlcomm": 232.59521379023766, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -32.36999674283254, + "pnl": -32.36999674283254, + "pnlcomm": -32.36999674283254, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 4.394524157898161, + "pnl": 4.394524157898161, + "pnlcomm": 4.394524157898161, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 148.36749177825368, + "pnl": 148.36749177825368, + "pnlcomm": 148.36749177825368, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -504.0340044408296, + "pnl": -504.0340044408296, + "pnlcomm": -504.0340044408296, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.05372935177999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.1805182750142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.71152184475136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 83.38209984017583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98208.50651014279, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1791.49348985721, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 805.8409540009688, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1016.3741264942128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -548.0946220352507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -266.1460687623003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.05372935177999, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -615.6728551091792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 232.59521379023863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -32.36999674283288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 4.394524157898559, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 148.3674917782546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -504.03400444082854, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "be4345288348f6a276f38cb4a364261003c925cddc5d9423b667fb82c34cff1b", + "scenario": "7db3751b770b7369c40f6b31fc757e7949b07dd5b56430e7226dc8db7d444e38" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "02", @@ -339,8 +165600,319 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Backtrader=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99550.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99550.0, + "message": "Backtrader=$99,550.0000000000, ML4T=$99,550.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -450.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -450.0, + "message": "Backtrader=$-450.0000000000, ML4T=$-450.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 95.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 95.0, + "message": "Backtrader=$95.0000000000, ML4T=$95.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "exit_price", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-07T00:00:00", + "pnl": -450.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-07T00:00:00", + "gross_pnl": -450.0, + "pnl": -450.0, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "03" + }, "detail": null, + "duration_seconds": 0.19068946689367294, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 95.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "final_value": 99550.0, + "framework": "Backtrader", + "num_trades": 1, + "total_pnl": -450.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-07T00:00:00", + "gross_pnl": -450.0, + "pnl": -450.0, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 95.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "final_value": 99550.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -450.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-07T00:00:00", + "pnl": -450.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "6f82ba4bceb1436137d9a4d844fa16973426eacd177ec088ab0f1e40ec12288d", + "scenario": "ad7292cedc685fa6c10032a0574f3e5da89b81dbb0f3a312cc2f5d83f5b454a1" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "c450f8db901151f953d81b05845db8cad686ca7c619cfe7e881485a2228972a7", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 20, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "03", @@ -348,8 +165920,319 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Backtrader=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 101000.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 101000.0, + "message": "Backtrader=$101,000.0000000000, ML4T=$101,000.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1000.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 1000.0, + "message": "Backtrader=$1,000.0000000000, ML4T=$1,000.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 110.5, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 110.5, + "message": "Backtrader=$110.5000000000, ML4T=$110.5000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "exit_price", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 110.5, + "exit_reason": "take_profit", + "exit_time": "2020-01-08T00:00:00", + "pnl": 1000.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 110.5, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 1000.0, + "pnl": 1000.0, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "04" + }, "detail": null, + "duration_seconds": 0.19105158699676394, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 110.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "final_value": 101000.0, + "framework": "Backtrader", + "num_trades": 1, + "total_pnl": 1000.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 110.5, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 1000.0, + "pnl": 1000.0, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 110.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 110.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "final_value": 101000.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": 1000.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 110.5, + "exit_reason": "take_profit", + "exit_time": "2020-01-08T00:00:00", + "pnl": 1000.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "6f82ba4bceb1436137d9a4d844fa16973426eacd177ec088ab0f1e40ec12288d", + "scenario": "2dea68c3a9472e95c15e7238928919fe01b4e63bfd3a14a5a9666ea89b86cc41" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "d62c3c2d015f1ead6bff9d1d3ed7e92b396ddf9e4f7c808cf3ebe3eb7ae7491b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 20, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "04", @@ -357,8 +166240,1383 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "Backtrader=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98031.0184897941, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 2.9103830456733704e-11, + "expected": 98031.01848979408, + "message": "Backtrader=$98,031.0184897941, ML4T=$98,031.0184897941 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1968.9815102058928, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 2.9103830456733704e-11, + "expected": -1968.981510205922, + "message": "Backtrader=$-1,968.9815102059, ML4T=$-1,968.9815102059 (exact_diff=$0.0000000000; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 177.4880203486597, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 2.842170943040401e-14, + "expected": 177.48802034865972, + "message": "Backtrader=$177.4880203487, ML4T=$177.4880203487 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_commission", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 20.907368893968922, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 784.9335851069999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.453032384567653, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1036.8271588787804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.509258015076554, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -566.6038800503272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.057609263326825, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -284.2036780256271, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.595073015246818, + "direction": "Long", + "entry_price": 86.05372935177999, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -632.267928124426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.203508441212602, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 216.39170534902604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.42507057068743, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -48.79506731352031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.137909844792375, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": -12.743385686893816, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.52805247625691, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 131.8394393019977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.67113744352359, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -520.7051418843521, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 20.907368893968922, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 805.8409540009691, + "pnl": 784.9335851070001, + "pnlcomm": 784.9335851070001, + "size": 100 + }, + { + "asset": "TEST", + "commission": 20.453032384567653, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1016.3741264942132, + "pnl": -1036.827158878781, + "pnlcomm": -1036.827158878781, + "size": 100 + }, + { + "asset": "TEST", + "commission": 18.509258015076554, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -548.0946220352507, + "pnl": -566.6038800503272, + "pnlcomm": -566.6038800503272, + "size": 100 + }, + { + "asset": "TEST", + "commission": 18.057609263326825, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -266.14606876230056, + "pnl": -284.20367802562737, + "pnlcomm": -284.20367802562737, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.595073015246818, + "direction": "Long", + "entry_price": 86.05372935177998, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -615.6728551091788, + "pnl": -632.2679281244257, + "pnlcomm": -632.2679281244257, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.203508441212602, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 232.59521379023766, + "pnl": 216.39170534902507, + "pnlcomm": 216.39170534902507, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.42507057068743, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -32.36999674283254, + "pnl": -48.79506731351997, + "pnlcomm": -48.79506731351997, + "size": 100 + }, + { + "asset": "TEST", + "commission": 17.137909844792375, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 4.394524157898161, + "pnl": -12.743385686894214, + "pnlcomm": -12.743385686894214, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.52805247625691, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 148.36749177825368, + "pnl": 131.83943930199678, + "pnlcomm": 131.83943930199678, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.67113744352359, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -504.0340044408296, + "pnl": -520.7051418843532, + "pnlcomm": -520.7051418843532, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 10.050763969983976, + "exit_reason": "", + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.856604923984944, + "exit_reason": "signal", + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.734703255530933, + "exit_reason": "", + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.71832912903672, + "exit_reason": "signal", + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.528676318555902, + "exit_reason": "", + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.980581696520652, + "exit_reason": "signal", + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.161877666044562, + "exit_reason": "", + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.895731597282262, + "exit_reason": "signal", + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.605372935177998, + "exit_reason": "", + "price": 86.05372935177999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 7.989700080068819, + "exit_reason": "signal", + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 7.9854566137111815, + "exit_reason": "", + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.218051827501421, + "exit_reason": "signal", + "price": 82.1805182750142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.228720283715132, + "exit_reason": "", + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.196350286972299, + "exit_reason": "signal", + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.566757660317238, + "exit_reason": "", + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.571152184475137, + "exit_reason": "signal", + "price": 85.71152184475136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.189842492239329, + "exit_reason": "", + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.338209984017583, + "exit_reason": "signal", + "price": 83.38209984017583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.58758572398221, + "exit_reason": "", + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.083551719541381, + "exit_reason": "signal", + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 10.050763969983976, + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.856604923984944, + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.734703255530933, + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.71832912903672, + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.528676318555902, + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.980581696520652, + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.161877666044562, + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.895731597282262, + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.605372935178, + "price": 86.05372935177998, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 7.989700080068819, + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 7.985456613711182, + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.21805182750142, + "price": 82.18051827501421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.228720283715132, + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.1963502869723, + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.566757660317238, + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.571152184475137, + "price": 85.71152184475137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.189842492239329, + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.338209984017583, + "price": 83.38209984017584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.58758572398221, + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.083551719541381, + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "05" + }, "detail": null, + "duration_seconds": 0.24581945384852588, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 177.48802034865972 + }, + "fills": [ + { + "asset": "TEST", + "commission": 10.050763969983976, + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.856604923984944, + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.734703255530933, + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.71832912903672, + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.528676318555902, + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.980581696520652, + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.161877666044562, + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.895731597282262, + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.605372935178, + "price": 86.05372935177998, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 7.989700080068819, + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 7.985456613711182, + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.21805182750142, + "price": 82.18051827501421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.228720283715132, + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.1963502869723, + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.566757660317238, + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.571152184475137, + "price": 85.71152184475137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.189842492239329, + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.338209984017583, + "price": 83.38209984017584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.58758572398221, + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.083551719541381, + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98031.01848979408, + "framework": "Backtrader", + "num_trades": 10, + "total_pnl": -1968.981510205922, + "trades": [ + { + "asset": "TEST", + "commission": 20.907368893968922, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 805.8409540009691, + "pnl": 784.9335851070001, + "pnlcomm": 784.9335851070001, + "size": 100 + }, + { + "asset": "TEST", + "commission": 20.453032384567653, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1016.3741264942132, + "pnl": -1036.827158878781, + "pnlcomm": -1036.827158878781, + "size": 100 + }, + { + "asset": "TEST", + "commission": 18.509258015076554, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -548.0946220352507, + "pnl": -566.6038800503272, + "pnlcomm": -566.6038800503272, + "size": 100 + }, + { + "asset": "TEST", + "commission": 18.057609263326825, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -266.14606876230056, + "pnl": -284.20367802562737, + "pnlcomm": -284.20367802562737, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.595073015246818, + "direction": "Long", + "entry_price": 86.05372935177998, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -615.6728551091788, + "pnl": -632.2679281244257, + "pnlcomm": -632.2679281244257, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.203508441212602, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 232.59521379023766, + "pnl": 216.39170534902507, + "pnlcomm": 216.39170534902507, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.42507057068743, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -32.36999674283254, + "pnl": -48.79506731351997, + "pnlcomm": -48.79506731351997, + "size": 100 + }, + { + "asset": "TEST", + "commission": 17.137909844792375, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 4.394524157898161, + "pnl": -12.743385686894214, + "pnlcomm": -12.743385686894214, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.52805247625691, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 148.36749177825368, + "pnl": 131.83943930199678, + "pnlcomm": 131.83943930199678, + "size": 100 + }, + { + "asset": "TEST", + "commission": 16.67113744352359, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -504.0340044408296, + "pnl": -520.7051418843532, + "pnlcomm": -520.7051418843532, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 177.4880203486597 + }, + "fills": [ + { + "asset": "TEST", + "commission": 10.050763969983976, + "exit_reason": "", + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.856604923984944, + "exit_reason": "signal", + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.734703255530933, + "exit_reason": "", + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.71832912903672, + "exit_reason": "signal", + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.528676318555902, + "exit_reason": "", + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.980581696520652, + "exit_reason": "signal", + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.161877666044562, + "exit_reason": "", + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.895731597282262, + "exit_reason": "signal", + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.605372935177998, + "exit_reason": "", + "price": 86.05372935177999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 7.989700080068819, + "exit_reason": "signal", + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 7.9854566137111815, + "exit_reason": "", + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.218051827501421, + "exit_reason": "signal", + "price": 82.1805182750142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.228720283715132, + "exit_reason": "", + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.196350286972299, + "exit_reason": "signal", + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.566757660317238, + "exit_reason": "", + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.571152184475137, + "exit_reason": "signal", + "price": 85.71152184475136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.189842492239329, + "exit_reason": "", + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.338209984017583, + "exit_reason": "signal", + "price": 83.38209984017583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.58758572398221, + "exit_reason": "", + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.083551719541381, + "exit_reason": "signal", + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98031.0184897941, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1968.9815102058928, + "trades": [ + { + "asset": "TEST", + "commission": 20.907368893968922, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 784.9335851069999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 20.453032384567653, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1036.8271588787804, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.509258015076554, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -566.6038800503272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.057609263326825, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -284.2036780256271, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.595073015246818, + "direction": "Long", + "entry_price": 86.05372935177999, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -632.267928124426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.203508441212602, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 216.39170534902604, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.42507057068743, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -48.79506731352031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 17.137909844792375, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": -12.743385686893816, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.52805247625691, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 131.8394393019977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.67113744352359, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -520.7051418843521, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "93f5ba4a70377e12f472819a04fbceabb1a44df86108f5feed401a8499bd7b88" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "05", @@ -366,8 +167624,1383 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "Backtrader=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98198.50651014279, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 2.9103830456733704e-11, + "expected": 98198.50651014276, + "message": "Backtrader=$98,198.5065101428, ML4T=$98,198.5065101428 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1801.49348985721, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 2.9103830456733704e-11, + "expected": -1801.4934898572392, + "message": "Backtrader=$-1,801.4934898572, ML4T=$-1,801.4934898572 (exact_diff=$0.0000000000; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 10.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 10.0, + "message": "Backtrader=$10.0000000000, ML4T=$10.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_commission", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 804.8409540009688, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1017.3741264942128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -549.0946220352507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -267.1460687623003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 86.05372935177999, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -616.6728551091792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 231.59521379023863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -33.36999674283288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 3.3945241578985588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 147.3674917782546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -505.03400444082854, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 805.8409540009691, + "pnl": 804.8409540009691, + "pnlcomm": 804.8409540009691, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1016.3741264942132, + "pnl": -1017.3741264942132, + "pnlcomm": -1017.3741264942132, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -548.0946220352507, + "pnl": -549.0946220352507, + "pnlcomm": -549.0946220352507, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -266.14606876230056, + "pnl": -267.14606876230056, + "pnlcomm": -267.14606876230056, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 86.05372935177998, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -615.6728551091788, + "pnl": -616.6728551091788, + "pnlcomm": -616.6728551091788, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 232.59521379023766, + "pnl": 231.59521379023766, + "pnlcomm": 231.59521379023766, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -32.36999674283254, + "pnl": -33.36999674283254, + "pnlcomm": -33.36999674283254, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 4.394524157898161, + "pnl": 3.394524157898161, + "pnlcomm": 3.394524157898161, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 148.36749177825368, + "pnl": 147.36749177825368, + "pnlcomm": 147.36749177825368, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -504.0340044408296, + "pnl": -505.0340044408296, + "pnlcomm": -505.0340044408296, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 86.05372935177999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 82.1805182750142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 85.71152184475136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 83.38209984017583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.5, + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 86.05372935177998, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.18051827501421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.71152184475137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 83.38209984017584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "06" + }, "detail": null, + "duration_seconds": 0.21445027412846684, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 10.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.5, + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 86.05372935177998, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.18051827501421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.71152184475137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 83.38209984017584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98198.50651014276, + "framework": "Backtrader", + "num_trades": 10, + "total_pnl": -1801.4934898572392, + "trades": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 805.8409540009691, + "pnl": 804.8409540009691, + "pnlcomm": 804.8409540009691, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1016.3741264942132, + "pnl": -1017.3741264942132, + "pnlcomm": -1017.3741264942132, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -548.0946220352507, + "pnl": -549.0946220352507, + "pnlcomm": -549.0946220352507, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -266.14606876230056, + "pnl": -267.14606876230056, + "pnlcomm": -267.14606876230056, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 86.05372935177998, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -615.6728551091788, + "pnl": -616.6728551091788, + "pnlcomm": -616.6728551091788, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 232.59521379023766, + "pnl": 231.59521379023766, + "pnlcomm": 231.59521379023766, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -32.36999674283254, + "pnl": -33.36999674283254, + "pnlcomm": -33.36999674283254, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 4.394524157898161, + "pnl": 3.394524157898161, + "pnlcomm": 3.394524157898161, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 148.36749177825368, + "pnl": 147.36749177825368, + "pnlcomm": 147.36749177825368, + "size": 100 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -504.0340044408296, + "pnl": -505.0340044408296, + "pnlcomm": -505.0340044408296, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 10.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 100.50763969983974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 108.56604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 107.34703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 97.1832912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 95.28676318555902, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 89.80581696520652, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 91.61877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 88.95731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 86.05372935177999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 79.89700080068819, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 79.85456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 82.1805182750142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 82.28720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 81.963502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 85.66757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 85.71152184475136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 81.89842492239329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 83.38209984017583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 85.8758572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 80.8355171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98198.50651014279, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1801.49348985721, + "trades": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.50763969983974, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.56604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 804.8409540009688, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 107.34703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.1832912903672, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1017.3741264942128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 95.28676318555902, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.80581696520652, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -549.0946220352507, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 91.61877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.95731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -267.1460687623003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 86.05372935177999, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.89700080068819, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -616.6728551091792, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 79.85456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.1805182750142, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 231.59521379023863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.28720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.963502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -33.36999674283288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.66757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.71152184475136, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 3.3945241578985588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 81.89842492239329, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.38209984017583, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 147.3674917782546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.8758572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8355171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -505.03400444082854, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "523af2137e8233ef65d03ffb841e91525f65f7c3057b3111e86aedbf0a973fb7" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "06", @@ -375,8 +169008,1371 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "Backtrader=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98188.50651014278, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 1.4551915228366852e-11, + "expected": 98188.50651014276, + "message": "Backtrader=$98,188.5065101428, ML4T=$98,188.5065101428 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1811.4934898572246, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 1.4551915228366852e-11, + "expected": -1811.4934898572392, + "message": "Backtrader=$-1,811.4934898572, ML4T=$-1,811.4934898572 (exact_diff=$0.0000000000; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.51763969983975, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.55604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 803.8409540009688, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.35703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.17329129036719, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1018.3741264942128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29676318555903, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.79581696520651, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -550.0946220352525, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.94731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -268.1460687623003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.06372935178, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.88700080068818, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -617.6728551091819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.86456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.17051827501419, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 230.5952137902359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.29720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.953502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -34.36999674283288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.67757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.70152184475135, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 2.39452415789674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.9084249223933, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.37209984017582, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 146.36749177825186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8858572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8255171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -506.03400444083127, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.51763969983975, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.55604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 803.8409540009682, + "pnl": 803.8409540009682, + "pnlcomm": 803.8409540009682, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.35703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.17329129036719, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1018.3741264942142, + "pnl": -1018.3741264942142, + "pnlcomm": -1018.3741264942142, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29676318555903, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.79581696520651, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -550.0946220352517, + "pnl": -550.0946220352517, + "pnlcomm": -550.0946220352517, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.94731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -268.1460687623016, + "pnl": -268.1460687623016, + "pnlcomm": -268.1460687623016, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.06372935178, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.88700080068818, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -617.6728551091812, + "pnl": -617.6728551091812, + "pnlcomm": -617.6728551091812, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.86456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.17051827501419, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 230.59521379023664, + "pnl": 230.59521379023664, + "pnlcomm": 230.59521379023664, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.29720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.953502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -34.369996742833564, + "pnl": -34.369996742833564, + "pnlcomm": -34.369996742833564, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.67757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.70152184475135, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 2.3945241578971377, + "pnl": 2.3945241578971377, + "pnlcomm": 2.3945241578971377, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.9084249223933, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.37209984017582, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 146.36749177825266, + "pnl": 146.36749177825266, + "pnlcomm": 146.36749177825266, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8858572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8255171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -506.03400444083064, + "pnl": -506.03400444083064, + "pnlcomm": -506.03400444083064, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.51763969983975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.55604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.35703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.17329129036719, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.29676318555903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.79581696520651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.94731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.06372935178, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.88700080068818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 79.86456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.17051827501419, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.29720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.953502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.67757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.70152184475135, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.9084249223933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 83.37209984017582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.8858572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.8255171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.51763969983975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.55604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 107.35703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1732912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.29676318555903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.7958169652065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.94731597282262, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.06372935178, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.88700080068818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.86456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.17051827501419, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.29720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.953502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.67757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.70152184475135, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.9084249223933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.37209984017582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.8858572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.8255171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "07" + }, "detail": null, + "duration_seconds": 0.23931146087124944, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 0.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.51763969983975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.55604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 107.35703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.1732912903672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.29676318555903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.7958169652065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.94731597282262, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.06372935178, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.88700080068818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.86456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.17051827501419, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.29720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.953502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.67757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.70152184475135, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.9084249223933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.37209984017582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.8858572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.8255171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98188.50651014276, + "framework": "Backtrader", + "num_trades": 10, + "total_pnl": -1811.4934898572392, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.51763969983975, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.55604923984943, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 803.8409540009682, + "pnl": 803.8409540009682, + "pnlcomm": 803.8409540009682, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.35703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.17329129036719, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1018.3741264942142, + "pnl": -1018.3741264942142, + "pnlcomm": -1018.3741264942142, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29676318555903, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.79581696520651, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -550.0946220352517, + "pnl": -550.0946220352517, + "pnlcomm": -550.0946220352517, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.94731597282261, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -268.1460687623016, + "pnl": -268.1460687623016, + "pnlcomm": -268.1460687623016, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.06372935178, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.88700080068818, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -617.6728551091812, + "pnl": -617.6728551091812, + "pnlcomm": -617.6728551091812, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.86456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.17051827501419, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 230.59521379023664, + "pnl": 230.59521379023664, + "pnlcomm": 230.59521379023664, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.29720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.953502869723, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -34.369996742833564, + "pnl": -34.369996742833564, + "pnlcomm": -34.369996742833564, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.67757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.70152184475135, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": 2.3945241578971377, + "pnl": 2.3945241578971377, + "pnlcomm": 2.3945241578971377, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.9084249223933, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.37209984017582, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 146.36749177825266, + "pnl": 146.36749177825266, + "pnlcomm": 146.36749177825266, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8858572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8255171954138, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -506.03400444083064, + "pnl": -506.03400444083064, + "pnlcomm": -506.03400444083064, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.51763969983975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.55604923984943, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.35703255530933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.17329129036719, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.29676318555903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.79581696520651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.62877666044562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.94731597282261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.06372935178, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.88700080068818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 79.86456613711182, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.17051827501419, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.29720283715133, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.953502869723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.67757660317238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.70152184475135, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.9084249223933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 83.37209984017582, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.8858572398221, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.8255171954138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98188.50651014278, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1811.4934898572246, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.51763969983975, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.55604923984943, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 803.8409540009688, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.35703255530933, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.17329129036719, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1018.3741264942128, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29676318555903, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.79581696520651, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -550.0946220352525, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.62877666044562, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.94731597282261, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -268.1460687623003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.06372935178, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.88700080068818, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -617.6728551091819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.86456613711182, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.17051827501419, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 230.5952137902359, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.29720283715133, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.953502869723, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -34.36999674283288, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.67757660317238, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.70152184475135, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 2.39452415789674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.9084249223933, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.37209984017582, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 146.36749177825186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.8858572398221, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.8255171954138, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -506.03400444083127, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "0eee68a74bb2c999c23582d129c81e91ad51b48af637e051507f8a40979c2871" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "07", @@ -384,8 +170380,1371 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "Backtrader=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98031.01848979409, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 1.4551915228366852e-11, + "expected": 98031.0184897941, + "message": "Backtrader=$98,031.0184897941, ML4T=$98,031.0184897941 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1968.9815102059074, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 1.4551915228366852e-11, + "expected": -1968.9815102058928, + "message": "Backtrader=$-1,968.9815102059, ML4T=$-1,968.9815102059 (exact_diff=$0.0000000000; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.60814733953958, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.45748319060958, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 784.9335851069991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.45437958786464, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.08610799907683, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1036.8271588787811, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38204994874458, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.71601114824131, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -566.6038800503284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.71039543710606, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.8683586568498, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -284.2036780256258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.13978308113177, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.8171037998875, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -632.2679281244264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.93442070324893, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.09833775673918, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 216.39170534902496, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.36949003998848, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.88153936685327, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -48.79506731352103, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.75324417977555, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.6258103229066, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": -12.743385686895635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.98032334731569, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.29871774033565, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 131.8394393019953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.96173309706192, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.75468167821839, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -520.705141884353, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.60814733953957, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.45748319060958, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 784.9335851070009, + "pnl": 784.9335851070009, + "pnlcomm": 784.9335851070009, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.45437958786462, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.08610799907683, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1036.8271588787793, + "pnl": -1036.8271588787793, + "pnlcomm": -1036.8271588787793, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.3820499487446, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.71601114824131, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -566.6038800503287, + "pnl": -566.6038800503287, + "pnlcomm": -566.6038800503287, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.71039543710606, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.8683586568498, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -284.2036780256265, + "pnl": -284.2036780256265, + "pnlcomm": -284.2036780256265, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.13978308113177, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.8171037998875, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -632.2679281244262, + "pnl": -632.2679281244262, + "pnlcomm": -632.2679281244262, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.93442070324892, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.09833775673918, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 216.3917053490266, + "pnl": 216.3917053490266, + "pnlcomm": 216.3917053490266, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.36949003998846, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.88153936685327, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -48.795067313518814, + "pnl": -48.795067313518814, + "pnlcomm": -48.795067313518814, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.75324417977554, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.6258103229066, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": -12.743385686893305, + "pnl": -12.743385686893305, + "pnlcomm": -12.743385686893305, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.98032334731568, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.29871774033565, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 131.83943930199717, + "pnl": 131.83943930199717, + "pnlcomm": 131.83943930199717, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.96173309706191, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.75468167821839, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -520.705141884352, + "pnl": -520.705141884352, + "pnlcomm": -520.705141884352, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.60814733953958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.45748319060958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.45437958786464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.08610799907683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.38204994874458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.71601114824131, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.71039543710606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.8683586568498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.13978308113177, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.8171037998875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 79.93442070324893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.09833775673918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.36949003998848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.88153936685327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.75324417977555, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.6258103229066, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.98032334731569, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 83.29871774033565, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.96173309706192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.75468167821839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.60814733953957, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.45748319060958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 107.45437958786462, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.08610799907683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.3820499487446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.71601114824131, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.71039543710606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.8683586568498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.13978308113177, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.8171037998875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.93442070324892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.09833775673918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.36949003998846, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.88153936685327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.75324417977554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.6258103229066, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.98032334731568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.29871774033565, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.96173309706191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.75468167821839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "08" + }, "detail": null, + "duration_seconds": 0.2054341621696949, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 0.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.60814733953957, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.45748319060958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 107.45437958786462, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.08610799907683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.3820499487446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.71601114824131, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.71039543710606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.8683586568498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.13978308113177, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.8171037998875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.93442070324892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.09833775673918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.36949003998846, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.88153936685327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.75324417977554, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.6258103229066, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.98032334731568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.29871774033565, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.96173309706191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.75468167821839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98031.0184897941, + "framework": "Backtrader", + "num_trades": 10, + "total_pnl": -1968.9815102058928, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.60814733953957, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.45748319060958, + "exit_time": "2020-01-08T00:00:00", + "gross_pnl": 784.9335851070009, + "pnl": 784.9335851070009, + "pnlcomm": 784.9335851070009, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.45437958786462, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.08610799907683, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": -1036.8271588787793, + "pnl": -1036.8271588787793, + "pnlcomm": -1036.8271588787793, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.3820499487446, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.71601114824131, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -566.6038800503287, + "pnl": -566.6038800503287, + "pnlcomm": -566.6038800503287, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.71039543710606, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.8683586568498, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": -284.2036780256265, + "pnl": -284.2036780256265, + "pnlcomm": -284.2036780256265, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.13978308113177, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.8171037998875, + "exit_time": "2020-02-17T00:00:00", + "gross_pnl": -632.2679281244262, + "pnl": -632.2679281244262, + "pnlcomm": -632.2679281244262, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.93442070324892, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.09833775673918, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": 216.3917053490266, + "pnl": 216.3917053490266, + "pnlcomm": 216.3917053490266, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.36949003998846, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.88153936685327, + "exit_time": "2020-03-08T00:00:00", + "gross_pnl": -48.795067313518814, + "pnl": -48.795067313518814, + "pnlcomm": -48.795067313518814, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.75324417977554, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.6258103229066, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": -12.743385686893305, + "pnl": -12.743385686893305, + "pnlcomm": -12.743385686893305, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.98032334731568, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.29871774033565, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": 131.83943930199717, + "pnl": 131.83943930199717, + "pnlcomm": 131.83943930199717, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.96173309706191, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.75468167821839, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": -520.705141884352, + "pnl": -520.705141884352, + "pnlcomm": -520.705141884352, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.60814733953958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.45748319060958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.45437958786464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.08610799907683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.38204994874458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.71601114824131, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.71039543710606, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.8683586568498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.13978308113177, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.8171037998875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 79.93442070324893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.09833775673918, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.36949003998848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.88153936685327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.75324417977555, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.6258103229066, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 81.98032334731569, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 83.29871774033565, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.96173309706192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.75468167821839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 98031.01848979409, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": -1968.9815102059074, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.60814733953958, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.45748319060958, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 784.9335851069991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 107.45437958786464, + "entry_time": "2020-01-13T00:00:00", + "exit_price": 97.08610799907683, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": -1036.8271588787811, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.38204994874458, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.71601114824131, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -566.6038800503284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.71039543710606, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 88.8683586568498, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": -284.2036780256258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.13978308113177, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 79.8171037998875, + "exit_reason": "signal", + "exit_time": "2020-02-17T00:00:00", + "pnl": -632.2679281244264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 79.93442070324893, + "entry_time": "2020-02-22T00:00:00", + "exit_price": 82.09833775673918, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": 216.39170534902496, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.36949003998848, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 81.88153936685327, + "exit_reason": "signal", + "exit_time": "2020-03-08T00:00:00", + "pnl": -48.79506731352103, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.75324417977555, + "entry_time": "2020-03-13T00:00:00", + "exit_price": 85.6258103229066, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": -12.743385686895635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 81.98032334731569, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 83.29871774033565, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": 131.8394393019953, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.96173309706192, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.75468167821839, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -520.705141884353, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d2d36326d5a7ec88f577088205574b8a9f6dab9661ed6813d190c138c4c8208f" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "fa1946cbf9ef0bb21ff45ffeb8a251d50b24f15e8240155e87d22ad9a84cccbd", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "08", @@ -393,8 +171752,421 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 2, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 2, + "message": "Backtrader=2, ML4T=2, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 100156.1115244063, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 100156.1115244063, + "message": "Backtrader=$100,156.1115244063, ML4T=$100,156.1115244063 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 156.11152440629667, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 156.11152440629667, + "message": "Backtrader=$156.1115244063, ML4T=$156.1115244063 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.71081856450044, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 104.29858222929766, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-02T00:00:00", + "pnl": 358.7763664797221, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.42950315678222, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 96.4028547360479, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": -202.66484207343092, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.71081856450044, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 104.29858222929766, + "exit_time": "2020-02-02T00:00:00", + "gross_pnl": 358.77636647972224, + "pnl": 358.77636647972224, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.42950315678222, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 96.4028547360479, + "exit_time": "2020-03-04T00:00:00", + "gross_pnl": -202.66484207343183, + "pnl": -202.66484207343183, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.71081856450044, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.42950315678222, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.4028547360479, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.71081856450044, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42950315678222, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.4028547360479, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "09" + }, "detail": null, + "duration_seconds": 0.19329984905198216, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.71081856450044, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42950315678222, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.4028547360479, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 100156.1115244063, + "framework": "Backtrader", + "num_trades": 2, + "total_pnl": 156.11152440629667, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.71081856450044, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 104.29858222929766, + "exit_time": "2020-02-02T00:00:00", + "gross_pnl": 358.77636647972224, + "pnl": 358.77636647972224, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.42950315678222, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 96.4028547360479, + "exit_time": "2020-03-04T00:00:00", + "gross_pnl": -202.66484207343183, + "pnl": -202.66484207343183, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.71081856450044, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 104.29858222929766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.42950315678222, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 96.4028547360479, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 100156.1115244063, + "framework": "ml4t.backtest", + "num_trades": 2, + "total_pnl": 156.11152440629667, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.71081856450044, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 104.29858222929766, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-02T00:00:00", + "pnl": 358.7763664797221, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.42950315678222, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 96.4028547360479, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": -202.66484207343092, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "6f82ba4bceb1436137d9a4d844fa16973426eacd177ec088ab0f1e40ec12288d", + "scenario": "80d8dea99e845ad7f708cc42fb94f66feababcf8b6814e3096300af1f4b709c2" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "0ab00a6cfc6f76a1d74f0617186a4d5c95d27cb4fd62bd5c535b3b191965369d", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 2, + "exit_signals": 0, + "framework_closed_trades": 2, + "framework_fills": 4, + "framework_intents": 2, + "framework_orders": null, + "ml4t_closed_trades": 2, + "ml4t_fills": 4, + "ml4t_intents": 2, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "09", @@ -402,8 +172174,537 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 3, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 3, + "message": "Backtrader=3, ML4T=3, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99746.27846092179, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99746.27846092179, + "message": "Backtrader=$99,746.2784609218, ML4T=$99,746.2784609218 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -253.72153907820757, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -253.72153907820757, + "message": "Backtrader=$-253.7215390782, ML4T=$-253.7215390782 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.26373067097099, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-15T00:00:00", + "pnl": -526.3730670970981, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36091810440048, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 100.49905118623735, + "exit_reason": "take_profit", + "exit_time": "2020-02-12T00:00:00", + "pnl": 813.8133081836877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.04551232721302, + "entry_time": "2020-02-27T00:00:00", + "exit_price": 96.63389452556515, + "exit_reason": "stop_loss", + "exit_time": "2020-03-06T00:00:00", + "pnl": -541.1617801647863, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.26373067097099, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-15T00:00:00", + "gross_pnl": -526.3730670970986, + "pnl": -526.3730670970986, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36091810440048, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 100.49905118623735, + "exit_time": "2020-02-12T00:00:00", + "gross_pnl": 813.813308183687, + "pnl": 813.813308183687, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.04551232721302, + "entry_time": "2020-02-27T00:00:00", + "exit_price": 96.63389452556515, + "exit_time": "2020-03-06T00:00:00", + "gross_pnl": -541.1617801647865, + "pnl": -541.1617801647865, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.26373067097099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36091810440048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 102.04551232721302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.26373067097099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36091810440048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 102.04551232721302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "10" + }, "detail": null, + "duration_seconds": 0.19371586805209517, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.26373067097099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36091810440048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 102.04551232721302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "final_value": 99746.27846092179, + "framework": "Backtrader", + "num_trades": 3, + "total_pnl": -253.72153907820757, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.26373067097099, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 95.0, + "exit_time": "2020-01-15T00:00:00", + "gross_pnl": -526.3730670970986, + "pnl": -526.3730670970986, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36091810440048, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 100.49905118623735, + "exit_time": "2020-02-12T00:00:00", + "gross_pnl": 813.813308183687, + "pnl": 813.813308183687, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.04551232721302, + "entry_time": "2020-02-27T00:00:00", + "exit_price": 96.63389452556515, + "exit_time": "2020-03-06T00:00:00", + "gross_pnl": -541.1617801647865, + "pnl": -541.1617801647865, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.26373067097099, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 95.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36091810440048, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 100.49905118623735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 102.04551232721302, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 96.63389452556515, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-06T00:00:00" + } + ], + "final_value": 99746.27846092179, + "framework": "ml4t.backtest", + "num_trades": 3, + "total_pnl": -253.72153907820757, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.26373067097099, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 95.0, + "exit_reason": "stop_loss", + "exit_time": "2020-01-15T00:00:00", + "pnl": -526.3730670970981, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36091810440048, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 100.49905118623735, + "exit_reason": "take_profit", + "exit_time": "2020-02-12T00:00:00", + "pnl": 813.8133081836877, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 102.04551232721302, + "entry_time": "2020-02-27T00:00:00", + "exit_price": 96.63389452556515, + "exit_reason": "stop_loss", + "exit_time": "2020-03-06T00:00:00", + "pnl": -541.1617801647863, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "6f82ba4bceb1436137d9a4d844fa16973426eacd177ec088ab0f1e40ec12288d", + "scenario": "ca329113ef7eae6ef6cb075659587a244d4808ab35df74a891dcea2db9151f0e" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "c46f13757f77a357bcf860856d78551fd3d0b5a707fc379bb9be724a04e1d219", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 3, + "exit_signals": 0, + "framework_closed_trades": 3, + "framework_fills": 6, + "framework_intents": 3, + "framework_orders": null, + "ml4t_closed_trades": 3, + "ml4t_fills": 6, + "ml4t_intents": 3, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "10", @@ -411,8 +172712,1349 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 10, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 10, + "message": "Backtrader=10, ML4T=10, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 1001647.2716363404, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 0.0, + "expected": 1001647.2716363404, + "message": "Backtrader=$1,001,647.2716363404, ML4T=$1,001,647.2716363404 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1647.271636340418, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 0.0, + "expected": 1647.271636340418, + "message": "Backtrader=$1,647.2716363404, ML4T=$1,647.2716363404 (exact_diff=$0.0000000000; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 107.71791520752839, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 96.97480503204176, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": 1074.3110175486636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 90.27021475807082, + "entry_time": "2020-01-28T00:00:00", + "exit_price": 88.76448761173079, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": 150.5727146340032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.27967066143849, + "entry_time": "2020-02-17T00:00:00", + "exit_price": 81.7304119228052, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -145.07412613667202, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 82.02773863577156, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 85.75713194830126, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": -372.9393312529719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.1473889960404, + "entry_time": "2020-03-28T00:00:00", + "exit_price": 81.41346554365083, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": 173.39234523895811, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.17900380032793, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 81.66999422482027, + "exit_reason": "signal", + "exit_time": "2020-04-27T00:00:00", + "pnl": -149.09904244923382, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.80008932877531, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 80.01376127293886, + "exit_reason": "signal", + "exit_time": "2020-05-17T00:00:00", + "pnl": 578.6328055836457, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 78.56029941307106, + "entry_time": "2020-05-27T00:00:00", + "exit_price": 80.64101214269384, + "exit_reason": "signal", + "exit_time": "2020-06-06T00:00:00", + "pnl": -208.07127296227736, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 84.47767320205111, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 85.61788283185616, + "exit_reason": "signal", + "exit_time": "2020-06-26T00:00:00", + "pnl": -114.02096298050674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.69954840962144, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 86.10387351845584, + "exit_reason": "signal", + "exit_time": "2020-07-16T00:00:00", + "pnl": 659.56748911656, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 107.71791520752839, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 96.97480503204176, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": 1074.3110175486636, + "pnl": 1074.3110175486636, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 90.27021475807082, + "entry_time": "2020-01-28T00:00:00", + "exit_price": 88.76448761173079, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": 150.57271463400355, + "pnl": 150.57271463400355, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.27967066143849, + "entry_time": "2020-02-17T00:00:00", + "exit_price": 81.7304119228052, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": -145.07412613667157, + "pnl": -145.07412613667157, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 82.02773863577154, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 85.75713194830126, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": -372.9393312529723, + "pnl": -372.9393312529723, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.1473889960404, + "entry_time": "2020-03-28T00:00:00", + "exit_price": 81.41346554365083, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": 173.39234523895755, + "pnl": 173.39234523895755, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.17900380032793, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 81.66999422482027, + "exit_time": "2020-04-27T00:00:00", + "gross_pnl": -149.09904244923382, + "pnl": -149.09904244923382, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.80008932877531, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 80.01376127293886, + "exit_time": "2020-05-17T00:00:00", + "gross_pnl": 578.632805583645, + "pnl": 578.632805583645, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 78.56029941307106, + "entry_time": "2020-05-27T00:00:00", + "exit_price": 80.64101214269384, + "exit_time": "2020-06-06T00:00:00", + "gross_pnl": -208.07127296227748, + "pnl": -208.07127296227748, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 84.47767320205111, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 85.61788283185616, + "exit_time": "2020-06-26T00:00:00", + "gross_pnl": -114.02096298050566, + "pnl": -114.02096298050566, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.69954840962144, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 86.10387351845584, + "exit_time": "2020-07-16T00:00:00", + "gross_pnl": 659.5674891165601, + "pnl": 659.5674891165601, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.71791520752839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.97480503204176, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.27021475807082, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.76448761173079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.27967066143849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.7304119228052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.02773863577156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.75713194830126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.1473889960404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.41346554365083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.17900380032793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66999422482027, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.80008932877531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.01376127293886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 78.56029941307106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.64101214269384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 84.47767320205111, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.61788283185616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.69954840962144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 86.10387351845584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 107.71791520752839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.97480503204174, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.27021475807082, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.76448761173079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.27967066143849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.7304119228052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.02773863577154, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.75713194830126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.1473889960404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.41346554365083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.17900380032793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66999422482027, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.80008932877531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.01376127293886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 78.56029941307106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.64101214269384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 84.47767320205111, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.61788283185616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69954840962144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.10387351845584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "11" + }, "detail": null, + "duration_seconds": 0.19985837815329432, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 107.71791520752839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.97480503204174, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.27021475807082, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.76448761173079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.27967066143849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.7304119228052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.02773863577154, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.75713194830126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.1473889960404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.41346554365083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.17900380032793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.66999422482027, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.80008932877531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.01376127293886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 78.56029941307106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.64101214269384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 84.47767320205111, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.61788283185616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69954840962144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.10387351845584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + } + ], + "final_value": 1001647.2716363404, + "framework": "Backtrader", + "num_trades": 10, + "total_pnl": 1647.271636340418, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 107.71791520752839, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 96.97480503204176, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": 1074.3110175486636, + "pnl": 1074.3110175486636, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 90.27021475807082, + "entry_time": "2020-01-28T00:00:00", + "exit_price": 88.76448761173079, + "exit_time": "2020-02-07T00:00:00", + "gross_pnl": 150.57271463400355, + "pnl": 150.57271463400355, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.27967066143849, + "entry_time": "2020-02-17T00:00:00", + "exit_price": 81.7304119228052, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": -145.07412613667157, + "pnl": -145.07412613667157, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 82.02773863577154, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 85.75713194830126, + "exit_time": "2020-03-18T00:00:00", + "gross_pnl": -372.9393312529723, + "pnl": -372.9393312529723, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.1473889960404, + "entry_time": "2020-03-28T00:00:00", + "exit_price": 81.41346554365083, + "exit_time": "2020-04-07T00:00:00", + "gross_pnl": 173.39234523895755, + "pnl": 173.39234523895755, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.17900380032793, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 81.66999422482027, + "exit_time": "2020-04-27T00:00:00", + "gross_pnl": -149.09904244923382, + "pnl": -149.09904244923382, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.80008932877531, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 80.01376127293886, + "exit_time": "2020-05-17T00:00:00", + "gross_pnl": 578.632805583645, + "pnl": 578.632805583645, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 78.56029941307106, + "entry_time": "2020-05-27T00:00:00", + "exit_price": 80.64101214269384, + "exit_time": "2020-06-06T00:00:00", + "gross_pnl": -208.07127296227748, + "pnl": -208.07127296227748, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 84.47767320205111, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 85.61788283185616, + "exit_time": "2020-06-26T00:00:00", + "gross_pnl": -114.02096298050566, + "pnl": -114.02096298050566, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.69954840962144, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 86.10387351845584, + "exit_time": "2020-07-16T00:00:00", + "gross_pnl": 659.5674891165601, + "pnl": 659.5674891165601, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.71791520752839, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.97480503204176, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.27021475807082, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.76448761173079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.27967066143849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.7304119228052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.02773863577156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.75713194830126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 83.1473889960404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.41346554365083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.17900380032793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.66999422482027, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.80008932877531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.01376127293886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 78.56029941307106, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.64101214269384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 84.47767320205111, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.61788283185616, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.69954840962144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 86.10387351845584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + } + ], + "final_value": 1001647.2716363404, + "framework": "ml4t.backtest", + "num_trades": 10, + "total_pnl": 1647.271636340418, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 107.71791520752839, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 96.97480503204176, + "exit_reason": "signal", + "exit_time": "2020-01-18T00:00:00", + "pnl": 1074.3110175486636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 90.27021475807082, + "entry_time": "2020-01-28T00:00:00", + "exit_price": 88.76448761173079, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": 150.5727146340032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.27967066143849, + "entry_time": "2020-02-17T00:00:00", + "exit_price": 81.7304119228052, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -145.07412613667202, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 82.02773863577156, + "entry_time": "2020-03-08T00:00:00", + "exit_price": 85.75713194830126, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": -372.9393312529719, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 83.1473889960404, + "entry_time": "2020-03-28T00:00:00", + "exit_price": 81.41346554365083, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": 173.39234523895811, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.17900380032793, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 81.66999422482027, + "exit_reason": "signal", + "exit_time": "2020-04-27T00:00:00", + "pnl": -149.09904244923382, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 85.80008932877531, + "entry_time": "2020-05-07T00:00:00", + "exit_price": 80.01376127293886, + "exit_reason": "signal", + "exit_time": "2020-05-17T00:00:00", + "pnl": 578.6328055836457, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 78.56029941307106, + "entry_time": "2020-05-27T00:00:00", + "exit_price": 80.64101214269384, + "exit_reason": "signal", + "exit_time": "2020-06-06T00:00:00", + "pnl": -208.07127296227736, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 84.47767320205111, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 85.61788283185616, + "exit_reason": "signal", + "exit_time": "2020-06-26T00:00:00", + "pnl": -114.02096298050674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 92.69954840962144, + "entry_time": "2020-07-06T00:00:00", + "exit_price": 86.10387351845584, + "exit_reason": "signal", + "exit_time": "2020-07-16T00:00:00", + "pnl": 659.56748911656, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "be4345288348f6a276f38cb4a364261003c925cddc5d9423b667fb82c34cff1b", + "scenario": "88c5993243d7dfa17cc8ed4d7979639e4846f1a3d5a9f1b62007e934bd9f73b5" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "e0efe74473f286a7ddeb3a4e39d9eb7a2443b69474480e9e4fcf97459672b93b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 200, + "entry_signals": 10, + "exit_signals": 10, + "framework_closed_trades": 10, + "framework_fills": 20, + "framework_intents": 20, + "framework_orders": null, + "ml4t_closed_trades": 10, + "ml4t_fills": 20, + "ml4t_intents": 20, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "11", @@ -420,8 +174062,421 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 2, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 2, + "message": "Backtrader=2, ML4T=2, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 1001492.5493344698, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 1001492.5493344698, + "message": "Backtrader=$1,001,492.5493344698, ML4T=$1,001,492.5493344698 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1492.5493344698334, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 1492.5493344698334, + "message": "Backtrader=$1,492.5493344698, ML4T=$1,492.5493344698 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 99.71364930598455, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 87.2667981247593, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-03T00:00:00", + "pnl": 1244.6851181225247, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 86.20038845448721, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 83.7217462910142, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": 247.8642163473014, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 99.71364930598455, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 87.2667981247593, + "exit_time": "2020-02-03T00:00:00", + "gross_pnl": 1244.6851181225243, + "pnl": 1244.6851181225243, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 86.20038845448722, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 83.7217462910142, + "exit_time": "2020-03-04T00:00:00", + "gross_pnl": 247.8642163473026, + "pnl": 247.8642163473026, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.71364930598455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.20038845448721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.7217462910142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 99.71364930598455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.20038845448722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.7217462910142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "12" + }, "detail": null, + "duration_seconds": 0.1941849859431386, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 99.71364930598455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.20038845448722, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.7217462910142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 1001492.5493344698, + "framework": "Backtrader", + "num_trades": 2, + "total_pnl": 1492.5493344698334, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 99.71364930598455, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 87.2667981247593, + "exit_time": "2020-02-03T00:00:00", + "gross_pnl": 1244.6851181225243, + "pnl": 1244.6851181225243, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 86.20038845448722, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 83.7217462910142, + "exit_time": "2020-03-04T00:00:00", + "gross_pnl": 247.8642163473026, + "pnl": 247.8642163473026, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.71364930598455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 87.2667981247593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.20038845448721, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.7217462910142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-04T00:00:00" + } + ], + "final_value": 1001492.5493344698, + "framework": "ml4t.backtest", + "num_trades": 2, + "total_pnl": 1492.5493344698334, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 99.71364930598455, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 87.2667981247593, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-03T00:00:00", + "pnl": 1244.6851181225247, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 86.20038845448721, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 83.7217462910142, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-04T00:00:00", + "pnl": 247.8642163473014, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4dc2ca9d958a93592d8d31cfc054fccac9f460314cad187d221981191d6a9898", + "scenario": "51166032bf2c4582113ae77995f8db134af72ee7ccdca2dfa4b989fc48295e33" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "3057fb1181d8b6bde3b0f0c71860dca5701293bcd956920c618e911bce7d0c67", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 100, + "entry_signals": 2, + "exit_signals": 0, + "framework_closed_trades": 2, + "framework_fills": 4, + "framework_intents": 2, + "framework_orders": null, + "ml4t_closed_trades": 2, + "ml4t_fills": 4, + "ml4t_intents": 2, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "12", @@ -429,8 +174484,305 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Backtrader=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 100760.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 100760.0, + "message": "Backtrader=$100,760.0000000000, ML4T=$100,760.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 760.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 760.0, + "message": "Backtrader=$760.0000000000, ML4T=$760.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.39999999999999, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.0, + "exit_reason": "take_profit", + "exit_time": "2020-01-13T00:00:00", + "pnl": 760.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.0, + "exit_time": "2020-01-13T00:00:00", + "gross_pnl": 759.9999999999994, + "pnl": 759.9999999999994, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.39999999999999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "13" + }, "detail": null, + "duration_seconds": 0.18681644089519978, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "final_value": 100760.0, + "framework": "Backtrader", + "num_trades": 1, + "total_pnl": 760.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.0, + "exit_time": "2020-01-13T00:00:00", + "gross_pnl": 759.9999999999994, + "pnl": 759.9999999999994, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.39999999999999, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 108.0, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + } + ], + "final_value": 100760.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": 760.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.39999999999999, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.0, + "exit_reason": "take_profit", + "exit_time": "2020-01-13T00:00:00", + "pnl": 760.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "6f82ba4bceb1436137d9a4d844fa16973426eacd177ec088ab0f1e40ec12288d", + "scenario": "b39049d150f6fc2c71a16c642dc255e53e92c4840e949226036d175bccc4e1b0" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "6868775136fad190c5e2fffe0cb05f259b244161572731b86777972b78ea5fb5", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "13", @@ -438,8 +174790,305 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Backtrader=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99859.95449782923, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99859.95449782923, + "message": "Backtrader=$99,859.9544978292, ML4T=$99,859.9544978292 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -140.04550217077485, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -140.04550217077485, + "message": "Backtrader=$-140.0455021708, ML4T=$-140.0455021708 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 98.89954497829228, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-12T00:00:00", + "pnl": -140.04550217077121, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 98.89954497829228, + "exit_time": "2020-01-12T00:00:00", + "gross_pnl": -140.04550217077139, + "pnl": -140.04550217077139, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.3, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "14" + }, "detail": null, + "duration_seconds": 0.21248964685946703, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "final_value": 99859.95449782923, + "framework": "Backtrader", + "num_trades": 1, + "total_pnl": -140.04550217077485, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 98.89954497829228, + "exit_time": "2020-01-12T00:00:00", + "gross_pnl": -140.04550217077139, + "pnl": -140.04550217077139, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.3, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 98.89954497829228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-12T00:00:00" + } + ], + "final_value": 99859.95449782923, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -140.04550217077485, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 98.89954497829228, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-12T00:00:00", + "pnl": -140.04550217077121, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "6f82ba4bceb1436137d9a4d844fa16973426eacd177ec088ab0f1e40ec12288d", + "scenario": "875c440f742f71bb0793ff5c4c6a1a0080b961930e6d2a24493cfa3e4c1d80b5" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "515cb2ead81157a5d033173889d2a47af873b49bb750c0fedf91036506520aa2", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "14", @@ -447,8 +175096,305 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Backtrader=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99709.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99709.0, + "message": "Backtrader=$99,709.0000000000, ML4T=$99,709.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -291.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": -291.0, + "message": "Backtrader=$-291.0000000000, ML4T=$-291.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.7, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 93.79, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-04T00:00:00", + "pnl": -291.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.7, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 93.79, + "exit_time": "2020-01-04T00:00:00", + "gross_pnl": -290.99999999999966, + "pnl": -290.99999999999966, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.7, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 93.79, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-04T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-04T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "15" + }, "detail": null, + "duration_seconds": 0.30493300617672503, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-04T00:00:00" + } + ], + "final_value": 99709.0, + "framework": "Backtrader", + "num_trades": 1, + "total_pnl": -291.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.7, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 93.79, + "exit_time": "2020-01-04T00:00:00", + "gross_pnl": -290.99999999999966, + "pnl": -290.99999999999966, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.7, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 93.79, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-04T00:00:00" + } + ], + "final_value": 99709.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -291.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.7, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 93.79, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-04T00:00:00", + "pnl": -291.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "6f82ba4bceb1436137d9a4d844fa16973426eacd177ec088ab0f1e40ec12288d", + "scenario": "fccddcd3455a97b6ce7c416cc2b41672c9d79511da75211739c16c90e940c969" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "0e9ac5d663e87ef8d9d42db148ea6b689902b2533884263ccde90d5ba20fc135", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 50, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "15", @@ -456,17 +175402,72989 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 9, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 9, + "message": "Backtrader=9, ML4T=9, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 102511.83846305782, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 102511.83846305782, + "message": "Backtrader=$102,511.8384630578, ML4T=$102,511.8384630578 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 2511.838463057822, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 1.0, + "difference": 0.0, + "expected": 2511.838463057822, + "message": "Backtrader=$2,511.8384630578, ML4T=$2,511.8384630578 (exact_diff=$0.0000000000; diagnostic_limit=$1.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88792565869595, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 101.31576810089561, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-18T00:00:00", + "pnl": 42.78424421996533, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 106.57417661234877, + "entry_time": "2020-04-12T00:00:00", + "exit_price": 100.62156894483525, + "exit_reason": "trailing_stop", + "exit_time": "2020-04-22T00:00:00", + "pnl": -595.2607667513512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 68.04256151123884, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 84.84002198824555, + "exit_reason": "trailing_stop", + "exit_time": "2020-09-21T00:00:00", + "pnl": 1679.7460477006707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 145.76327269857916, + "entry_time": "2021-02-06T00:00:00", + "exit_price": 141.12149237162103, + "exit_reason": "trailing_stop", + "exit_time": "2021-02-12T00:00:00", + "pnl": -464.1780326958142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 116.78041573195996, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 162.02045548941425, + "exit_reason": "trailing_stop", + "exit_time": "2021-08-08T00:00:00", + "pnl": 4524.003975745429, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 227.8214436031379, + "entry_time": "2021-12-03T00:00:00", + "exit_price": 211.77483585719543, + "exit_reason": "trailing_stop", + "exit_time": "2021-12-05T00:00:00", + "pnl": -1604.6607745942492, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 123.82384824945187, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 117.32485396521913, + "exit_reason": "trailing_stop", + "exit_time": "2022-04-08T00:00:00", + "pnl": -649.899428423274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.97969816322932, + "entry_time": "2022-09-29T00:00:00", + "exit_price": 83.93629293465128, + "exit_reason": "trailing_stop", + "exit_time": "2022-10-07T00:00:00", + "pnl": -304.3405228578031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88588285177968, + "entry_time": "2023-04-17T00:00:00", + "exit_price": 89.72232005892202, + "exit_reason": "trailing_stop", + "exit_time": "2023-05-17T00:00:00", + "pnl": -116.3562792857665, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88792565869595, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 101.31576810089561, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": 42.78424421996618, + "pnl": 42.78424421996618, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 106.57417661234877, + "entry_time": "2020-04-12T00:00:00", + "exit_price": 100.62156894483525, + "exit_time": "2020-04-22T00:00:00", + "gross_pnl": -595.2607667513519, + "pnl": -595.2607667513519, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 68.04256151123884, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 84.84002198824557, + "exit_time": "2020-09-21T00:00:00", + "gross_pnl": 1679.7460477006723, + "pnl": 1679.7460477006723, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 145.76327269857916, + "entry_time": "2021-02-06T00:00:00", + "exit_price": 141.12149237162103, + "exit_time": "2021-02-12T00:00:00", + "gross_pnl": -464.1780326958127, + "pnl": -464.1780326958127, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 116.78041573195996, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 162.02045548941427, + "exit_time": "2021-08-08T00:00:00", + "gross_pnl": 4524.0039757454315, + "pnl": 4524.0039757454315, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 227.82144360313794, + "entry_time": "2021-12-03T00:00:00", + "exit_price": 211.77483585719543, + "exit_time": "2021-12-05T00:00:00", + "gross_pnl": -1604.660774594251, + "pnl": -1604.660774594251, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 123.82384824945187, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 117.32485396521913, + "exit_time": "2022-04-08T00:00:00", + "gross_pnl": -649.8994284232737, + "pnl": -649.8994284232737, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.97969816322932, + "entry_time": "2022-09-29T00:00:00", + "exit_price": 83.93629293465128, + "exit_time": "2022-10-07T00:00:00", + "gross_pnl": -304.3405228578038, + "pnl": -304.3405228578038, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88588285177968, + "entry_time": "2023-04-17T00:00:00", + "exit_price": 89.72232005892202, + "exit_time": "2023-05-17T00:00:00", + "gross_pnl": -116.3562792857661, + "pnl": -116.3562792857661, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.88792565869595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 101.31576810089561, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 106.57417661234877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 100.62156894483525, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 68.04256151123884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 84.84002198824555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 145.76327269857916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 116.78041573195996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 162.02045548941425, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 227.8214436031379, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 211.77483585719543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 123.82384824945187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 117.32485396521913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.97969816322932, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.88588285177968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 89.72232005892202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.88792565869595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.3157681008956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 106.57417661234877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.62156894483525, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 68.04256151123884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 84.84002198824557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 145.76327269857916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 116.78041573195996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 162.02045548941427, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 227.82144360313794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 211.77483585719543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 123.82384824945187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 117.32485396521913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.97969816322932, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.88588285177968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.72232005892201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "16" + }, "detail": null, + "duration_seconds": 0.3116491751279682, "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.88792565869595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.3157681008956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 106.57417661234877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.62156894483525, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 68.04256151123884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 84.84002198824557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 145.76327269857916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 116.78041573195996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 162.02045548941427, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 227.82144360313794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 211.77483585719543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 123.82384824945187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 117.32485396521913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.97969816322932, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.88588285177968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.72232005892201, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + } + ], + "final_value": 102511.83846305782, + "framework": "Backtrader", + "num_trades": 9, + "total_pnl": 2511.838463057822, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88792565869595, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 101.31576810089561, + "exit_time": "2020-01-18T00:00:00", + "gross_pnl": 42.78424421996618, + "pnl": 42.78424421996618, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 106.57417661234877, + "entry_time": "2020-04-12T00:00:00", + "exit_price": 100.62156894483525, + "exit_time": "2020-04-22T00:00:00", + "gross_pnl": -595.2607667513519, + "pnl": -595.2607667513519, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 68.04256151123884, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 84.84002198824557, + "exit_time": "2020-09-21T00:00:00", + "gross_pnl": 1679.7460477006723, + "pnl": 1679.7460477006723, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 145.76327269857916, + "entry_time": "2021-02-06T00:00:00", + "exit_price": 141.12149237162103, + "exit_time": "2021-02-12T00:00:00", + "gross_pnl": -464.1780326958127, + "pnl": -464.1780326958127, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 116.78041573195996, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 162.02045548941427, + "exit_time": "2021-08-08T00:00:00", + "gross_pnl": 4524.0039757454315, + "pnl": 4524.0039757454315, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 227.82144360313794, + "entry_time": "2021-12-03T00:00:00", + "exit_price": 211.77483585719543, + "exit_time": "2021-12-05T00:00:00", + "gross_pnl": -1604.660774594251, + "pnl": -1604.660774594251, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 123.82384824945187, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 117.32485396521913, + "exit_time": "2022-04-08T00:00:00", + "gross_pnl": -649.8994284232737, + "pnl": -649.8994284232737, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.97969816322932, + "entry_time": "2022-09-29T00:00:00", + "exit_price": 83.93629293465128, + "exit_time": "2022-10-07T00:00:00", + "gross_pnl": -304.3405228578038, + "pnl": -304.3405228578038, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88588285177968, + "entry_time": "2023-04-17T00:00:00", + "exit_price": 89.72232005892202, + "exit_time": "2023-05-17T00:00:00", + "gross_pnl": -116.3562792857661, + "pnl": -116.3562792857661, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.88792565869595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 101.31576810089561, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 106.57417661234877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 100.62156894483525, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 68.04256151123884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 84.84002198824555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 145.76327269857916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 141.12149237162103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 116.78041573195996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 162.02045548941425, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 227.8214436031379, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 211.77483585719543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 123.82384824945187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 117.32485396521913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.97969816322932, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 83.93629293465128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.88588285177968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 89.72232005892202, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-17T00:00:00" + } + ], + "final_value": 102511.83846305782, + "framework": "ml4t.backtest", + "num_trades": 9, + "total_pnl": 2511.838463057822, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.88792565869595, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 101.31576810089561, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-18T00:00:00", + "pnl": 42.78424421996533, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 106.57417661234877, + "entry_time": "2020-04-12T00:00:00", + "exit_price": 100.62156894483525, + "exit_reason": "trailing_stop", + "exit_time": "2020-04-22T00:00:00", + "pnl": -595.2607667513512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 68.04256151123884, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 84.84002198824555, + "exit_reason": "trailing_stop", + "exit_time": "2020-09-21T00:00:00", + "pnl": 1679.7460477006707, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 145.76327269857916, + "entry_time": "2021-02-06T00:00:00", + "exit_price": 141.12149237162103, + "exit_reason": "trailing_stop", + "exit_time": "2021-02-12T00:00:00", + "pnl": -464.1780326958142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 116.78041573195996, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 162.02045548941425, + "exit_reason": "trailing_stop", + "exit_time": "2021-08-08T00:00:00", + "pnl": 4524.003975745429, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 227.8214436031379, + "entry_time": "2021-12-03T00:00:00", + "exit_price": 211.77483585719543, + "exit_reason": "trailing_stop", + "exit_time": "2021-12-05T00:00:00", + "pnl": -1604.6607745942492, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 123.82384824945187, + "entry_time": "2022-03-13T00:00:00", + "exit_price": 117.32485396521913, + "exit_reason": "trailing_stop", + "exit_time": "2022-04-08T00:00:00", + "pnl": -649.899428423274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.97969816322932, + "entry_time": "2022-09-29T00:00:00", + "exit_price": 83.93629293465128, + "exit_reason": "trailing_stop", + "exit_time": "2022-10-07T00:00:00", + "pnl": -304.3405228578031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.88588285177968, + "entry_time": "2023-04-17T00:00:00", + "exit_price": 89.72232005892202, + "exit_reason": "trailing_stop", + "exit_time": "2023-05-17T00:00:00", + "pnl": -116.3562792857665, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "6f82ba4bceb1436137d9a4d844fa16973426eacd177ec088ab0f1e40ec12288d", + "scenario": "0198df8bd89459f57967743d1f22954c5d08e535d28d96d9ab83461ca73d02b9" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "8b4829a04d740fe6087782188f15eb27044961db12acbcb5f5fdd227e83fde41", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 1500, + "entry_signals": 9, + "exit_signals": 0, + "framework_closed_trades": 9, + "framework_fills": 18, + "framework_intents": 9, + "framework_orders": null, + "ml4t_closed_trades": 9, + "ml4t_fills": 18, + "ml4t_intents": 9, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "16", - "scenario_name": "Stress Test", + "scenario_name": "Regime Path Coverage", "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 600, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 600, + "message": "Backtrader=600, ML4T=600, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98797.57980296039, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 8.731149137020111e-11, + "expected": 98797.5798029603, + "message": "Backtrader=$98,797.5798029603, ML4T=$98,797.5798029604 (exact_diff=$0.0000000001, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1202.4201970396098, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 8.731149137020111e-11, + "expected": -1202.420197039697, + "message": "Backtrader=$-1,202.4201970397, ML4T=$-1,202.4201970396 (exact_diff=$0.0000000001; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.11917253451473, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 99.54841534502786, + "exit_reason": "signal", + "exit_time": "2020-01-04T00:00:00", + "pnl": -157.0757189486867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.03201587878578, + "entry_time": "2020-01-06T00:00:00", + "exit_price": 99.94550278474797, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": -8.651309403781852, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.67183298908238, + "entry_time": "2020-01-09T00:00:00", + "exit_price": 99.86549713479145, + "exit_reason": "signal", + "exit_time": "2020-01-10T00:00:00", + "pnl": 19.36641457090809, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.19160897741419, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 100.48697641782272, + "exit_reason": "signal", + "exit_time": "2020-01-13T00:00:00", + "pnl": 29.536744040851772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.74505140134526, + "entry_time": "2020-01-15T00:00:00", + "exit_price": 99.43249701182592, + "exit_reason": "signal", + "exit_time": "2020-01-16T00:00:00", + "pnl": -31.255438951935503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36317339817481, + "entry_time": "2020-01-18T00:00:00", + "exit_price": 100.3184784020995, + "exit_reason": "signal", + "exit_time": "2020-01-19T00:00:00", + "pnl": 95.53050039246955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.59194698786014, + "entry_time": "2020-01-21T00:00:00", + "exit_price": 99.21300773889088, + "exit_reason": "signal", + "exit_time": "2020-01-22T00:00:00", + "pnl": -37.893924896925455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.93323693635863, + "entry_time": "2020-01-24T00:00:00", + "exit_price": 101.01041702546699, + "exit_reason": "signal", + "exit_time": "2020-01-25T00:00:00", + "pnl": 107.71800891083694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.12882215455511, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 98.82503838919212, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -130.37837653629867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20974209562837, + "entry_time": "2020-01-30T00:00:00", + "exit_price": 99.28418162139361, + "exit_reason": "signal", + "exit_time": "2020-01-31T00:00:00", + "pnl": 7.44395257652468, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91262465479313, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 98.47079432451613, + "exit_reason": "signal", + "exit_time": "2020-02-03T00:00:00", + "pnl": -144.1830330276989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.41396612142576, + "entry_time": "2020-02-05T00:00:00", + "exit_price": 99.74208634353057, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 132.8120222104808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96112016066533, + "entry_time": "2020-02-08T00:00:00", + "exit_price": 99.14757933275934, + "exit_reason": "signal", + "exit_time": "2020-02-09T00:00:00", + "pnl": 18.645917209401887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.33794797010773, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 98.95774776632322, + "exit_reason": "signal", + "exit_time": "2020-02-12T00:00:00", + "pnl": -38.02002037845159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.39809150990904, + "entry_time": "2020-02-14T00:00:00", + "exit_price": 99.29624163714647, + "exit_reason": "signal", + "exit_time": "2020-02-15T00:00:00", + "pnl": -10.184987276257743, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.98044425919083, + "entry_time": "2020-02-17T00:00:00", + "exit_price": 98.71415014911958, + "exit_reason": "signal", + "exit_time": "2020-02-18T00:00:00", + "pnl": -26.629411007124872, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68703409584347, + "entry_time": "2020-02-20T00:00:00", + "exit_price": 99.19660477578049, + "exit_reason": "signal", + "exit_time": "2020-02-21T00:00:00", + "pnl": 50.95706799370237, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.09913803201934, + "entry_time": "2020-02-23T00:00:00", + "exit_price": 99.13975001075532, + "exit_reason": "signal", + "exit_time": "2020-02-24T00:00:00", + "pnl": -95.93880212640215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7525000464393, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 98.67014960303162, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -8.235044340766763, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.16172259245428, + "entry_time": "2020-02-29T00:00:00", + "exit_price": 99.99277550738104, + "exit_reason": "signal", + "exit_time": "2020-03-01T00:00:00", + "pnl": 83.10529149267677, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.726000665382, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 99.27597137389321, + "exit_reason": "signal", + "exit_time": "2020-03-04T00:00:00", + "pnl": 54.99707085112095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.96674656359579, + "entry_time": "2020-03-06T00:00:00", + "exit_price": 99.01407453019127, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -95.2672033404524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.01883446140224, + "entry_time": "2020-03-09T00:00:00", + "exit_price": 99.33686580554885, + "exit_reason": "signal", + "exit_time": "2020-03-10T00:00:00", + "pnl": 31.803134414662054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.61379453469056, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 99.44418682978016, + "exit_reason": "signal", + "exit_time": "2020-03-13T00:00:00", + "pnl": -16.96077049103951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.1261570487614, + "entry_time": "2020-03-15T00:00:00", + "exit_price": 98.90367229199478, + "exit_reason": "signal", + "exit_time": "2020-03-16T00:00:00", + "pnl": 77.75152432333743, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.48715448535594, + "entry_time": "2020-03-18T00:00:00", + "exit_price": 98.53898885220806, + "exit_reason": "signal", + "exit_time": "2020-03-19T00:00:00", + "pnl": -94.81656331478916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.13695584567007, + "entry_time": "2020-03-21T00:00:00", + "exit_price": 98.74920846022493, + "exit_reason": "signal", + "exit_time": "2020-03-22T00:00:00", + "pnl": -138.77473854451455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.28346179234327, + "entry_time": "2020-03-24T00:00:00", + "exit_price": 99.39446913633991, + "exit_reason": "signal", + "exit_time": "2020-03-25T00:00:00", + "pnl": 11.100734399662542, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.38048314487808, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 98.86853857797571, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": -51.19445669023844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.78335766752544, + "entry_time": "2020-03-30T00:00:00", + "exit_price": 100.08258048792489, + "exit_reason": "signal", + "exit_time": "2020-03-31T00:00:00", + "pnl": 29.922282039944548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.04409706752067, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 100.00584315640894, + "exit_reason": "signal", + "exit_time": "2020-04-03T00:00:00", + "pnl": -3.825391111173303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17754603801194, + "entry_time": "2020-04-05T00:00:00", + "exit_price": 99.91386750387461, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": 73.63214658626748, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.07278397148802, + "entry_time": "2020-04-08T00:00:00", + "exit_price": 99.84957817071898, + "exit_reason": "signal", + "exit_time": "2020-04-09T00:00:00", + "pnl": -122.32058007690466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.66685696016805, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 100.29703959359377, + "exit_reason": "signal", + "exit_time": "2020-04-12T00:00:00", + "pnl": 63.01826334257203, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.16284479663989, + "entry_time": "2020-04-14T00:00:00", + "exit_price": 99.59827392536462, + "exit_reason": "signal", + "exit_time": "2020-04-15T00:00:00", + "pnl": -56.45708712752639, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.02427769637677, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 100.02034152325665, + "exit_reason": "signal", + "exit_time": "2020-04-18T00:00:00", + "pnl": -0.39361731201279326, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.10227360972624, + "entry_time": "2020-04-20T00:00:00", + "exit_price": 99.55074957264794, + "exit_reason": "signal", + "exit_time": "2020-04-21T00:00:00", + "pnl": -55.15240370782885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4752285310497, + "entry_time": "2020-04-23T00:00:00", + "exit_price": 100.78482968977629, + "exit_reason": "signal", + "exit_time": "2020-04-24T00:00:00", + "pnl": 30.960115872660026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64550269913406, + "entry_time": "2020-04-26T00:00:00", + "exit_price": 100.75829920829567, + "exit_reason": "signal", + "exit_time": "2020-04-27T00:00:00", + "pnl": 11.2796509161617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.28405624956508, + "entry_time": "2020-04-29T00:00:00", + "exit_price": 100.40750734980367, + "exit_reason": "signal", + "exit_time": "2020-04-30T00:00:00", + "pnl": 12.345110023859888, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.9736108084372, + "entry_time": "2020-05-02T00:00:00", + "exit_price": 99.11719582995507, + "exit_reason": "signal", + "exit_time": "2020-05-03T00:00:00", + "pnl": -185.64149784821348, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4244273841596, + "entry_time": "2020-05-05T00:00:00", + "exit_price": 100.46803368609852, + "exit_reason": "signal", + "exit_time": "2020-05-06T00:00:00", + "pnl": 4.360630193890756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.65390080108091, + "entry_time": "2020-05-08T00:00:00", + "exit_price": 101.55529329412784, + "exit_reason": "signal", + "exit_time": "2020-05-09T00:00:00", + "pnl": 90.1392493046933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.84475344760442, + "entry_time": "2020-05-11T00:00:00", + "exit_price": 101.34547532849058, + "exit_reason": "signal", + "exit_time": "2020-05-12T00:00:00", + "pnl": 50.0721880886158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.83286932713185, + "entry_time": "2020-05-14T00:00:00", + "exit_price": 100.1414110724743, + "exit_reason": "signal", + "exit_time": "2020-05-15T00:00:00", + "pnl": -69.14582546575548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.70880723169135, + "entry_time": "2020-05-17T00:00:00", + "exit_price": 100.37107171120154, + "exit_reason": "signal", + "exit_time": "2020-05-18T00:00:00", + "pnl": -33.77355204898231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17212988349165, + "entry_time": "2020-05-20T00:00:00", + "exit_price": 100.88968353827181, + "exit_reason": "signal", + "exit_time": "2020-05-21T00:00:00", + "pnl": 171.75536547801676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17974473578754, + "entry_time": "2020-05-23T00:00:00", + "exit_price": 99.64495810760246, + "exit_reason": "signal", + "exit_time": "2020-05-24T00:00:00", + "pnl": 46.521337181493436, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86042757757674, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 99.42922022261914, + "exit_reason": "signal", + "exit_time": "2020-05-27T00:00:00", + "pnl": 56.87926450423947, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67123710700702, + "entry_time": "2020-05-29T00:00:00", + "exit_price": 99.1262468099545, + "exit_reason": "signal", + "exit_time": "2020-05-30T00:00:00", + "pnl": 45.500970294748186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99803204217791, + "entry_time": "2020-06-01T00:00:00", + "exit_price": 98.0746490327229, + "exit_reason": "signal", + "exit_time": "2020-06-02T00:00:00", + "pnl": 7.661699054498968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68852164950059, + "entry_time": "2020-06-04T00:00:00", + "exit_price": 98.90683245619206, + "exit_reason": "signal", + "exit_time": "2020-06-05T00:00:00", + "pnl": 21.831080669147923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.69867095887889, + "entry_time": "2020-06-07T00:00:00", + "exit_price": 98.58028409299915, + "exit_reason": "signal", + "exit_time": "2020-06-08T00:00:00", + "pnl": -11.838686587974735, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.78930171959787, + "entry_time": "2020-06-10T00:00:00", + "exit_price": 99.44349309161046, + "exit_reason": "signal", + "exit_time": "2020-06-11T00:00:00", + "pnl": 65.41913720125922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.63928948741085, + "entry_time": "2020-06-13T00:00:00", + "exit_price": 99.8801021064717, + "exit_reason": "signal", + "exit_time": "2020-06-14T00:00:00", + "pnl": 24.081261906085274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88804895153031, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 98.9129584357738, + "exit_reason": "signal", + "exit_time": "2020-06-17T00:00:00", + "pnl": 2.4909484243489715, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.35911188288489, + "entry_time": "2020-06-19T00:00:00", + "exit_price": 99.55107978610341, + "exit_reason": "signal", + "exit_time": "2020-06-20T00:00:00", + "pnl": 19.19679032185377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.24566283787111, + "entry_time": "2020-06-22T00:00:00", + "exit_price": 99.50854335078685, + "exit_reason": "signal", + "exit_time": "2020-06-23T00:00:00", + "pnl": 26.288051291574448, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85972377687798, + "entry_time": "2020-06-25T00:00:00", + "exit_price": 98.94180161552265, + "exit_reason": "signal", + "exit_time": "2020-06-26T00:00:00", + "pnl": 8.207783864467274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.42256786175979, + "entry_time": "2020-06-28T00:00:00", + "exit_price": 98.39260868907034, + "exit_reason": "signal", + "exit_time": "2020-06-29T00:00:00", + "pnl": -2.9959172689432307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47598985042309, + "entry_time": "2020-07-01T00:00:00", + "exit_price": 98.2217481384577, + "exit_reason": "signal", + "exit_time": "2020-07-02T00:00:00", + "pnl": -25.424171196538737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43771261461686, + "entry_time": "2020-07-04T00:00:00", + "exit_price": 99.25556396259081, + "exit_reason": "signal", + "exit_time": "2020-07-05T00:00:00", + "pnl": -18.214865202604415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27520136851216, + "entry_time": "2020-07-07T00:00:00", + "exit_price": 99.22895283520214, + "exit_reason": "signal", + "exit_time": "2020-07-08T00:00:00", + "pnl": -4.62485333100085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84721164221584, + "entry_time": "2020-07-10T00:00:00", + "exit_price": 98.21690016032666, + "exit_reason": "signal", + "exit_time": "2020-07-11T00:00:00", + "pnl": -63.03114818891845, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.98012439288168, + "entry_time": "2020-07-13T00:00:00", + "exit_price": 98.42241300564716, + "exit_reason": "signal", + "exit_time": "2020-07-14T00:00:00", + "pnl": -55.77113872345217, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5234973647714, + "entry_time": "2020-07-16T00:00:00", + "exit_price": 98.84780174120549, + "exit_reason": "signal", + "exit_time": "2020-07-17T00:00:00", + "pnl": -67.56956235658981, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.78357735159078, + "entry_time": "2020-07-19T00:00:00", + "exit_price": 98.5180376571157, + "exit_reason": "signal", + "exit_time": "2020-07-20T00:00:00", + "pnl": -26.55396944750828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07885735340791, + "entry_time": "2020-07-22T00:00:00", + "exit_price": 98.46287786089891, + "exit_reason": "signal", + "exit_time": "2020-07-23T00:00:00", + "pnl": 38.402050749100454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7806750796624, + "entry_time": "2020-07-25T00:00:00", + "exit_price": 98.99007562374577, + "exit_reason": "signal", + "exit_time": "2020-07-26T00:00:00", + "pnl": 20.940054408336437, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.3160405598432, + "entry_time": "2020-07-28T00:00:00", + "exit_price": 97.69515591162462, + "exit_reason": "signal", + "exit_time": "2020-07-29T00:00:00", + "pnl": -62.088464821858, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.9307950005457, + "entry_time": "2020-07-31T00:00:00", + "exit_price": 97.49497584845733, + "exit_reason": "signal", + "exit_time": "2020-08-01T00:00:00", + "pnl": -43.58191520883702, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.05277773908539, + "entry_time": "2020-08-03T00:00:00", + "exit_price": 97.63017059410102, + "exit_reason": "signal", + "exit_time": "2020-08-04T00:00:00", + "pnl": -42.260714498435846, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.95560584181007, + "entry_time": "2020-08-06T00:00:00", + "exit_price": 97.85704345214471, + "exit_reason": "signal", + "exit_time": "2020-08-07T00:00:00", + "pnl": -109.85623896653487, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.34581983849665, + "entry_time": "2020-08-09T00:00:00", + "exit_price": 98.55148937480453, + "exit_reason": "signal", + "exit_time": "2020-08-10T00:00:00", + "pnl": 120.5669536307887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.83406196186097, + "entry_time": "2020-08-12T00:00:00", + "exit_price": 97.25669377064881, + "exit_reason": "signal", + "exit_time": "2020-08-13T00:00:00", + "pnl": -57.736819121215376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.51637945271536, + "entry_time": "2020-08-15T00:00:00", + "exit_price": 97.57103396676897, + "exit_reason": "signal", + "exit_time": "2020-08-16T00:00:00", + "pnl": 5.465451405361819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43830185841739, + "entry_time": "2020-08-18T00:00:00", + "exit_price": 98.4155507445711, + "exit_reason": "signal", + "exit_time": "2020-08-19T00:00:00", + "pnl": -2.2751113846297812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.92267680402585, + "entry_time": "2020-08-21T00:00:00", + "exit_price": 98.75883349843212, + "exit_reason": "signal", + "exit_time": "2020-08-22T00:00:00", + "pnl": 83.61566944062724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.974264479532, + "entry_time": "2020-08-24T00:00:00", + "exit_price": 99.70988332181, + "exit_reason": "signal", + "exit_time": "2020-08-25T00:00:00", + "pnl": 173.56188422779996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21365266173218, + "entry_time": "2020-08-27T00:00:00", + "exit_price": 98.08294324004585, + "exit_reason": "signal", + "exit_time": "2020-08-28T00:00:00", + "pnl": -113.07094216863334, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11928874045202, + "entry_time": "2020-08-30T00:00:00", + "exit_price": 98.31180164071337, + "exit_reason": "signal", + "exit_time": "2020-08-31T00:00:00", + "pnl": 19.251290026133574, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.00054275724281, + "entry_time": "2020-09-02T00:00:00", + "exit_price": 98.65255133629894, + "exit_reason": "signal", + "exit_time": "2020-09-03T00:00:00", + "pnl": 65.20085790561279, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96503242935937, + "entry_time": "2020-09-05T00:00:00", + "exit_price": 98.79138811772025, + "exit_reason": "signal", + "exit_time": "2020-09-06T00:00:00", + "pnl": -17.364431163910922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.47378044689604, + "entry_time": "2020-09-08T00:00:00", + "exit_price": 98.31284487928606, + "exit_reason": "signal", + "exit_time": "2020-09-09T00:00:00", + "pnl": -116.09355676099767, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.73200506980342, + "entry_time": "2020-09-11T00:00:00", + "exit_price": 98.3363427106496, + "exit_reason": "signal", + "exit_time": "2020-09-12T00:00:00", + "pnl": 60.433764084618815, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.56611574901736, + "entry_time": "2020-09-14T00:00:00", + "exit_price": 98.13272204200155, + "exit_reason": "signal", + "exit_time": "2020-09-15T00:00:00", + "pnl": -43.339370701580265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.89963627791985, + "entry_time": "2020-09-17T00:00:00", + "exit_price": 98.38755792776327, + "exit_reason": "signal", + "exit_time": "2020-09-18T00:00:00", + "pnl": 148.79216498434107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.35474381234252, + "entry_time": "2020-09-20T00:00:00", + "exit_price": 98.97868642263799, + "exit_reason": "signal", + "exit_time": "2020-09-21T00:00:00", + "pnl": 62.394261029547124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.11962753041762, + "entry_time": "2020-09-23T00:00:00", + "exit_price": 99.25728100943367, + "exit_reason": "signal", + "exit_time": "2020-09-24T00:00:00", + "pnl": 13.7653479016044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.076645155786, + "entry_time": "2020-09-26T00:00:00", + "exit_price": 99.1361736846976, + "exit_reason": "signal", + "exit_time": "2020-09-27T00:00:00", + "pnl": 5.952852891159637, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.95761891143941, + "entry_time": "2020-09-29T00:00:00", + "exit_price": 99.38251520181134, + "exit_reason": "signal", + "exit_time": "2020-09-30T00:00:00", + "pnl": 42.48962903719439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.58405172820402, + "entry_time": "2020-10-02T00:00:00", + "exit_price": 100.1825648349693, + "exit_reason": "signal", + "exit_time": "2020-10-03T00:00:00", + "pnl": 59.851310676529465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31778631274507, + "entry_time": "2020-10-05T00:00:00", + "exit_price": 98.92748490697555, + "exit_reason": "signal", + "exit_time": "2020-10-06T00:00:00", + "pnl": -39.03014057695145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11485299409067, + "entry_time": "2020-10-08T00:00:00", + "exit_price": 97.46828746700024, + "exit_reason": "signal", + "exit_time": "2020-10-09T00:00:00", + "pnl": -64.65655270904244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7892083341232, + "entry_time": "2020-10-11T00:00:00", + "exit_price": 99.2850707768965, + "exit_reason": "signal", + "exit_time": "2020-10-12T00:00:00", + "pnl": 149.58624427733048, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.61528686513479, + "entry_time": "2020-10-14T00:00:00", + "exit_price": 98.16045065160826, + "exit_reason": "signal", + "exit_time": "2020-10-15T00:00:00", + "pnl": 54.516378647347665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98923853245553, + "entry_time": "2020-10-17T00:00:00", + "exit_price": 97.78083136801966, + "exit_reason": "signal", + "exit_time": "2020-10-18T00:00:00", + "pnl": -20.840716443586643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98736762370623, + "entry_time": "2020-10-20T00:00:00", + "exit_price": 98.41242668783207, + "exit_reason": "signal", + "exit_time": "2020-10-21T00:00:00", + "pnl": 42.5059064125835, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7821059253462, + "entry_time": "2020-10-23T00:00:00", + "exit_price": 98.01676230346942, + "exit_reason": "signal", + "exit_time": "2020-10-24T00:00:00", + "pnl": -76.5343621876782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.90986422948514, + "entry_time": "2020-10-26T00:00:00", + "exit_price": 98.85698353324744, + "exit_reason": "signal", + "exit_time": "2020-10-27T00:00:00", + "pnl": -5.288069623769843, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.72982041802001, + "entry_time": "2020-10-29T00:00:00", + "exit_price": 98.60761748093444, + "exit_reason": "signal", + "exit_time": "2020-10-30T00:00:00", + "pnl": -12.22029370855671, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.0385605171193, + "entry_time": "2020-11-01T00:00:00", + "exit_price": 99.09198940082088, + "exit_reason": "signal", + "exit_time": "2020-11-02T00:00:00", + "pnl": 5.342888370158107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21597248424331, + "entry_time": "2020-11-04T00:00:00", + "exit_price": 98.490691270523, + "exit_reason": "signal", + "exit_time": "2020-11-05T00:00:00", + "pnl": -72.52812137203, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.2706953210234, + "entry_time": "2020-11-07T00:00:00", + "exit_price": 98.23704650718707, + "exit_reason": "signal", + "exit_time": "2020-11-08T00:00:00", + "pnl": -3.364881383631655, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30522444084696, + "entry_time": "2020-11-10T00:00:00", + "exit_price": 97.82731858826378, + "exit_reason": "signal", + "exit_time": "2020-11-11T00:00:00", + "pnl": 52.20941474168103, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.91407429365688, + "entry_time": "2020-11-13T00:00:00", + "exit_price": 98.5460351903365, + "exit_reason": "signal", + "exit_time": "2020-11-14T00:00:00", + "pnl": -36.80391033203887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.93028933684711, + "entry_time": "2020-11-16T00:00:00", + "exit_price": 99.0553633238757, + "exit_reason": "signal", + "exit_time": "2020-11-17T00:00:00", + "pnl": 12.507398702859064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47484452500944, + "entry_time": "2020-11-19T00:00:00", + "exit_price": 98.10094020807114, + "exit_reason": "signal", + "exit_time": "2020-11-20T00:00:00", + "pnl": -37.39043169383149, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.01428360585088, + "entry_time": "2020-11-22T00:00:00", + "exit_price": 97.38292648890776, + "exit_reason": "signal", + "exit_time": "2020-11-23T00:00:00", + "pnl": -163.13571169431088, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48513559668872, + "entry_time": "2020-11-25T00:00:00", + "exit_price": 97.27497370614257, + "exit_reason": "signal", + "exit_time": "2020-11-26T00:00:00", + "pnl": -121.0161890546151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.14886606297294, + "entry_time": "2020-11-28T00:00:00", + "exit_price": 98.29611163730506, + "exit_reason": "signal", + "exit_time": "2020-11-29T00:00:00", + "pnl": 14.724557433211885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.23350982317787, + "entry_time": "2020-12-01T00:00:00", + "exit_price": 97.79948982072462, + "exit_reason": "signal", + "exit_time": "2020-12-02T00:00:00", + "pnl": 56.597999754674674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98472225444857, + "entry_time": "2020-12-04T00:00:00", + "exit_price": 97.71079305814114, + "exit_reason": "signal", + "exit_time": "2020-12-05T00:00:00", + "pnl": -27.392919630743563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.3396263042363, + "entry_time": "2020-12-07T00:00:00", + "exit_price": 97.98172498582129, + "exit_reason": "signal", + "exit_time": "2020-12-08T00:00:00", + "pnl": -35.790131841500624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.42795373397291, + "entry_time": "2020-12-10T00:00:00", + "exit_price": 96.6321305493393, + "exit_reason": "signal", + "exit_time": "2020-12-11T00:00:00", + "pnl": -79.58231846336275, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.76479352938595, + "entry_time": "2020-12-13T00:00:00", + "exit_price": 98.48958247666039, + "exit_reason": "signal", + "exit_time": "2020-12-14T00:00:00", + "pnl": 172.47889472744282, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.73111789636548, + "entry_time": "2020-12-16T00:00:00", + "exit_price": 97.61885876679554, + "exit_reason": "signal", + "exit_time": "2020-12-17T00:00:00", + "pnl": 88.77408704300797, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.85401562603096, + "entry_time": "2020-12-19T00:00:00", + "exit_price": 96.49175141105385, + "exit_reason": "signal", + "exit_time": "2020-12-20T00:00:00", + "pnl": -136.22642149771127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.84289871423181, + "entry_time": "2020-12-22T00:00:00", + "exit_price": 96.99377199128872, + "exit_reason": "signal", + "exit_time": "2020-12-23T00:00:00", + "pnl": -84.91267229430923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.76186428614056, + "entry_time": "2020-12-25T00:00:00", + "exit_price": 96.48850513355184, + "exit_reason": "signal", + "exit_time": "2020-12-26T00:00:00", + "pnl": -27.335915258872774, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.12395315196963, + "entry_time": "2020-12-28T00:00:00", + "exit_price": 97.53863571252707, + "exit_reason": "signal", + "exit_time": "2020-12-29T00:00:00", + "pnl": 41.46825605574304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6026762767146, + "entry_time": "2020-12-31T00:00:00", + "exit_price": 97.09752132137899, + "exit_reason": "signal", + "exit_time": "2021-01-01T00:00:00", + "pnl": -50.51549553356199, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.49274636123849, + "entry_time": "2021-01-03T00:00:00", + "exit_price": 96.82226372897985, + "exit_reason": "signal", + "exit_time": "2021-01-04T00:00:00", + "pnl": -67.0482632258645, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.79148532437996, + "entry_time": "2021-01-06T00:00:00", + "exit_price": 97.11483711173116, + "exit_reason": "signal", + "exit_time": "2021-01-07T00:00:00", + "pnl": 32.33517873512028, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.80033950220172, + "entry_time": "2021-01-09T00:00:00", + "exit_price": 96.63729064888537, + "exit_reason": "signal", + "exit_time": "2021-01-10T00:00:00", + "pnl": 83.69511466836593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.11575917668634, + "entry_time": "2021-01-12T00:00:00", + "exit_price": 96.28032546622858, + "exit_reason": "signal", + "exit_time": "2021-01-13T00:00:00", + "pnl": 16.45662895422356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.53344904132359, + "entry_time": "2021-01-15T00:00:00", + "exit_price": 97.29557459823668, + "exit_reason": "signal", + "exit_time": "2021-01-16T00:00:00", + "pnl": 76.21255569131063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.01730754421833, + "entry_time": "2021-01-18T00:00:00", + "exit_price": 96.07935604760307, + "exit_reason": "signal", + "exit_time": "2021-01-19T00:00:00", + "pnl": 6.204850338473989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.79620422510413, + "entry_time": "2021-01-21T00:00:00", + "exit_price": 95.24797305894252, + "exit_reason": "signal", + "exit_time": "2021-01-22T00:00:00", + "pnl": -54.823116616162224, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.19373825703377, + "entry_time": "2021-01-24T00:00:00", + "exit_price": 95.40514794332339, + "exit_reason": "signal", + "exit_time": "2021-01-25T00:00:00", + "pnl": 21.140968628962582, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.55648566288775, + "entry_time": "2021-01-27T00:00:00", + "exit_price": 96.55716667120137, + "exit_reason": "signal", + "exit_time": "2021-01-28T00:00:00", + "pnl": 100.06810083136224, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.91494018138198, + "entry_time": "2021-01-30T00:00:00", + "exit_price": 95.48501201892987, + "exit_reason": "signal", + "exit_time": "2021-01-31T00:00:00", + "pnl": 57.00718375478937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.90008526748946, + "entry_time": "2021-02-02T00:00:00", + "exit_price": 95.83721845974864, + "exit_reason": "signal", + "exit_time": "2021-02-03T00:00:00", + "pnl": -6.2866807740829245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.26504549069784, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 96.06840340797214, + "exit_reason": "signal", + "exit_time": "2021-02-06T00:00:00", + "pnl": 80.33579172742975, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.26053581327312, + "entry_time": "2021-02-08T00:00:00", + "exit_price": 95.42454996605802, + "exit_reason": "signal", + "exit_time": "2021-02-09T00:00:00", + "pnl": 16.401415278489367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94825682250637, + "entry_time": "2021-02-11T00:00:00", + "exit_price": 95.05109746301979, + "exit_reason": "signal", + "exit_time": "2021-02-12T00:00:00", + "pnl": 10.284064051340465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.1969266603545, + "entry_time": "2021-02-14T00:00:00", + "exit_price": 96.27193710609464, + "exit_reason": "signal", + "exit_time": "2021-02-15T00:00:00", + "pnl": 7.5010445740135765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.97039812035842, + "entry_time": "2021-02-17T00:00:00", + "exit_price": 96.34802647272141, + "exit_reason": "signal", + "exit_time": "2021-02-18T00:00:00", + "pnl": -62.237164763701, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.07904244701469, + "entry_time": "2021-02-20T00:00:00", + "exit_price": 96.79316819026657, + "exit_reason": "signal", + "exit_time": "2021-02-21T00:00:00", + "pnl": -28.58742567481204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5721771606179, + "entry_time": "2021-02-23T00:00:00", + "exit_price": 95.6253449835299, + "exit_reason": "signal", + "exit_time": "2021-02-24T00:00:00", + "pnl": 5.31678229120007, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88599336671724, + "entry_time": "2021-02-26T00:00:00", + "exit_price": 93.9167314813735, + "exit_reason": "signal", + "exit_time": "2021-02-27T00:00:00", + "pnl": -96.92618853437489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23555143341264, + "entry_time": "2021-03-01T00:00:00", + "exit_price": 94.69172330670986, + "exit_reason": "signal", + "exit_time": "2021-03-02T00:00:00", + "pnl": -54.38281267027742, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.40326355089037, + "entry_time": "2021-03-04T00:00:00", + "exit_price": 94.32320287324674, + "exit_reason": "signal", + "exit_time": "2021-03-05T00:00:00", + "pnl": -8.006067764363252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.32022315669315, + "entry_time": "2021-03-07T00:00:00", + "exit_price": 94.22613575397045, + "exit_reason": "signal", + "exit_time": "2021-03-08T00:00:00", + "pnl": -9.408740272268915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.08195298394907, + "entry_time": "2021-03-10T00:00:00", + "exit_price": 94.5883765126535, + "exit_reason": "signal", + "exit_time": "2021-03-11T00:00:00", + "pnl": -49.357647129556426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6323490375275, + "entry_time": "2021-03-13T00:00:00", + "exit_price": 95.0747399163529, + "exit_reason": "signal", + "exit_time": "2021-03-14T00:00:00", + "pnl": 44.239087882539025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.55723413541229, + "entry_time": "2021-03-16T00:00:00", + "exit_price": 94.78282068603487, + "exit_reason": "signal", + "exit_time": "2021-03-17T00:00:00", + "pnl": 22.558655062257458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66145085922012, + "entry_time": "2021-03-19T00:00:00", + "exit_price": 95.46346097050873, + "exit_reason": "signal", + "exit_time": "2021-03-20T00:00:00", + "pnl": 180.20101112886005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.00404625454874, + "entry_time": "2021-03-22T00:00:00", + "exit_price": 94.66092881844988, + "exit_reason": "signal", + "exit_time": "2021-03-23T00:00:00", + "pnl": -34.311743609885525, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.49919123199935, + "entry_time": "2021-03-25T00:00:00", + "exit_price": 93.97621398907071, + "exit_reason": "signal", + "exit_time": "2021-03-26T00:00:00", + "pnl": -152.29772429286277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.41257974165285, + "entry_time": "2021-03-28T00:00:00", + "exit_price": 95.05124864668421, + "exit_reason": "signal", + "exit_time": "2021-03-29T00:00:00", + "pnl": 63.866890503137256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01899188310071, + "entry_time": "2021-03-31T00:00:00", + "exit_price": 94.2559389154428, + "exit_reason": "signal", + "exit_time": "2021-04-01T00:00:00", + "pnl": 23.694703234208646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.12609495739093, + "entry_time": "2021-04-03T00:00:00", + "exit_price": 94.25576346468043, + "exit_reason": "signal", + "exit_time": "2021-04-04T00:00:00", + "pnl": 12.966850728949794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.47050530514431, + "entry_time": "2021-04-06T00:00:00", + "exit_price": 93.72410136704386, + "exit_reason": "signal", + "exit_time": "2021-04-07T00:00:00", + "pnl": 25.35960618995523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19884636287922, + "entry_time": "2021-04-09T00:00:00", + "exit_price": 93.86432033375576, + "exit_reason": "signal", + "exit_time": "2021-04-10T00:00:00", + "pnl": 66.54739708765192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34050558738045, + "entry_time": "2021-04-12T00:00:00", + "exit_price": 94.10587138419956, + "exit_reason": "signal", + "exit_time": "2021-04-13T00:00:00", + "pnl": 76.53657968191146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72930751574246, + "entry_time": "2021-04-15T00:00:00", + "exit_price": 93.2563942182136, + "exit_reason": "signal", + "exit_time": "2021-04-16T00:00:00", + "pnl": -47.29132975288485, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59980860135867, + "entry_time": "2021-04-18T00:00:00", + "exit_price": 94.54277270362402, + "exit_reason": "signal", + "exit_time": "2021-04-19T00:00:00", + "pnl": 94.29641022653595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92591784638046, + "entry_time": "2021-04-21T00:00:00", + "exit_price": 94.14258894906092, + "exit_reason": "signal", + "exit_time": "2021-04-22T00:00:00", + "pnl": 121.6671102680466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11423308566697, + "entry_time": "2021-04-24T00:00:00", + "exit_price": 93.03147452036931, + "exit_reason": "signal", + "exit_time": "2021-04-25T00:00:00", + "pnl": -108.2758565297645, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.97245173381131, + "entry_time": "2021-04-27T00:00:00", + "exit_price": 93.49318704896336, + "exit_reason": "signal", + "exit_time": "2021-04-28T00:00:00", + "pnl": -147.92646848479308, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68468709145579, + "entry_time": "2021-04-30T00:00:00", + "exit_price": 93.32003795658395, + "exit_reason": "signal", + "exit_time": "2021-05-01T00:00:00", + "pnl": -36.46491348718337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26674166444458, + "entry_time": "2021-05-03T00:00:00", + "exit_price": 94.26630934814936, + "exit_reason": "signal", + "exit_time": "2021-05-04T00:00:00", + "pnl": -0.04323162952096027, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.4153331981033, + "entry_time": "2021-05-06T00:00:00", + "exit_price": 93.36350758058099, + "exit_reason": "signal", + "exit_time": "2021-05-07T00:00:00", + "pnl": -5.182561752229958, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.16332285120929, + "entry_time": "2021-05-09T00:00:00", + "exit_price": 94.34043899579565, + "exit_reason": "signal", + "exit_time": "2021-05-10T00:00:00", + "pnl": 17.711614458636177, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74219820454567, + "entry_time": "2021-05-12T00:00:00", + "exit_price": 94.55413171456674, + "exit_reason": "signal", + "exit_time": "2021-05-13T00:00:00", + "pnl": 81.19335100210628, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.58180279933771, + "entry_time": "2021-05-15T00:00:00", + "exit_price": 94.02408626223293, + "exit_reason": "signal", + "exit_time": "2021-05-16T00:00:00", + "pnl": 44.22834628952114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87657341045227, + "entry_time": "2021-05-18T00:00:00", + "exit_price": 94.55590567361484, + "exit_reason": "signal", + "exit_time": "2021-05-19T00:00:00", + "pnl": 67.93322631625779, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08074161986468, + "entry_time": "2021-05-21T00:00:00", + "exit_price": 93.80457382221171, + "exit_reason": "signal", + "exit_time": "2021-05-22T00:00:00", + "pnl": 72.38322023470391, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8131686939551, + "entry_time": "2021-05-24T00:00:00", + "exit_price": 93.25793142134573, + "exit_reason": "signal", + "exit_time": "2021-05-25T00:00:00", + "pnl": 44.47627273906255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95253144170447, + "entry_time": "2021-05-27T00:00:00", + "exit_price": 93.14743781912107, + "exit_reason": "signal", + "exit_time": "2021-05-28T00:00:00", + "pnl": 19.490637741659157, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8783564574023, + "entry_time": "2021-05-30T00:00:00", + "exit_price": 92.9764387193147, + "exit_reason": "signal", + "exit_time": "2021-05-31T00:00:00", + "pnl": 9.808226191240465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94516537050167, + "entry_time": "2021-06-02T00:00:00", + "exit_price": 92.89603764932446, + "exit_reason": "signal", + "exit_time": "2021-06-03T00:00:00", + "pnl": -4.912772117721033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63800292429943, + "entry_time": "2021-06-05T00:00:00", + "exit_price": 93.24337208101042, + "exit_reason": "signal", + "exit_time": "2021-06-06T00:00:00", + "pnl": 160.53691567109854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59556244009269, + "entry_time": "2021-06-08T00:00:00", + "exit_price": 91.28446378378608, + "exit_reason": "signal", + "exit_time": "2021-06-09T00:00:00", + "pnl": -31.10986563066035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13025499622808, + "entry_time": "2021-06-11T00:00:00", + "exit_price": 92.23383791902404, + "exit_reason": "signal", + "exit_time": "2021-06-12T00:00:00", + "pnl": -89.64170772040234, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3328854638381, + "entry_time": "2021-06-14T00:00:00", + "exit_price": 92.96067846320523, + "exit_reason": "signal", + "exit_time": "2021-06-15T00:00:00", + "pnl": 62.77929993671205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.94965457520627, + "entry_time": "2021-06-17T00:00:00", + "exit_price": 92.16625059748041, + "exit_reason": "signal", + "exit_time": "2021-06-18T00:00:00", + "pnl": 21.659602227415235, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8269642033066, + "entry_time": "2021-06-20T00:00:00", + "exit_price": 91.81310669049036, + "exit_reason": "signal", + "exit_time": "2021-06-21T00:00:00", + "pnl": -1.3857512816248345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2555442210953, + "entry_time": "2021-06-23T00:00:00", + "exit_price": 92.45622372930102, + "exit_reason": "signal", + "exit_time": "2021-06-24T00:00:00", + "pnl": 20.06795082057215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.83947343135847, + "entry_time": "2021-06-26T00:00:00", + "exit_price": 92.43135259957857, + "exit_reason": "signal", + "exit_time": "2021-06-27T00:00:00", + "pnl": 59.187916822009356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.53295655650527, + "entry_time": "2021-06-29T00:00:00", + "exit_price": 91.78816229160894, + "exit_reason": "signal", + "exit_time": "2021-06-30T00:00:00", + "pnl": 25.520573510366376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9413213129086, + "entry_time": "2021-07-02T00:00:00", + "exit_price": 92.40648296911729, + "exit_reason": "signal", + "exit_time": "2021-07-03T00:00:00", + "pnl": 146.5161656208693, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.30279435197399, + "entry_time": "2021-07-05T00:00:00", + "exit_price": 90.65263067129818, + "exit_reason": "signal", + "exit_time": "2021-07-06T00:00:00", + "pnl": -65.01636806758142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8239628759463, + "entry_time": "2021-07-08T00:00:00", + "exit_price": 91.7795218814571, + "exit_reason": "signal", + "exit_time": "2021-07-09T00:00:00", + "pnl": -4.444099448919587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36068460994301, + "entry_time": "2021-07-11T00:00:00", + "exit_price": 91.47451059527033, + "exit_reason": "signal", + "exit_time": "2021-07-12T00:00:00", + "pnl": 11.382598532733027, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09791235411565, + "entry_time": "2021-07-14T00:00:00", + "exit_price": 91.64232209133355, + "exit_reason": "signal", + "exit_time": "2021-07-15T00:00:00", + "pnl": 54.440973721790215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9960341944844, + "entry_time": "2021-07-17T00:00:00", + "exit_price": 90.86057544771678, + "exit_reason": "signal", + "exit_time": "2021-07-18T00:00:00", + "pnl": -13.545874676761741, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03722443992689, + "entry_time": "2021-07-20T00:00:00", + "exit_price": 91.02540027670304, + "exit_reason": "signal", + "exit_time": "2021-07-21T00:00:00", + "pnl": -101.1824163223846, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23831571579666, + "entry_time": "2021-07-23T00:00:00", + "exit_price": 91.61642884685872, + "exit_reason": "signal", + "exit_time": "2021-07-24T00:00:00", + "pnl": 37.81131310620731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9587336040414, + "entry_time": "2021-07-26T00:00:00", + "exit_price": 91.78520963834742, + "exit_reason": "signal", + "exit_time": "2021-07-27T00:00:00", + "pnl": -17.35239656939666, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12207131713245, + "entry_time": "2021-07-29T00:00:00", + "exit_price": 93.030634236321, + "exit_reason": "signal", + "exit_time": "2021-07-30T00:00:00", + "pnl": 90.85629191885528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2580641252632, + "entry_time": "2021-08-01T00:00:00", + "exit_price": 92.57471719502651, + "exit_reason": "signal", + "exit_time": "2021-08-02T00:00:00", + "pnl": 31.665306976330612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.16033087447512, + "entry_time": "2021-08-04T00:00:00", + "exit_price": 91.64298714231596, + "exit_reason": "signal", + "exit_time": "2021-08-05T00:00:00", + "pnl": -51.734373215917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75555986268627, + "entry_time": "2021-08-07T00:00:00", + "exit_price": 93.29534460790408, + "exit_reason": "signal", + "exit_time": "2021-08-08T00:00:00", + "pnl": 53.9784745217803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8204301569652, + "entry_time": "2021-08-10T00:00:00", + "exit_price": 93.34161824742394, + "exit_reason": "signal", + "exit_time": "2021-08-11T00:00:00", + "pnl": 52.118809045874514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.61753779742976, + "entry_time": "2021-08-13T00:00:00", + "exit_price": 94.15624068230731, + "exit_reason": "signal", + "exit_time": "2021-08-14T00:00:00", + "pnl": 53.870288487754806, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.25917455813928, + "entry_time": "2021-08-16T00:00:00", + "exit_price": 93.5936848786624, + "exit_reason": "signal", + "exit_time": "2021-08-17T00:00:00", + "pnl": -66.54896794768683, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.98045633035186, + "entry_time": "2021-08-19T00:00:00", + "exit_price": 93.98797939638727, + "exit_reason": "signal", + "exit_time": "2021-08-20T00:00:00", + "pnl": 100.752306603541, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35827005631805, + "entry_time": "2021-08-22T00:00:00", + "exit_price": 93.69155799194061, + "exit_reason": "signal", + "exit_time": "2021-08-23T00:00:00", + "pnl": 33.32879356225567, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68091309416992, + "entry_time": "2021-08-25T00:00:00", + "exit_price": 92.70456318827733, + "exit_reason": "signal", + "exit_time": "2021-08-26T00:00:00", + "pnl": 2.36500941074155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16469231313611, + "entry_time": "2021-08-28T00:00:00", + "exit_price": 92.8799099382491, + "exit_reason": "signal", + "exit_time": "2021-08-29T00:00:00", + "pnl": -28.47823748870178, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11566093967609, + "entry_time": "2021-08-31T00:00:00", + "exit_price": 93.80161139315015, + "exit_reason": "signal", + "exit_time": "2021-09-01T00:00:00", + "pnl": -31.404954652593005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15377445359951, + "entry_time": "2021-09-03T00:00:00", + "exit_price": 94.15715297991916, + "exit_reason": "signal", + "exit_time": "2021-09-04T00:00:00", + "pnl": 100.33785263196478, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86962603101973, + "entry_time": "2021-09-06T00:00:00", + "exit_price": 93.72926386277882, + "exit_reason": "signal", + "exit_time": "2021-09-07T00:00:00", + "pnl": -14.036216824091753, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1579385275225, + "entry_time": "2021-09-09T00:00:00", + "exit_price": 93.74116822603294, + "exit_reason": "signal", + "exit_time": "2021-09-10T00:00:00", + "pnl": -41.67703014895778, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.31971390482752, + "entry_time": "2021-09-12T00:00:00", + "exit_price": 93.20782644697857, + "exit_reason": "signal", + "exit_time": "2021-09-13T00:00:00", + "pnl": -11.188745784895218, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01885490875779, + "entry_time": "2021-09-15T00:00:00", + "exit_price": 94.42230012835577, + "exit_reason": "signal", + "exit_time": "2021-09-16T00:00:00", + "pnl": -59.65547804020207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.99288411883724, + "entry_time": "2021-09-18T00:00:00", + "exit_price": 94.082184046767, + "exit_reason": "signal", + "exit_time": "2021-09-19T00:00:00", + "pnl": 8.9299927929751, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.85101362331126, + "entry_time": "2021-09-21T00:00:00", + "exit_price": 94.98564664788431, + "exit_reason": "signal", + "exit_time": "2021-09-22T00:00:00", + "pnl": 113.46330245730496, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86959357102904, + "entry_time": "2021-09-24T00:00:00", + "exit_price": 94.20013868958425, + "exit_reason": "signal", + "exit_time": "2021-09-25T00:00:00", + "pnl": 33.05451185552192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84924924581607, + "entry_time": "2021-09-27T00:00:00", + "exit_price": 93.31289310035527, + "exit_reason": "signal", + "exit_time": "2021-09-28T00:00:00", + "pnl": -153.63561454607952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30858201402589, + "entry_time": "2021-09-30T00:00:00", + "exit_price": 93.99373607498532, + "exit_reason": "signal", + "exit_time": "2021-10-01T00:00:00", + "pnl": -31.484593904056965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.18572768435918, + "entry_time": "2021-10-03T00:00:00", + "exit_price": 94.33439114940059, + "exit_reason": "signal", + "exit_time": "2021-10-04T00:00:00", + "pnl": -85.13365349585911, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07429869254726, + "entry_time": "2021-10-06T00:00:00", + "exit_price": 94.04790943044297, + "exit_reason": "signal", + "exit_time": "2021-10-07T00:00:00", + "pnl": -2.6389262104275986, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64069907229371, + "entry_time": "2021-10-09T00:00:00", + "exit_price": 94.26235855896988, + "exit_reason": "signal", + "exit_time": "2021-10-10T00:00:00", + "pnl": 62.16594866761625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50379403067527, + "entry_time": "2021-10-12T00:00:00", + "exit_price": 94.43691170957882, + "exit_reason": "signal", + "exit_time": "2021-10-13T00:00:00", + "pnl": -6.688232109645469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37005197510278, + "entry_time": "2021-10-15T00:00:00", + "exit_price": 94.27057437223934, + "exit_reason": "signal", + "exit_time": "2021-10-16T00:00:00", + "pnl": -9.947760286344419, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.09337235241868, + "entry_time": "2021-10-18T00:00:00", + "exit_price": 94.71128565229746, + "exit_reason": "signal", + "exit_time": "2021-10-19T00:00:00", + "pnl": -38.20867001212173, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02883456195461, + "entry_time": "2021-10-21T00:00:00", + "exit_price": 94.80490335979458, + "exit_reason": "signal", + "exit_time": "2021-10-22T00:00:00", + "pnl": 77.60687978399619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9287597961482, + "entry_time": "2021-10-24T00:00:00", + "exit_price": 95.17470692964342, + "exit_reason": "signal", + "exit_time": "2021-10-25T00:00:00", + "pnl": 124.59471334952104, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2493152678643, + "entry_time": "2021-10-27T00:00:00", + "exit_price": 93.60050033989026, + "exit_reason": "signal", + "exit_time": "2021-10-28T00:00:00", + "pnl": -64.88149279740537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09469925407369, + "entry_time": "2021-10-30T00:00:00", + "exit_price": 94.3111349289259, + "exit_reason": "signal", + "exit_time": "2021-10-31T00:00:00", + "pnl": 21.643567485220046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18816369089684, + "entry_time": "2021-11-02T00:00:00", + "exit_price": 94.42938460793316, + "exit_reason": "signal", + "exit_time": "2021-11-03T00:00:00", + "pnl": 24.122091703631668, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.41602741852829, + "entry_time": "2021-11-05T00:00:00", + "exit_price": 93.42310978968692, + "exit_reason": "signal", + "exit_time": "2021-11-06T00:00:00", + "pnl": 0.7082371158630849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50953693273829, + "entry_time": "2021-11-08T00:00:00", + "exit_price": 93.33123427861662, + "exit_reason": "signal", + "exit_time": "2021-11-09T00:00:00", + "pnl": 82.16973458783286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96020937715257, + "entry_time": "2021-11-11T00:00:00", + "exit_price": 93.53068640749544, + "exit_reason": "signal", + "exit_time": "2021-11-12T00:00:00", + "pnl": 57.047703034286315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5609164087555, + "entry_time": "2021-11-14T00:00:00", + "exit_price": 92.89910933295498, + "exit_reason": "signal", + "exit_time": "2021-11-15T00:00:00", + "pnl": 33.81929241994658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.4272707886787, + "entry_time": "2021-11-17T00:00:00", + "exit_price": 92.19572149206287, + "exit_reason": "signal", + "exit_time": "2021-11-18T00:00:00", + "pnl": -23.154929661581264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68137345397398, + "entry_time": "2021-11-20T00:00:00", + "exit_price": 92.48011498833463, + "exit_reason": "signal", + "exit_time": "2021-11-21T00:00:00", + "pnl": -20.12584656393483, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73481537380023, + "entry_time": "2021-11-23T00:00:00", + "exit_price": 93.9817766831428, + "exit_reason": "signal", + "exit_time": "2021-11-24T00:00:00", + "pnl": 124.69613093425687, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62422399002075, + "entry_time": "2021-11-26T00:00:00", + "exit_price": 92.25402747101043, + "exit_reason": "signal", + "exit_time": "2021-11-27T00:00:00", + "pnl": -37.019651901031466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78794113614683, + "entry_time": "2021-11-29T00:00:00", + "exit_price": 92.51565520344022, + "exit_reason": "signal", + "exit_time": "2021-11-30T00:00:00", + "pnl": -27.228593270659985, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81994141877884, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 91.73569183010366, + "exit_reason": "signal", + "exit_time": "2021-12-03T00:00:00", + "pnl": -8.42495886751749, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89304084668578, + "entry_time": "2021-12-05T00:00:00", + "exit_price": 91.94563028017612, + "exit_reason": "signal", + "exit_time": "2021-12-06T00:00:00", + "pnl": 5.258943349033871, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.70380536433252, + "entry_time": "2021-12-08T00:00:00", + "exit_price": 92.18321579529317, + "exit_reason": "signal", + "exit_time": "2021-12-09T00:00:00", + "pnl": 47.94104309606337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75634960957339, + "entry_time": "2021-12-11T00:00:00", + "exit_price": 92.99346542277752, + "exit_reason": "signal", + "exit_time": "2021-12-12T00:00:00", + "pnl": 23.711581320412733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07784715364147, + "entry_time": "2021-12-14T00:00:00", + "exit_price": 92.82473368702337, + "exit_reason": "signal", + "exit_time": "2021-12-15T00:00:00", + "pnl": -25.311346661810603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80939097372557, + "entry_time": "2021-12-17T00:00:00", + "exit_price": 93.56855092683492, + "exit_reason": "signal", + "exit_time": "2021-12-18T00:00:00", + "pnl": -24.084004689064386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22637736311736, + "entry_time": "2021-12-20T00:00:00", + "exit_price": 93.04989016451177, + "exit_reason": "signal", + "exit_time": "2021-12-21T00:00:00", + "pnl": -17.64871986056096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06688407845617, + "entry_time": "2021-12-23T00:00:00", + "exit_price": 93.11481000895263, + "exit_reason": "signal", + "exit_time": "2021-12-24T00:00:00", + "pnl": 4.792593049645802, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27282277875311, + "entry_time": "2021-12-26T00:00:00", + "exit_price": 92.10549027383173, + "exit_reason": "signal", + "exit_time": "2021-12-27T00:00:00", + "pnl": -116.73325049213781, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02590143870165, + "entry_time": "2021-12-29T00:00:00", + "exit_price": 93.0111357952797, + "exit_reason": "signal", + "exit_time": "2021-12-30T00:00:00", + "pnl": 98.52343565780393, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36789726372409, + "entry_time": "2022-01-01T00:00:00", + "exit_price": 91.16759918928896, + "exit_reason": "signal", + "exit_time": "2022-01-02T00:00:00", + "pnl": -20.029807443512254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02364437811006, + "entry_time": "2022-01-04T00:00:00", + "exit_price": 91.64247835816664, + "exit_reason": "signal", + "exit_time": "2022-01-05T00:00:00", + "pnl": -38.11660199434118, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20232839714718, + "entry_time": "2022-01-07T00:00:00", + "exit_price": 92.51418676739564, + "exit_reason": "signal", + "exit_time": "2022-01-08T00:00:00", + "pnl": 31.185837024846478, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81320041849361, + "entry_time": "2022-01-10T00:00:00", + "exit_price": 92.27166607324205, + "exit_reason": "signal", + "exit_time": "2022-01-11T00:00:00", + "pnl": 45.84656547484337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2545983932022, + "entry_time": "2022-01-13T00:00:00", + "exit_price": 91.97497228207648, + "exit_reason": "signal", + "exit_time": "2022-01-14T00:00:00", + "pnl": -27.962611112570812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.67780842750179, + "entry_time": "2022-01-16T00:00:00", + "exit_price": 91.45906966920411, + "exit_reason": "signal", + "exit_time": "2022-01-17T00:00:00", + "pnl": -21.873875829767712, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76345480442126, + "entry_time": "2022-01-19T00:00:00", + "exit_price": 91.43197465037622, + "exit_reason": "signal", + "exit_time": "2022-01-20T00:00:00", + "pnl": -33.148015404503894, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3600604543369, + "entry_time": "2022-01-22T00:00:00", + "exit_price": 92.44350843545416, + "exit_reason": "signal", + "exit_time": "2022-01-23T00:00:00", + "pnl": 8.34479811172605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39757672508603, + "entry_time": "2022-01-25T00:00:00", + "exit_price": 91.85230151275863, + "exit_reason": "signal", + "exit_time": "2022-01-26T00:00:00", + "pnl": 45.47247876726033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.81407145534195, + "entry_time": "2022-01-28T00:00:00", + "exit_price": 91.01128875382821, + "exit_reason": "signal", + "exit_time": "2022-01-29T00:00:00", + "pnl": 19.721729848626637, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.67591197573066, + "entry_time": "2022-01-31T00:00:00", + "exit_price": 90.51279666702179, + "exit_reason": "signal", + "exit_time": "2022-02-01T00:00:00", + "pnl": -116.31153087088569, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.98461279621962, + "entry_time": "2022-02-03T00:00:00", + "exit_price": 91.18776220832692, + "exit_reason": "signal", + "exit_time": "2022-02-04T00:00:00", + "pnl": -79.68505878927135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68365711276127, + "entry_time": "2022-02-06T00:00:00", + "exit_price": 92.52965334263803, + "exit_reason": "signal", + "exit_time": "2022-02-07T00:00:00", + "pnl": -15.400377012323588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.97018528191016, + "entry_time": "2022-02-09T00:00:00", + "exit_price": 92.1704075246973, + "exit_reason": "signal", + "exit_time": "2022-02-10T00:00:00", + "pnl": 20.02222427871311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.4092834971355, + "entry_time": "2022-02-12T00:00:00", + "exit_price": 91.80397108470675, + "exit_reason": "signal", + "exit_time": "2022-02-13T00:00:00", + "pnl": 39.468758757124306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.7224658447326, + "entry_time": "2022-02-15T00:00:00", + "exit_price": 91.15638220769824, + "exit_reason": "signal", + "exit_time": "2022-02-16T00:00:00", + "pnl": -56.608363703435316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66063113797075, + "entry_time": "2022-02-18T00:00:00", + "exit_price": 91.93674170823937, + "exit_reason": "signal", + "exit_time": "2022-02-19T00:00:00", + "pnl": 27.61105702686109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.02426166276656, + "entry_time": "2022-02-21T00:00:00", + "exit_price": 92.2868521233569, + "exit_reason": "signal", + "exit_time": "2022-02-22T00:00:00", + "pnl": 126.2590460590327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06798590582005, + "entry_time": "2022-02-24T00:00:00", + "exit_price": 91.35136606041436, + "exit_reason": "signal", + "exit_time": "2022-02-25T00:00:00", + "pnl": 28.338015459430608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.99746534424483, + "entry_time": "2022-02-27T00:00:00", + "exit_price": 91.56303029535638, + "exit_reason": "signal", + "exit_time": "2022-02-28T00:00:00", + "pnl": 56.55649511115553, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.0942536160811, + "entry_time": "2022-03-02T00:00:00", + "exit_price": 91.42070005109457, + "exit_reason": "signal", + "exit_time": "2022-03-03T00:00:00", + "pnl": -67.35535649865233, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.41089068186189, + "entry_time": "2022-03-05T00:00:00", + "exit_price": 90.18677881527823, + "exit_reason": "signal", + "exit_time": "2022-03-06T00:00:00", + "pnl": -122.4111866583662, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43901544778934, + "entry_time": "2022-03-08T00:00:00", + "exit_price": 91.5260369404649, + "exit_reason": "signal", + "exit_time": "2022-03-09T00:00:00", + "pnl": 8.702149267555797, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.01177208564718, + "entry_time": "2022-03-11T00:00:00", + "exit_price": 91.36159823018748, + "exit_reason": "signal", + "exit_time": "2022-03-12T00:00:00", + "pnl": 34.982614454031136, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8208251198108, + "entry_time": "2022-03-14T00:00:00", + "exit_price": 91.28071492977152, + "exit_reason": "signal", + "exit_time": "2022-03-15T00:00:00", + "pnl": 45.988980996071405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9250036260453, + "entry_time": "2022-03-17T00:00:00", + "exit_price": 90.6150063093046, + "exit_reason": "signal", + "exit_time": "2022-03-18T00:00:00", + "pnl": -130.99973167406824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.61363931969464, + "entry_time": "2022-03-20T00:00:00", + "exit_price": 90.38004154259693, + "exit_reason": "signal", + "exit_time": "2022-03-21T00:00:00", + "pnl": -23.35977770977297, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.96467806287603, + "entry_time": "2022-03-23T00:00:00", + "exit_price": 90.70041523761671, + "exit_reason": "signal", + "exit_time": "2022-03-24T00:00:00", + "pnl": -26.426282525932038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.62074541364396, + "entry_time": "2022-03-26T00:00:00", + "exit_price": 90.95651159207543, + "exit_reason": "signal", + "exit_time": "2022-03-27T00:00:00", + "pnl": 33.57661784314587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05267669381955, + "entry_time": "2022-03-29T00:00:00", + "exit_price": 91.69416855510607, + "exit_reason": "signal", + "exit_time": "2022-03-30T00:00:00", + "pnl": 64.14918612865222, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8695133244266, + "entry_time": "2022-04-01T00:00:00", + "exit_price": 90.61012799594212, + "exit_reason": "signal", + "exit_time": "2022-04-02T00:00:00", + "pnl": -25.93853284844772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.05464751490084, + "entry_time": "2022-04-04T00:00:00", + "exit_price": 90.46681240023963, + "exit_reason": "signal", + "exit_time": "2022-04-05T00:00:00", + "pnl": 41.216488533878874, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63067407291008, + "entry_time": "2022-04-07T00:00:00", + "exit_price": 89.96046847840074, + "exit_reason": "signal", + "exit_time": "2022-04-08T00:00:00", + "pnl": -67.02055945093343, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56273021751427, + "entry_time": "2022-04-10T00:00:00", + "exit_price": 90.14638715063298, + "exit_reason": "signal", + "exit_time": "2022-04-11T00:00:00", + "pnl": -41.63430668812907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.75859326793318, + "entry_time": "2022-04-13T00:00:00", + "exit_price": 90.97823499949781, + "exit_reason": "signal", + "exit_time": "2022-04-14T00:00:00", + "pnl": 121.96417315646431, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.15637756363428, + "entry_time": "2022-04-16T00:00:00", + "exit_price": 89.71453147899727, + "exit_reason": "signal", + "exit_time": "2022-04-17T00:00:00", + "pnl": -44.18460846370181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.00941330347686, + "entry_time": "2022-04-19T00:00:00", + "exit_price": 90.97249110306038, + "exit_reason": "signal", + "exit_time": "2022-04-20T00:00:00", + "pnl": 96.3077799583516, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.44900384555615, + "entry_time": "2022-04-22T00:00:00", + "exit_price": 90.26380626108603, + "exit_reason": "signal", + "exit_time": "2022-04-23T00:00:00", + "pnl": -18.519758447011554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.9389490074607, + "entry_time": "2022-04-25T00:00:00", + "exit_price": 90.91676356991597, + "exit_reason": "signal", + "exit_time": "2022-04-26T00:00:00", + "pnl": 97.78145624552599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.13685393625028, + "entry_time": "2022-04-28T00:00:00", + "exit_price": 90.92025914672816, + "exit_reason": "signal", + "exit_time": "2022-04-29T00:00:00", + "pnl": 78.34052104778675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.9636459548143, + "entry_time": "2022-05-01T00:00:00", + "exit_price": 90.9470309766908, + "exit_reason": "signal", + "exit_time": "2022-05-02T00:00:00", + "pnl": 98.3385021876511, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23464868145118, + "entry_time": "2022-05-04T00:00:00", + "exit_price": 92.16095300836626, + "exit_reason": "signal", + "exit_time": "2022-05-05T00:00:00", + "pnl": 92.63043269150876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86371979002092, + "entry_time": "2022-05-07T00:00:00", + "exit_price": 90.1658806519524, + "exit_reason": "signal", + "exit_time": "2022-05-08T00:00:00", + "pnl": -69.78391380685025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.80999909964301, + "entry_time": "2022-05-10T00:00:00", + "exit_price": 91.3916052906719, + "exit_reason": "signal", + "exit_time": "2022-05-11T00:00:00", + "pnl": 58.16061910288954, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79830122498419, + "entry_time": "2022-05-13T00:00:00", + "exit_price": 91.92464426243117, + "exit_reason": "signal", + "exit_time": "2022-05-14T00:00:00", + "pnl": 12.634303744698627, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74084404129732, + "entry_time": "2022-05-16T00:00:00", + "exit_price": 91.77591195761288, + "exit_reason": "signal", + "exit_time": "2022-05-17T00:00:00", + "pnl": 3.5067916315565526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.129082151163, + "entry_time": "2022-05-19T00:00:00", + "exit_price": 91.29443539538282, + "exit_reason": "signal", + "exit_time": "2022-05-20T00:00:00", + "pnl": 16.535324421982295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.49821093674116, + "entry_time": "2022-05-22T00:00:00", + "exit_price": 90.52895961614624, + "exit_reason": "signal", + "exit_time": "2022-05-23T00:00:00", + "pnl": 103.07486794050783, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.50773769923417, + "entry_time": "2022-05-25T00:00:00", + "exit_price": 90.20586243304412, + "exit_reason": "signal", + "exit_time": "2022-05-26T00:00:00", + "pnl": -30.18752661900544, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1593251595947, + "entry_time": "2022-05-28T00:00:00", + "exit_price": 90.8652392547076, + "exit_reason": "signal", + "exit_time": "2022-05-29T00:00:00", + "pnl": -29.408590488710615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.88148378297518, + "entry_time": "2022-05-31T00:00:00", + "exit_price": 90.54298539634833, + "exit_reason": "signal", + "exit_time": "2022-06-01T00:00:00", + "pnl": 66.15016133731478, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.97268456538903, + "entry_time": "2022-06-03T00:00:00", + "exit_price": 91.62712854780935, + "exit_reason": "signal", + "exit_time": "2022-06-04T00:00:00", + "pnl": 65.44439824203255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.74146887774299, + "entry_time": "2022-06-06T00:00:00", + "exit_price": 90.42853595632805, + "exit_reason": "signal", + "exit_time": "2022-06-07T00:00:00", + "pnl": -31.29329214149402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84848168731004, + "entry_time": "2022-06-09T00:00:00", + "exit_price": 90.83668379255865, + "exit_reason": "signal", + "exit_time": "2022-06-10T00:00:00", + "pnl": -1.1797894751398417, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.47241973433749, + "entry_time": "2022-06-12T00:00:00", + "exit_price": 89.89842730786603, + "exit_reason": "signal", + "exit_time": "2022-06-13T00:00:00", + "pnl": -57.39924264714682, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82455441317694, + "entry_time": "2022-06-15T00:00:00", + "exit_price": 90.16986826544031, + "exit_reason": "signal", + "exit_time": "2022-06-16T00:00:00", + "pnl": -65.46861477366292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.1811588929617, + "entry_time": "2022-06-18T00:00:00", + "exit_price": 90.09911654611165, + "exit_reason": "signal", + "exit_time": "2022-06-19T00:00:00", + "pnl": 91.79576531499515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.55257557802233, + "entry_time": "2022-06-21T00:00:00", + "exit_price": 90.6008717295654, + "exit_reason": "signal", + "exit_time": "2022-06-22T00:00:00", + "pnl": 4.829615154307248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.68671023186488, + "entry_time": "2022-06-24T00:00:00", + "exit_price": 89.96517472835333, + "exit_reason": "signal", + "exit_time": "2022-06-25T00:00:00", + "pnl": -72.15355035115317, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.05260562521785, + "entry_time": "2022-06-27T00:00:00", + "exit_price": 90.08006582461334, + "exit_reason": "signal", + "exit_time": "2022-06-28T00:00:00", + "pnl": 2.746019939548205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79432064186736, + "entry_time": "2022-06-30T00:00:00", + "exit_price": 92.41108821991375, + "exit_reason": "signal", + "exit_time": "2022-07-01T00:00:00", + "pnl": 161.67675780463833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87347025830266, + "entry_time": "2022-07-03T00:00:00", + "exit_price": 91.20564533828777, + "exit_reason": "signal", + "exit_time": "2022-07-04T00:00:00", + "pnl": 33.21750799850997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.30309517181773, + "entry_time": "2022-07-06T00:00:00", + "exit_price": 90.1406611037728, + "exit_reason": "signal", + "exit_time": "2022-07-07T00:00:00", + "pnl": -116.24340680449313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.24392591685461, + "entry_time": "2022-07-09T00:00:00", + "exit_price": 91.10896639776044, + "exit_reason": "signal", + "exit_time": "2022-07-10T00:00:00", + "pnl": 86.50404809058273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43429707485602, + "entry_time": "2022-07-12T00:00:00", + "exit_price": 90.99823744300166, + "exit_reason": "signal", + "exit_time": "2022-07-13T00:00:00", + "pnl": -43.60596318543685, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.51160983247296, + "entry_time": "2022-07-15T00:00:00", + "exit_price": 91.15695774047701, + "exit_reason": "signal", + "exit_time": "2022-07-16T00:00:00", + "pnl": 64.53479080040597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.25313076740179, + "entry_time": "2022-07-18T00:00:00", + "exit_price": 90.3503914171167, + "exit_reason": "signal", + "exit_time": "2022-07-19T00:00:00", + "pnl": -90.27393502850828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47393608345517, + "entry_time": "2022-07-21T00:00:00", + "exit_price": 89.98751697992218, + "exit_reason": "signal", + "exit_time": "2022-07-22T00:00:00", + "pnl": -148.64191035329895, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.0545116492653, + "entry_time": "2022-07-24T00:00:00", + "exit_price": 91.01799823084976, + "exit_reason": "signal", + "exit_time": "2022-07-25T00:00:00", + "pnl": -103.65134184155431, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05081241841744, + "entry_time": "2022-07-27T00:00:00", + "exit_price": 91.31407916672543, + "exit_reason": "signal", + "exit_time": "2022-07-28T00:00:00", + "pnl": 26.326674830799675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.80885265421585, + "entry_time": "2022-07-30T00:00:00", + "exit_price": 91.15205975168703, + "exit_reason": "signal", + "exit_time": "2022-07-31T00:00:00", + "pnl": 34.32070974711678, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47241880815605, + "entry_time": "2022-08-02T00:00:00", + "exit_price": 91.54172600484964, + "exit_reason": "signal", + "exit_time": "2022-08-03T00:00:00", + "pnl": 6.93071966935895, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8976774720573, + "entry_time": "2022-08-05T00:00:00", + "exit_price": 91.58791087448299, + "exit_reason": "signal", + "exit_time": "2022-08-06T00:00:00", + "pnl": -30.976659757430753, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02271267015783, + "entry_time": "2022-08-08T00:00:00", + "exit_price": 91.10459083951521, + "exit_reason": "signal", + "exit_time": "2022-08-09T00:00:00", + "pnl": -91.81218306426308, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24414870008319, + "entry_time": "2022-08-11T00:00:00", + "exit_price": 92.69109127617371, + "exit_reason": "signal", + "exit_time": "2022-08-12T00:00:00", + "pnl": 44.69425760905142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.65306278042236, + "entry_time": "2022-08-14T00:00:00", + "exit_price": 92.39816620647916, + "exit_reason": "signal", + "exit_time": "2022-08-15T00:00:00", + "pnl": 74.51034260568122, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1810606061523, + "entry_time": "2022-08-17T00:00:00", + "exit_price": 92.49470462633181, + "exit_reason": "signal", + "exit_time": "2022-08-18T00:00:00", + "pnl": -68.63559798204915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01504374556126, + "entry_time": "2022-08-20T00:00:00", + "exit_price": 92.67904663244455, + "exit_reason": "signal", + "exit_time": "2022-08-21T00:00:00", + "pnl": 66.40028868832997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74908045175502, + "entry_time": "2022-08-23T00:00:00", + "exit_price": 93.28081352108578, + "exit_reason": "signal", + "exit_time": "2022-08-24T00:00:00", + "pnl": -46.826693066923326, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72430502818085, + "entry_time": "2022-08-26T00:00:00", + "exit_price": 92.91000509633356, + "exit_reason": "signal", + "exit_time": "2022-08-27T00:00:00", + "pnl": -81.42999318472721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0266388958905, + "entry_time": "2022-08-29T00:00:00", + "exit_price": 93.06932306108122, + "exit_reason": "signal", + "exit_time": "2022-08-30T00:00:00", + "pnl": 4.268416519071252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2669116718157, + "entry_time": "2022-09-01T00:00:00", + "exit_price": 93.31911690207038, + "exit_reason": "signal", + "exit_time": "2022-09-02T00:00:00", + "pnl": 5.220523025467628, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.01378736632232, + "entry_time": "2022-09-04T00:00:00", + "exit_price": 92.69057272581715, + "exit_reason": "signal", + "exit_time": "2022-09-05T00:00:00", + "pnl": -32.321464050517534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86605080021333, + "entry_time": "2022-09-07T00:00:00", + "exit_price": 93.54829275642138, + "exit_reason": "signal", + "exit_time": "2022-09-08T00:00:00", + "pnl": 68.2241956208054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92761316198515, + "entry_time": "2022-09-10T00:00:00", + "exit_price": 92.07281692163534, + "exit_reason": "signal", + "exit_time": "2022-09-11T00:00:00", + "pnl": -185.4796240349824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2809228591007, + "entry_time": "2022-09-13T00:00:00", + "exit_price": 94.11130793179962, + "exit_reason": "signal", + "exit_time": "2022-09-14T00:00:00", + "pnl": -16.961492730108148, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.78210365621943, + "entry_time": "2022-09-16T00:00:00", + "exit_price": 94.99114272050637, + "exit_reason": "signal", + "exit_time": "2022-09-17T00:00:00", + "pnl": 20.903906428693517, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26603620619441, + "entry_time": "2022-09-19T00:00:00", + "exit_price": 95.26895473010688, + "exit_reason": "signal", + "exit_time": "2022-09-20T00:00:00", + "pnl": 100.29185239124672, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88756691851471, + "entry_time": "2022-09-22T00:00:00", + "exit_price": 94.90535085923925, + "exit_reason": "signal", + "exit_time": "2022-09-23T00:00:00", + "pnl": 1.7783940724530112, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.86627784439669, + "entry_time": "2022-09-25T00:00:00", + "exit_price": 94.27678234231546, + "exit_reason": "signal", + "exit_time": "2022-09-26T00:00:00", + "pnl": -58.94955020812449, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21120724189035, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 93.62182381785365, + "exit_reason": "signal", + "exit_time": "2022-09-29T00:00:00", + "pnl": -58.938342403669594, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70089986040492, + "entry_time": "2022-10-01T00:00:00", + "exit_price": 94.98061841891752, + "exit_reason": "signal", + "exit_time": "2022-10-02T00:00:00", + "pnl": 27.971855851259534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.63730668221625, + "entry_time": "2022-10-04T00:00:00", + "exit_price": 95.21809213108293, + "exit_reason": "signal", + "exit_time": "2022-10-05T00:00:00", + "pnl": 58.07854488666817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62513446883317, + "entry_time": "2022-10-07T00:00:00", + "exit_price": 95.0550792423482, + "exit_reason": "signal", + "exit_time": "2022-10-08T00:00:00", + "pnl": 42.99447735150352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71116560219859, + "entry_time": "2022-10-10T00:00:00", + "exit_price": 94.70112878957045, + "exit_reason": "signal", + "exit_time": "2022-10-11T00:00:00", + "pnl": 98.99631873718499, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.22008595203475, + "entry_time": "2022-10-13T00:00:00", + "exit_price": 95.26583380518775, + "exit_reason": "signal", + "exit_time": "2022-10-14T00:00:00", + "pnl": 104.57478531530069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84031644841893, + "entry_time": "2022-10-16T00:00:00", + "exit_price": 94.76253265375746, + "exit_reason": "signal", + "exit_time": "2022-10-17T00:00:00", + "pnl": -7.778379466146362, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36921450181964, + "entry_time": "2022-10-19T00:00:00", + "exit_price": 94.38751561741323, + "exit_reason": "signal", + "exit_time": "2022-10-20T00:00:00", + "pnl": 101.83011155935856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7594276079707, + "entry_time": "2022-10-22T00:00:00", + "exit_price": 94.20505090808615, + "exit_reason": "signal", + "exit_time": "2022-10-23T00:00:00", + "pnl": -55.43766998845422, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01993010545006, + "entry_time": "2022-10-25T00:00:00", + "exit_price": 94.25253006691226, + "exit_reason": "signal", + "exit_time": "2022-10-26T00:00:00", + "pnl": -76.74000385377985, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9292129294191, + "entry_time": "2022-10-28T00:00:00", + "exit_price": 95.45831791808807, + "exit_reason": "signal", + "exit_time": "2022-10-29T00:00:00", + "pnl": 52.91049886689689, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01874761761506, + "entry_time": "2022-10-31T00:00:00", + "exit_price": 95.70179579177142, + "exit_reason": "signal", + "exit_time": "2022-11-01T00:00:00", + "pnl": 68.30481741563563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.45782648578765, + "entry_time": "2022-11-03T00:00:00", + "exit_price": 95.9654506293958, + "exit_reason": "signal", + "exit_time": "2022-11-04T00:00:00", + "pnl": -49.237585639184545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.69543160906309, + "entry_time": "2022-11-06T00:00:00", + "exit_price": 96.23626703373414, + "exit_reason": "signal", + "exit_time": "2022-11-07T00:00:00", + "pnl": 54.08354246710405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23730582460071, + "entry_time": "2022-11-09T00:00:00", + "exit_price": 94.58630669240723, + "exit_reason": "signal", + "exit_time": "2022-11-10T00:00:00", + "pnl": -65.09991321934831, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.24411442253736, + "entry_time": "2022-11-12T00:00:00", + "exit_price": 94.80412345904836, + "exit_reason": "signal", + "exit_time": "2022-11-13T00:00:00", + "pnl": -43.99909634890173, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33266826608637, + "entry_time": "2022-11-15T00:00:00", + "exit_price": 94.08584208568091, + "exit_reason": "signal", + "exit_time": "2022-11-16T00:00:00", + "pnl": -24.682618040546004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20511704388718, + "entry_time": "2022-11-18T00:00:00", + "exit_price": 93.73586252939168, + "exit_reason": "signal", + "exit_time": "2022-11-19T00:00:00", + "pnl": -46.925451449549655, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6229802242446, + "entry_time": "2022-11-21T00:00:00", + "exit_price": 93.66558700926207, + "exit_reason": "signal", + "exit_time": "2022-11-22T00:00:00", + "pnl": -95.73932149825305, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74677062129318, + "entry_time": "2022-11-24T00:00:00", + "exit_price": 93.54017463980657, + "exit_reason": "signal", + "exit_time": "2022-11-25T00:00:00", + "pnl": -20.659598148660734, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.730138438308, + "entry_time": "2022-11-27T00:00:00", + "exit_price": 93.49572076787184, + "exit_reason": "signal", + "exit_time": "2022-11-28T00:00:00", + "pnl": -23.441767043615982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77203615539878, + "entry_time": "2022-11-30T00:00:00", + "exit_price": 92.91635203682458, + "exit_reason": "signal", + "exit_time": "2022-12-01T00:00:00", + "pnl": -85.56841185742087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91294155802173, + "entry_time": "2022-12-03T00:00:00", + "exit_price": 92.85493736088272, + "exit_reason": "signal", + "exit_time": "2022-12-04T00:00:00", + "pnl": -105.80041971389983, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07037492573126, + "entry_time": "2022-12-06T00:00:00", + "exit_price": 93.35918129576551, + "exit_reason": "signal", + "exit_time": "2022-12-07T00:00:00", + "pnl": -71.11936299657646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21752684184962, + "entry_time": "2022-12-09T00:00:00", + "exit_price": 93.82182795562746, + "exit_reason": "signal", + "exit_time": "2022-12-10T00:00:00", + "pnl": 60.43011137778376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91554181329224, + "entry_time": "2022-12-12T00:00:00", + "exit_price": 93.2637454877203, + "exit_reason": "signal", + "exit_time": "2022-12-13T00:00:00", + "pnl": -65.17963255719405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42377971468683, + "entry_time": "2022-12-15T00:00:00", + "exit_price": 92.9956096009709, + "exit_reason": "signal", + "exit_time": "2022-12-16T00:00:00", + "pnl": -42.81701137159325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95024629295155, + "entry_time": "2022-12-18T00:00:00", + "exit_price": 92.02384747382928, + "exit_reason": "signal", + "exit_time": "2022-12-19T00:00:00", + "pnl": -92.63988191222597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.73848563922941, + "entry_time": "2022-12-21T00:00:00", + "exit_price": 91.78634727970504, + "exit_reason": "signal", + "exit_time": "2022-12-22T00:00:00", + "pnl": 104.78616404756394, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.46503843997183, + "entry_time": "2022-12-24T00:00:00", + "exit_price": 91.75198886376967, + "exit_reason": "signal", + "exit_time": "2022-12-25T00:00:00", + "pnl": 28.695042379784354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.39876122857235, + "entry_time": "2022-12-27T00:00:00", + "exit_price": 92.11567284541557, + "exit_reason": "signal", + "exit_time": "2022-12-28T00:00:00", + "pnl": -28.30883831567735, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77091533493147, + "entry_time": "2022-12-30T00:00:00", + "exit_price": 93.3485194106044, + "exit_reason": "signal", + "exit_time": "2022-12-31T00:00:00", + "pnl": 57.76040756729344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04122370969267, + "entry_time": "2023-01-02T00:00:00", + "exit_price": 92.97807111210727, + "exit_reason": "signal", + "exit_time": "2023-01-03T00:00:00", + "pnl": 93.68474024146053, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82297627909733, + "entry_time": "2023-01-05T00:00:00", + "exit_price": 92.88908258807695, + "exit_reason": "signal", + "exit_time": "2023-01-06T00:00:00", + "pnl": 6.610630897961528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.02494822567454, + "entry_time": "2023-01-08T00:00:00", + "exit_price": 92.52813633390632, + "exit_reason": "signal", + "exit_time": "2023-01-09T00:00:00", + "pnl": -49.681189176822954, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77607586946252, + "entry_time": "2023-01-11T00:00:00", + "exit_price": 92.84906975105618, + "exit_reason": "signal", + "exit_time": "2023-01-12T00:00:00", + "pnl": 7.299388159366572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10682536410768, + "entry_time": "2023-01-14T00:00:00", + "exit_price": 92.60098332710814, + "exit_reason": "signal", + "exit_time": "2023-01-15T00:00:00", + "pnl": -50.58420369995474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16477240647922, + "entry_time": "2023-01-17T00:00:00", + "exit_price": 93.64464350405021, + "exit_reason": "signal", + "exit_time": "2023-01-18T00:00:00", + "pnl": 47.98710975709764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.34853961981467, + "entry_time": "2023-01-20T00:00:00", + "exit_price": 92.90164291858915, + "exit_reason": "signal", + "exit_time": "2023-01-21T00:00:00", + "pnl": 55.31032987744766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52920571661875, + "entry_time": "2023-01-23T00:00:00", + "exit_price": 92.96718442791747, + "exit_reason": "signal", + "exit_time": "2023-01-24T00:00:00", + "pnl": -56.202128870127126, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1449985691514, + "entry_time": "2023-01-26T00:00:00", + "exit_price": 93.09214526901171, + "exit_reason": "signal", + "exit_time": "2023-01-27T00:00:00", + "pnl": -105.28533001396863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08808617199072, + "entry_time": "2023-01-29T00:00:00", + "exit_price": 93.57735843418071, + "exit_reason": "signal", + "exit_time": "2023-01-30T00:00:00", + "pnl": -51.07277378100116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.03374091329063, + "entry_time": "2023-02-01T00:00:00", + "exit_price": 92.67153521214688, + "exit_reason": "signal", + "exit_time": "2023-02-02T00:00:00", + "pnl": -136.2205701143739, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90721494360177, + "entry_time": "2023-02-04T00:00:00", + "exit_price": 92.94800270723887, + "exit_reason": "signal", + "exit_time": "2023-02-05T00:00:00", + "pnl": 4.078776363709039, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77341143396697, + "entry_time": "2023-02-07T00:00:00", + "exit_price": 93.16810608211969, + "exit_reason": "signal", + "exit_time": "2023-02-08T00:00:00", + "pnl": -60.53053518472916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1295561924666, + "entry_time": "2023-02-10T00:00:00", + "exit_price": 93.6109897663897, + "exit_reason": "signal", + "exit_time": "2023-02-11T00:00:00", + "pnl": 48.143357392309554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09160273927316, + "entry_time": "2023-02-13T00:00:00", + "exit_price": 93.33166346007059, + "exit_reason": "signal", + "exit_time": "2023-02-14T00:00:00", + "pnl": -75.99392792025537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53620789150742, + "entry_time": "2023-02-16T00:00:00", + "exit_price": 94.21568894504843, + "exit_reason": "signal", + "exit_time": "2023-02-17T00:00:00", + "pnl": -32.051894645899665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93343913761625, + "entry_time": "2023-02-19T00:00:00", + "exit_price": 94.02299067534886, + "exit_reason": "signal", + "exit_time": "2023-02-20T00:00:00", + "pnl": 8.955153773262282, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18544500815403, + "entry_time": "2023-02-22T00:00:00", + "exit_price": 93.98907937476646, + "exit_reason": "signal", + "exit_time": "2023-02-23T00:00:00", + "pnl": -19.636563338757696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45348785433026, + "entry_time": "2023-02-25T00:00:00", + "exit_price": 95.02085687929099, + "exit_reason": "signal", + "exit_time": "2023-02-26T00:00:00", + "pnl": 56.73690249607171, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84830391916218, + "entry_time": "2023-02-28T00:00:00", + "exit_price": 94.43699045607909, + "exit_reason": "signal", + "exit_time": "2023-03-01T00:00:00", + "pnl": -41.13134630830791, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.95759166912262, + "entry_time": "2023-03-03T00:00:00", + "exit_price": 93.47551491598016, + "exit_reason": "signal", + "exit_time": "2023-03-04T00:00:00", + "pnl": -48.20767531424826, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66498305754212, + "entry_time": "2023-03-06T00:00:00", + "exit_price": 93.36643618283398, + "exit_reason": "signal", + "exit_time": "2023-03-07T00:00:00", + "pnl": -29.854687470813587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3496449568648, + "entry_time": "2023-03-09T00:00:00", + "exit_price": 93.06229907806569, + "exit_reason": "signal", + "exit_time": "2023-03-10T00:00:00", + "pnl": -28.734587879909668, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93784310790696, + "entry_time": "2023-03-12T00:00:00", + "exit_price": 92.96780942003683, + "exit_reason": "signal", + "exit_time": "2023-03-13T00:00:00", + "pnl": -97.00336878701273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88445131540618, + "entry_time": "2023-03-15T00:00:00", + "exit_price": 94.08186481058257, + "exit_reason": "signal", + "exit_time": "2023-03-16T00:00:00", + "pnl": 19.74134951763881, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20796655389181, + "entry_time": "2023-03-18T00:00:00", + "exit_price": 91.9654081254928, + "exit_reason": "signal", + "exit_time": "2023-03-19T00:00:00", + "pnl": -24.25584283990065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49393791749024, + "entry_time": "2023-03-21T00:00:00", + "exit_price": 92.05007592523164, + "exit_reason": "signal", + "exit_time": "2023-03-22T00:00:00", + "pnl": -44.386199225860764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.84518996211608, + "entry_time": "2023-03-24T00:00:00", + "exit_price": 92.32190345568543, + "exit_reason": "signal", + "exit_time": "2023-03-25T00:00:00", + "pnl": 47.671349356935025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32827178627502, + "entry_time": "2023-03-27T00:00:00", + "exit_price": 93.26562867244172, + "exit_reason": "signal", + "exit_time": "2023-03-28T00:00:00", + "pnl": -6.264311383329186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9489490131078, + "entry_time": "2023-03-30T00:00:00", + "exit_price": 93.54756230484855, + "exit_reason": "signal", + "exit_time": "2023-03-31T00:00:00", + "pnl": 59.861329174074854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52695826109523, + "entry_time": "2023-04-02T00:00:00", + "exit_price": 93.16120912048845, + "exit_reason": "signal", + "exit_time": "2023-04-03T00:00:00", + "pnl": -36.57491406067675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73109278013733, + "entry_time": "2023-04-05T00:00:00", + "exit_price": 92.12967158946792, + "exit_reason": "signal", + "exit_time": "2023-04-06T00:00:00", + "pnl": -60.14211906694072, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66144197243285, + "entry_time": "2023-04-08T00:00:00", + "exit_price": 92.35105870140517, + "exit_reason": "signal", + "exit_time": "2023-04-09T00:00:00", + "pnl": -31.038327102769472, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32497954050243, + "entry_time": "2023-04-11T00:00:00", + "exit_price": 92.404028525945, + "exit_reason": "signal", + "exit_time": "2023-04-12T00:00:00", + "pnl": -92.09510145574313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5596224194739, + "entry_time": "2023-04-14T00:00:00", + "exit_price": 93.06373732644884, + "exit_reason": "signal", + "exit_time": "2023-04-15T00:00:00", + "pnl": 50.41149069749554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82924854494932, + "entry_time": "2023-04-17T00:00:00", + "exit_price": 92.63616550173667, + "exit_reason": "signal", + "exit_time": "2023-04-18T00:00:00", + "pnl": -19.308304321264586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.79933273190036, + "entry_time": "2023-04-20T00:00:00", + "exit_price": 92.95120755426662, + "exit_reason": "signal", + "exit_time": "2023-04-21T00:00:00", + "pnl": 15.187482236626238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56403816854014, + "entry_time": "2023-04-23T00:00:00", + "exit_price": 92.35426808914588, + "exit_reason": "signal", + "exit_time": "2023-04-24T00:00:00", + "pnl": -20.977007939425675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35865607168631, + "entry_time": "2023-04-26T00:00:00", + "exit_price": 92.90482034285156, + "exit_reason": "signal", + "exit_time": "2023-04-27T00:00:00", + "pnl": -45.3835728834747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9985787957225, + "entry_time": "2023-04-29T00:00:00", + "exit_price": 92.8768940380532, + "exit_reason": "signal", + "exit_time": "2023-04-30T00:00:00", + "pnl": -12.168475766929987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86502942650776, + "entry_time": "2023-05-02T00:00:00", + "exit_price": 92.82867955654159, + "exit_reason": "signal", + "exit_time": "2023-05-03T00:00:00", + "pnl": -3.634986996616135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06669061925808, + "entry_time": "2023-05-05T00:00:00", + "exit_price": 93.05805100493505, + "exit_reason": "signal", + "exit_time": "2023-05-06T00:00:00", + "pnl": -0.8639614323019487, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19478081630376, + "entry_time": "2023-05-08T00:00:00", + "exit_price": 92.4726753044577, + "exit_reason": "signal", + "exit_time": "2023-05-09T00:00:00", + "pnl": -72.21055118460572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87741920594638, + "entry_time": "2023-05-11T00:00:00", + "exit_price": 93.47630925649874, + "exit_reason": "signal", + "exit_time": "2023-05-12T00:00:00", + "pnl": 159.88900505523452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67940992744533, + "entry_time": "2023-05-14T00:00:00", + "exit_price": 93.83387030747774, + "exit_reason": "signal", + "exit_time": "2023-05-15T00:00:00", + "pnl": 115.44603800323966, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77541066961662, + "entry_time": "2023-05-17T00:00:00", + "exit_price": 93.21806909335821, + "exit_reason": "signal", + "exit_time": "2023-05-18T00:00:00", + "pnl": 44.26584237415955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2116719393634, + "entry_time": "2023-05-20T00:00:00", + "exit_price": 93.63189068076446, + "exit_reason": "signal", + "exit_time": "2023-05-21T00:00:00", + "pnl": 42.021874140105865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.31676028980675, + "entry_time": "2023-05-23T00:00:00", + "exit_price": 93.96917376263126, + "exit_reason": "signal", + "exit_time": "2023-05-24T00:00:00", + "pnl": 65.24134728245008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.3332407570871, + "entry_time": "2023-05-26T00:00:00", + "exit_price": 94.63597205774145, + "exit_reason": "signal", + "exit_time": "2023-05-27T00:00:00", + "pnl": 30.273130065435907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00130198273087, + "entry_time": "2023-05-29T00:00:00", + "exit_price": 94.05926832590498, + "exit_reason": "signal", + "exit_time": "2023-05-30T00:00:00", + "pnl": 5.79663431741028, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76190103073331, + "entry_time": "2023-06-01T00:00:00", + "exit_price": 94.24963627943364, + "exit_reason": "signal", + "exit_time": "2023-06-02T00:00:00", + "pnl": 148.77352487003373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.73904226779082, + "entry_time": "2023-06-04T00:00:00", + "exit_price": 94.53198582108524, + "exit_reason": "signal", + "exit_time": "2023-06-05T00:00:00", + "pnl": -20.705644670559195, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29391446442062, + "entry_time": "2023-06-07T00:00:00", + "exit_price": 94.60323551607766, + "exit_reason": "signal", + "exit_time": "2023-06-08T00:00:00", + "pnl": 30.932105165702524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.17535379161295, + "entry_time": "2023-06-10T00:00:00", + "exit_price": 94.95745054254392, + "exit_reason": "signal", + "exit_time": "2023-06-11T00:00:00", + "pnl": 78.20967509309776, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65432843266518, + "entry_time": "2023-06-13T00:00:00", + "exit_price": 94.33856790601594, + "exit_reason": "signal", + "exit_time": "2023-06-14T00:00:00", + "pnl": -31.576052664924646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.36956060356385, + "entry_time": "2023-06-16T00:00:00", + "exit_price": 95.2507487739047, + "exit_reason": "signal", + "exit_time": "2023-06-17T00:00:00", + "pnl": 88.11881703408471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.98092766917739, + "entry_time": "2023-06-19T00:00:00", + "exit_price": 94.16338627425559, + "exit_reason": "signal", + "exit_time": "2023-06-20T00:00:00", + "pnl": -81.75413949218091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95283790294347, + "entry_time": "2023-06-22T00:00:00", + "exit_price": 94.37363985497257, + "exit_reason": "signal", + "exit_time": "2023-06-23T00:00:00", + "pnl": -57.919804797089455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.41734797456819, + "entry_time": "2023-06-25T00:00:00", + "exit_price": 94.46879833485087, + "exit_reason": "signal", + "exit_time": "2023-06-26T00:00:00", + "pnl": 5.145036028268805, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89779171625212, + "entry_time": "2023-06-28T00:00:00", + "exit_price": 94.56566914846213, + "exit_reason": "signal", + "exit_time": "2023-06-29T00:00:00", + "pnl": 66.78774322100071, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.12295330761387, + "entry_time": "2023-07-01T00:00:00", + "exit_price": 94.47229523041987, + "exit_reason": "signal", + "exit_time": "2023-07-02T00:00:00", + "pnl": 34.934192280601565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01642931045993, + "entry_time": "2023-07-04T00:00:00", + "exit_price": 94.97899403484826, + "exit_reason": "signal", + "exit_time": "2023-07-05T00:00:00", + "pnl": 96.25647243883213, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29040521639678, + "entry_time": "2023-07-07T00:00:00", + "exit_price": 94.62958711128005, + "exit_reason": "signal", + "exit_time": "2023-07-08T00:00:00", + "pnl": -66.0818105116723, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94114223449, + "entry_time": "2023-07-10T00:00:00", + "exit_price": 94.38592136937638, + "exit_reason": "signal", + "exit_time": "2023-07-11T00:00:00", + "pnl": -55.52208651136243, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.493222435549, + "entry_time": "2023-07-13T00:00:00", + "exit_price": 94.3474523152517, + "exit_reason": "signal", + "exit_time": "2023-07-14T00:00:00", + "pnl": -14.577012029729303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.84805377401344, + "entry_time": "2023-07-16T00:00:00", + "exit_price": 93.24313248176318, + "exit_reason": "signal", + "exit_time": "2023-07-17T00:00:00", + "pnl": -60.492129225025565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23716867785055, + "entry_time": "2023-07-19T00:00:00", + "exit_price": 94.3344550507391, + "exit_reason": "signal", + "exit_time": "2023-07-20T00:00:00", + "pnl": 109.72863728885386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.25058017257405, + "entry_time": "2023-07-22T00:00:00", + "exit_price": 94.26148603669161, + "exit_reason": "signal", + "exit_time": "2023-07-23T00:00:00", + "pnl": 1.090586411755794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.78124566715694, + "entry_time": "2023-07-25T00:00:00", + "exit_price": 93.30392352510412, + "exit_reason": "signal", + "exit_time": "2023-07-26T00:00:00", + "pnl": -147.7322142052817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05471403229689, + "entry_time": "2023-07-28T00:00:00", + "exit_price": 93.26889976544973, + "exit_reason": "signal", + "exit_time": "2023-07-29T00:00:00", + "pnl": -78.58142668471555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.97149252732743, + "entry_time": "2023-07-31T00:00:00", + "exit_price": 92.49652862514738, + "exit_reason": "signal", + "exit_time": "2023-08-01T00:00:00", + "pnl": -147.4963902180043, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49761686858754, + "entry_time": "2023-08-03T00:00:00", + "exit_price": 93.96133483843103, + "exit_reason": "signal", + "exit_time": "2023-08-04T00:00:00", + "pnl": 46.3717969843492, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60373115569557, + "entry_time": "2023-08-06T00:00:00", + "exit_price": 94.43278823558683, + "exit_reason": "signal", + "exit_time": "2023-08-07T00:00:00", + "pnl": 82.90570798912631, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.216186422251, + "entry_time": "2023-08-09T00:00:00", + "exit_price": 93.22790913521419, + "exit_reason": "signal", + "exit_time": "2023-08-10T00:00:00", + "pnl": -98.8277287036799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5392105794396, + "entry_time": "2023-08-12T00:00:00", + "exit_price": 93.3857390941578, + "exit_reason": "signal", + "exit_time": "2023-08-13T00:00:00", + "pnl": -115.3471485281807, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0337408175209, + "entry_time": "2023-08-15T00:00:00", + "exit_price": 94.39823678210567, + "exit_reason": "signal", + "exit_time": "2023-08-16T00:00:00", + "pnl": 136.44959645847666, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08940418013472, + "entry_time": "2023-08-18T00:00:00", + "exit_price": 92.65920217896303, + "exit_reason": "signal", + "exit_time": "2023-08-19T00:00:00", + "pnl": -143.02020011716922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39853539402684, + "entry_time": "2023-08-21T00:00:00", + "exit_price": 93.65048655775455, + "exit_reason": "signal", + "exit_time": "2023-08-22T00:00:00", + "pnl": 25.195116372769917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.79873760769597, + "entry_time": "2023-08-24T00:00:00", + "exit_price": 93.68828575617101, + "exit_reason": "signal", + "exit_time": "2023-08-25T00:00:00", + "pnl": 88.95481484750417, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87251964203307, + "entry_time": "2023-08-27T00:00:00", + "exit_price": 93.5300255114375, + "exit_reason": "signal", + "exit_time": "2023-08-28T00:00:00", + "pnl": -34.2494130595569, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79086592344467, + "entry_time": "2023-08-30T00:00:00", + "exit_price": 92.57270931229704, + "exit_reason": "signal", + "exit_time": "2023-08-31T00:00:00", + "pnl": -121.81566111476423, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88859692291733, + "entry_time": "2023-09-02T00:00:00", + "exit_price": 93.80271734344691, + "exit_reason": "signal", + "exit_time": "2023-09-03T00:00:00", + "pnl": -8.587957947042014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04073002158317, + "entry_time": "2023-09-05T00:00:00", + "exit_price": 94.46828834544144, + "exit_reason": "signal", + "exit_time": "2023-09-06T00:00:00", + "pnl": 142.75583238582658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23692924750448, + "entry_time": "2023-09-08T00:00:00", + "exit_price": 94.43771978777833, + "exit_reason": "signal", + "exit_time": "2023-09-09T00:00:00", + "pnl": 20.0790540273847, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09517649815284, + "entry_time": "2023-09-11T00:00:00", + "exit_price": 94.97835234626153, + "exit_reason": "signal", + "exit_time": "2023-09-12T00:00:00", + "pnl": 88.31758481086945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79133291522645, + "entry_time": "2023-09-14T00:00:00", + "exit_price": 94.02945945000636, + "exit_reason": "signal", + "exit_time": "2023-09-15T00:00:00", + "pnl": -76.18734652200874, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45235296621496, + "entry_time": "2023-09-17T00:00:00", + "exit_price": 94.63061442838703, + "exit_reason": "signal", + "exit_time": "2023-09-18T00:00:00", + "pnl": 17.82614621720677, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1729530420449, + "entry_time": "2023-09-20T00:00:00", + "exit_price": 93.58327824763774, + "exit_reason": "signal", + "exit_time": "2023-09-21T00:00:00", + "pnl": -58.96747944071649, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53629152727201, + "entry_time": "2023-09-23T00:00:00", + "exit_price": 93.30651397849368, + "exit_reason": "signal", + "exit_time": "2023-09-24T00:00:00", + "pnl": -22.977754877832922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69842586893596, + "entry_time": "2023-09-26T00:00:00", + "exit_price": 93.16248763742118, + "exit_reason": "signal", + "exit_time": "2023-09-27T00:00:00", + "pnl": -53.59382315147741, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49605102540508, + "entry_time": "2023-09-29T00:00:00", + "exit_price": 94.25313944944546, + "exit_reason": "signal", + "exit_time": "2023-09-30T00:00:00", + "pnl": 75.70884240403757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8421663218519, + "entry_time": "2023-10-02T00:00:00", + "exit_price": 92.97561455613513, + "exit_reason": "signal", + "exit_time": "2023-10-03T00:00:00", + "pnl": 13.344823428322343, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.01878568439928, + "entry_time": "2023-10-05T00:00:00", + "exit_price": 92.7731623418128, + "exit_reason": "signal", + "exit_time": "2023-10-06T00:00:00", + "pnl": -24.562334258647752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3031103300392, + "entry_time": "2023-10-08T00:00:00", + "exit_price": 92.82895908639827, + "exit_reason": "signal", + "exit_time": "2023-10-09T00:00:00", + "pnl": -47.41512436409357, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.34460637435383, + "entry_time": "2023-10-11T00:00:00", + "exit_price": 92.32181327562058, + "exit_reason": "signal", + "exit_time": "2023-10-12T00:00:00", + "pnl": -2.2793098733236548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.52607935640549, + "entry_time": "2023-10-14T00:00:00", + "exit_price": 92.2357948297768, + "exit_reason": "signal", + "exit_time": "2023-10-15T00:00:00", + "pnl": 70.97154733712887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68746434551585, + "entry_time": "2023-10-17T00:00:00", + "exit_price": 91.58592175261929, + "exit_reason": "signal", + "exit_time": "2023-10-18T00:00:00", + "pnl": -10.154259289656693, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.4669708006904, + "entry_time": "2023-10-20T00:00:00", + "exit_price": 91.654447961068, + "exit_reason": "signal", + "exit_time": "2023-10-21T00:00:00", + "pnl": 18.747716037760256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3612670935331, + "entry_time": "2023-10-23T00:00:00", + "exit_price": 91.01031054901587, + "exit_reason": "signal", + "exit_time": "2023-10-24T00:00:00", + "pnl": -135.09565445172302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.37919304454006, + "entry_time": "2023-10-26T00:00:00", + "exit_price": 91.41169786096938, + "exit_reason": "signal", + "exit_time": "2023-10-27T00:00:00", + "pnl": -96.74951835706815, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.29381617044329, + "entry_time": "2023-10-29T00:00:00", + "exit_price": 90.70386499802939, + "exit_reason": "signal", + "exit_time": "2023-10-30T00:00:00", + "pnl": -58.9951172413912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.42981226133158, + "entry_time": "2023-11-01T00:00:00", + "exit_price": 91.13311787546733, + "exit_reason": "signal", + "exit_time": "2023-11-02T00:00:00", + "pnl": -29.669438586422984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.41698336938475, + "entry_time": "2023-11-04T00:00:00", + "exit_price": 91.39366908316057, + "exit_reason": "signal", + "exit_time": "2023-11-05T00:00:00", + "pnl": -2.3314286224194802, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89356698837386, + "entry_time": "2023-11-07T00:00:00", + "exit_price": 91.60226357609555, + "exit_reason": "signal", + "exit_time": "2023-11-08T00:00:00", + "pnl": -29.130341227830286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.41574363121151, + "entry_time": "2023-11-10T00:00:00", + "exit_price": 91.77307124686526, + "exit_reason": "signal", + "exit_time": "2023-11-11T00:00:00", + "pnl": -64.26723843462605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32527272706531, + "entry_time": "2023-11-13T00:00:00", + "exit_price": 94.02617500869306, + "exit_reason": "signal", + "exit_time": "2023-11-14T00:00:00", + "pnl": 170.09022816277502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94533987249052, + "entry_time": "2023-11-16T00:00:00", + "exit_price": 92.0185892574846, + "exit_reason": "signal", + "exit_time": "2023-11-17T00:00:00", + "pnl": -92.67506150059126, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.30963127571127, + "entry_time": "2023-11-19T00:00:00", + "exit_price": 92.25489319248068, + "exit_reason": "signal", + "exit_time": "2023-11-20T00:00:00", + "pnl": -5.47380832305862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74391567498765, + "entry_time": "2023-11-22T00:00:00", + "exit_price": 93.20889480054281, + "exit_reason": "signal", + "exit_time": "2023-11-23T00:00:00", + "pnl": 46.49791255551463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11263111652507, + "entry_time": "2023-11-25T00:00:00", + "exit_price": 93.10139698703692, + "exit_reason": "signal", + "exit_time": "2023-11-26T00:00:00", + "pnl": -101.1234129488148, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71015543952899, + "entry_time": "2023-11-28T00:00:00", + "exit_price": 92.47583632063913, + "exit_reason": "signal", + "exit_time": "2023-11-29T00:00:00", + "pnl": -123.43191188898527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75986386635343, + "entry_time": "2023-12-01T00:00:00", + "exit_price": 94.27037620813209, + "exit_reason": "signal", + "exit_time": "2023-12-02T00:00:00", + "pnl": 151.05123417786672, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44774661355898, + "entry_time": "2023-12-04T00:00:00", + "exit_price": 93.99875783176927, + "exit_reason": "signal", + "exit_time": "2023-12-05T00:00:00", + "pnl": 55.101121821029665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.58344310898, + "entry_time": "2023-12-07T00:00:00", + "exit_price": 94.14439051922356, + "exit_reason": "signal", + "exit_time": "2023-12-08T00:00:00", + "pnl": 56.094741024355244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.54039819515216, + "entry_time": "2023-12-10T00:00:00", + "exit_price": 92.9236778577475, + "exit_reason": "signal", + "exit_time": "2023-12-11T00:00:00", + "pnl": 38.32796625953415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05584126819757, + "entry_time": "2023-12-13T00:00:00", + "exit_price": 93.35601781114134, + "exit_reason": "signal", + "exit_time": "2023-12-14T00:00:00", + "pnl": 130.01765429437728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81351651597147, + "entry_time": "2023-12-16T00:00:00", + "exit_price": 92.84701543791368, + "exit_reason": "signal", + "exit_time": "2023-12-17T00:00:00", + "pnl": 3.3498921942209563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.72332949821384, + "entry_time": "2023-12-19T00:00:00", + "exit_price": 92.51107159043487, + "exit_reason": "signal", + "exit_time": "2023-12-20T00:00:00", + "pnl": -21.22579077789851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91369044105626, + "entry_time": "2023-12-22T00:00:00", + "exit_price": 93.12129104458734, + "exit_reason": "signal", + "exit_time": "2023-12-23T00:00:00", + "pnl": -79.2399396468918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.14884637460803, + "entry_time": "2023-12-25T00:00:00", + "exit_price": 92.89417488264915, + "exit_reason": "signal", + "exit_time": "2023-12-26T00:00:00", + "pnl": 74.53285080411297, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12845985022912, + "entry_time": "2023-12-28T00:00:00", + "exit_price": 93.6597993052993, + "exit_reason": "signal", + "exit_time": "2023-12-29T00:00:00", + "pnl": 53.133945507017415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96178874818798, + "entry_time": "2023-12-31T00:00:00", + "exit_price": 94.4511703887473, + "exit_reason": "signal", + "exit_time": "2024-01-01T00:00:00", + "pnl": 48.93816405593134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.89229345893365, + "entry_time": "2024-01-03T00:00:00", + "exit_price": 94.58860576042824, + "exit_reason": "signal", + "exit_time": "2024-01-04T00:00:00", + "pnl": -30.368769850541867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.04178116383622, + "entry_time": "2024-01-06T00:00:00", + "exit_price": 94.4578576609693, + "exit_reason": "signal", + "exit_time": "2024-01-07T00:00:00", + "pnl": -58.39235028669282, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.86053478009173, + "entry_time": "2024-01-09T00:00:00", + "exit_price": 94.76430023458303, + "exit_reason": "signal", + "exit_time": "2024-01-10T00:00:00", + "pnl": -9.62345455087052, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8053175522895, + "entry_time": "2024-01-12T00:00:00", + "exit_price": 94.40836408730765, + "exit_reason": "signal", + "exit_time": "2024-01-13T00:00:00", + "pnl": -39.695346498183426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.85612524977265, + "entry_time": "2024-01-15T00:00:00", + "exit_price": 94.40863693697362, + "exit_reason": "signal", + "exit_time": "2024-01-16T00:00:00", + "pnl": -44.74883127990324, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.09196518919534, + "entry_time": "2024-01-18T00:00:00", + "exit_price": 94.91994528712154, + "exit_reason": "signal", + "exit_time": "2024-01-19T00:00:00", + "pnl": -17.20199020738073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.4574772984541, + "entry_time": "2024-01-21T00:00:00", + "exit_price": 95.40486331313025, + "exit_reason": "signal", + "exit_time": "2024-01-22T00:00:00", + "pnl": -5.261398532384192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8856295626394, + "entry_time": "2024-01-24T00:00:00", + "exit_price": 95.41673292493975, + "exit_reason": "signal", + "exit_time": "2024-01-25T00:00:00", + "pnl": 53.11033623003641, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.3011515367656, + "entry_time": "2024-01-27T00:00:00", + "exit_price": 94.50993042362319, + "exit_reason": "signal", + "exit_time": "2024-01-28T00:00:00", + "pnl": -79.12211131424192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8443544450889, + "entry_time": "2024-01-30T00:00:00", + "exit_price": 94.58646684173618, + "exit_reason": "signal", + "exit_time": "2024-01-31T00:00:00", + "pnl": -25.788760335271945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.51863942815191, + "entry_time": "2024-02-02T00:00:00", + "exit_price": 95.02582579018504, + "exit_reason": "signal", + "exit_time": "2024-02-03T00:00:00", + "pnl": -49.28136379668649, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.64624335712315, + "entry_time": "2024-02-05T00:00:00", + "exit_price": 95.62478266594604, + "exit_reason": "signal", + "exit_time": "2024-02-06T00:00:00", + "pnl": -2.1460691177107947, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.97351592845855, + "entry_time": "2024-02-08T00:00:00", + "exit_price": 96.2565162152012, + "exit_reason": "signal", + "exit_time": "2024-02-09T00:00:00", + "pnl": 128.3000286742663, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.32379857764126, + "entry_time": "2024-02-11T00:00:00", + "exit_price": 93.96151236382953, + "exit_reason": "signal", + "exit_time": "2024-02-12T00:00:00", + "pnl": -36.22862138117307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38409820559012, + "entry_time": "2024-02-14T00:00:00", + "exit_price": 94.76791246698865, + "exit_reason": "signal", + "exit_time": "2024-02-15T00:00:00", + "pnl": 38.38142613985292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.15204268625024, + "entry_time": "2024-02-17T00:00:00", + "exit_price": 94.14536275879573, + "exit_reason": "signal", + "exit_time": "2024-02-18T00:00:00", + "pnl": -100.66799274545156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92555424660308, + "entry_time": "2024-02-20T00:00:00", + "exit_price": 95.28378367357755, + "exit_reason": "signal", + "exit_time": "2024-02-21T00:00:00", + "pnl": 35.822942697446706, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6447277617356, + "entry_time": "2024-02-23T00:00:00", + "exit_price": 93.94359099606793, + "exit_reason": "signal", + "exit_time": "2024-02-24T00:00:00", + "pnl": -70.11367656676703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.63169426987818, + "entry_time": "2024-02-26T00:00:00", + "exit_price": 93.61709548381037, + "exit_reason": "signal", + "exit_time": "2024-02-27T00:00:00", + "pnl": -101.45987860678179, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99406223655019, + "entry_time": "2024-02-29T00:00:00", + "exit_price": 93.51586581649707, + "exit_reason": "signal", + "exit_time": "2024-03-01T00:00:00", + "pnl": 52.18035799468635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88355978598187, + "entry_time": "2024-03-03T00:00:00", + "exit_price": 93.59210068726338, + "exit_reason": "signal", + "exit_time": "2024-03-04T00:00:00", + "pnl": 70.85409012815035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.20766791171343, + "entry_time": "2024-03-06T00:00:00", + "exit_price": 93.03526629028748, + "exit_reason": "signal", + "exit_time": "2024-03-07T00:00:00", + "pnl": -17.24016214259609, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73917319444821, + "entry_time": "2024-03-09T00:00:00", + "exit_price": 93.21019311262798, + "exit_reason": "signal", + "exit_time": "2024-03-10T00:00:00", + "pnl": -52.89800818202275, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87224010683995, + "entry_time": "2024-03-12T00:00:00", + "exit_price": 93.42438731231145, + "exit_reason": "signal", + "exit_time": "2024-03-13T00:00:00", + "pnl": -44.78527945284986, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32218202085551, + "entry_time": "2024-03-15T00:00:00", + "exit_price": 92.84840341954816, + "exit_reason": "signal", + "exit_time": "2024-03-16T00:00:00", + "pnl": -47.377860130734916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74542752078266, + "entry_time": "2024-03-18T00:00:00", + "exit_price": 93.97099698374726, + "exit_reason": "signal", + "exit_time": "2024-03-19T00:00:00", + "pnl": 22.55694629646132, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5673298293271, + "entry_time": "2024-03-21T00:00:00", + "exit_price": 90.9938401219299, + "exit_reason": "signal", + "exit_time": "2024-03-22T00:00:00", + "pnl": -157.34897073972024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89305134977978, + "entry_time": "2024-03-24T00:00:00", + "exit_price": 92.62217998545916, + "exit_reason": "signal", + "exit_time": "2024-03-25T00:00:00", + "pnl": -27.087136432062835, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36509094658045, + "entry_time": "2024-03-27T00:00:00", + "exit_price": 92.88634389481254, + "exit_reason": "signal", + "exit_time": "2024-03-28T00:00:00", + "pnl": 52.125294823208606, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09706919037085, + "entry_time": "2024-03-30T00:00:00", + "exit_price": 92.26411816919232, + "exit_reason": "signal", + "exit_time": "2024-03-31T00:00:00", + "pnl": -83.29510211785237, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87466770876313, + "entry_time": "2024-04-02T00:00:00", + "exit_price": 92.60479889553623, + "exit_reason": "signal", + "exit_time": "2024-04-03T00:00:00", + "pnl": -26.986881322687623, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20308651861096, + "entry_time": "2024-04-05T00:00:00", + "exit_price": 92.03254850546956, + "exit_reason": "signal", + "exit_time": "2024-04-06T00:00:00", + "pnl": -17.05380131413949, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.38853458659054, + "entry_time": "2024-04-08T00:00:00", + "exit_price": 92.15112623454131, + "exit_reason": "signal", + "exit_time": "2024-04-09T00:00:00", + "pnl": -23.740835204922405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96842409215192, + "entry_time": "2024-04-11T00:00:00", + "exit_price": 91.88812859002927, + "exit_reason": "signal", + "exit_time": "2024-04-12T00:00:00", + "pnl": -8.029550212266258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24664780939709, + "entry_time": "2024-04-14T00:00:00", + "exit_price": 92.55850895917358, + "exit_reason": "signal", + "exit_time": "2024-04-15T00:00:00", + "pnl": 31.186114977648685, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87161322114831, + "entry_time": "2024-04-17T00:00:00", + "exit_price": 92.00535793552656, + "exit_reason": "signal", + "exit_time": "2024-04-18T00:00:00", + "pnl": -86.62552856217553, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.4480286140058, + "entry_time": "2024-04-20T00:00:00", + "exit_price": 93.06090359266081, + "exit_reason": "signal", + "exit_time": "2024-04-21T00:00:00", + "pnl": 61.28749786549997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86729712174954, + "entry_time": "2024-04-23T00:00:00", + "exit_price": 91.52050959132679, + "exit_reason": "signal", + "exit_time": "2024-04-24T00:00:00", + "pnl": -234.67875304227528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.61545833641877, + "entry_time": "2024-04-26T00:00:00", + "exit_price": 93.11576558511285, + "exit_reason": "signal", + "exit_time": "2024-04-27T00:00:00", + "pnl": 50.03072486940982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.83965947403613, + "entry_time": "2024-04-29T00:00:00", + "exit_price": 92.12256163749144, + "exit_reason": "signal", + "exit_time": "2024-04-30T00:00:00", + "pnl": -71.70978365446899, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01797419460767, + "entry_time": "2024-05-02T00:00:00", + "exit_price": 93.19504665832812, + "exit_reason": "signal", + "exit_time": "2024-05-03T00:00:00", + "pnl": 117.70724637204512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.52501223027797, + "entry_time": "2024-05-05T00:00:00", + "exit_price": 93.70543373709387, + "exit_reason": "signal", + "exit_time": "2024-05-06T00:00:00", + "pnl": -81.95784931841081, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.76145907090128, + "entry_time": "2024-05-08T00:00:00", + "exit_price": 93.99231970762736, + "exit_reason": "signal", + "exit_time": "2024-05-09T00:00:00", + "pnl": 23.08606367260836, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.72601264375818, + "entry_time": "2024-05-11T00:00:00", + "exit_price": 94.17294252688178, + "exit_reason": "signal", + "exit_time": "2024-05-12T00:00:00", + "pnl": 144.69298831235938, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66991995260973, + "entry_time": "2024-05-14T00:00:00", + "exit_price": 93.29227941579406, + "exit_reason": "signal", + "exit_time": "2024-05-15T00:00:00", + "pnl": -37.76405368156702, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05260425345361, + "entry_time": "2024-05-17T00:00:00", + "exit_price": 93.08641894302396, + "exit_reason": "signal", + "exit_time": "2024-05-18T00:00:00", + "pnl": 3.381468957035395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89786622090341, + "entry_time": "2024-05-20T00:00:00", + "exit_price": 93.19281076082636, + "exit_reason": "signal", + "exit_time": "2024-05-21T00:00:00", + "pnl": 29.49445399229444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00268172437694, + "entry_time": "2024-05-23T00:00:00", + "exit_price": 93.8031782169886, + "exit_reason": "signal", + "exit_time": "2024-05-24T00:00:00", + "pnl": 80.04964926116554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30303744020942, + "entry_time": "2024-05-26T00:00:00", + "exit_price": 93.96047444085842, + "exit_reason": "signal", + "exit_time": "2024-05-27T00:00:00", + "pnl": -34.2562999351012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53102238294964, + "entry_time": "2024-05-29T00:00:00", + "exit_price": 93.55135190498416, + "exit_reason": "signal", + "exit_time": "2024-05-30T00:00:00", + "pnl": 2.032952203451714, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73320965755092, + "entry_time": "2024-06-01T00:00:00", + "exit_price": 93.83108861382613, + "exit_reason": "signal", + "exit_time": "2024-06-02T00:00:00", + "pnl": 9.787895627519902, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66116571648418, + "entry_time": "2024-06-04T00:00:00", + "exit_price": 93.37760682748707, + "exit_reason": "signal", + "exit_time": "2024-06-05T00:00:00", + "pnl": 71.64411110028959, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73832896665387, + "entry_time": "2024-06-07T00:00:00", + "exit_price": 93.55125645985115, + "exit_reason": "signal", + "exit_time": "2024-06-08T00:00:00", + "pnl": -18.70725068027241, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05801072220544, + "entry_time": "2024-06-10T00:00:00", + "exit_price": 93.19615016955767, + "exit_reason": "signal", + "exit_time": "2024-06-11T00:00:00", + "pnl": -86.18605526477586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71612053106102, + "entry_time": "2024-06-13T00:00:00", + "exit_price": 92.35363412291727, + "exit_reason": "signal", + "exit_time": "2024-06-14T00:00:00", + "pnl": -36.248640814375904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89683728827593, + "entry_time": "2024-06-16T00:00:00", + "exit_price": 93.45394449656699, + "exit_reason": "signal", + "exit_time": "2024-06-17T00:00:00", + "pnl": 55.71072082910541, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64711251538863, + "entry_time": "2024-06-19T00:00:00", + "exit_price": 94.20425342905766, + "exit_reason": "signal", + "exit_time": "2024-06-20T00:00:00", + "pnl": 55.71409136690272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27286775878677, + "entry_time": "2024-06-22T00:00:00", + "exit_price": 93.11098684044114, + "exit_reason": "signal", + "exit_time": "2024-06-23T00:00:00", + "pnl": -16.188091834563238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82344576152076, + "entry_time": "2024-06-25T00:00:00", + "exit_price": 93.85991046136218, + "exit_reason": "signal", + "exit_time": "2024-06-26T00:00:00", + "pnl": 3.6464699841417314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76944869834962, + "entry_time": "2024-06-28T00:00:00", + "exit_price": 94.49443525385506, + "exit_reason": "signal", + "exit_time": "2024-06-29T00:00:00", + "pnl": 172.49865555054384, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26714007172914, + "entry_time": "2024-07-01T00:00:00", + "exit_price": 93.55312747617486, + "exit_reason": "signal", + "exit_time": "2024-07-02T00:00:00", + "pnl": -71.4012595554268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21338289364272, + "entry_time": "2024-07-04T00:00:00", + "exit_price": 93.50082066300278, + "exit_reason": "signal", + "exit_time": "2024-07-05T00:00:00", + "pnl": -71.25622306399418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2831851440446, + "entry_time": "2024-07-07T00:00:00", + "exit_price": 92.64838687037759, + "exit_reason": "signal", + "exit_time": "2024-07-08T00:00:00", + "pnl": -63.47982736670019, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7216517557643, + "entry_time": "2024-07-10T00:00:00", + "exit_price": 92.97199380174195, + "exit_reason": "signal", + "exit_time": "2024-07-11T00:00:00", + "pnl": -74.96579540223684, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55110234448432, + "entry_time": "2024-07-13T00:00:00", + "exit_price": 92.47254018419862, + "exit_reason": "signal", + "exit_time": "2024-07-14T00:00:00", + "pnl": -107.85621602856918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.35333984916058, + "entry_time": "2024-07-16T00:00:00", + "exit_price": 92.55290357280875, + "exit_reason": "signal", + "exit_time": "2024-07-17T00:00:00", + "pnl": 19.956372364815252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.92761668682888, + "entry_time": "2024-07-19T00:00:00", + "exit_price": 92.52405415324874, + "exit_reason": "signal", + "exit_time": "2024-07-20T00:00:00", + "pnl": 59.64374664198658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01759216619796, + "entry_time": "2024-07-22T00:00:00", + "exit_price": 91.9301791723341, + "exit_reason": "signal", + "exit_time": "2024-07-23T00:00:00", + "pnl": -8.741299386385435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.98789247555584, + "entry_time": "2024-07-25T00:00:00", + "exit_price": 92.13492749804534, + "exit_reason": "signal", + "exit_time": "2024-07-26T00:00:00", + "pnl": 14.703502248950826, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.88900920001714, + "entry_time": "2024-07-28T00:00:00", + "exit_price": 91.63316803265334, + "exit_reason": "signal", + "exit_time": "2024-07-29T00:00:00", + "pnl": -25.584116736379656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.85577813730865, + "entry_time": "2024-07-31T00:00:00", + "exit_price": 92.25060393364089, + "exit_reason": "signal", + "exit_time": "2024-08-01T00:00:00", + "pnl": 39.482579633224304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37992029678232, + "entry_time": "2024-08-03T00:00:00", + "exit_price": 91.2161626045396, + "exit_reason": "signal", + "exit_time": "2024-08-04T00:00:00", + "pnl": -16.375769224270698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.94097148564505, + "entry_time": "2024-08-06T00:00:00", + "exit_price": 91.61411385344917, + "exit_reason": "signal", + "exit_time": "2024-08-07T00:00:00", + "pnl": -32.68576321958972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.26633312852945, + "entry_time": "2024-08-09T00:00:00", + "exit_price": 92.57486927906898, + "exit_reason": "signal", + "exit_time": "2024-08-10T00:00:00", + "pnl": 30.853615053951216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25460128509323, + "entry_time": "2024-08-12T00:00:00", + "exit_price": 92.93806274853755, + "exit_reason": "signal", + "exit_time": "2024-08-13T00:00:00", + "pnl": -31.653853655569037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88821464003595, + "entry_time": "2024-08-15T00:00:00", + "exit_price": 92.53437593350753, + "exit_reason": "signal", + "exit_time": "2024-08-16T00:00:00", + "pnl": -35.38387065284223, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5558255899151, + "entry_time": "2024-08-18T00:00:00", + "exit_price": 92.57746904834741, + "exit_reason": "signal", + "exit_time": "2024-08-19T00:00:00", + "pnl": 2.1643458432317857, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35186779566517, + "entry_time": "2024-08-21T00:00:00", + "exit_price": 93.8222066824917, + "exit_reason": "signal", + "exit_time": "2024-08-22T00:00:00", + "pnl": 47.033888682653924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33239215677628, + "entry_time": "2024-08-24T00:00:00", + "exit_price": 92.65684927729922, + "exit_reason": "signal", + "exit_time": "2024-08-25T00:00:00", + "pnl": -67.55428794770523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07995330778445, + "entry_time": "2024-08-27T00:00:00", + "exit_price": 93.14274907856505, + "exit_reason": "signal", + "exit_time": "2024-08-28T00:00:00", + "pnl": 6.279577078059447, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.31638915313647, + "entry_time": "2024-08-30T00:00:00", + "exit_price": 92.80125655346451, + "exit_reason": "signal", + "exit_time": "2024-08-31T00:00:00", + "pnl": -151.51325996719606, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86908900365832, + "entry_time": "2024-09-02T00:00:00", + "exit_price": 92.43258549076677, + "exit_reason": "signal", + "exit_time": "2024-09-03T00:00:00", + "pnl": -43.65035128915588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74183853860589, + "entry_time": "2024-09-05T00:00:00", + "exit_price": 93.04661736537737, + "exit_reason": "signal", + "exit_time": "2024-09-06T00:00:00", + "pnl": 30.477882677147136, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.18409149189986, + "entry_time": "2024-09-08T00:00:00", + "exit_price": 92.27288236124933, + "exit_reason": "signal", + "exit_time": "2024-09-09T00:00:00", + "pnl": 108.87908693494501, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66757472286284, + "entry_time": "2024-09-11T00:00:00", + "exit_price": 91.66108329653197, + "exit_reason": "signal", + "exit_time": "2024-09-12T00:00:00", + "pnl": -100.64914263308674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0113429588981, + "entry_time": "2024-09-14T00:00:00", + "exit_price": 92.01542580767834, + "exit_reason": "signal", + "exit_time": "2024-09-15T00:00:00", + "pnl": 100.40828487802537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87145951112795, + "entry_time": "2024-09-17T00:00:00", + "exit_price": 91.58043482842866, + "exit_reason": "signal", + "exit_time": "2024-09-18T00:00:00", + "pnl": 70.89753173007011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28456359684716, + "entry_time": "2024-09-20T00:00:00", + "exit_price": 91.42689177563531, + "exit_reason": "signal", + "exit_time": "2024-09-21T00:00:00", + "pnl": 114.23281787881388, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.10394740945229, + "entry_time": "2024-09-23T00:00:00", + "exit_price": 91.5888902773369, + "exit_reason": "signal", + "exit_time": "2024-09-24T00:00:00", + "pnl": 148.49428678846198, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05233318851363, + "entry_time": "2024-09-26T00:00:00", + "exit_price": 91.20379964517136, + "exit_reason": "signal", + "exit_time": "2024-09-27T00:00:00", + "pnl": 15.146645665774486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93054848304011, + "entry_time": "2024-09-29T00:00:00", + "exit_price": 91.4470753529935, + "exit_reason": "signal", + "exit_time": "2024-09-30T00:00:00", + "pnl": 51.65268699533772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55093725008568, + "entry_time": "2024-10-02T00:00:00", + "exit_price": 90.1771270171211, + "exit_reason": "signal", + "exit_time": "2024-10-03T00:00:00", + "pnl": -137.3810232964588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.51951955539236, + "entry_time": "2024-10-05T00:00:00", + "exit_price": 90.35054775405881, + "exit_reason": "signal", + "exit_time": "2024-10-06T00:00:00", + "pnl": -16.897180133355505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20200706252784, + "entry_time": "2024-10-08T00:00:00", + "exit_price": 91.07198645570766, + "exit_reason": "signal", + "exit_time": "2024-10-09T00:00:00", + "pnl": -13.002060682018055, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.13850851279538, + "entry_time": "2024-10-11T00:00:00", + "exit_price": 90.2608758916971, + "exit_reason": "signal", + "exit_time": "2024-10-12T00:00:00", + "pnl": -87.76326210982734, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93035699558081, + "entry_time": "2024-10-14T00:00:00", + "exit_price": 90.52157669994283, + "exit_reason": "signal", + "exit_time": "2024-10-15T00:00:00", + "pnl": -40.8780295637971, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49395863364698, + "entry_time": "2024-10-17T00:00:00", + "exit_price": 89.86316250689507, + "exit_reason": "signal", + "exit_time": "2024-10-18T00:00:00", + "pnl": -63.07961267519204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.18352844268802, + "entry_time": "2024-10-20T00:00:00", + "exit_price": 88.93546496698286, + "exit_reason": "signal", + "exit_time": "2024-10-21T00:00:00", + "pnl": -124.80634757051484, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.8113095296125, + "entry_time": "2024-10-23T00:00:00", + "exit_price": 89.54696410392557, + "exit_reason": "signal", + "exit_time": "2024-10-24T00:00:00", + "pnl": -26.43454256869336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.08012041438292, + "entry_time": "2024-10-26T00:00:00", + "exit_price": 89.23016998477505, + "exit_reason": "signal", + "exit_time": "2024-10-27T00:00:00", + "pnl": 15.004957039212968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.84774198158706, + "entry_time": "2024-10-29T00:00:00", + "exit_price": 89.88558944915762, + "exit_reason": "signal", + "exit_time": "2024-10-30T00:00:00", + "pnl": 3.7847467570554727, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.52000332438061, + "entry_time": "2024-11-01T00:00:00", + "exit_price": 88.86871340352687, + "exit_reason": "signal", + "exit_time": "2024-11-02T00:00:00", + "pnl": 34.87100791462581, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.58373696827199, + "entry_time": "2024-11-04T00:00:00", + "exit_price": 88.82208371804109, + "exit_reason": "signal", + "exit_time": "2024-11-05T00:00:00", + "pnl": -76.16532502309019, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32832910147938, + "entry_time": "2024-11-07T00:00:00", + "exit_price": 89.06529443738525, + "exit_reason": "signal", + "exit_time": "2024-11-08T00:00:00", + "pnl": -26.303466409412067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45977666376373, + "entry_time": "2024-11-10T00:00:00", + "exit_price": 89.24686599676619, + "exit_reason": "signal", + "exit_time": "2024-11-11T00:00:00", + "pnl": -121.29106669975408, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.21043430906948, + "entry_time": "2024-11-13T00:00:00", + "exit_price": 88.4518561142622, + "exit_reason": "signal", + "exit_time": "2024-11-14T00:00:00", + "pnl": -75.85781948072872, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.80819601768098, + "entry_time": "2024-11-16T00:00:00", + "exit_price": 88.9586155221746, + "exit_reason": "signal", + "exit_time": "2024-11-17T00:00:00", + "pnl": 15.041950449362048, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.14254378792333, + "entry_time": "2024-11-19T00:00:00", + "exit_price": 88.6718045936633, + "exit_reason": "signal", + "exit_time": "2024-11-20T00:00:00", + "pnl": -47.07391942600407, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.3689677842857, + "entry_time": "2024-11-22T00:00:00", + "exit_price": 88.87620295869029, + "exit_reason": "signal", + "exit_time": "2024-11-23T00:00:00", + "pnl": -49.27648255954227, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.06997514477666, + "entry_time": "2024-11-25T00:00:00", + "exit_price": 88.79230048470953, + "exit_reason": "signal", + "exit_time": "2024-11-26T00:00:00", + "pnl": -27.76746600671322, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.69842658289039, + "entry_time": "2024-11-28T00:00:00", + "exit_price": 88.84366945841847, + "exit_reason": "signal", + "exit_time": "2024-11-29T00:00:00", + "pnl": -85.47571244719074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.75521347785288, + "entry_time": "2024-12-01T00:00:00", + "exit_price": 89.14459057740478, + "exit_reason": "signal", + "exit_time": "2024-12-02T00:00:00", + "pnl": -61.06229004481065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.78540826994568, + "entry_time": "2024-12-04T00:00:00", + "exit_price": 89.0389294134589, + "exit_reason": "signal", + "exit_time": "2024-12-05T00:00:00", + "pnl": 25.352114351322598, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.11917253451473, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 99.54841534502786, + "exit_time": "2020-01-04T00:00:00", + "gross_pnl": -157.07571894868693, + "pnl": -157.07571894868693, + "pnlcomm": -157.07571894868693, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.03201587878578, + "entry_time": "2020-01-06T00:00:00", + "exit_price": 99.94550278474797, + "exit_time": "2020-01-07T00:00:00", + "gross_pnl": -8.651309403781227, + "pnl": -8.651309403781227, + "pnlcomm": -8.651309403781227, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.67183298908238, + "entry_time": "2020-01-09T00:00:00", + "exit_price": 99.86549713479145, + "exit_time": "2020-01-10T00:00:00", + "gross_pnl": 19.366414570907864, + "pnl": 19.366414570907864, + "pnlcomm": 19.366414570907864, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.1916089774142, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 100.48697641782272, + "exit_time": "2020-01-13T00:00:00", + "gross_pnl": 29.536744040851204, + "pnl": 29.536744040851204, + "pnlcomm": 29.536744040851204, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.74505140134526, + "entry_time": "2020-01-15T00:00:00", + "exit_price": 99.43249701182592, + "exit_time": "2020-01-16T00:00:00", + "gross_pnl": -31.255438951934877, + "pnl": -31.255438951934877, + "pnlcomm": -31.255438951934877, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36317339817481, + "entry_time": "2020-01-18T00:00:00", + "exit_price": 100.3184784020995, + "exit_time": "2020-01-19T00:00:00", + "gross_pnl": 95.53050039246926, + "pnl": 95.53050039246926, + "pnlcomm": 95.53050039246926, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.59194698786014, + "entry_time": "2020-01-21T00:00:00", + "exit_price": 99.21300773889088, + "exit_time": "2020-01-22T00:00:00", + "gross_pnl": -37.89392489692602, + "pnl": -37.89392489692602, + "pnlcomm": -37.89392489692602, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.93323693635863, + "entry_time": "2020-01-24T00:00:00", + "exit_price": 101.01041702546699, + "exit_time": "2020-01-25T00:00:00", + "gross_pnl": 107.71800891083672, + "pnl": 107.71800891083672, + "pnlcomm": 107.71800891083672, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.12882215455511, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 98.82503838919212, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -130.37837653629936, + "pnl": -130.37837653629936, + "pnlcomm": -130.37837653629936, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20974209562837, + "entry_time": "2020-01-30T00:00:00", + "exit_price": 99.28418162139361, + "exit_time": "2020-01-31T00:00:00", + "gross_pnl": 7.443952576524282, + "pnl": 7.443952576524282, + "pnlcomm": 7.443952576524282, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91262465479312, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 98.47079432451613, + "exit_time": "2020-02-03T00:00:00", + "gross_pnl": -144.18303302769857, + "pnl": -144.18303302769857, + "pnlcomm": -144.18303302769857, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.41396612142576, + "entry_time": "2020-02-05T00:00:00", + "exit_price": 99.74208634353057, + "exit_time": "2020-02-06T00:00:00", + "gross_pnl": 132.81202221048147, + "pnl": 132.81202221048147, + "pnlcomm": 132.81202221048147, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96112016066532, + "entry_time": "2020-02-08T00:00:00", + "exit_price": 99.14757933275934, + "exit_time": "2020-02-09T00:00:00", + "gross_pnl": 18.64591720940183, + "pnl": 18.64591720940183, + "pnlcomm": 18.64591720940183, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.33794797010775, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 98.95774776632322, + "exit_time": "2020-02-12T00:00:00", + "gross_pnl": -38.02002037845256, + "pnl": -38.02002037845256, + "pnlcomm": -38.02002037845256, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.39809150990905, + "entry_time": "2020-02-14T00:00:00", + "exit_price": 99.29624163714647, + "exit_time": "2020-02-15T00:00:00", + "gross_pnl": -10.18498727625854, + "pnl": -10.18498727625854, + "pnlcomm": -10.18498727625854, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.98044425919083, + "entry_time": "2020-02-17T00:00:00", + "exit_price": 98.71415014911958, + "exit_time": "2020-02-18T00:00:00", + "gross_pnl": -26.629411007125725, + "pnl": -26.629411007125725, + "pnlcomm": -26.629411007125725, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68703409584346, + "entry_time": "2020-02-20T00:00:00", + "exit_price": 99.19660477578049, + "exit_time": "2020-02-21T00:00:00", + "gross_pnl": 50.957067993702765, + "pnl": 50.957067993702765, + "pnlcomm": 50.957067993702765, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.09913803201934, + "entry_time": "2020-02-23T00:00:00", + "exit_price": 99.13975001075532, + "exit_time": "2020-02-24T00:00:00", + "gross_pnl": -95.93880212640187, + "pnl": -95.93880212640187, + "pnlcomm": -95.93880212640187, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7525000464393, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 98.67014960303162, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": -8.235044340767672, + "pnl": -8.235044340767672, + "pnlcomm": -8.235044340767672, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.16172259245428, + "entry_time": "2020-02-29T00:00:00", + "exit_price": 99.99277550738104, + "exit_time": "2020-03-01T00:00:00", + "gross_pnl": 83.1052914926758, + "pnl": 83.1052914926758, + "pnlcomm": 83.1052914926758, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.726000665382, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 99.27597137389321, + "exit_time": "2020-03-04T00:00:00", + "gross_pnl": 54.997070851121066, + "pnl": 54.997070851121066, + "pnlcomm": 54.997070851121066, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.96674656359579, + "entry_time": "2020-03-06T00:00:00", + "exit_price": 99.01407453019127, + "exit_time": "2020-03-07T00:00:00", + "gross_pnl": -95.26720334045251, + "pnl": -95.26720334045251, + "pnlcomm": -95.26720334045251, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.01883446140224, + "entry_time": "2020-03-09T00:00:00", + "exit_price": 99.33686580554885, + "exit_time": "2020-03-10T00:00:00", + "gross_pnl": 31.803134414661827, + "pnl": 31.803134414661827, + "pnlcomm": 31.803134414661827, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.61379453469056, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 99.44418682978016, + "exit_time": "2020-03-13T00:00:00", + "gross_pnl": -16.960770491039057, + "pnl": -16.960770491039057, + "pnlcomm": -16.960770491039057, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.1261570487614, + "entry_time": "2020-03-15T00:00:00", + "exit_price": 98.90367229199478, + "exit_time": "2020-03-16T00:00:00", + "gross_pnl": 77.75152432333812, + "pnl": 77.75152432333812, + "pnlcomm": 77.75152432333812, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.48715448535594, + "entry_time": "2020-03-18T00:00:00", + "exit_price": 98.53898885220806, + "exit_time": "2020-03-19T00:00:00", + "gross_pnl": -94.81656331478803, + "pnl": -94.81656331478803, + "pnlcomm": -94.81656331478803, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.13695584567007, + "entry_time": "2020-03-21T00:00:00", + "exit_price": 98.74920846022493, + "exit_time": "2020-03-22T00:00:00", + "gross_pnl": -138.7747385445138, + "pnl": -138.7747385445138, + "pnlcomm": -138.7747385445138, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.28346179234327, + "entry_time": "2020-03-24T00:00:00", + "exit_price": 99.39446913633991, + "exit_time": "2020-03-25T00:00:00", + "gross_pnl": 11.100734399663281, + "pnl": 11.100734399663281, + "pnlcomm": 11.100734399663281, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.38048314487808, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 98.86853857797571, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": -51.19445669023719, + "pnl": -51.19445669023719, + "pnlcomm": -51.19445669023719, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.78335766752544, + "entry_time": "2020-03-30T00:00:00", + "exit_price": 100.08258048792489, + "exit_time": "2020-03-31T00:00:00", + "gross_pnl": 29.922282039945003, + "pnl": 29.922282039945003, + "pnlcomm": 29.922282039945003, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.04409706752067, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 100.00584315640894, + "exit_time": "2020-04-03T00:00:00", + "gross_pnl": -3.8253911111723937, + "pnl": -3.8253911111723937, + "pnlcomm": -3.8253911111723937, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17754603801194, + "entry_time": "2020-04-05T00:00:00", + "exit_price": 99.91386750387461, + "exit_time": "2020-04-06T00:00:00", + "gross_pnl": 73.63214658626731, + "pnl": 73.63214658626731, + "pnlcomm": 73.63214658626731, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.07278397148802, + "entry_time": "2020-04-08T00:00:00", + "exit_price": 99.84957817071898, + "exit_time": "2020-04-09T00:00:00", + "gross_pnl": -122.3205800769037, + "pnl": -122.3205800769037, + "pnlcomm": -122.3205800769037, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.66685696016805, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 100.29703959359377, + "exit_time": "2020-04-12T00:00:00", + "gross_pnl": 63.018263342571856, + "pnl": 63.018263342571856, + "pnlcomm": 63.018263342571856, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.16284479663989, + "entry_time": "2020-04-14T00:00:00", + "exit_price": 99.59827392536462, + "exit_time": "2020-04-15T00:00:00", + "gross_pnl": -56.457087127526506, + "pnl": -56.457087127526506, + "pnlcomm": -56.457087127526506, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.02427769637677, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 100.02034152325665, + "exit_time": "2020-04-18T00:00:00", + "gross_pnl": -0.39361731201239536, + "pnl": -0.39361731201239536, + "pnlcomm": -0.39361731201239536, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.10227360972624, + "entry_time": "2020-04-20T00:00:00", + "exit_price": 99.55074957264794, + "exit_time": "2020-04-21T00:00:00", + "gross_pnl": -55.15240370782948, + "pnl": -55.15240370782948, + "pnlcomm": -55.15240370782948, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4752285310497, + "entry_time": "2020-04-23T00:00:00", + "exit_price": 100.78482968977629, + "exit_time": "2020-04-24T00:00:00", + "gross_pnl": 30.960115872659344, + "pnl": 30.960115872659344, + "pnlcomm": 30.960115872659344, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64550269913406, + "entry_time": "2020-04-26T00:00:00", + "exit_price": 100.75829920829567, + "exit_time": "2020-04-27T00:00:00", + "gross_pnl": 11.279650916161188, + "pnl": 11.279650916161188, + "pnlcomm": 11.279650916161188, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.28405624956507, + "entry_time": "2020-04-29T00:00:00", + "exit_price": 100.40750734980367, + "exit_time": "2020-04-30T00:00:00", + "gross_pnl": 12.345110023859718, + "pnl": 12.345110023859718, + "pnlcomm": 12.345110023859718, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.9736108084372, + "entry_time": "2020-05-02T00:00:00", + "exit_price": 99.11719582995507, + "exit_time": "2020-05-03T00:00:00", + "gross_pnl": -185.64149784821353, + "pnl": -185.64149784821353, + "pnlcomm": -185.64149784821353, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.42442738415961, + "entry_time": "2020-05-05T00:00:00", + "exit_price": 100.46803368609852, + "exit_time": "2020-05-06T00:00:00", + "gross_pnl": 4.360630193890813, + "pnl": 4.360630193890813, + "pnlcomm": 4.360630193890813, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.65390080108091, + "entry_time": "2020-05-08T00:00:00", + "exit_price": 101.55529329412784, + "exit_time": "2020-05-09T00:00:00", + "gross_pnl": 90.13924930469273, + "pnl": 90.13924930469273, + "pnlcomm": 90.13924930469273, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.84475344760442, + "entry_time": "2020-05-11T00:00:00", + "exit_price": 101.34547532849058, + "exit_time": "2020-05-12T00:00:00", + "gross_pnl": 50.07218808861609, + "pnl": 50.07218808861609, + "pnlcomm": 50.07218808861609, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.83286932713185, + "entry_time": "2020-05-14T00:00:00", + "exit_price": 100.1414110724743, + "exit_time": "2020-05-15T00:00:00", + "gross_pnl": -69.14582546575474, + "pnl": -69.14582546575474, + "pnlcomm": -69.14582546575474, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.70880723169135, + "entry_time": "2020-05-17T00:00:00", + "exit_price": 100.37107171120154, + "exit_time": "2020-05-18T00:00:00", + "gross_pnl": -33.773552048981514, + "pnl": -33.773552048981514, + "pnlcomm": -33.773552048981514, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17212988349165, + "entry_time": "2020-05-20T00:00:00", + "exit_price": 100.88968353827181, + "exit_time": "2020-05-21T00:00:00", + "gross_pnl": 171.75536547801613, + "pnl": 171.75536547801613, + "pnlcomm": 171.75536547801613, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17974473578754, + "entry_time": "2020-05-23T00:00:00", + "exit_price": 99.64495810760246, + "exit_time": "2020-05-24T00:00:00", + "gross_pnl": 46.521337181492584, + "pnl": 46.521337181492584, + "pnlcomm": 46.521337181492584, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86042757757674, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 99.42922022261914, + "exit_time": "2020-05-27T00:00:00", + "gross_pnl": 56.8792645042393, + "pnl": 56.8792645042393, + "pnlcomm": 56.8792645042393, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67123710700702, + "entry_time": "2020-05-29T00:00:00", + "exit_price": 99.1262468099545, + "exit_time": "2020-05-30T00:00:00", + "gross_pnl": 45.500970294747844, + "pnl": 45.500970294747844, + "pnlcomm": 45.500970294747844, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99803204217791, + "entry_time": "2020-06-01T00:00:00", + "exit_price": 98.0746490327229, + "exit_time": "2020-06-02T00:00:00", + "gross_pnl": 7.661699054499138, + "pnl": 7.661699054499138, + "pnlcomm": 7.661699054499138, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68852164950059, + "entry_time": "2020-06-04T00:00:00", + "exit_price": 98.90683245619206, + "exit_time": "2020-06-05T00:00:00", + "gross_pnl": 21.831080669147696, + "pnl": 21.831080669147696, + "pnlcomm": 21.831080669147696, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.6986709588789, + "entry_time": "2020-06-07T00:00:00", + "exit_price": 98.58028409299915, + "exit_time": "2020-06-08T00:00:00", + "gross_pnl": -11.838686587975644, + "pnl": -11.838686587975644, + "pnlcomm": -11.838686587975644, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.78930171959787, + "entry_time": "2020-06-10T00:00:00", + "exit_price": 99.44349309161046, + "exit_time": "2020-06-11T00:00:00", + "gross_pnl": 65.41913720125905, + "pnl": 65.41913720125905, + "pnlcomm": 65.41913720125905, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.63928948741085, + "entry_time": "2020-06-13T00:00:00", + "exit_price": 99.8801021064717, + "exit_time": "2020-06-14T00:00:00", + "gross_pnl": 24.081261906084706, + "pnl": 24.081261906084706, + "pnlcomm": 24.081261906084706, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88804895153031, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 98.9129584357738, + "exit_time": "2020-06-17T00:00:00", + "gross_pnl": 2.490948424349426, + "pnl": 2.490948424349426, + "pnlcomm": 2.490948424349426, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.35911188288487, + "entry_time": "2020-06-19T00:00:00", + "exit_price": 99.55107978610341, + "exit_time": "2020-06-20T00:00:00", + "gross_pnl": 19.196790321853996, + "pnl": 19.196790321853996, + "pnlcomm": 19.196790321853996, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.24566283787111, + "entry_time": "2020-06-22T00:00:00", + "exit_price": 99.50854335078685, + "exit_time": "2020-06-23T00:00:00", + "gross_pnl": 26.288051291574277, + "pnl": 26.288051291574277, + "pnlcomm": 26.288051291574277, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85972377687798, + "entry_time": "2020-06-25T00:00:00", + "exit_price": 98.94180161552265, + "exit_time": "2020-06-26T00:00:00", + "gross_pnl": 8.207783864466478, + "pnl": 8.207783864466478, + "pnlcomm": 8.207783864466478, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.42256786175977, + "entry_time": "2020-06-28T00:00:00", + "exit_price": 98.39260868907034, + "exit_time": "2020-06-29T00:00:00", + "gross_pnl": -2.99591726894306, + "pnl": -2.99591726894306, + "pnlcomm": -2.99591726894306, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47598985042309, + "entry_time": "2020-07-01T00:00:00", + "exit_price": 98.2217481384577, + "exit_time": "2020-07-02T00:00:00", + "gross_pnl": -25.42417119653919, + "pnl": -25.42417119653919, + "pnlcomm": -25.42417119653919, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43771261461684, + "entry_time": "2020-07-04T00:00:00", + "exit_price": 99.25556396259081, + "exit_time": "2020-07-05T00:00:00", + "gross_pnl": -18.214865202602937, + "pnl": -18.214865202602937, + "pnlcomm": -18.214865202602937, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27520136851216, + "entry_time": "2020-07-07T00:00:00", + "exit_price": 99.22895283520214, + "exit_time": "2020-07-08T00:00:00", + "gross_pnl": -4.624853331002043, + "pnl": -4.624853331002043, + "pnlcomm": -4.624853331002043, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84721164221584, + "entry_time": "2020-07-10T00:00:00", + "exit_price": 98.21690016032666, + "exit_time": "2020-07-11T00:00:00", + "gross_pnl": -63.031148188917996, + "pnl": -63.031148188917996, + "pnlcomm": -63.031148188917996, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.98012439288168, + "entry_time": "2020-07-13T00:00:00", + "exit_price": 98.42241300564716, + "exit_time": "2020-07-14T00:00:00", + "gross_pnl": -55.77113872345194, + "pnl": -55.77113872345194, + "pnlcomm": -55.77113872345194, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.52349736477139, + "entry_time": "2020-07-16T00:00:00", + "exit_price": 98.84780174120549, + "exit_time": "2020-07-17T00:00:00", + "gross_pnl": -67.56956235659004, + "pnl": -67.56956235659004, + "pnlcomm": -67.56956235659004, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.78357735159078, + "entry_time": "2020-07-19T00:00:00", + "exit_price": 98.5180376571157, + "exit_time": "2020-07-20T00:00:00", + "gross_pnl": -26.553969447508052, + "pnl": -26.553969447508052, + "pnlcomm": -26.553969447508052, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07885735340791, + "entry_time": "2020-07-22T00:00:00", + "exit_price": 98.46287786089891, + "exit_time": "2020-07-23T00:00:00", + "gross_pnl": 38.40205074910017, + "pnl": 38.40205074910017, + "pnlcomm": 38.40205074910017, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7806750796624, + "entry_time": "2020-07-25T00:00:00", + "exit_price": 98.99007562374577, + "exit_time": "2020-07-26T00:00:00", + "gross_pnl": 20.94005440833655, + "pnl": 20.94005440833655, + "pnlcomm": 20.94005440833655, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.3160405598432, + "entry_time": "2020-07-28T00:00:00", + "exit_price": 97.69515591162462, + "exit_time": "2020-07-29T00:00:00", + "gross_pnl": -62.08846482185777, + "pnl": -62.08846482185777, + "pnlcomm": -62.08846482185777, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.9307950005457, + "entry_time": "2020-07-31T00:00:00", + "exit_price": 97.49497584845733, + "exit_time": "2020-08-01T00:00:00", + "gross_pnl": -43.581915208837074, + "pnl": -43.581915208837074, + "pnlcomm": -43.581915208837074, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.05277773908537, + "entry_time": "2020-08-03T00:00:00", + "exit_price": 97.63017059410102, + "exit_time": "2020-08-04T00:00:00", + "gross_pnl": -42.26071449843545, + "pnl": -42.26071449843545, + "pnlcomm": -42.26071449843545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.95560584181007, + "entry_time": "2020-08-06T00:00:00", + "exit_price": 97.85704345214471, + "exit_time": "2020-08-07T00:00:00", + "gross_pnl": -109.85623896653607, + "pnl": -109.85623896653607, + "pnlcomm": -109.85623896653607, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.34581983849665, + "entry_time": "2020-08-09T00:00:00", + "exit_price": 98.55148937480453, + "exit_time": "2020-08-10T00:00:00", + "gross_pnl": 120.56695363078802, + "pnl": 120.56695363078802, + "pnlcomm": 120.56695363078802, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.83406196186097, + "entry_time": "2020-08-12T00:00:00", + "exit_price": 97.25669377064881, + "exit_time": "2020-08-13T00:00:00", + "gross_pnl": -57.73681912121589, + "pnl": -57.73681912121589, + "pnlcomm": -57.73681912121589, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.51637945271536, + "entry_time": "2020-08-15T00:00:00", + "exit_price": 97.57103396676897, + "exit_time": "2020-08-16T00:00:00", + "gross_pnl": 5.465451405360966, + "pnl": 5.465451405360966, + "pnlcomm": 5.465451405360966, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.4383018584174, + "entry_time": "2020-08-18T00:00:00", + "exit_price": 98.4155507445711, + "exit_time": "2020-08-19T00:00:00", + "gross_pnl": -2.2751113846297244, + "pnl": -2.2751113846297244, + "pnlcomm": -2.2751113846297244, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.92267680402585, + "entry_time": "2020-08-21T00:00:00", + "exit_price": 98.75883349843212, + "exit_time": "2020-08-22T00:00:00", + "gross_pnl": 83.61566944062702, + "pnl": 83.61566944062702, + "pnlcomm": 83.61566944062702, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.974264479532, + "entry_time": "2020-08-24T00:00:00", + "exit_price": 99.70988332181, + "exit_time": "2020-08-25T00:00:00", + "gross_pnl": 173.56188422780008, + "pnl": 173.56188422780008, + "pnlcomm": 173.56188422780008, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21365266173217, + "entry_time": "2020-08-27T00:00:00", + "exit_price": 98.08294324004585, + "exit_time": "2020-08-28T00:00:00", + "gross_pnl": -113.07094216863192, + "pnl": -113.07094216863192, + "pnlcomm": -113.07094216863192, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11928874045203, + "entry_time": "2020-08-30T00:00:00", + "exit_price": 98.31180164071337, + "exit_time": "2020-08-31T00:00:00", + "gross_pnl": 19.25129002613346, + "pnl": 19.25129002613346, + "pnlcomm": 19.25129002613346, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.00054275724283, + "entry_time": "2020-09-02T00:00:00", + "exit_price": 98.65255133629894, + "exit_time": "2020-09-03T00:00:00", + "gross_pnl": 65.20085790561154, + "pnl": 65.20085790561154, + "pnlcomm": 65.20085790561154, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96503242935937, + "entry_time": "2020-09-05T00:00:00", + "exit_price": 98.79138811772025, + "exit_time": "2020-09-06T00:00:00", + "gross_pnl": -17.364431163912286, + "pnl": -17.364431163912286, + "pnlcomm": -17.364431163912286, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.47378044689603, + "entry_time": "2020-09-08T00:00:00", + "exit_price": 98.31284487928606, + "exit_time": "2020-09-09T00:00:00", + "gross_pnl": -116.09355676099682, + "pnl": -116.09355676099682, + "pnlcomm": -116.09355676099682, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.73200506980342, + "entry_time": "2020-09-11T00:00:00", + "exit_price": 98.3363427106496, + "exit_time": "2020-09-12T00:00:00", + "gross_pnl": 60.43376408461825, + "pnl": 60.43376408461825, + "pnlcomm": 60.43376408461825, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.56611574901736, + "entry_time": "2020-09-14T00:00:00", + "exit_price": 98.13272204200155, + "exit_time": "2020-09-15T00:00:00", + "gross_pnl": -43.339370701581004, + "pnl": -43.339370701581004, + "pnlcomm": -43.339370701581004, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.89963627791985, + "entry_time": "2020-09-17T00:00:00", + "exit_price": 98.38755792776327, + "exit_time": "2020-09-18T00:00:00", + "gross_pnl": 148.79216498434147, + "pnl": 148.79216498434147, + "pnlcomm": 148.79216498434147, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.35474381234252, + "entry_time": "2020-09-20T00:00:00", + "exit_price": 98.97868642263799, + "exit_time": "2020-09-21T00:00:00", + "gross_pnl": 62.39426102954724, + "pnl": 62.39426102954724, + "pnlcomm": 62.39426102954724, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.11962753041762, + "entry_time": "2020-09-23T00:00:00", + "exit_price": 99.25728100943367, + "exit_time": "2020-09-24T00:00:00", + "gross_pnl": 13.765347901605196, + "pnl": 13.765347901605196, + "pnlcomm": 13.765347901605196, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.076645155786, + "entry_time": "2020-09-26T00:00:00", + "exit_price": 99.1361736846976, + "exit_time": "2020-09-27T00:00:00", + "gross_pnl": 5.952852891159921, + "pnl": 5.952852891159921, + "pnlcomm": 5.952852891159921, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9576189114394, + "entry_time": "2020-09-29T00:00:00", + "exit_price": 99.38251520181134, + "exit_time": "2020-09-30T00:00:00", + "gross_pnl": 42.48962903719473, + "pnl": 42.48962903719473, + "pnlcomm": 42.48962903719473, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.58405172820402, + "entry_time": "2020-10-02T00:00:00", + "exit_price": 100.1825648349693, + "exit_time": "2020-10-03T00:00:00", + "gross_pnl": 59.85131067652816, + "pnl": 59.85131067652816, + "pnlcomm": 59.85131067652816, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31778631274507, + "entry_time": "2020-10-05T00:00:00", + "exit_price": 98.92748490697555, + "exit_time": "2020-10-06T00:00:00", + "gross_pnl": -39.03014057695202, + "pnl": -39.03014057695202, + "pnlcomm": -39.03014057695202, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11485299409067, + "entry_time": "2020-10-08T00:00:00", + "exit_price": 97.46828746700024, + "exit_time": "2020-10-09T00:00:00", + "gross_pnl": -64.65655270904307, + "pnl": -64.65655270904307, + "pnlcomm": -64.65655270904307, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7892083341232, + "entry_time": "2020-10-11T00:00:00", + "exit_price": 99.2850707768965, + "exit_time": "2020-10-12T00:00:00", + "gross_pnl": 149.58624427733014, + "pnl": 149.58624427733014, + "pnlcomm": 149.58624427733014, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.61528686513479, + "entry_time": "2020-10-14T00:00:00", + "exit_price": 98.16045065160826, + "exit_time": "2020-10-15T00:00:00", + "gross_pnl": 54.51637864734664, + "pnl": 54.51637864734664, + "pnlcomm": 54.51637864734664, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98923853245553, + "entry_time": "2020-10-17T00:00:00", + "exit_price": 97.78083136801966, + "exit_time": "2020-10-18T00:00:00", + "gross_pnl": -20.84071644358687, + "pnl": -20.84071644358687, + "pnlcomm": -20.84071644358687, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98736762370623, + "entry_time": "2020-10-20T00:00:00", + "exit_price": 98.41242668783207, + "exit_time": "2020-10-21T00:00:00", + "gross_pnl": 42.50590641258327, + "pnl": 42.50590641258327, + "pnlcomm": 42.50590641258327, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7821059253462, + "entry_time": "2020-10-23T00:00:00", + "exit_price": 98.01676230346942, + "exit_time": "2020-10-24T00:00:00", + "gross_pnl": -76.53436218767808, + "pnl": -76.53436218767808, + "pnlcomm": -76.53436218767808, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.90986422948514, + "entry_time": "2020-10-26T00:00:00", + "exit_price": 98.85698353324744, + "exit_time": "2020-10-27T00:00:00", + "gross_pnl": -5.288069623769331, + "pnl": -5.288069623769331, + "pnlcomm": -5.288069623769331, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.72982041802001, + "entry_time": "2020-10-29T00:00:00", + "exit_price": 98.60761748093444, + "exit_time": "2020-10-30T00:00:00", + "gross_pnl": -12.220293708557506, + "pnl": -12.220293708557506, + "pnlcomm": -12.220293708557506, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.0385605171193, + "entry_time": "2020-11-01T00:00:00", + "exit_price": 99.09198940082088, + "exit_time": "2020-11-02T00:00:00", + "gross_pnl": 5.342888370158505, + "pnl": 5.342888370158505, + "pnlcomm": 5.342888370158505, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21597248424331, + "entry_time": "2020-11-04T00:00:00", + "exit_price": 98.490691270523, + "exit_time": "2020-11-05T00:00:00", + "gross_pnl": -72.5281213720308, + "pnl": -72.5281213720308, + "pnlcomm": -72.5281213720308, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.2706953210234, + "entry_time": "2020-11-07T00:00:00", + "exit_price": 98.23704650718707, + "exit_time": "2020-11-08T00:00:00", + "gross_pnl": -3.3648813836322233, + "pnl": -3.3648813836322233, + "pnlcomm": -3.3648813836322233, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30522444084696, + "entry_time": "2020-11-10T00:00:00", + "exit_price": 97.82731858826378, + "exit_time": "2020-11-11T00:00:00", + "gross_pnl": 52.20941474168228, + "pnl": 52.20941474168228, + "pnlcomm": 52.20941474168228, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.91407429365688, + "entry_time": "2020-11-13T00:00:00", + "exit_price": 98.5460351903365, + "exit_time": "2020-11-14T00:00:00", + "gross_pnl": -36.80391033203847, + "pnl": -36.80391033203847, + "pnlcomm": -36.80391033203847, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.93028933684711, + "entry_time": "2020-11-16T00:00:00", + "exit_price": 99.0553633238757, + "exit_time": "2020-11-17T00:00:00", + "gross_pnl": 12.507398702858552, + "pnl": 12.507398702858552, + "pnlcomm": 12.507398702858552, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47484452500944, + "entry_time": "2020-11-19T00:00:00", + "exit_price": 98.10094020807114, + "exit_time": "2020-11-20T00:00:00", + "gross_pnl": -37.390431693830806, + "pnl": -37.390431693830806, + "pnlcomm": -37.390431693830806, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.01428360585086, + "entry_time": "2020-11-22T00:00:00", + "exit_price": 97.38292648890776, + "exit_time": "2020-11-23T00:00:00", + "gross_pnl": -163.13571169431071, + "pnl": -163.13571169431071, + "pnlcomm": -163.13571169431071, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48513559668872, + "entry_time": "2020-11-25T00:00:00", + "exit_price": 97.27497370614257, + "exit_time": "2020-11-26T00:00:00", + "gross_pnl": -121.01618905461464, + "pnl": -121.01618905461464, + "pnlcomm": -121.01618905461464, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.14886606297294, + "entry_time": "2020-11-28T00:00:00", + "exit_price": 98.29611163730506, + "exit_time": "2020-11-29T00:00:00", + "gross_pnl": 14.724557433211771, + "pnl": 14.724557433211771, + "pnlcomm": 14.724557433211771, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.23350982317787, + "entry_time": "2020-12-01T00:00:00", + "exit_price": 97.79948982072462, + "exit_time": "2020-12-02T00:00:00", + "gross_pnl": 56.59799975467479, + "pnl": 56.59799975467479, + "pnlcomm": 56.59799975467479, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98472225444857, + "entry_time": "2020-12-04T00:00:00", + "exit_price": 97.71079305814114, + "exit_time": "2020-12-05T00:00:00", + "gross_pnl": -27.392919630743506, + "pnl": -27.392919630743506, + "pnlcomm": -27.392919630743506, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.3396263042363, + "entry_time": "2020-12-07T00:00:00", + "exit_price": 97.98172498582129, + "exit_time": "2020-12-08T00:00:00", + "gross_pnl": -35.790131841501704, + "pnl": -35.790131841501704, + "pnlcomm": -35.790131841501704, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.42795373397291, + "entry_time": "2020-12-10T00:00:00", + "exit_price": 96.6321305493393, + "exit_time": "2020-12-11T00:00:00", + "gross_pnl": -79.5823184633619, + "pnl": -79.5823184633619, + "pnlcomm": -79.5823184633619, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.76479352938595, + "entry_time": "2020-12-13T00:00:00", + "exit_price": 98.48958247666039, + "exit_time": "2020-12-14T00:00:00", + "gross_pnl": 172.47889472744333, + "pnl": 172.47889472744333, + "pnlcomm": 172.47889472744333, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.73111789636546, + "entry_time": "2020-12-16T00:00:00", + "exit_price": 97.61885876679554, + "exit_time": "2020-12-17T00:00:00", + "gross_pnl": 88.77408704300791, + "pnl": 88.77408704300791, + "pnlcomm": 88.77408704300791, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.85401562603096, + "entry_time": "2020-12-19T00:00:00", + "exit_price": 96.49175141105385, + "exit_time": "2020-12-20T00:00:00", + "gross_pnl": -136.22642149771025, + "pnl": -136.22642149771025, + "pnlcomm": -136.22642149771025, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.84289871423181, + "entry_time": "2020-12-22T00:00:00", + "exit_price": 96.99377199128872, + "exit_time": "2020-12-23T00:00:00", + "gross_pnl": -84.91267229430832, + "pnl": -84.91267229430832, + "pnlcomm": -84.91267229430832, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.76186428614056, + "entry_time": "2020-12-25T00:00:00", + "exit_price": 96.48850513355184, + "exit_time": "2020-12-26T00:00:00", + "gross_pnl": -27.33591525887249, + "pnl": -27.33591525887249, + "pnlcomm": -27.33591525887249, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.12395315196963, + "entry_time": "2020-12-28T00:00:00", + "exit_price": 97.53863571252707, + "exit_time": "2020-12-29T00:00:00", + "gross_pnl": 41.46825605574378, + "pnl": 41.46825605574378, + "pnlcomm": 41.46825605574378, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6026762767146, + "entry_time": "2020-12-31T00:00:00", + "exit_price": 97.09752132137899, + "exit_time": "2021-01-01T00:00:00", + "gross_pnl": -50.51549553356125, + "pnl": -50.51549553356125, + "pnlcomm": -50.51549553356125, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.4927463612385, + "entry_time": "2021-01-03T00:00:00", + "exit_price": 96.82226372897985, + "exit_time": "2021-01-04T00:00:00", + "gross_pnl": -67.04826322586541, + "pnl": -67.04826322586541, + "pnlcomm": -67.04826322586541, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.79148532437995, + "entry_time": "2021-01-06T00:00:00", + "exit_price": 97.11483711173116, + "exit_time": "2021-01-07T00:00:00", + "gross_pnl": 32.33517873512142, + "pnl": 32.33517873512142, + "pnlcomm": 32.33517873512142, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.80033950220171, + "entry_time": "2021-01-09T00:00:00", + "exit_price": 96.63729064888537, + "exit_time": "2021-01-10T00:00:00", + "gross_pnl": 83.69511466836599, + "pnl": 83.69511466836599, + "pnlcomm": 83.69511466836599, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.11575917668634, + "entry_time": "2021-01-12T00:00:00", + "exit_price": 96.28032546622858, + "exit_time": "2021-01-13T00:00:00", + "gross_pnl": 16.456628954223618, + "pnl": 16.456628954223618, + "pnlcomm": 16.456628954223618, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.53344904132358, + "entry_time": "2021-01-15T00:00:00", + "exit_price": 97.29557459823668, + "exit_time": "2021-01-16T00:00:00", + "gross_pnl": 76.21255569131051, + "pnl": 76.21255569131051, + "pnlcomm": 76.21255569131051, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.01730754421833, + "entry_time": "2021-01-18T00:00:00", + "exit_price": 96.07935604760307, + "exit_time": "2021-01-19T00:00:00", + "gross_pnl": 6.204850338474444, + "pnl": 6.204850338474444, + "pnlcomm": 6.204850338474444, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.79620422510413, + "entry_time": "2021-01-21T00:00:00", + "exit_price": 95.24797305894252, + "exit_time": "2021-01-22T00:00:00", + "gross_pnl": -54.82311661616137, + "pnl": -54.82311661616137, + "pnlcomm": -54.82311661616137, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.19373825703377, + "entry_time": "2021-01-24T00:00:00", + "exit_price": 95.40514794332339, + "exit_time": "2021-01-25T00:00:00", + "gross_pnl": 21.140968628961332, + "pnl": 21.140968628961332, + "pnlcomm": 21.140968628961332, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.55648566288775, + "entry_time": "2021-01-27T00:00:00", + "exit_price": 96.55716667120137, + "exit_time": "2021-01-28T00:00:00", + "gross_pnl": 100.06810083136202, + "pnl": 100.06810083136202, + "pnlcomm": 100.06810083136202, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.91494018138197, + "entry_time": "2021-01-30T00:00:00", + "exit_price": 95.48501201892987, + "exit_time": "2021-01-31T00:00:00", + "gross_pnl": 57.00718375478999, + "pnl": 57.00718375478999, + "pnlcomm": 57.00718375478999, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.90008526748947, + "entry_time": "2021-02-02T00:00:00", + "exit_price": 95.83721845974864, + "exit_time": "2021-02-03T00:00:00", + "gross_pnl": -6.286680774083209, + "pnl": -6.286680774083209, + "pnlcomm": -6.286680774083209, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.26504549069784, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 96.06840340797214, + "exit_time": "2021-02-06T00:00:00", + "gross_pnl": 80.33579172742975, + "pnl": 80.33579172742975, + "pnlcomm": 80.33579172742975, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.26053581327312, + "entry_time": "2021-02-08T00:00:00", + "exit_price": 95.42454996605802, + "exit_time": "2021-02-09T00:00:00", + "gross_pnl": 16.401415278490106, + "pnl": 16.401415278490106, + "pnlcomm": 16.401415278490106, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94825682250638, + "entry_time": "2021-02-11T00:00:00", + "exit_price": 95.05109746301979, + "exit_time": "2021-02-12T00:00:00", + "gross_pnl": 10.284064051340636, + "pnl": 10.284064051340636, + "pnlcomm": 10.284064051340636, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.1969266603545, + "entry_time": "2021-02-14T00:00:00", + "exit_price": 96.27193710609464, + "exit_time": "2021-02-15T00:00:00", + "gross_pnl": 7.501044574013349, + "pnl": 7.501044574013349, + "pnlcomm": 7.501044574013349, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.97039812035842, + "entry_time": "2021-02-17T00:00:00", + "exit_price": 96.34802647272141, + "exit_time": "2021-02-18T00:00:00", + "gross_pnl": -62.237164763701, + "pnl": -62.237164763701, + "pnlcomm": -62.237164763701, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.07904244701469, + "entry_time": "2021-02-20T00:00:00", + "exit_price": 96.79316819026657, + "exit_time": "2021-02-21T00:00:00", + "gross_pnl": -28.587425674811584, + "pnl": -28.587425674811584, + "pnlcomm": -28.587425674811584, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5721771606179, + "entry_time": "2021-02-23T00:00:00", + "exit_price": 95.6253449835299, + "exit_time": "2021-02-24T00:00:00", + "gross_pnl": 5.316782291200184, + "pnl": 5.316782291200184, + "pnlcomm": 5.316782291200184, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88599336671724, + "entry_time": "2021-02-26T00:00:00", + "exit_price": 93.9167314813735, + "exit_time": "2021-02-27T00:00:00", + "gross_pnl": -96.92618853437409, + "pnl": -96.92618853437409, + "pnlcomm": -96.92618853437409, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23555143341264, + "entry_time": "2021-03-01T00:00:00", + "exit_price": 94.69172330670986, + "exit_time": "2021-03-02T00:00:00", + "gross_pnl": -54.38281267027776, + "pnl": -54.38281267027776, + "pnlcomm": -54.38281267027776, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.40326355089037, + "entry_time": "2021-03-04T00:00:00", + "exit_price": 94.32320287324674, + "exit_time": "2021-03-05T00:00:00", + "gross_pnl": -8.006067764362967, + "pnl": -8.006067764362967, + "pnlcomm": -8.006067764362967, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.32022315669313, + "entry_time": "2021-03-07T00:00:00", + "exit_price": 94.22613575397045, + "exit_time": "2021-03-08T00:00:00", + "gross_pnl": -9.408740272267835, + "pnl": -9.408740272267835, + "pnlcomm": -9.408740272267835, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.08195298394907, + "entry_time": "2021-03-10T00:00:00", + "exit_price": 94.5883765126535, + "exit_time": "2021-03-11T00:00:00", + "gross_pnl": -49.35764712955688, + "pnl": -49.35764712955688, + "pnlcomm": -49.35764712955688, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6323490375275, + "entry_time": "2021-03-13T00:00:00", + "exit_price": 95.0747399163529, + "exit_time": "2021-03-14T00:00:00", + "gross_pnl": 44.23908788253925, + "pnl": 44.23908788253925, + "pnlcomm": 44.23908788253925, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.55723413541229, + "entry_time": "2021-03-16T00:00:00", + "exit_price": 94.78282068603487, + "exit_time": "2021-03-17T00:00:00", + "gross_pnl": 22.558655062258026, + "pnl": 22.558655062258026, + "pnlcomm": 22.558655062258026, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66145085922012, + "entry_time": "2021-03-19T00:00:00", + "exit_price": 95.46346097050873, + "exit_time": "2021-03-20T00:00:00", + "gross_pnl": 180.20101112886096, + "pnl": 180.20101112886096, + "pnlcomm": 180.20101112886096, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.00404625454874, + "entry_time": "2021-03-22T00:00:00", + "exit_price": 94.66092881844988, + "exit_time": "2021-03-23T00:00:00", + "gross_pnl": -34.31174360988649, + "pnl": -34.31174360988649, + "pnlcomm": -34.31174360988649, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.49919123199933, + "entry_time": "2021-03-25T00:00:00", + "exit_price": 93.97621398907071, + "exit_time": "2021-03-26T00:00:00", + "gross_pnl": -152.29772429286186, + "pnl": -152.29772429286186, + "pnlcomm": -152.29772429286186, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.41257974165285, + "entry_time": "2021-03-28T00:00:00", + "exit_price": 95.05124864668421, + "exit_time": "2021-03-29T00:00:00", + "gross_pnl": 63.86689050313663, + "pnl": 63.86689050313663, + "pnlcomm": 63.86689050313663, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01899188310071, + "entry_time": "2021-03-31T00:00:00", + "exit_price": 94.2559389154428, + "exit_time": "2021-04-01T00:00:00", + "gross_pnl": 23.694703234208703, + "pnl": 23.694703234208703, + "pnlcomm": 23.694703234208703, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.12609495739092, + "entry_time": "2021-04-03T00:00:00", + "exit_price": 94.25576346468043, + "exit_time": "2021-04-04T00:00:00", + "gross_pnl": 12.966850728950874, + "pnl": 12.966850728950874, + "pnlcomm": 12.966850728950874, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.4705053051443, + "entry_time": "2021-04-06T00:00:00", + "exit_price": 93.72410136704386, + "exit_time": "2021-04-07T00:00:00", + "gross_pnl": 25.35960618995574, + "pnl": 25.35960618995574, + "pnlcomm": 25.35960618995574, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19884636287924, + "entry_time": "2021-04-09T00:00:00", + "exit_price": 93.86432033375576, + "exit_time": "2021-04-10T00:00:00", + "gross_pnl": 66.54739708765192, + "pnl": 66.54739708765192, + "pnlcomm": 66.54739708765192, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34050558738045, + "entry_time": "2021-04-12T00:00:00", + "exit_price": 94.10587138419956, + "exit_time": "2021-04-13T00:00:00", + "gross_pnl": 76.53657968191112, + "pnl": 76.53657968191112, + "pnlcomm": 76.53657968191112, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72930751574246, + "entry_time": "2021-04-15T00:00:00", + "exit_price": 93.2563942182136, + "exit_time": "2021-04-16T00:00:00", + "gross_pnl": -47.29132975288621, + "pnl": -47.29132975288621, + "pnlcomm": -47.29132975288621, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59980860135867, + "entry_time": "2021-04-18T00:00:00", + "exit_price": 94.54277270362402, + "exit_time": "2021-04-19T00:00:00", + "gross_pnl": 94.29641022653499, + "pnl": 94.29641022653499, + "pnlcomm": 94.29641022653499, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92591784638046, + "entry_time": "2021-04-21T00:00:00", + "exit_price": 94.14258894906092, + "exit_time": "2021-04-22T00:00:00", + "gross_pnl": 121.66711026804649, + "pnl": 121.66711026804649, + "pnlcomm": 121.66711026804649, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11423308566697, + "entry_time": "2021-04-24T00:00:00", + "exit_price": 93.03147452036931, + "exit_time": "2021-04-25T00:00:00", + "gross_pnl": -108.27585652976524, + "pnl": -108.27585652976524, + "pnlcomm": -108.27585652976524, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9724517338113, + "entry_time": "2021-04-27T00:00:00", + "exit_price": 93.49318704896336, + "exit_time": "2021-04-28T00:00:00", + "gross_pnl": -147.92646848479336, + "pnl": -147.92646848479336, + "pnlcomm": -147.92646848479336, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68468709145579, + "entry_time": "2021-04-30T00:00:00", + "exit_price": 93.32003795658395, + "exit_time": "2021-05-01T00:00:00", + "gross_pnl": -36.46491348718399, + "pnl": -36.46491348718399, + "pnlcomm": -36.46491348718399, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26674166444458, + "entry_time": "2021-05-03T00:00:00", + "exit_price": 94.26630934814936, + "exit_time": "2021-05-04T00:00:00", + "gross_pnl": -0.043231629521756076, + "pnl": -0.043231629521756076, + "pnlcomm": -0.043231629521756076, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.41533319810328, + "entry_time": "2021-05-06T00:00:00", + "exit_price": 93.36350758058099, + "exit_time": "2021-05-07T00:00:00", + "gross_pnl": -5.182561752229731, + "pnl": -5.182561752229731, + "pnlcomm": -5.182561752229731, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.16332285120929, + "entry_time": "2021-05-09T00:00:00", + "exit_price": 94.34043899579565, + "exit_time": "2021-05-10T00:00:00", + "gross_pnl": 17.711614458636404, + "pnl": 17.711614458636404, + "pnlcomm": 17.711614458636404, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74219820454567, + "entry_time": "2021-05-12T00:00:00", + "exit_price": 94.55413171456674, + "exit_time": "2021-05-13T00:00:00", + "gross_pnl": 81.19335100210634, + "pnl": 81.19335100210634, + "pnlcomm": 81.19335100210634, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.58180279933771, + "entry_time": "2021-05-15T00:00:00", + "exit_price": 94.02408626223293, + "exit_time": "2021-05-16T00:00:00", + "gross_pnl": 44.22834628952188, + "pnl": 44.22834628952188, + "pnlcomm": 44.22834628952188, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87657341045228, + "entry_time": "2021-05-18T00:00:00", + "exit_price": 94.55590567361484, + "exit_time": "2021-05-19T00:00:00", + "gross_pnl": 67.93322631625642, + "pnl": 67.93322631625642, + "pnlcomm": 67.93322631625642, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08074161986468, + "entry_time": "2021-05-21T00:00:00", + "exit_price": 93.80457382221171, + "exit_time": "2021-05-22T00:00:00", + "gross_pnl": 72.3832202347026, + "pnl": 72.3832202347026, + "pnlcomm": 72.3832202347026, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8131686939551, + "entry_time": "2021-05-24T00:00:00", + "exit_price": 93.25793142134573, + "exit_time": "2021-05-25T00:00:00", + "gross_pnl": 44.476272739062495, + "pnl": 44.476272739062495, + "pnlcomm": 44.476272739062495, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95253144170447, + "entry_time": "2021-05-27T00:00:00", + "exit_price": 93.14743781912107, + "exit_time": "2021-05-28T00:00:00", + "gross_pnl": 19.490637741660066, + "pnl": 19.490637741660066, + "pnlcomm": 19.490637741660066, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87835645740229, + "entry_time": "2021-05-30T00:00:00", + "exit_price": 92.9764387193147, + "exit_time": "2021-05-31T00:00:00", + "gross_pnl": 9.808226191240976, + "pnl": 9.808226191240976, + "pnlcomm": 9.808226191240976, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94516537050167, + "entry_time": "2021-06-02T00:00:00", + "exit_price": 92.89603764932446, + "exit_time": "2021-06-03T00:00:00", + "gross_pnl": -4.912772117721431, + "pnl": -4.912772117721431, + "pnlcomm": -4.912772117721431, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63800292429943, + "entry_time": "2021-06-05T00:00:00", + "exit_price": 93.24337208101042, + "exit_time": "2021-06-06T00:00:00", + "gross_pnl": 160.53691567109922, + "pnl": 160.53691567109922, + "pnlcomm": 160.53691567109922, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59556244009269, + "entry_time": "2021-06-08T00:00:00", + "exit_price": 91.28446378378608, + "exit_time": "2021-06-09T00:00:00", + "gross_pnl": -31.109865630661204, + "pnl": -31.109865630661204, + "pnlcomm": -31.109865630661204, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13025499622808, + "entry_time": "2021-06-11T00:00:00", + "exit_price": 92.23383791902404, + "exit_time": "2021-06-12T00:00:00", + "gross_pnl": -89.64170772040347, + "pnl": -89.64170772040347, + "pnlcomm": -89.64170772040347, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3328854638381, + "entry_time": "2021-06-14T00:00:00", + "exit_price": 92.96067846320523, + "exit_time": "2021-06-15T00:00:00", + "gross_pnl": 62.77929993671307, + "pnl": 62.77929993671307, + "pnlcomm": 62.77929993671307, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.94965457520625, + "entry_time": "2021-06-17T00:00:00", + "exit_price": 92.16625059748041, + "exit_time": "2021-06-18T00:00:00", + "gross_pnl": 21.65960222741603, + "pnl": 21.65960222741603, + "pnlcomm": 21.65960222741603, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8269642033066, + "entry_time": "2021-06-20T00:00:00", + "exit_price": 91.81310669049036, + "exit_time": "2021-06-21T00:00:00", + "gross_pnl": -1.3857512816244366, + "pnl": -1.3857512816244366, + "pnlcomm": -1.3857512816244366, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25554422109529, + "entry_time": "2021-06-23T00:00:00", + "exit_price": 92.45622372930102, + "exit_time": "2021-06-24T00:00:00", + "gross_pnl": 20.067950820572378, + "pnl": 20.067950820572378, + "pnlcomm": 20.067950820572378, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.83947343135847, + "entry_time": "2021-06-26T00:00:00", + "exit_price": 92.43135259957857, + "exit_time": "2021-06-27T00:00:00", + "gross_pnl": 59.18791682201032, + "pnl": 59.18791682201032, + "pnlcomm": 59.18791682201032, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.53295655650527, + "entry_time": "2021-06-29T00:00:00", + "exit_price": 91.78816229160894, + "exit_time": "2021-06-30T00:00:00", + "gross_pnl": 25.520573510367228, + "pnl": 25.520573510367228, + "pnlcomm": 25.520573510367228, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9413213129086, + "entry_time": "2021-07-02T00:00:00", + "exit_price": 92.40648296911729, + "exit_time": "2021-07-03T00:00:00", + "gross_pnl": 146.5161656208693, + "pnl": 146.5161656208693, + "pnlcomm": 146.5161656208693, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.30279435197399, + "entry_time": "2021-07-05T00:00:00", + "exit_price": 90.65263067129818, + "exit_time": "2021-07-06T00:00:00", + "gross_pnl": -65.01636806758029, + "pnl": -65.01636806758029, + "pnlcomm": -65.01636806758029, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8239628759463, + "entry_time": "2021-07-08T00:00:00", + "exit_price": 91.7795218814571, + "exit_time": "2021-07-09T00:00:00", + "gross_pnl": -4.444099448919303, + "pnl": -4.444099448919303, + "pnlcomm": -4.444099448919303, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36068460994301, + "entry_time": "2021-07-11T00:00:00", + "exit_price": 91.47451059527033, + "exit_time": "2021-07-12T00:00:00", + "gross_pnl": 11.382598532732402, + "pnl": 11.382598532732402, + "pnlcomm": 11.382598532732402, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09791235411565, + "entry_time": "2021-07-14T00:00:00", + "exit_price": 91.64232209133355, + "exit_time": "2021-07-15T00:00:00", + "gross_pnl": 54.44097372179044, + "pnl": 54.44097372179044, + "pnlcomm": 54.44097372179044, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9960341944844, + "entry_time": "2021-07-17T00:00:00", + "exit_price": 90.86057544771678, + "exit_time": "2021-07-18T00:00:00", + "gross_pnl": -13.545874676761116, + "pnl": -13.545874676761116, + "pnlcomm": -13.545874676761116, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03722443992689, + "entry_time": "2021-07-20T00:00:00", + "exit_price": 91.02540027670304, + "exit_time": "2021-07-21T00:00:00", + "gross_pnl": -101.18241632238494, + "pnl": -101.18241632238494, + "pnlcomm": -101.18241632238494, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23831571579666, + "entry_time": "2021-07-23T00:00:00", + "exit_price": 91.61642884685872, + "exit_time": "2021-07-24T00:00:00", + "gross_pnl": 37.81131310620651, + "pnl": 37.81131310620651, + "pnlcomm": 37.81131310620651, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.95873360404138, + "entry_time": "2021-07-26T00:00:00", + "exit_price": 91.78520963834742, + "exit_time": "2021-07-27T00:00:00", + "gross_pnl": -17.352396569395978, + "pnl": -17.352396569395978, + "pnlcomm": -17.352396569395978, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12207131713245, + "entry_time": "2021-07-29T00:00:00", + "exit_price": 93.030634236321, + "exit_time": "2021-07-30T00:00:00", + "gross_pnl": 90.85629191885545, + "pnl": 90.85629191885545, + "pnlcomm": 90.85629191885545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2580641252632, + "entry_time": "2021-08-01T00:00:00", + "exit_price": 92.57471719502651, + "exit_time": "2021-08-02T00:00:00", + "gross_pnl": 31.6653069763305, + "pnl": 31.6653069763305, + "pnlcomm": 31.6653069763305, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.16033087447514, + "entry_time": "2021-08-04T00:00:00", + "exit_price": 91.64298714231596, + "exit_time": "2021-08-05T00:00:00", + "gross_pnl": -51.73437321591763, + "pnl": -51.73437321591763, + "pnlcomm": -51.73437321591763, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75555986268628, + "entry_time": "2021-08-07T00:00:00", + "exit_price": 93.29534460790408, + "exit_time": "2021-08-08T00:00:00", + "gross_pnl": 53.97847452178013, + "pnl": 53.97847452178013, + "pnlcomm": 53.97847452178013, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82043015696519, + "entry_time": "2021-08-10T00:00:00", + "exit_price": 93.34161824742394, + "exit_time": "2021-08-11T00:00:00", + "gross_pnl": 52.118809045875025, + "pnl": 52.118809045875025, + "pnlcomm": 52.118809045875025, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.61753779742976, + "entry_time": "2021-08-13T00:00:00", + "exit_price": 94.15624068230731, + "exit_time": "2021-08-14T00:00:00", + "gross_pnl": 53.87028848775515, + "pnl": 53.87028848775515, + "pnlcomm": 53.87028848775515, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.25917455813928, + "entry_time": "2021-08-16T00:00:00", + "exit_price": 93.5936848786624, + "exit_time": "2021-08-17T00:00:00", + "gross_pnl": -66.54896794768774, + "pnl": -66.54896794768774, + "pnlcomm": -66.54896794768774, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.98045633035186, + "entry_time": "2021-08-19T00:00:00", + "exit_price": 93.98797939638727, + "exit_time": "2021-08-20T00:00:00", + "gross_pnl": 100.7523066035418, + "pnl": 100.7523066035418, + "pnlcomm": 100.7523066035418, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35827005631805, + "entry_time": "2021-08-22T00:00:00", + "exit_price": 93.69155799194061, + "exit_time": "2021-08-23T00:00:00", + "gross_pnl": 33.328793562256465, + "pnl": 33.328793562256465, + "pnlcomm": 33.328793562256465, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68091309416992, + "entry_time": "2021-08-25T00:00:00", + "exit_price": 92.70456318827733, + "exit_time": "2021-08-26T00:00:00", + "gross_pnl": 2.3650094107409814, + "pnl": 2.3650094107409814, + "pnlcomm": 2.3650094107409814, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16469231313611, + "entry_time": "2021-08-28T00:00:00", + "exit_price": 92.8799099382491, + "exit_time": "2021-08-29T00:00:00", + "gross_pnl": -28.478237488701552, + "pnl": -28.478237488701552, + "pnlcomm": -28.478237488701552, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11566093967609, + "entry_time": "2021-08-31T00:00:00", + "exit_price": 93.80161139315015, + "exit_time": "2021-09-01T00:00:00", + "gross_pnl": -31.40495465259363, + "pnl": -31.40495465259363, + "pnlcomm": -31.40495465259363, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15377445359951, + "entry_time": "2021-09-03T00:00:00", + "exit_price": 94.15715297991916, + "exit_time": "2021-09-04T00:00:00", + "gross_pnl": 100.33785263196506, + "pnl": 100.33785263196506, + "pnlcomm": 100.33785263196506, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86962603101975, + "entry_time": "2021-09-06T00:00:00", + "exit_price": 93.72926386277882, + "exit_time": "2021-09-07T00:00:00", + "gross_pnl": -14.036216824092662, + "pnl": -14.036216824092662, + "pnlcomm": -14.036216824092662, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1579385275225, + "entry_time": "2021-09-09T00:00:00", + "exit_price": 93.74116822603294, + "exit_time": "2021-09-10T00:00:00", + "gross_pnl": -41.67703014895636, + "pnl": -41.67703014895636, + "pnlcomm": -41.67703014895636, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.31971390482754, + "entry_time": "2021-09-12T00:00:00", + "exit_price": 93.20782644697857, + "exit_time": "2021-09-13T00:00:00", + "gross_pnl": -11.188745784896525, + "pnl": -11.188745784896525, + "pnlcomm": -11.188745784896525, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01885490875779, + "entry_time": "2021-09-15T00:00:00", + "exit_price": 94.42230012835577, + "exit_time": "2021-09-16T00:00:00", + "gross_pnl": -59.655478040201615, + "pnl": -59.655478040201615, + "pnlcomm": -59.655478040201615, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.99288411883725, + "entry_time": "2021-09-18T00:00:00", + "exit_price": 94.082184046767, + "exit_time": "2021-09-19T00:00:00", + "gross_pnl": 8.929992792974417, + "pnl": 8.929992792974417, + "pnlcomm": 8.929992792974417, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.85101362331126, + "entry_time": "2021-09-21T00:00:00", + "exit_price": 94.98564664788431, + "exit_time": "2021-09-22T00:00:00", + "gross_pnl": 113.46330245730485, + "pnl": 113.46330245730485, + "pnlcomm": 113.46330245730485, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86959357102904, + "entry_time": "2021-09-24T00:00:00", + "exit_price": 94.20013868958425, + "exit_time": "2021-09-25T00:00:00", + "gross_pnl": 33.05451185552073, + "pnl": 33.05451185552073, + "pnlcomm": 33.05451185552073, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84924924581607, + "entry_time": "2021-09-27T00:00:00", + "exit_price": 93.31289310035527, + "exit_time": "2021-09-28T00:00:00", + "gross_pnl": -153.63561454608003, + "pnl": -153.63561454608003, + "pnlcomm": -153.63561454608003, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30858201402589, + "entry_time": "2021-09-30T00:00:00", + "exit_price": 93.99373607498532, + "exit_time": "2021-10-01T00:00:00", + "gross_pnl": -31.484593904056624, + "pnl": -31.484593904056624, + "pnlcomm": -31.484593904056624, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.18572768435916, + "entry_time": "2021-10-03T00:00:00", + "exit_price": 94.33439114940059, + "exit_time": "2021-10-04T00:00:00", + "gross_pnl": -85.13365349585769, + "pnl": -85.13365349585769, + "pnlcomm": -85.13365349585769, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07429869254726, + "entry_time": "2021-10-06T00:00:00", + "exit_price": 94.04790943044297, + "exit_time": "2021-10-07T00:00:00", + "gross_pnl": -2.638926210428849, + "pnl": -2.638926210428849, + "pnlcomm": -2.638926210428849, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64069907229371, + "entry_time": "2021-10-09T00:00:00", + "exit_price": 94.26235855896988, + "exit_time": "2021-10-10T00:00:00", + "gross_pnl": 62.16594866761653, + "pnl": 62.16594866761653, + "pnlcomm": 62.16594866761653, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50379403067527, + "entry_time": "2021-10-12T00:00:00", + "exit_price": 94.43691170957882, + "exit_time": "2021-10-13T00:00:00", + "gross_pnl": -6.688232109644332, + "pnl": -6.688232109644332, + "pnlcomm": -6.688232109644332, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37005197510278, + "entry_time": "2021-10-15T00:00:00", + "exit_price": 94.27057437223934, + "exit_time": "2021-10-16T00:00:00", + "gross_pnl": -9.947760286344476, + "pnl": -9.947760286344476, + "pnlcomm": -9.947760286344476, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.09337235241868, + "entry_time": "2021-10-18T00:00:00", + "exit_price": 94.71128565229746, + "exit_time": "2021-10-19T00:00:00", + "gross_pnl": -38.20867001212207, + "pnl": -38.20867001212207, + "pnlcomm": -38.20867001212207, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02883456195461, + "entry_time": "2021-10-21T00:00:00", + "exit_price": 94.80490335979458, + "exit_time": "2021-10-22T00:00:00", + "gross_pnl": 77.60687978399687, + "pnl": 77.60687978399687, + "pnlcomm": 77.60687978399687, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9287597961482, + "entry_time": "2021-10-24T00:00:00", + "exit_price": 95.17470692964342, + "exit_time": "2021-10-25T00:00:00", + "gross_pnl": 124.59471334952212, + "pnl": 124.59471334952212, + "pnlcomm": 124.59471334952212, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.24931526786432, + "entry_time": "2021-10-27T00:00:00", + "exit_price": 93.60050033989026, + "exit_time": "2021-10-28T00:00:00", + "gross_pnl": -64.88149279740583, + "pnl": -64.88149279740583, + "pnlcomm": -64.88149279740583, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09469925407369, + "entry_time": "2021-10-30T00:00:00", + "exit_price": 94.3111349289259, + "exit_time": "2021-10-31T00:00:00", + "gross_pnl": 21.64356748522067, + "pnl": 21.64356748522067, + "pnlcomm": 21.64356748522067, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18816369089683, + "entry_time": "2021-11-02T00:00:00", + "exit_price": 94.42938460793316, + "exit_time": "2021-11-03T00:00:00", + "gross_pnl": 24.122091703632975, + "pnl": 24.122091703632975, + "pnlcomm": 24.122091703632975, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.41602741852829, + "entry_time": "2021-11-05T00:00:00", + "exit_price": 93.42310978968692, + "exit_time": "2021-11-06T00:00:00", + "gross_pnl": 0.7082371158631418, + "pnl": 0.7082371158631418, + "pnlcomm": 0.7082371158631418, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50953693273829, + "entry_time": "2021-11-08T00:00:00", + "exit_price": 93.33123427861662, + "exit_time": "2021-11-09T00:00:00", + "gross_pnl": 82.16973458783343, + "pnl": 82.16973458783343, + "pnlcomm": 82.16973458783343, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96020937715257, + "entry_time": "2021-11-11T00:00:00", + "exit_price": 93.53068640749544, + "exit_time": "2021-11-12T00:00:00", + "gross_pnl": 57.04770303428717, + "pnl": 57.04770303428717, + "pnlcomm": 57.04770303428717, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56091640875552, + "entry_time": "2021-11-14T00:00:00", + "exit_price": 92.89910933295498, + "exit_time": "2021-11-15T00:00:00", + "gross_pnl": 33.81929241994612, + "pnl": 33.81929241994612, + "pnlcomm": 33.81929241994612, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.42727078867868, + "entry_time": "2021-11-17T00:00:00", + "exit_price": 92.19572149206287, + "exit_time": "2021-11-18T00:00:00", + "gross_pnl": -23.154929661581036, + "pnl": -23.154929661581036, + "pnlcomm": -23.154929661581036, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68137345397398, + "entry_time": "2021-11-20T00:00:00", + "exit_price": 92.48011498833463, + "exit_time": "2021-11-21T00:00:00", + "gross_pnl": -20.125846563934147, + "pnl": -20.125846563934147, + "pnlcomm": -20.125846563934147, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73481537380023, + "entry_time": "2021-11-23T00:00:00", + "exit_price": 93.9817766831428, + "exit_time": "2021-11-24T00:00:00", + "gross_pnl": 124.69613093425664, + "pnl": 124.69613093425664, + "pnlcomm": 124.69613093425664, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62422399002075, + "entry_time": "2021-11-26T00:00:00", + "exit_price": 92.25402747101043, + "exit_time": "2021-11-27T00:00:00", + "gross_pnl": -37.01965190103209, + "pnl": -37.01965190103209, + "pnlcomm": -37.01965190103209, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78794113614681, + "entry_time": "2021-11-29T00:00:00", + "exit_price": 92.51565520344022, + "exit_time": "2021-11-30T00:00:00", + "gross_pnl": -27.228593270659474, + "pnl": -27.228593270659474, + "pnlcomm": -27.228593270659474, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81994141877884, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 91.73569183010366, + "exit_time": "2021-12-03T00:00:00", + "gross_pnl": -8.424958867517773, + "pnl": -8.424958867517773, + "pnlcomm": -8.424958867517773, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89304084668578, + "entry_time": "2021-12-05T00:00:00", + "exit_price": 91.94563028017612, + "exit_time": "2021-12-06T00:00:00", + "gross_pnl": 5.258943349033984, + "pnl": 5.258943349033984, + "pnlcomm": 5.258943349033984, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.70380536433252, + "entry_time": "2021-12-08T00:00:00", + "exit_price": 92.18321579529317, + "exit_time": "2021-12-09T00:00:00", + "gross_pnl": 47.94104309606411, + "pnl": 47.94104309606411, + "pnlcomm": 47.94104309606411, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75634960957339, + "entry_time": "2021-12-11T00:00:00", + "exit_price": 92.99346542277752, + "exit_time": "2021-12-12T00:00:00", + "gross_pnl": 23.711581320412733, + "pnl": 23.711581320412733, + "pnlcomm": 23.711581320412733, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07784715364147, + "entry_time": "2021-12-14T00:00:00", + "exit_price": 92.82473368702337, + "exit_time": "2021-12-15T00:00:00", + "gross_pnl": -25.31134666181032, + "pnl": -25.31134666181032, + "pnlcomm": -25.31134666181032, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80939097372557, + "entry_time": "2021-12-17T00:00:00", + "exit_price": 93.56855092683492, + "exit_time": "2021-12-18T00:00:00", + "gross_pnl": -24.084004689065353, + "pnl": -24.084004689065353, + "pnlcomm": -24.084004689065353, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22637736311736, + "entry_time": "2021-12-20T00:00:00", + "exit_price": 93.04989016451177, + "exit_time": "2021-12-21T00:00:00", + "gross_pnl": -17.648719860559936, + "pnl": -17.648719860559936, + "pnlcomm": -17.648719860559936, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06688407845617, + "entry_time": "2021-12-23T00:00:00", + "exit_price": 93.11481000895263, + "exit_time": "2021-12-24T00:00:00", + "gross_pnl": 4.792593049646143, + "pnl": 4.792593049646143, + "pnlcomm": 4.792593049646143, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27282277875311, + "entry_time": "2021-12-26T00:00:00", + "exit_price": 92.10549027383173, + "exit_time": "2021-12-27T00:00:00", + "gross_pnl": -116.73325049213759, + "pnl": -116.73325049213759, + "pnlcomm": -116.73325049213759, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02590143870165, + "entry_time": "2021-12-29T00:00:00", + "exit_price": 93.0111357952797, + "exit_time": "2021-12-30T00:00:00", + "gross_pnl": 98.52343565780473, + "pnl": 98.52343565780473, + "pnlcomm": 98.52343565780473, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36789726372407, + "entry_time": "2022-01-01T00:00:00", + "exit_price": 91.16759918928896, + "exit_time": "2022-01-02T00:00:00", + "gross_pnl": -20.02980744351106, + "pnl": -20.02980744351106, + "pnlcomm": -20.02980744351106, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02364437811006, + "entry_time": "2022-01-04T00:00:00", + "exit_price": 91.64247835816664, + "exit_time": "2022-01-05T00:00:00", + "gross_pnl": -38.11660199434215, + "pnl": -38.11660199434215, + "pnlcomm": -38.11660199434215, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20232839714717, + "entry_time": "2022-01-07T00:00:00", + "exit_price": 92.51418676739564, + "exit_time": "2022-01-08T00:00:00", + "gross_pnl": 31.185837024847274, + "pnl": 31.185837024847274, + "pnlcomm": 31.185837024847274, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81320041849362, + "entry_time": "2022-01-10T00:00:00", + "exit_price": 92.27166607324205, + "exit_time": "2022-01-11T00:00:00", + "gross_pnl": 45.84656547484229, + "pnl": 45.84656547484229, + "pnlcomm": 45.84656547484229, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2545983932022, + "entry_time": "2022-01-13T00:00:00", + "exit_price": 91.97497228207648, + "exit_time": "2022-01-14T00:00:00", + "gross_pnl": -27.962611112572233, + "pnl": -27.962611112572233, + "pnlcomm": -27.962611112572233, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.67780842750179, + "entry_time": "2022-01-16T00:00:00", + "exit_price": 91.45906966920411, + "exit_time": "2022-01-17T00:00:00", + "gross_pnl": -21.87387582976754, + "pnl": -21.87387582976754, + "pnlcomm": -21.87387582976754, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76345480442126, + "entry_time": "2022-01-19T00:00:00", + "exit_price": 91.43197465037622, + "exit_time": "2022-01-20T00:00:00", + "gross_pnl": -33.148015404503894, + "pnl": -33.148015404503894, + "pnlcomm": -33.148015404503894, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3600604543369, + "entry_time": "2022-01-22T00:00:00", + "exit_price": 92.44350843545416, + "exit_time": "2022-01-23T00:00:00", + "gross_pnl": 8.344798111725993, + "pnl": 8.344798111725993, + "pnlcomm": 8.344798111725993, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39757672508603, + "entry_time": "2022-01-25T00:00:00", + "exit_price": 91.85230151275863, + "exit_time": "2022-01-26T00:00:00", + "gross_pnl": 45.47247876726033, + "pnl": 45.47247876726033, + "pnlcomm": 45.47247876726033, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.81407145534195, + "entry_time": "2022-01-28T00:00:00", + "exit_price": 91.01128875382821, + "exit_time": "2022-01-29T00:00:00", + "gross_pnl": 19.721729848626524, + "pnl": 19.721729848626524, + "pnlcomm": 19.721729848626524, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.67591197573066, + "entry_time": "2022-01-31T00:00:00", + "exit_price": 90.51279666702179, + "exit_time": "2022-02-01T00:00:00", + "gross_pnl": -116.31153087088677, + "pnl": -116.31153087088677, + "pnlcomm": -116.31153087088677, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.98461279621962, + "entry_time": "2022-02-03T00:00:00", + "exit_price": 91.18776220832692, + "exit_time": "2022-02-04T00:00:00", + "gross_pnl": -79.68505878927061, + "pnl": -79.68505878927061, + "pnlcomm": -79.68505878927061, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68365711276127, + "entry_time": "2022-02-06T00:00:00", + "exit_price": 92.52965334263803, + "exit_time": "2022-02-07T00:00:00", + "gross_pnl": -15.40037701232393, + "pnl": -15.40037701232393, + "pnlcomm": -15.40037701232393, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.97018528191016, + "entry_time": "2022-02-09T00:00:00", + "exit_price": 92.1704075246973, + "exit_time": "2022-02-10T00:00:00", + "gross_pnl": 20.022224278713452, + "pnl": 20.022224278713452, + "pnlcomm": 20.022224278713452, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.4092834971355, + "entry_time": "2022-02-12T00:00:00", + "exit_price": 91.80397108470675, + "exit_time": "2022-02-13T00:00:00", + "gross_pnl": 39.46875875712408, + "pnl": 39.46875875712408, + "pnlcomm": 39.46875875712408, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.7224658447326, + "entry_time": "2022-02-15T00:00:00", + "exit_price": 91.15638220769824, + "exit_time": "2022-02-16T00:00:00", + "gross_pnl": -56.608363703435316, + "pnl": -56.608363703435316, + "pnlcomm": -56.608363703435316, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66063113797075, + "entry_time": "2022-02-18T00:00:00", + "exit_price": 91.93674170823937, + "exit_time": "2022-02-19T00:00:00", + "gross_pnl": 27.611057026861374, + "pnl": 27.611057026861374, + "pnlcomm": 27.611057026861374, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.02426166276656, + "entry_time": "2022-02-21T00:00:00", + "exit_price": 92.2868521233569, + "exit_time": "2022-02-22T00:00:00", + "gross_pnl": 126.25904605903315, + "pnl": 126.25904605903315, + "pnlcomm": 126.25904605903315, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06798590582007, + "entry_time": "2022-02-24T00:00:00", + "exit_price": 91.35136606041436, + "exit_time": "2022-02-25T00:00:00", + "gross_pnl": 28.338015459429755, + "pnl": 28.338015459429755, + "pnlcomm": 28.338015459429755, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.99746534424483, + "entry_time": "2022-02-27T00:00:00", + "exit_price": 91.56303029535638, + "exit_time": "2022-02-28T00:00:00", + "gross_pnl": 56.556495111155414, + "pnl": 56.556495111155414, + "pnlcomm": 56.556495111155414, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09425361608109, + "entry_time": "2022-03-02T00:00:00", + "exit_price": 91.42070005109457, + "exit_time": "2022-03-03T00:00:00", + "gross_pnl": -67.35535649865199, + "pnl": -67.35535649865199, + "pnlcomm": -67.35535649865199, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.41089068186189, + "entry_time": "2022-03-05T00:00:00", + "exit_price": 90.18677881527823, + "exit_time": "2022-03-06T00:00:00", + "gross_pnl": -122.41118665836552, + "pnl": -122.41118665836552, + "pnlcomm": -122.41118665836552, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43901544778936, + "entry_time": "2022-03-08T00:00:00", + "exit_price": 91.5260369404649, + "exit_time": "2022-03-09T00:00:00", + "gross_pnl": 8.70214926755466, + "pnl": 8.70214926755466, + "pnlcomm": 8.70214926755466, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.01177208564717, + "entry_time": "2022-03-11T00:00:00", + "exit_price": 91.36159823018748, + "exit_time": "2022-03-12T00:00:00", + "gross_pnl": 34.98261445403159, + "pnl": 34.98261445403159, + "pnlcomm": 34.98261445403159, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82082511981079, + "entry_time": "2022-03-14T00:00:00", + "exit_price": 91.28071492977152, + "exit_time": "2022-03-15T00:00:00", + "gross_pnl": 45.988980996072826, + "pnl": 45.988980996072826, + "pnlcomm": 45.988980996072826, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9250036260453, + "entry_time": "2022-03-17T00:00:00", + "exit_price": 90.6150063093046, + "exit_time": "2022-03-18T00:00:00", + "gross_pnl": -130.99973167406915, + "pnl": -130.99973167406915, + "pnlcomm": -130.99973167406915, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.61363931969464, + "entry_time": "2022-03-20T00:00:00", + "exit_price": 90.38004154259693, + "exit_time": "2022-03-21T00:00:00", + "gross_pnl": -23.35977770977138, + "pnl": -23.35977770977138, + "pnlcomm": -23.35977770977138, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.96467806287603, + "entry_time": "2022-03-23T00:00:00", + "exit_price": 90.70041523761671, + "exit_time": "2022-03-24T00:00:00", + "gross_pnl": -26.426282525932265, + "pnl": -26.426282525932265, + "pnlcomm": -26.426282525932265, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.62074541364396, + "entry_time": "2022-03-26T00:00:00", + "exit_price": 90.95651159207543, + "exit_time": "2022-03-27T00:00:00", + "gross_pnl": 33.576617843147005, + "pnl": 33.576617843147005, + "pnlcomm": 33.576617843147005, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05267669381956, + "entry_time": "2022-03-29T00:00:00", + "exit_price": 91.69416855510607, + "exit_time": "2022-03-30T00:00:00", + "gross_pnl": 64.14918612865108, + "pnl": 64.14918612865108, + "pnlcomm": 64.14918612865108, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8695133244266, + "entry_time": "2022-04-01T00:00:00", + "exit_price": 90.61012799594212, + "exit_time": "2022-04-02T00:00:00", + "gross_pnl": -25.938532848448403, + "pnl": -25.938532848448403, + "pnlcomm": -25.938532848448403, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.05464751490085, + "entry_time": "2022-04-04T00:00:00", + "exit_price": 90.46681240023963, + "exit_time": "2022-04-05T00:00:00", + "gross_pnl": 41.21648853387825, + "pnl": 41.21648853387825, + "pnlcomm": 41.21648853387825, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63067407291008, + "entry_time": "2022-04-07T00:00:00", + "exit_price": 89.96046847840074, + "exit_time": "2022-04-08T00:00:00", + "gross_pnl": -67.02055945093406, + "pnl": -67.02055945093406, + "pnlcomm": -67.02055945093406, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56273021751427, + "entry_time": "2022-04-10T00:00:00", + "exit_price": 90.14638715063298, + "exit_time": "2022-04-11T00:00:00", + "gross_pnl": -41.63430668812964, + "pnl": -41.63430668812964, + "pnlcomm": -41.63430668812964, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.75859326793318, + "entry_time": "2022-04-13T00:00:00", + "exit_price": 90.97823499949781, + "exit_time": "2022-04-14T00:00:00", + "gross_pnl": 121.96417315646357, + "pnl": 121.96417315646357, + "pnlcomm": 121.96417315646357, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.1563775636343, + "entry_time": "2022-04-16T00:00:00", + "exit_price": 89.71453147899727, + "exit_time": "2022-04-17T00:00:00", + "gross_pnl": -44.18460846370209, + "pnl": -44.18460846370209, + "pnlcomm": -44.18460846370209, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.00941330347686, + "entry_time": "2022-04-19T00:00:00", + "exit_price": 90.97249110306038, + "exit_time": "2022-04-20T00:00:00", + "gross_pnl": 96.3077799583516, + "pnl": 96.3077799583516, + "pnlcomm": 96.3077799583516, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.44900384555615, + "entry_time": "2022-04-22T00:00:00", + "exit_price": 90.26380626108603, + "exit_time": "2022-04-23T00:00:00", + "gross_pnl": -18.519758447011725, + "pnl": -18.519758447011725, + "pnlcomm": -18.519758447011725, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.9389490074607, + "entry_time": "2022-04-25T00:00:00", + "exit_price": 90.91676356991597, + "exit_time": "2022-04-26T00:00:00", + "gross_pnl": 97.7814562455265, + "pnl": 97.7814562455265, + "pnlcomm": 97.7814562455265, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.13685393625028, + "entry_time": "2022-04-28T00:00:00", + "exit_price": 90.92025914672816, + "exit_time": "2022-04-29T00:00:00", + "gross_pnl": 78.34052104778806, + "pnl": 78.34052104778806, + "pnlcomm": 78.34052104778806, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.9636459548143, + "entry_time": "2022-05-01T00:00:00", + "exit_price": 90.9470309766908, + "exit_time": "2022-05-02T00:00:00", + "gross_pnl": 98.33850218765008, + "pnl": 98.33850218765008, + "pnlcomm": 98.33850218765008, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23464868145118, + "entry_time": "2022-05-04T00:00:00", + "exit_price": 92.16095300836626, + "exit_time": "2022-05-05T00:00:00", + "gross_pnl": 92.6304326915087, + "pnl": 92.6304326915087, + "pnlcomm": 92.6304326915087, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86371979002091, + "entry_time": "2022-05-07T00:00:00", + "exit_price": 90.1658806519524, + "exit_time": "2022-05-08T00:00:00", + "gross_pnl": -69.78391380685025, + "pnl": -69.78391380685025, + "pnlcomm": -69.78391380685025, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.80999909964301, + "entry_time": "2022-05-10T00:00:00", + "exit_price": 91.3916052906719, + "exit_time": "2022-05-11T00:00:00", + "gross_pnl": 58.160619102889655, + "pnl": 58.160619102889655, + "pnlcomm": 58.160619102889655, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79830122498419, + "entry_time": "2022-05-13T00:00:00", + "exit_price": 91.92464426243117, + "exit_time": "2022-05-14T00:00:00", + "gross_pnl": 12.634303744698627, + "pnl": 12.634303744698627, + "pnlcomm": 12.634303744698627, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74084404129731, + "entry_time": "2022-05-16T00:00:00", + "exit_price": 91.77591195761288, + "exit_time": "2022-05-17T00:00:00", + "gross_pnl": 3.5067916315568937, + "pnl": 3.5067916315568937, + "pnlcomm": 3.5067916315568937, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.129082151163, + "entry_time": "2022-05-19T00:00:00", + "exit_price": 91.29443539538282, + "exit_time": "2022-05-20T00:00:00", + "gross_pnl": 16.535324421981556, + "pnl": 16.535324421981556, + "pnlcomm": 16.535324421981556, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.49821093674116, + "entry_time": "2022-05-22T00:00:00", + "exit_price": 90.52895961614624, + "exit_time": "2022-05-23T00:00:00", + "gross_pnl": 103.07486794050789, + "pnl": 103.07486794050789, + "pnlcomm": 103.07486794050789, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.50773769923417, + "entry_time": "2022-05-25T00:00:00", + "exit_price": 90.20586243304412, + "exit_time": "2022-05-26T00:00:00", + "gross_pnl": -30.18752661900521, + "pnl": -30.18752661900521, + "pnlcomm": -30.18752661900521, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1593251595947, + "entry_time": "2022-05-28T00:00:00", + "exit_price": 90.8652392547076, + "exit_time": "2022-05-29T00:00:00", + "gross_pnl": -29.408590488709763, + "pnl": -29.408590488709763, + "pnlcomm": -29.408590488709763, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.88148378297518, + "entry_time": "2022-05-31T00:00:00", + "exit_price": 90.54298539634833, + "exit_time": "2022-06-01T00:00:00", + "gross_pnl": 66.15016133731473, + "pnl": 66.15016133731473, + "pnlcomm": 66.15016133731473, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.97268456538903, + "entry_time": "2022-06-03T00:00:00", + "exit_price": 91.62712854780935, + "exit_time": "2022-06-04T00:00:00", + "gross_pnl": 65.44439824203181, + "pnl": 65.44439824203181, + "pnlcomm": 65.44439824203181, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.74146887774299, + "entry_time": "2022-06-06T00:00:00", + "exit_price": 90.42853595632805, + "exit_time": "2022-06-07T00:00:00", + "gross_pnl": -31.293292141494078, + "pnl": -31.293292141494078, + "pnlcomm": -31.293292141494078, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84848168731006, + "entry_time": "2022-06-09T00:00:00", + "exit_price": 90.83668379255865, + "exit_time": "2022-06-10T00:00:00", + "gross_pnl": -1.1797894751410354, + "pnl": -1.1797894751410354, + "pnlcomm": -1.1797894751410354, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.47241973433749, + "entry_time": "2022-06-12T00:00:00", + "exit_price": 89.89842730786603, + "exit_time": "2022-06-13T00:00:00", + "gross_pnl": -57.39924264714631, + "pnl": -57.39924264714631, + "pnlcomm": -57.39924264714631, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82455441317694, + "entry_time": "2022-06-15T00:00:00", + "exit_price": 90.16986826544031, + "exit_time": "2022-06-16T00:00:00", + "gross_pnl": -65.46861477366264, + "pnl": -65.46861477366264, + "pnlcomm": -65.46861477366264, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.1811588929617, + "entry_time": "2022-06-18T00:00:00", + "exit_price": 90.09911654611165, + "exit_time": "2022-06-19T00:00:00", + "gross_pnl": 91.79576531499407, + "pnl": 91.79576531499407, + "pnlcomm": 91.79576531499407, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.55257557802233, + "entry_time": "2022-06-21T00:00:00", + "exit_price": 90.6008717295654, + "exit_time": "2022-06-22T00:00:00", + "gross_pnl": 4.829615154307021, + "pnl": 4.829615154307021, + "pnlcomm": 4.829615154307021, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.68671023186488, + "entry_time": "2022-06-24T00:00:00", + "exit_price": 89.96517472835333, + "exit_time": "2022-06-25T00:00:00", + "gross_pnl": -72.15355035115465, + "pnl": -72.15355035115465, + "pnlcomm": -72.15355035115465, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.05260562521785, + "entry_time": "2022-06-27T00:00:00", + "exit_price": 90.08006582461334, + "exit_time": "2022-06-28T00:00:00", + "gross_pnl": 2.7460199395491713, + "pnl": 2.7460199395491713, + "pnlcomm": 2.7460199395491713, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79432064186736, + "entry_time": "2022-06-30T00:00:00", + "exit_price": 92.41108821991375, + "exit_time": "2022-07-01T00:00:00", + "gross_pnl": 161.67675780463924, + "pnl": 161.67675780463924, + "pnlcomm": 161.67675780463924, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87347025830266, + "entry_time": "2022-07-03T00:00:00", + "exit_price": 91.20564533828777, + "exit_time": "2022-07-04T00:00:00", + "gross_pnl": 33.2175079985106, + "pnl": 33.2175079985106, + "pnlcomm": 33.2175079985106, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.30309517181773, + "entry_time": "2022-07-06T00:00:00", + "exit_price": 90.1406611037728, + "exit_time": "2022-07-07T00:00:00", + "gross_pnl": -116.24340680449308, + "pnl": -116.24340680449308, + "pnlcomm": -116.24340680449308, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.24392591685461, + "entry_time": "2022-07-09T00:00:00", + "exit_price": 91.10896639776044, + "exit_time": "2022-07-10T00:00:00", + "gross_pnl": 86.5040480905833, + "pnl": 86.5040480905833, + "pnlcomm": 86.5040480905833, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43429707485602, + "entry_time": "2022-07-12T00:00:00", + "exit_price": 90.99823744300166, + "exit_time": "2022-07-13T00:00:00", + "gross_pnl": -43.60596318543628, + "pnl": -43.60596318543628, + "pnlcomm": -43.60596318543628, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.51160983247296, + "entry_time": "2022-07-15T00:00:00", + "exit_price": 91.15695774047701, + "exit_time": "2022-07-16T00:00:00", + "gross_pnl": 64.53479080040552, + "pnl": 64.53479080040552, + "pnlcomm": 64.53479080040552, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.25313076740179, + "entry_time": "2022-07-18T00:00:00", + "exit_price": 90.3503914171167, + "exit_time": "2022-07-19T00:00:00", + "gross_pnl": -90.27393502850884, + "pnl": -90.27393502850884, + "pnlcomm": -90.27393502850884, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47393608345517, + "entry_time": "2022-07-21T00:00:00", + "exit_price": 89.98751697992218, + "exit_time": "2022-07-22T00:00:00", + "gross_pnl": -148.64191035329952, + "pnl": -148.64191035329952, + "pnlcomm": -148.64191035329952, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.0545116492653, + "entry_time": "2022-07-24T00:00:00", + "exit_price": 91.01799823084976, + "exit_time": "2022-07-25T00:00:00", + "gross_pnl": -103.6513418415538, + "pnl": -103.6513418415538, + "pnlcomm": -103.6513418415538, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05081241841745, + "entry_time": "2022-07-27T00:00:00", + "exit_price": 91.31407916672543, + "exit_time": "2022-07-28T00:00:00", + "gross_pnl": 26.326674830798424, + "pnl": 26.326674830798424, + "pnlcomm": 26.326674830798424, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.80885265421585, + "entry_time": "2022-07-30T00:00:00", + "exit_price": 91.15205975168703, + "exit_time": "2022-07-31T00:00:00", + "gross_pnl": 34.32070974711792, + "pnl": 34.32070974711792, + "pnlcomm": 34.32070974711792, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47241880815605, + "entry_time": "2022-08-02T00:00:00", + "exit_price": 91.54172600484964, + "exit_time": "2022-08-03T00:00:00", + "gross_pnl": 6.930719669358609, + "pnl": 6.930719669358609, + "pnlcomm": 6.930719669358609, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8976774720573, + "entry_time": "2022-08-05T00:00:00", + "exit_price": 91.58791087448299, + "exit_time": "2022-08-06T00:00:00", + "gross_pnl": -30.97665975743098, + "pnl": -30.97665975743098, + "pnlcomm": -30.97665975743098, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02271267015783, + "entry_time": "2022-08-08T00:00:00", + "exit_price": 91.10459083951521, + "exit_time": "2022-08-09T00:00:00", + "gross_pnl": -91.81218306426189, + "pnl": -91.81218306426189, + "pnlcomm": -91.81218306426189, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24414870008319, + "entry_time": "2022-08-11T00:00:00", + "exit_price": 92.69109127617371, + "exit_time": "2022-08-12T00:00:00", + "gross_pnl": 44.6942576090521, + "pnl": 44.6942576090521, + "pnlcomm": 44.6942576090521, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.65306278042235, + "entry_time": "2022-08-14T00:00:00", + "exit_price": 92.39816620647916, + "exit_time": "2022-08-15T00:00:00", + "gross_pnl": 74.5103426056815, + "pnl": 74.5103426056815, + "pnlcomm": 74.5103426056815, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1810606061523, + "entry_time": "2022-08-17T00:00:00", + "exit_price": 92.49470462633181, + "exit_time": "2022-08-18T00:00:00", + "gross_pnl": -68.63559798204903, + "pnl": -68.63559798204903, + "pnlcomm": -68.63559798204903, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01504374556126, + "entry_time": "2022-08-20T00:00:00", + "exit_price": 92.67904663244455, + "exit_time": "2022-08-21T00:00:00", + "gross_pnl": 66.40028868832957, + "pnl": 66.40028868832957, + "pnlcomm": 66.40028868832957, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74908045175502, + "entry_time": "2022-08-23T00:00:00", + "exit_price": 93.28081352108578, + "exit_time": "2022-08-24T00:00:00", + "gross_pnl": -46.82669306692446, + "pnl": -46.82669306692446, + "pnlcomm": -46.82669306692446, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72430502818084, + "entry_time": "2022-08-26T00:00:00", + "exit_price": 92.91000509633356, + "exit_time": "2022-08-27T00:00:00", + "gross_pnl": -81.42999318472732, + "pnl": -81.42999318472732, + "pnlcomm": -81.42999318472732, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0266388958905, + "entry_time": "2022-08-29T00:00:00", + "exit_price": 93.06932306108122, + "exit_time": "2022-08-30T00:00:00", + "gross_pnl": 4.268416519072105, + "pnl": 4.268416519072105, + "pnlcomm": 4.268416519072105, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2669116718157, + "entry_time": "2022-09-01T00:00:00", + "exit_price": 93.31911690207038, + "exit_time": "2022-09-02T00:00:00", + "gross_pnl": 5.220523025467116, + "pnl": 5.220523025467116, + "pnlcomm": 5.220523025467116, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.01378736632232, + "entry_time": "2022-09-04T00:00:00", + "exit_price": 92.69057272581715, + "exit_time": "2022-09-05T00:00:00", + "gross_pnl": -32.32146405051708, + "pnl": -32.32146405051708, + "pnlcomm": -32.32146405051708, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86605080021333, + "entry_time": "2022-09-07T00:00:00", + "exit_price": 93.54829275642138, + "exit_time": "2022-09-08T00:00:00", + "gross_pnl": 68.22419562080455, + "pnl": 68.22419562080455, + "pnlcomm": 68.22419562080455, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92761316198515, + "entry_time": "2022-09-10T00:00:00", + "exit_price": 92.07281692163534, + "exit_time": "2022-09-11T00:00:00", + "gross_pnl": -185.47962403498133, + "pnl": -185.47962403498133, + "pnlcomm": -185.47962403498133, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2809228591007, + "entry_time": "2022-09-13T00:00:00", + "exit_price": 94.11130793179962, + "exit_time": "2022-09-14T00:00:00", + "gross_pnl": -16.96149273010832, + "pnl": -16.96149273010832, + "pnlcomm": -16.96149273010832, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.78210365621945, + "entry_time": "2022-09-16T00:00:00", + "exit_price": 94.99114272050637, + "exit_time": "2022-09-17T00:00:00", + "gross_pnl": 20.903906428692665, + "pnl": 20.903906428692665, + "pnlcomm": 20.903906428692665, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26603620619443, + "entry_time": "2022-09-19T00:00:00", + "exit_price": 95.26895473010688, + "exit_time": "2022-09-20T00:00:00", + "gross_pnl": 100.29185239124558, + "pnl": 100.29185239124558, + "pnlcomm": 100.29185239124558, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88756691851471, + "entry_time": "2022-09-22T00:00:00", + "exit_price": 94.90535085923925, + "exit_time": "2022-09-23T00:00:00", + "gross_pnl": 1.778394072454148, + "pnl": 1.778394072454148, + "pnlcomm": 1.778394072454148, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8662778443967, + "entry_time": "2022-09-25T00:00:00", + "exit_price": 94.27678234231546, + "exit_time": "2022-09-26T00:00:00", + "gross_pnl": -58.94955020812489, + "pnl": -58.94955020812489, + "pnlcomm": -58.94955020812489, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21120724189035, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 93.62182381785365, + "exit_time": "2022-09-29T00:00:00", + "gross_pnl": -58.93834240366971, + "pnl": -58.93834240366971, + "pnlcomm": -58.93834240366971, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70089986040492, + "entry_time": "2022-10-01T00:00:00", + "exit_price": 94.98061841891752, + "exit_time": "2022-10-02T00:00:00", + "gross_pnl": 27.971855851259875, + "pnl": 27.971855851259875, + "pnlcomm": 27.971855851259875, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.63730668221623, + "entry_time": "2022-10-04T00:00:00", + "exit_price": 95.21809213108293, + "exit_time": "2022-10-05T00:00:00", + "gross_pnl": 58.07854488666919, + "pnl": 58.07854488666919, + "pnlcomm": 58.07854488666919, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62513446883317, + "entry_time": "2022-10-07T00:00:00", + "exit_price": 95.0550792423482, + "exit_time": "2022-10-08T00:00:00", + "gross_pnl": 42.994477351503235, + "pnl": 42.994477351503235, + "pnlcomm": 42.994477351503235, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7111656021986, + "entry_time": "2022-10-10T00:00:00", + "exit_price": 94.70112878957045, + "exit_time": "2022-10-11T00:00:00", + "gross_pnl": 98.9963187371842, + "pnl": 98.9963187371842, + "pnlcomm": 98.9963187371842, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.22008595203475, + "entry_time": "2022-10-13T00:00:00", + "exit_price": 95.26583380518775, + "exit_time": "2022-10-14T00:00:00", + "gross_pnl": 104.57478531530029, + "pnl": 104.57478531530029, + "pnlcomm": 104.57478531530029, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84031644841893, + "entry_time": "2022-10-16T00:00:00", + "exit_price": 94.76253265375746, + "exit_time": "2022-10-17T00:00:00", + "gross_pnl": -7.778379466147101, + "pnl": -7.778379466147101, + "pnlcomm": -7.778379466147101, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36921450181964, + "entry_time": "2022-10-19T00:00:00", + "exit_price": 94.38751561741323, + "exit_time": "2022-10-20T00:00:00", + "gross_pnl": 101.83011155935873, + "pnl": 101.83011155935873, + "pnlcomm": 101.83011155935873, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.75942760797071, + "entry_time": "2022-10-22T00:00:00", + "exit_price": 94.20505090808615, + "exit_time": "2022-10-23T00:00:00", + "gross_pnl": -55.437669988455696, + "pnl": -55.437669988455696, + "pnlcomm": -55.437669988455696, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01993010545006, + "entry_time": "2022-10-25T00:00:00", + "exit_price": 94.25253006691226, + "exit_time": "2022-10-26T00:00:00", + "gross_pnl": -76.74000385378008, + "pnl": -76.74000385378008, + "pnlcomm": -76.74000385378008, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9292129294191, + "entry_time": "2022-10-28T00:00:00", + "exit_price": 95.45831791808807, + "exit_time": "2022-10-29T00:00:00", + "gross_pnl": 52.910498866897626, + "pnl": 52.910498866897626, + "pnlcomm": 52.910498866897626, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01874761761506, + "entry_time": "2022-10-31T00:00:00", + "exit_price": 95.70179579177142, + "exit_time": "2022-11-01T00:00:00", + "gross_pnl": 68.30481741563545, + "pnl": 68.30481741563545, + "pnlcomm": 68.30481741563545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.45782648578765, + "entry_time": "2022-11-03T00:00:00", + "exit_price": 95.9654506293958, + "exit_time": "2022-11-04T00:00:00", + "gross_pnl": -49.237585639184545, + "pnl": -49.237585639184545, + "pnlcomm": -49.237585639184545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.69543160906309, + "entry_time": "2022-11-06T00:00:00", + "exit_price": 96.23626703373414, + "exit_time": "2022-11-07T00:00:00", + "gross_pnl": 54.08354246710445, + "pnl": 54.08354246710445, + "pnlcomm": 54.08354246710445, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23730582460071, + "entry_time": "2022-11-09T00:00:00", + "exit_price": 94.58630669240723, + "exit_time": "2022-11-10T00:00:00", + "gross_pnl": -65.09991321934763, + "pnl": -65.09991321934763, + "pnlcomm": -65.09991321934763, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.24411442253736, + "entry_time": "2022-11-12T00:00:00", + "exit_price": 94.80412345904836, + "exit_time": "2022-11-13T00:00:00", + "gross_pnl": -43.999096348900935, + "pnl": -43.999096348900935, + "pnlcomm": -43.999096348900935, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33266826608637, + "entry_time": "2022-11-15T00:00:00", + "exit_price": 94.08584208568091, + "exit_time": "2022-11-16T00:00:00", + "gross_pnl": -24.682618040546345, + "pnl": -24.682618040546345, + "pnlcomm": -24.682618040546345, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20511704388718, + "entry_time": "2022-11-18T00:00:00", + "exit_price": 93.73586252939168, + "exit_time": "2022-11-19T00:00:00", + "gross_pnl": -46.92545144955034, + "pnl": -46.92545144955034, + "pnlcomm": -46.92545144955034, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6229802242446, + "entry_time": "2022-11-21T00:00:00", + "exit_price": 93.66558700926207, + "exit_time": "2022-11-22T00:00:00", + "gross_pnl": -95.7393214982531, + "pnl": -95.7393214982531, + "pnlcomm": -95.7393214982531, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74677062129318, + "entry_time": "2022-11-24T00:00:00", + "exit_price": 93.54017463980657, + "exit_time": "2022-11-25T00:00:00", + "gross_pnl": -20.659598148661473, + "pnl": -20.659598148661473, + "pnlcomm": -20.659598148661473, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.730138438308, + "entry_time": "2022-11-27T00:00:00", + "exit_price": 93.49572076787184, + "exit_time": "2022-11-28T00:00:00", + "gross_pnl": -23.44176704361587, + "pnl": -23.44176704361587, + "pnlcomm": -23.44176704361587, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77203615539878, + "entry_time": "2022-11-30T00:00:00", + "exit_price": 92.91635203682458, + "exit_time": "2022-12-01T00:00:00", + "gross_pnl": -85.5684118574203, + "pnl": -85.5684118574203, + "pnlcomm": -85.5684118574203, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91294155802171, + "entry_time": "2022-12-03T00:00:00", + "exit_price": 92.85493736088272, + "exit_time": "2022-12-04T00:00:00", + "gross_pnl": -105.80041971389988, + "pnl": -105.80041971389988, + "pnlcomm": -105.80041971389988, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07037492573127, + "entry_time": "2022-12-06T00:00:00", + "exit_price": 93.35918129576551, + "exit_time": "2022-12-07T00:00:00", + "gross_pnl": -71.11936299657629, + "pnl": -71.11936299657629, + "pnlcomm": -71.11936299657629, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21752684184962, + "entry_time": "2022-12-09T00:00:00", + "exit_price": 93.82182795562746, + "exit_time": "2022-12-10T00:00:00", + "gross_pnl": 60.430111377783646, + "pnl": 60.430111377783646, + "pnlcomm": 60.430111377783646, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91554181329224, + "entry_time": "2022-12-12T00:00:00", + "exit_price": 93.2637454877203, + "exit_time": "2022-12-13T00:00:00", + "gross_pnl": -65.17963255719366, + "pnl": -65.17963255719366, + "pnlcomm": -65.17963255719366, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42377971468683, + "entry_time": "2022-12-15T00:00:00", + "exit_price": 92.9956096009709, + "exit_time": "2022-12-16T00:00:00", + "gross_pnl": -42.817011371593594, + "pnl": -42.817011371593594, + "pnlcomm": -42.817011371593594, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95024629295155, + "entry_time": "2022-12-18T00:00:00", + "exit_price": 92.02384747382928, + "exit_time": "2022-12-19T00:00:00", + "gross_pnl": -92.63988191222694, + "pnl": -92.63988191222694, + "pnlcomm": -92.63988191222694, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.7384856392294, + "entry_time": "2022-12-21T00:00:00", + "exit_price": 91.78634727970504, + "exit_time": "2022-12-22T00:00:00", + "gross_pnl": 104.78616404756451, + "pnl": 104.78616404756451, + "pnlcomm": 104.78616404756451, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.46503843997183, + "entry_time": "2022-12-24T00:00:00", + "exit_price": 91.75198886376967, + "exit_time": "2022-12-25T00:00:00", + "gross_pnl": 28.69504237978333, + "pnl": 28.69504237978333, + "pnlcomm": 28.69504237978333, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.39876122857235, + "entry_time": "2022-12-27T00:00:00", + "exit_price": 92.11567284541557, + "exit_time": "2022-12-28T00:00:00", + "gross_pnl": -28.30883831567803, + "pnl": -28.30883831567803, + "pnlcomm": -28.30883831567803, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77091533493147, + "entry_time": "2022-12-30T00:00:00", + "exit_price": 93.3485194106044, + "exit_time": "2022-12-31T00:00:00", + "gross_pnl": 57.760407567292305, + "pnl": 57.760407567292305, + "pnlcomm": 57.760407567292305, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04122370969267, + "entry_time": "2023-01-02T00:00:00", + "exit_price": 92.97807111210727, + "exit_time": "2023-01-03T00:00:00", + "gross_pnl": 93.68474024145996, + "pnl": 93.68474024145996, + "pnlcomm": 93.68474024145996, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82297627909733, + "entry_time": "2023-01-05T00:00:00", + "exit_price": 92.88908258807695, + "exit_time": "2023-01-06T00:00:00", + "gross_pnl": 6.6106308979613, + "pnl": 6.6106308979613, + "pnlcomm": 6.6106308979613, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.02494822567455, + "entry_time": "2023-01-08T00:00:00", + "exit_price": 92.52813633390632, + "exit_time": "2023-01-09T00:00:00", + "gross_pnl": -49.68118917682318, + "pnl": -49.68118917682318, + "pnlcomm": -49.68118917682318, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77607586946252, + "entry_time": "2023-01-11T00:00:00", + "exit_price": 92.84906975105618, + "exit_time": "2023-01-12T00:00:00", + "gross_pnl": 7.29938815936606, + "pnl": 7.29938815936606, + "pnlcomm": 7.29938815936606, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10682536410768, + "entry_time": "2023-01-14T00:00:00", + "exit_price": 92.60098332710814, + "exit_time": "2023-01-15T00:00:00", + "gross_pnl": -50.58420369995389, + "pnl": -50.58420369995389, + "pnlcomm": -50.58420369995389, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16477240647923, + "entry_time": "2023-01-17T00:00:00", + "exit_price": 93.64464350405021, + "exit_time": "2023-01-18T00:00:00", + "gross_pnl": 47.98710975709781, + "pnl": 47.98710975709781, + "pnlcomm": 47.98710975709781, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.34853961981467, + "entry_time": "2023-01-20T00:00:00", + "exit_price": 92.90164291858915, + "exit_time": "2023-01-21T00:00:00", + "gross_pnl": 55.31032987744737, + "pnl": 55.31032987744737, + "pnlcomm": 55.31032987744737, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52920571661875, + "entry_time": "2023-01-23T00:00:00", + "exit_price": 92.96718442791747, + "exit_time": "2023-01-24T00:00:00", + "gross_pnl": -56.20212887012741, + "pnl": -56.20212887012741, + "pnlcomm": -56.20212887012741, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1449985691514, + "entry_time": "2023-01-26T00:00:00", + "exit_price": 93.09214526901171, + "exit_time": "2023-01-27T00:00:00", + "gross_pnl": -105.2853300139688, + "pnl": -105.2853300139688, + "pnlcomm": -105.2853300139688, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08808617199072, + "entry_time": "2023-01-29T00:00:00", + "exit_price": 93.57735843418071, + "exit_time": "2023-01-30T00:00:00", + "gross_pnl": -51.0727737810015, + "pnl": -51.0727737810015, + "pnlcomm": -51.0727737810015, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.03374091329061, + "entry_time": "2023-02-01T00:00:00", + "exit_price": 92.67153521214688, + "exit_time": "2023-02-02T00:00:00", + "gross_pnl": -136.22057011437363, + "pnl": -136.22057011437363, + "pnlcomm": -136.22057011437363, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90721494360177, + "entry_time": "2023-02-04T00:00:00", + "exit_price": 92.94800270723887, + "exit_time": "2023-02-05T00:00:00", + "gross_pnl": 4.078776363709835, + "pnl": 4.078776363709835, + "pnlcomm": 4.078776363709835, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77341143396697, + "entry_time": "2023-02-07T00:00:00", + "exit_price": 93.16810608211969, + "exit_time": "2023-02-08T00:00:00", + "gross_pnl": -60.530535184727796, + "pnl": -60.530535184727796, + "pnlcomm": -60.530535184727796, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1295561924666, + "entry_time": "2023-02-10T00:00:00", + "exit_price": 93.6109897663897, + "exit_time": "2023-02-11T00:00:00", + "gross_pnl": 48.14335739230984, + "pnl": 48.14335739230984, + "pnlcomm": 48.14335739230984, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09160273927314, + "entry_time": "2023-02-13T00:00:00", + "exit_price": 93.33166346007059, + "exit_time": "2023-02-14T00:00:00", + "gross_pnl": -75.99392792025554, + "pnl": -75.99392792025554, + "pnlcomm": -75.99392792025554, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53620789150742, + "entry_time": "2023-02-16T00:00:00", + "exit_price": 94.21568894504843, + "exit_time": "2023-02-17T00:00:00", + "gross_pnl": -32.051894645898926, + "pnl": -32.051894645898926, + "pnlcomm": -32.051894645898926, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93343913761625, + "entry_time": "2023-02-19T00:00:00", + "exit_price": 94.02299067534886, + "exit_time": "2023-02-20T00:00:00", + "gross_pnl": 8.95515377326177, + "pnl": 8.95515377326177, + "pnlcomm": 8.95515377326177, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18544500815403, + "entry_time": "2023-02-22T00:00:00", + "exit_price": 93.98907937476646, + "exit_time": "2023-02-23T00:00:00", + "gross_pnl": -19.636563338757185, + "pnl": -19.636563338757185, + "pnlcomm": -19.636563338757185, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45348785433026, + "entry_time": "2023-02-25T00:00:00", + "exit_price": 95.02085687929099, + "exit_time": "2023-02-26T00:00:00", + "gross_pnl": 56.73690249607262, + "pnl": 56.73690249607262, + "pnlcomm": 56.73690249607262, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84830391916218, + "entry_time": "2023-02-28T00:00:00", + "exit_price": 94.43699045607909, + "exit_time": "2023-03-01T00:00:00", + "gross_pnl": -41.13134630830899, + "pnl": -41.13134630830899, + "pnlcomm": -41.13134630830899, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.95759166912264, + "entry_time": "2023-03-03T00:00:00", + "exit_price": 93.47551491598016, + "exit_time": "2023-03-04T00:00:00", + "gross_pnl": -48.20767531424792, + "pnl": -48.20767531424792, + "pnlcomm": -48.20767531424792, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66498305754212, + "entry_time": "2023-03-06T00:00:00", + "exit_price": 93.36643618283398, + "exit_time": "2023-03-07T00:00:00", + "gross_pnl": -29.8546874708137, + "pnl": -29.8546874708137, + "pnlcomm": -29.8546874708137, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3496449568648, + "entry_time": "2023-03-09T00:00:00", + "exit_price": 93.06229907806569, + "exit_time": "2023-03-10T00:00:00", + "gross_pnl": -28.734587879910123, + "pnl": -28.734587879910123, + "pnlcomm": -28.734587879910123, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93784310790696, + "entry_time": "2023-03-12T00:00:00", + "exit_price": 92.96780942003683, + "exit_time": "2023-03-13T00:00:00", + "gross_pnl": -97.00336878701279, + "pnl": -97.00336878701279, + "pnlcomm": -97.00336878701279, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88445131540618, + "entry_time": "2023-03-15T00:00:00", + "exit_price": 94.08186481058257, + "exit_time": "2023-03-16T00:00:00", + "gross_pnl": 19.74134951763915, + "pnl": 19.74134951763915, + "pnlcomm": 19.74134951763915, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20796655389181, + "entry_time": "2023-03-18T00:00:00", + "exit_price": 91.9654081254928, + "exit_time": "2023-03-19T00:00:00", + "gross_pnl": -24.255842839900765, + "pnl": -24.255842839900765, + "pnlcomm": -24.255842839900765, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49393791749024, + "entry_time": "2023-03-21T00:00:00", + "exit_price": 92.05007592523164, + "exit_time": "2023-03-22T00:00:00", + "gross_pnl": -44.38619922586042, + "pnl": -44.38619922586042, + "pnlcomm": -44.38619922586042, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.84518996211608, + "entry_time": "2023-03-24T00:00:00", + "exit_price": 92.32190345568543, + "exit_time": "2023-03-25T00:00:00", + "gross_pnl": 47.67134935693491, + "pnl": 47.67134935693491, + "pnlcomm": 47.67134935693491, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32827178627502, + "entry_time": "2023-03-27T00:00:00", + "exit_price": 93.26562867244172, + "exit_time": "2023-03-28T00:00:00", + "gross_pnl": -6.264311383330323, + "pnl": -6.264311383330323, + "pnlcomm": -6.264311383330323, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9489490131078, + "entry_time": "2023-03-30T00:00:00", + "exit_price": 93.54756230484855, + "exit_time": "2023-03-31T00:00:00", + "gross_pnl": 59.86132917407474, + "pnl": 59.86132917407474, + "pnlcomm": 59.86132917407474, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52695826109522, + "entry_time": "2023-04-02T00:00:00", + "exit_price": 93.16120912048845, + "exit_time": "2023-04-03T00:00:00", + "gross_pnl": -36.57491406067663, + "pnl": -36.57491406067663, + "pnlcomm": -36.57491406067663, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73109278013733, + "entry_time": "2023-04-05T00:00:00", + "exit_price": 92.12967158946792, + "exit_time": "2023-04-06T00:00:00", + "gross_pnl": -60.14211906694129, + "pnl": -60.14211906694129, + "pnlcomm": -60.14211906694129, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66144197243285, + "entry_time": "2023-04-08T00:00:00", + "exit_price": 92.35105870140517, + "exit_time": "2023-04-09T00:00:00", + "gross_pnl": -31.038327102768903, + "pnl": -31.038327102768903, + "pnlcomm": -31.038327102768903, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32497954050243, + "entry_time": "2023-04-11T00:00:00", + "exit_price": 92.404028525945, + "exit_time": "2023-04-12T00:00:00", + "gross_pnl": -92.09510145574313, + "pnl": -92.09510145574313, + "pnlcomm": -92.09510145574313, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5596224194739, + "entry_time": "2023-04-14T00:00:00", + "exit_price": 93.06373732644884, + "exit_time": "2023-04-15T00:00:00", + "gross_pnl": 50.4114906974948, + "pnl": 50.4114906974948, + "pnlcomm": 50.4114906974948, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82924854494931, + "entry_time": "2023-04-17T00:00:00", + "exit_price": 92.63616550173667, + "exit_time": "2023-04-18T00:00:00", + "gross_pnl": -19.308304321263847, + "pnl": -19.308304321263847, + "pnlcomm": -19.308304321263847, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.79933273190036, + "entry_time": "2023-04-20T00:00:00", + "exit_price": 92.95120755426662, + "exit_time": "2023-04-21T00:00:00", + "gross_pnl": 15.187482236625272, + "pnl": 15.187482236625272, + "pnlcomm": 15.187482236625272, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56403816854014, + "entry_time": "2023-04-23T00:00:00", + "exit_price": 92.35426808914588, + "exit_time": "2023-04-24T00:00:00", + "gross_pnl": -20.977007939426073, + "pnl": -20.977007939426073, + "pnlcomm": -20.977007939426073, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35865607168631, + "entry_time": "2023-04-26T00:00:00", + "exit_price": 92.90482034285156, + "exit_time": "2023-04-27T00:00:00", + "gross_pnl": -45.3835728834747, + "pnl": -45.3835728834747, + "pnlcomm": -45.3835728834747, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9985787957225, + "entry_time": "2023-04-29T00:00:00", + "exit_price": 92.8768940380532, + "exit_time": "2023-04-30T00:00:00", + "gross_pnl": -12.168475766929987, + "pnl": -12.168475766929987, + "pnlcomm": -12.168475766929987, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86502942650776, + "entry_time": "2023-05-02T00:00:00", + "exit_price": 92.82867955654159, + "exit_time": "2023-05-03T00:00:00", + "gross_pnl": -3.6349869966173287, + "pnl": -3.6349869966173287, + "pnlcomm": -3.6349869966173287, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06669061925808, + "entry_time": "2023-05-05T00:00:00", + "exit_price": 93.05805100493505, + "exit_time": "2023-05-06T00:00:00", + "gross_pnl": -0.8639614323030287, + "pnl": -0.8639614323030287, + "pnlcomm": -0.8639614323030287, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19478081630376, + "entry_time": "2023-05-08T00:00:00", + "exit_price": 92.4726753044577, + "exit_time": "2023-05-09T00:00:00", + "gross_pnl": -72.21055118460669, + "pnl": -72.21055118460669, + "pnlcomm": -72.21055118460669, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8774192059464, + "entry_time": "2023-05-11T00:00:00", + "exit_price": 93.47630925649874, + "exit_time": "2023-05-12T00:00:00", + "gross_pnl": 159.88900505523418, + "pnl": 159.88900505523418, + "pnlcomm": 159.88900505523418, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67940992744533, + "entry_time": "2023-05-14T00:00:00", + "exit_price": 93.83387030747774, + "exit_time": "2023-05-15T00:00:00", + "gross_pnl": 115.4460380032404, + "pnl": 115.4460380032404, + "pnlcomm": 115.4460380032404, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77541066961662, + "entry_time": "2023-05-17T00:00:00", + "exit_price": 93.21806909335821, + "exit_time": "2023-05-18T00:00:00", + "gross_pnl": 44.26584237415909, + "pnl": 44.26584237415909, + "pnlcomm": 44.26584237415909, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2116719393634, + "entry_time": "2023-05-20T00:00:00", + "exit_price": 93.63189068076446, + "exit_time": "2023-05-21T00:00:00", + "gross_pnl": 42.02187414010581, + "pnl": 42.02187414010581, + "pnlcomm": 42.02187414010581, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.31676028980675, + "entry_time": "2023-05-23T00:00:00", + "exit_price": 93.96917376263126, + "exit_time": "2023-05-24T00:00:00", + "gross_pnl": 65.24134728245059, + "pnl": 65.24134728245059, + "pnlcomm": 65.24134728245059, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.3332407570871, + "entry_time": "2023-05-26T00:00:00", + "exit_price": 94.63597205774145, + "exit_time": "2023-05-27T00:00:00", + "gross_pnl": 30.273130065435794, + "pnl": 30.273130065435794, + "pnlcomm": 30.273130065435794, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00130198273088, + "entry_time": "2023-05-29T00:00:00", + "exit_price": 94.05926832590498, + "exit_time": "2023-05-30T00:00:00", + "gross_pnl": 5.79663431741011, + "pnl": 5.79663431741011, + "pnlcomm": 5.79663431741011, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76190103073331, + "entry_time": "2023-06-01T00:00:00", + "exit_price": 94.24963627943364, + "exit_time": "2023-06-02T00:00:00", + "gross_pnl": 148.7735248700332, + "pnl": 148.7735248700332, + "pnlcomm": 148.7735248700332, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.73904226779082, + "entry_time": "2023-06-04T00:00:00", + "exit_price": 94.53198582108524, + "exit_time": "2023-06-05T00:00:00", + "gross_pnl": -20.705644670557888, + "pnl": -20.705644670557888, + "pnlcomm": -20.705644670557888, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29391446442064, + "entry_time": "2023-06-07T00:00:00", + "exit_price": 94.60323551607766, + "exit_time": "2023-06-08T00:00:00", + "gross_pnl": 30.93210516570224, + "pnl": 30.93210516570224, + "pnlcomm": 30.93210516570224, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.17535379161295, + "entry_time": "2023-06-10T00:00:00", + "exit_price": 94.95745054254392, + "exit_time": "2023-06-11T00:00:00", + "gross_pnl": 78.20967509309753, + "pnl": 78.20967509309753, + "pnlcomm": 78.20967509309753, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65432843266518, + "entry_time": "2023-06-13T00:00:00", + "exit_price": 94.33856790601594, + "exit_time": "2023-06-14T00:00:00", + "gross_pnl": -31.576052664924248, + "pnl": -31.576052664924248, + "pnlcomm": -31.576052664924248, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.36956060356385, + "entry_time": "2023-06-16T00:00:00", + "exit_price": 95.2507487739047, + "exit_time": "2023-06-17T00:00:00", + "gross_pnl": 88.11881703408488, + "pnl": 88.11881703408488, + "pnlcomm": 88.11881703408488, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9809276691774, + "entry_time": "2023-06-19T00:00:00", + "exit_price": 94.16338627425559, + "exit_time": "2023-06-20T00:00:00", + "gross_pnl": -81.75413949218182, + "pnl": -81.75413949218182, + "pnlcomm": -81.75413949218182, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95283790294347, + "entry_time": "2023-06-22T00:00:00", + "exit_price": 94.37363985497257, + "exit_time": "2023-06-23T00:00:00", + "gross_pnl": -57.919804797090535, + "pnl": -57.919804797090535, + "pnlcomm": -57.919804797090535, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.41734797456819, + "entry_time": "2023-06-25T00:00:00", + "exit_price": 94.46879833485087, + "exit_time": "2023-06-26T00:00:00", + "gross_pnl": 5.145036028268635, + "pnl": 5.145036028268635, + "pnlcomm": 5.145036028268635, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89779171625213, + "entry_time": "2023-06-28T00:00:00", + "exit_price": 94.56566914846213, + "exit_time": "2023-06-29T00:00:00", + "gross_pnl": 66.78774322100054, + "pnl": 66.78774322100054, + "pnlcomm": 66.78774322100054, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.12295330761386, + "entry_time": "2023-07-01T00:00:00", + "exit_price": 94.47229523041987, + "exit_time": "2023-07-02T00:00:00", + "gross_pnl": 34.934192280601906, + "pnl": 34.934192280601906, + "pnlcomm": 34.934192280601906, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01642931045994, + "entry_time": "2023-07-04T00:00:00", + "exit_price": 94.97899403484826, + "exit_time": "2023-07-05T00:00:00", + "gross_pnl": 96.25647243883151, + "pnl": 96.25647243883151, + "pnlcomm": 96.25647243883151, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29040521639678, + "entry_time": "2023-07-07T00:00:00", + "exit_price": 94.62958711128005, + "exit_time": "2023-07-08T00:00:00", + "gross_pnl": -66.08181051167321, + "pnl": -66.08181051167321, + "pnlcomm": -66.08181051167321, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94114223449, + "entry_time": "2023-07-10T00:00:00", + "exit_price": 94.38592136937638, + "exit_time": "2023-07-11T00:00:00", + "gross_pnl": -55.522086511362545, + "pnl": -55.522086511362545, + "pnlcomm": -55.522086511362545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.493222435549, + "entry_time": "2023-07-13T00:00:00", + "exit_price": 94.3474523152517, + "exit_time": "2023-07-14T00:00:00", + "gross_pnl": -14.577012029729985, + "pnl": -14.577012029729985, + "pnlcomm": -14.577012029729985, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.84805377401344, + "entry_time": "2023-07-16T00:00:00", + "exit_price": 93.24313248176318, + "exit_time": "2023-07-17T00:00:00", + "gross_pnl": -60.49212922502534, + "pnl": -60.49212922502534, + "pnlcomm": -60.49212922502534, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23716867785055, + "entry_time": "2023-07-19T00:00:00", + "exit_price": 94.3344550507391, + "exit_time": "2023-07-20T00:00:00", + "gross_pnl": 109.72863728885471, + "pnl": 109.72863728885471, + "pnlcomm": 109.72863728885471, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.25058017257405, + "entry_time": "2023-07-22T00:00:00", + "exit_price": 94.26148603669161, + "exit_time": "2023-07-23T00:00:00", + "gross_pnl": 1.0905864117560782, + "pnl": 1.0905864117560782, + "pnlcomm": 1.0905864117560782, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.78124566715695, + "entry_time": "2023-07-25T00:00:00", + "exit_price": 93.30392352510412, + "exit_time": "2023-07-26T00:00:00", + "gross_pnl": -147.73221420528273, + "pnl": -147.73221420528273, + "pnlcomm": -147.73221420528273, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05471403229689, + "entry_time": "2023-07-28T00:00:00", + "exit_price": 93.26889976544973, + "exit_time": "2023-07-29T00:00:00", + "gross_pnl": -78.58142668471544, + "pnl": -78.58142668471544, + "pnlcomm": -78.58142668471544, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.97149252732743, + "entry_time": "2023-07-31T00:00:00", + "exit_price": 92.49652862514738, + "exit_time": "2023-08-01T00:00:00", + "gross_pnl": -147.49639021800505, + "pnl": -147.49639021800505, + "pnlcomm": -147.49639021800505, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49761686858754, + "entry_time": "2023-08-03T00:00:00", + "exit_price": 93.96133483843103, + "exit_time": "2023-08-04T00:00:00", + "gross_pnl": 46.371796984348634, + "pnl": 46.371796984348634, + "pnlcomm": 46.371796984348634, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60373115569557, + "entry_time": "2023-08-06T00:00:00", + "exit_price": 94.43278823558683, + "exit_time": "2023-08-07T00:00:00", + "gross_pnl": 82.90570798912569, + "pnl": 82.90570798912569, + "pnlcomm": 82.90570798912569, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.216186422251, + "entry_time": "2023-08-09T00:00:00", + "exit_price": 93.22790913521419, + "exit_time": "2023-08-10T00:00:00", + "gross_pnl": -98.82772870368086, + "pnl": -98.82772870368086, + "pnlcomm": -98.82772870368086, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53921057943961, + "entry_time": "2023-08-12T00:00:00", + "exit_price": 93.3857390941578, + "exit_time": "2023-08-13T00:00:00", + "gross_pnl": -115.34714852818126, + "pnl": -115.34714852818126, + "pnlcomm": -115.34714852818126, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.03374081752091, + "entry_time": "2023-08-15T00:00:00", + "exit_price": 94.39823678210567, + "exit_time": "2023-08-16T00:00:00", + "gross_pnl": 136.4495964584762, + "pnl": 136.4495964584762, + "pnlcomm": 136.4495964584762, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08940418013472, + "entry_time": "2023-08-18T00:00:00", + "exit_price": 92.65920217896303, + "exit_time": "2023-08-19T00:00:00", + "gross_pnl": -143.02020011716934, + "pnl": -143.02020011716934, + "pnlcomm": -143.02020011716934, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39853539402684, + "entry_time": "2023-08-21T00:00:00", + "exit_price": 93.65048655775455, + "exit_time": "2023-08-22T00:00:00", + "gross_pnl": 25.195116372771054, + "pnl": 25.195116372771054, + "pnlcomm": 25.195116372771054, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.79873760769597, + "entry_time": "2023-08-24T00:00:00", + "exit_price": 93.68828575617101, + "exit_time": "2023-08-25T00:00:00", + "gross_pnl": 88.95481484750434, + "pnl": 88.95481484750434, + "pnlcomm": 88.95481484750434, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87251964203307, + "entry_time": "2023-08-27T00:00:00", + "exit_price": 93.5300255114375, + "exit_time": "2023-08-28T00:00:00", + "gross_pnl": -34.249413059556844, + "pnl": -34.249413059556844, + "pnlcomm": -34.249413059556844, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79086592344467, + "entry_time": "2023-08-30T00:00:00", + "exit_price": 92.57270931229704, + "exit_time": "2023-08-31T00:00:00", + "gross_pnl": -121.81566111476343, + "pnl": -121.81566111476343, + "pnlcomm": -121.81566111476343, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88859692291733, + "entry_time": "2023-09-02T00:00:00", + "exit_price": 93.80271734344691, + "exit_time": "2023-09-03T00:00:00", + "gross_pnl": -8.587957947041502, + "pnl": -8.587957947041502, + "pnlcomm": -8.587957947041502, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04073002158317, + "entry_time": "2023-09-05T00:00:00", + "exit_price": 94.46828834544144, + "exit_time": "2023-09-06T00:00:00", + "gross_pnl": 142.7558323858264, + "pnl": 142.7558323858264, + "pnlcomm": 142.7558323858264, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23692924750449, + "entry_time": "2023-09-08T00:00:00", + "exit_price": 94.43771978777833, + "exit_time": "2023-09-09T00:00:00", + "gross_pnl": 20.079054027384302, + "pnl": 20.079054027384302, + "pnlcomm": 20.079054027384302, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09517649815284, + "entry_time": "2023-09-11T00:00:00", + "exit_price": 94.97835234626153, + "exit_time": "2023-09-12T00:00:00", + "gross_pnl": 88.31758481086922, + "pnl": 88.31758481086922, + "pnlcomm": 88.31758481086922, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79133291522645, + "entry_time": "2023-09-14T00:00:00", + "exit_price": 94.02945945000636, + "exit_time": "2023-09-15T00:00:00", + "gross_pnl": -76.18734652200914, + "pnl": -76.18734652200914, + "pnlcomm": -76.18734652200914, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45235296621496, + "entry_time": "2023-09-17T00:00:00", + "exit_price": 94.63061442838703, + "exit_time": "2023-09-18T00:00:00", + "gross_pnl": 17.826146217207395, + "pnl": 17.826146217207395, + "pnlcomm": 17.826146217207395, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1729530420449, + "entry_time": "2023-09-20T00:00:00", + "exit_price": 93.58327824763774, + "exit_time": "2023-09-21T00:00:00", + "gross_pnl": -58.96747944071592, + "pnl": -58.96747944071592, + "pnlcomm": -58.96747944071592, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.536291527272, + "entry_time": "2023-09-23T00:00:00", + "exit_price": 93.30651397849368, + "exit_time": "2023-09-24T00:00:00", + "gross_pnl": -22.977754877831558, + "pnl": -22.977754877831558, + "pnlcomm": -22.977754877831558, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69842586893596, + "entry_time": "2023-09-26T00:00:00", + "exit_price": 93.16248763742118, + "exit_time": "2023-09-27T00:00:00", + "gross_pnl": -53.59382315147769, + "pnl": -53.59382315147769, + "pnlcomm": -53.59382315147769, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49605102540508, + "entry_time": "2023-09-29T00:00:00", + "exit_price": 94.25313944944546, + "exit_time": "2023-09-30T00:00:00", + "gross_pnl": 75.70884240403757, + "pnl": 75.70884240403757, + "pnlcomm": 75.70884240403757, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8421663218519, + "entry_time": "2023-10-02T00:00:00", + "exit_price": 92.97561455613513, + "exit_time": "2023-10-03T00:00:00", + "gross_pnl": 13.344823428322172, + "pnl": 13.344823428322172, + "pnlcomm": 13.344823428322172, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.01878568439928, + "entry_time": "2023-10-05T00:00:00", + "exit_price": 92.7731623418128, + "exit_time": "2023-10-06T00:00:00", + "gross_pnl": -24.562334258646956, + "pnl": -24.562334258646956, + "pnlcomm": -24.562334258646956, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3031103300392, + "entry_time": "2023-10-08T00:00:00", + "exit_price": 92.82895908639827, + "exit_time": "2023-10-09T00:00:00", + "gross_pnl": -47.41512436409323, + "pnl": -47.41512436409323, + "pnlcomm": -47.41512436409323, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.34460637435383, + "entry_time": "2023-10-11T00:00:00", + "exit_price": 92.32181327562058, + "exit_time": "2023-10-12T00:00:00", + "gross_pnl": -2.2793098733245643, + "pnl": -2.2793098733245643, + "pnlcomm": -2.2793098733245643, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.5260793564055, + "entry_time": "2023-10-14T00:00:00", + "exit_price": 92.2357948297768, + "exit_time": "2023-10-15T00:00:00", + "gross_pnl": 70.97154733712898, + "pnl": 70.97154733712898, + "pnlcomm": 70.97154733712898, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68746434551585, + "entry_time": "2023-10-17T00:00:00", + "exit_price": 91.58592175261929, + "exit_time": "2023-10-18T00:00:00", + "gross_pnl": -10.154259289656409, + "pnl": -10.154259289656409, + "pnlcomm": -10.154259289656409, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.46697080069039, + "entry_time": "2023-10-20T00:00:00", + "exit_price": 91.654447961068, + "exit_time": "2023-10-21T00:00:00", + "gross_pnl": 18.74771603776111, + "pnl": 18.74771603776111, + "pnlcomm": 18.74771603776111, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3612670935331, + "entry_time": "2023-10-23T00:00:00", + "exit_price": 91.01031054901587, + "exit_time": "2023-10-24T00:00:00", + "gross_pnl": -135.09565445172314, + "pnl": -135.09565445172314, + "pnlcomm": -135.09565445172314, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.37919304454006, + "entry_time": "2023-10-26T00:00:00", + "exit_price": 91.41169786096938, + "exit_time": "2023-10-27T00:00:00", + "gross_pnl": -96.74951835706764, + "pnl": -96.74951835706764, + "pnlcomm": -96.74951835706764, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.29381617044329, + "entry_time": "2023-10-29T00:00:00", + "exit_price": 90.70386499802939, + "exit_time": "2023-10-30T00:00:00", + "gross_pnl": -58.99511724139046, + "pnl": -58.99511724139046, + "pnlcomm": -58.99511724139046, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.42981226133158, + "entry_time": "2023-11-01T00:00:00", + "exit_price": 91.13311787546733, + "exit_time": "2023-11-02T00:00:00", + "gross_pnl": -29.669438586424235, + "pnl": -29.669438586424235, + "pnlcomm": -29.669438586424235, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.41698336938477, + "entry_time": "2023-11-04T00:00:00", + "exit_price": 91.39366908316057, + "exit_time": "2023-11-05T00:00:00", + "gross_pnl": -2.331428622419196, + "pnl": -2.331428622419196, + "pnlcomm": -2.331428622419196, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89356698837386, + "entry_time": "2023-11-07T00:00:00", + "exit_price": 91.60226357609555, + "exit_time": "2023-11-08T00:00:00", + "gross_pnl": -29.130341227831025, + "pnl": -29.130341227831025, + "pnlcomm": -29.130341227831025, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.41574363121151, + "entry_time": "2023-11-10T00:00:00", + "exit_price": 91.77307124686526, + "exit_time": "2023-11-11T00:00:00", + "gross_pnl": -64.26723843462554, + "pnl": -64.26723843462554, + "pnlcomm": -64.26723843462554, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32527272706531, + "entry_time": "2023-11-13T00:00:00", + "exit_price": 94.02617500869306, + "exit_time": "2023-11-14T00:00:00", + "gross_pnl": 170.0902281627748, + "pnl": 170.0902281627748, + "pnlcomm": 170.0902281627748, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9453398724905, + "entry_time": "2023-11-16T00:00:00", + "exit_price": 92.0185892574846, + "exit_time": "2023-11-17T00:00:00", + "gross_pnl": -92.67506150059006, + "pnl": -92.67506150059006, + "pnlcomm": -92.67506150059006, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.30963127571127, + "entry_time": "2023-11-19T00:00:00", + "exit_price": 92.25489319248068, + "exit_time": "2023-11-20T00:00:00", + "gross_pnl": -5.473808323058904, + "pnl": -5.473808323058904, + "pnlcomm": -5.473808323058904, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74391567498766, + "entry_time": "2023-11-22T00:00:00", + "exit_price": 93.20889480054281, + "exit_time": "2023-11-23T00:00:00", + "gross_pnl": 46.49791255551463, + "pnl": 46.49791255551463, + "pnlcomm": 46.49791255551463, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11263111652507, + "entry_time": "2023-11-25T00:00:00", + "exit_price": 93.10139698703692, + "exit_time": "2023-11-26T00:00:00", + "gross_pnl": -101.12341294881446, + "pnl": -101.12341294881446, + "pnlcomm": -101.12341294881446, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71015543952899, + "entry_time": "2023-11-28T00:00:00", + "exit_price": 92.47583632063913, + "exit_time": "2023-11-29T00:00:00", + "gross_pnl": -123.43191188898572, + "pnl": -123.43191188898572, + "pnlcomm": -123.43191188898572, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75986386635343, + "entry_time": "2023-12-01T00:00:00", + "exit_price": 94.27037620813209, + "exit_time": "2023-12-02T00:00:00", + "gross_pnl": 151.05123417786643, + "pnl": 151.05123417786643, + "pnlcomm": 151.05123417786643, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44774661355898, + "entry_time": "2023-12-04T00:00:00", + "exit_price": 93.99875783176927, + "exit_time": "2023-12-05T00:00:00", + "gross_pnl": 55.10112182102915, + "pnl": 55.10112182102915, + "pnlcomm": 55.10112182102915, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.58344310898, + "entry_time": "2023-12-07T00:00:00", + "exit_price": 94.14439051922356, + "exit_time": "2023-12-08T00:00:00", + "gross_pnl": 56.0947410243557, + "pnl": 56.0947410243557, + "pnlcomm": 56.0947410243557, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.54039819515215, + "entry_time": "2023-12-10T00:00:00", + "exit_price": 92.9236778577475, + "exit_time": "2023-12-11T00:00:00", + "gross_pnl": 38.32796625953563, + "pnl": 38.32796625953563, + "pnlcomm": 38.32796625953563, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05584126819757, + "entry_time": "2023-12-13T00:00:00", + "exit_price": 93.35601781114134, + "exit_time": "2023-12-14T00:00:00", + "gross_pnl": 130.0176542943774, + "pnl": 130.0176542943774, + "pnlcomm": 130.0176542943774, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81351651597147, + "entry_time": "2023-12-16T00:00:00", + "exit_price": 92.84701543791368, + "exit_time": "2023-12-17T00:00:00", + "gross_pnl": 3.349892194221127, + "pnl": 3.349892194221127, + "pnlcomm": 3.349892194221127, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.72332949821384, + "entry_time": "2023-12-19T00:00:00", + "exit_price": 92.51107159043487, + "exit_time": "2023-12-20T00:00:00", + "gross_pnl": -21.225790777897657, + "pnl": -21.225790777897657, + "pnlcomm": -21.225790777897657, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91369044105626, + "entry_time": "2023-12-22T00:00:00", + "exit_price": 93.12129104458734, + "exit_time": "2023-12-23T00:00:00", + "gross_pnl": -79.23993964689231, + "pnl": -79.23993964689231, + "pnlcomm": -79.23993964689231, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.14884637460801, + "entry_time": "2023-12-25T00:00:00", + "exit_price": 92.89417488264915, + "exit_time": "2023-12-26T00:00:00", + "gross_pnl": 74.53285080411405, + "pnl": 74.53285080411405, + "pnlcomm": 74.53285080411405, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12845985022912, + "entry_time": "2023-12-28T00:00:00", + "exit_price": 93.6597993052993, + "exit_time": "2023-12-29T00:00:00", + "gross_pnl": 53.133945507018154, + "pnl": 53.133945507018154, + "pnlcomm": 53.133945507018154, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96178874818798, + "entry_time": "2023-12-31T00:00:00", + "exit_price": 94.4511703887473, + "exit_time": "2024-01-01T00:00:00", + "gross_pnl": 48.938164055931566, + "pnl": 48.938164055931566, + "pnlcomm": 48.938164055931566, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.89229345893365, + "entry_time": "2024-01-03T00:00:00", + "exit_price": 94.58860576042824, + "exit_time": "2024-01-04T00:00:00", + "gross_pnl": -30.368769850541355, + "pnl": -30.368769850541355, + "pnlcomm": -30.368769850541355, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.04178116383622, + "entry_time": "2024-01-06T00:00:00", + "exit_price": 94.4578576609693, + "exit_time": "2024-01-07T00:00:00", + "gross_pnl": -58.39235028669236, + "pnl": -58.39235028669236, + "pnlcomm": -58.39235028669236, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.86053478009173, + "entry_time": "2024-01-09T00:00:00", + "exit_price": 94.76430023458303, + "exit_time": "2024-01-10T00:00:00", + "gross_pnl": -9.623454550869326, + "pnl": -9.623454550869326, + "pnlcomm": -9.623454550869326, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8053175522895, + "entry_time": "2024-01-12T00:00:00", + "exit_price": 94.40836408730765, + "exit_time": "2024-01-13T00:00:00", + "gross_pnl": -39.69534649818485, + "pnl": -39.69534649818485, + "pnlcomm": -39.69534649818485, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.85612524977265, + "entry_time": "2024-01-15T00:00:00", + "exit_price": 94.40863693697362, + "exit_time": "2024-01-16T00:00:00", + "gross_pnl": -44.74883127990239, + "pnl": -44.74883127990239, + "pnlcomm": -44.74883127990239, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.09196518919535, + "entry_time": "2024-01-18T00:00:00", + "exit_price": 94.91994528712154, + "exit_time": "2024-01-19T00:00:00", + "gross_pnl": -17.201990207381357, + "pnl": -17.201990207381357, + "pnlcomm": -17.201990207381357, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.45747729845408, + "entry_time": "2024-01-21T00:00:00", + "exit_price": 95.40486331313025, + "exit_time": "2024-01-22T00:00:00", + "gross_pnl": -5.261398532383055, + "pnl": -5.261398532383055, + "pnlcomm": -5.261398532383055, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8856295626394, + "entry_time": "2024-01-24T00:00:00", + "exit_price": 95.41673292493975, + "exit_time": "2024-01-25T00:00:00", + "gross_pnl": 53.11033623003567, + "pnl": 53.11033623003567, + "pnlcomm": 53.11033623003567, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.30115153676562, + "entry_time": "2024-01-27T00:00:00", + "exit_price": 94.50993042362319, + "exit_time": "2024-01-28T00:00:00", + "gross_pnl": -79.12211131424272, + "pnl": -79.12211131424272, + "pnlcomm": -79.12211131424272, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8443544450889, + "entry_time": "2024-01-30T00:00:00", + "exit_price": 94.58646684173618, + "exit_time": "2024-01-31T00:00:00", + "gross_pnl": -25.788760335271377, + "pnl": -25.788760335271377, + "pnlcomm": -25.788760335271377, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.51863942815191, + "entry_time": "2024-02-02T00:00:00", + "exit_price": 95.02582579018504, + "exit_time": "2024-02-03T00:00:00", + "gross_pnl": -49.28136379668757, + "pnl": -49.28136379668757, + "pnlcomm": -49.28136379668757, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.64624335712315, + "entry_time": "2024-02-05T00:00:00", + "exit_price": 95.62478266594604, + "exit_time": "2024-02-06T00:00:00", + "gross_pnl": -2.1460691177111357, + "pnl": -2.1460691177111357, + "pnlcomm": -2.1460691177111357, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.97351592845854, + "entry_time": "2024-02-08T00:00:00", + "exit_price": 96.2565162152012, + "exit_time": "2024-02-09T00:00:00", + "gross_pnl": 128.3000286742663, + "pnl": 128.3000286742663, + "pnlcomm": 128.3000286742663, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.32379857764127, + "entry_time": "2024-02-11T00:00:00", + "exit_price": 93.96151236382953, + "exit_time": "2024-02-12T00:00:00", + "gross_pnl": -36.228621381174264, + "pnl": -36.228621381174264, + "pnlcomm": -36.228621381174264, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38409820559012, + "entry_time": "2024-02-14T00:00:00", + "exit_price": 94.76791246698865, + "exit_time": "2024-02-15T00:00:00", + "gross_pnl": 38.38142613985269, + "pnl": 38.38142613985269, + "pnlcomm": 38.38142613985269, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.15204268625024, + "entry_time": "2024-02-17T00:00:00", + "exit_price": 94.14536275879573, + "exit_time": "2024-02-18T00:00:00", + "gross_pnl": -100.66799274545133, + "pnl": -100.66799274545133, + "pnlcomm": -100.66799274545133, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92555424660308, + "entry_time": "2024-02-20T00:00:00", + "exit_price": 95.28378367357755, + "exit_time": "2024-02-21T00:00:00", + "gross_pnl": 35.82294269744608, + "pnl": 35.82294269744608, + "pnlcomm": 35.82294269744608, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6447277617356, + "entry_time": "2024-02-23T00:00:00", + "exit_price": 93.94359099606793, + "exit_time": "2024-02-24T00:00:00", + "gross_pnl": -70.11367656676697, + "pnl": -70.11367656676697, + "pnlcomm": -70.11367656676697, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6316942698782, + "entry_time": "2024-02-26T00:00:00", + "exit_price": 93.61709548381037, + "exit_time": "2024-02-27T00:00:00", + "gross_pnl": -101.45987860678218, + "pnl": -101.45987860678218, + "pnlcomm": -101.45987860678218, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99406223655019, + "entry_time": "2024-02-29T00:00:00", + "exit_price": 93.51586581649707, + "exit_time": "2024-03-01T00:00:00", + "gross_pnl": 52.180357994687654, + "pnl": 52.180357994687654, + "pnlcomm": 52.180357994687654, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88355978598187, + "entry_time": "2024-03-03T00:00:00", + "exit_price": 93.59210068726338, + "exit_time": "2024-03-04T00:00:00", + "gross_pnl": 70.85409012815092, + "pnl": 70.85409012815092, + "pnlcomm": 70.85409012815092, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.20766791171343, + "entry_time": "2024-03-06T00:00:00", + "exit_price": 93.03526629028748, + "exit_time": "2024-03-07T00:00:00", + "gross_pnl": -17.240162142594784, + "pnl": -17.240162142594784, + "pnlcomm": -17.240162142594784, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73917319444821, + "entry_time": "2024-03-09T00:00:00", + "exit_price": 93.21019311262798, + "exit_time": "2024-03-10T00:00:00", + "gross_pnl": -52.89800818202366, + "pnl": -52.89800818202366, + "pnlcomm": -52.89800818202366, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87224010683994, + "entry_time": "2024-03-12T00:00:00", + "exit_price": 93.42438731231145, + "exit_time": "2024-03-13T00:00:00", + "gross_pnl": -44.78527945284867, + "pnl": -44.78527945284867, + "pnlcomm": -44.78527945284867, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32218202085551, + "entry_time": "2024-03-15T00:00:00", + "exit_price": 92.84840341954816, + "exit_time": "2024-03-16T00:00:00", + "gross_pnl": -47.37786013073446, + "pnl": -47.37786013073446, + "pnlcomm": -47.37786013073446, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74542752078266, + "entry_time": "2024-03-18T00:00:00", + "exit_price": 93.97099698374726, + "exit_time": "2024-03-19T00:00:00", + "gross_pnl": 22.556946296460012, + "pnl": 22.556946296460012, + "pnlcomm": 22.556946296460012, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5673298293271, + "entry_time": "2024-03-21T00:00:00", + "exit_price": 90.9938401219299, + "exit_time": "2024-03-22T00:00:00", + "gross_pnl": -157.34897073971865, + "pnl": -157.34897073971865, + "pnlcomm": -157.34897073971865, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89305134977978, + "entry_time": "2024-03-24T00:00:00", + "exit_price": 92.62217998545916, + "exit_time": "2024-03-25T00:00:00", + "gross_pnl": -27.087136432062664, + "pnl": -27.087136432062664, + "pnlcomm": -27.087136432062664, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36509094658045, + "entry_time": "2024-03-27T00:00:00", + "exit_price": 92.88634389481254, + "exit_time": "2024-03-28T00:00:00", + "gross_pnl": 52.12529482320889, + "pnl": 52.12529482320889, + "pnlcomm": 52.12529482320889, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09706919037085, + "entry_time": "2024-03-30T00:00:00", + "exit_price": 92.26411816919232, + "exit_time": "2024-03-31T00:00:00", + "gross_pnl": -83.29510211785305, + "pnl": -83.29510211785305, + "pnlcomm": -83.29510211785305, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87466770876311, + "entry_time": "2024-04-02T00:00:00", + "exit_price": 92.60479889553623, + "exit_time": "2024-04-03T00:00:00", + "gross_pnl": -26.98688132268785, + "pnl": -26.98688132268785, + "pnlcomm": -26.98688132268785, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20308651861096, + "entry_time": "2024-04-05T00:00:00", + "exit_price": 92.03254850546956, + "exit_time": "2024-04-06T00:00:00", + "gross_pnl": -17.053801314139605, + "pnl": -17.053801314139605, + "pnlcomm": -17.053801314139605, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.38853458659054, + "entry_time": "2024-04-08T00:00:00", + "exit_price": 92.15112623454131, + "exit_time": "2024-04-09T00:00:00", + "gross_pnl": -23.740835204922917, + "pnl": -23.740835204922917, + "pnlcomm": -23.740835204922917, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96842409215192, + "entry_time": "2024-04-11T00:00:00", + "exit_price": 91.88812859002927, + "exit_time": "2024-04-12T00:00:00", + "gross_pnl": -8.029550212265235, + "pnl": -8.029550212265235, + "pnlcomm": -8.029550212265235, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24664780939709, + "entry_time": "2024-04-14T00:00:00", + "exit_price": 92.55850895917358, + "exit_time": "2024-04-15T00:00:00", + "gross_pnl": 31.186114977649027, + "pnl": 31.186114977649027, + "pnlcomm": 31.186114977649027, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87161322114831, + "entry_time": "2024-04-17T00:00:00", + "exit_price": 92.00535793552656, + "exit_time": "2024-04-18T00:00:00", + "gross_pnl": -86.62552856217474, + "pnl": -86.62552856217474, + "pnlcomm": -86.62552856217474, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.44802861400582, + "entry_time": "2024-04-20T00:00:00", + "exit_price": 93.06090359266081, + "exit_time": "2024-04-21T00:00:00", + "gross_pnl": 61.28749786549861, + "pnl": 61.28749786549861, + "pnlcomm": 61.28749786549861, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86729712174954, + "entry_time": "2024-04-23T00:00:00", + "exit_price": 91.52050959132679, + "exit_time": "2024-04-24T00:00:00", + "gross_pnl": -234.6787530422759, + "pnl": -234.6787530422759, + "pnlcomm": -234.6787530422759, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.61545833641875, + "entry_time": "2024-04-26T00:00:00", + "exit_price": 93.11576558511285, + "exit_time": "2024-04-27T00:00:00", + "gross_pnl": 50.03072486940994, + "pnl": 50.03072486940994, + "pnlcomm": 50.03072486940994, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.83965947403613, + "entry_time": "2024-04-29T00:00:00", + "exit_price": 92.12256163749144, + "exit_time": "2024-04-30T00:00:00", + "gross_pnl": -71.70978365446814, + "pnl": -71.70978365446814, + "pnlcomm": -71.70978365446814, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01797419460767, + "entry_time": "2024-05-02T00:00:00", + "exit_price": 93.19504665832812, + "exit_time": "2024-05-03T00:00:00", + "gross_pnl": 117.70724637204495, + "pnl": 117.70724637204495, + "pnlcomm": 117.70724637204495, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.52501223027797, + "entry_time": "2024-05-05T00:00:00", + "exit_price": 93.70543373709387, + "exit_time": "2024-05-06T00:00:00", + "gross_pnl": -81.95784931840961, + "pnl": -81.95784931840961, + "pnlcomm": -81.95784931840961, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.76145907090127, + "entry_time": "2024-05-08T00:00:00", + "exit_price": 93.99231970762736, + "exit_time": "2024-05-09T00:00:00", + "gross_pnl": 23.086063672609214, + "pnl": 23.086063672609214, + "pnlcomm": 23.086063672609214, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.72601264375818, + "entry_time": "2024-05-11T00:00:00", + "exit_price": 94.17294252688178, + "exit_time": "2024-05-12T00:00:00", + "gross_pnl": 144.69298831236017, + "pnl": 144.69298831236017, + "pnlcomm": 144.69298831236017, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66991995260973, + "entry_time": "2024-05-14T00:00:00", + "exit_price": 93.29227941579406, + "exit_time": "2024-05-15T00:00:00", + "gross_pnl": -37.76405368156759, + "pnl": -37.76405368156759, + "pnlcomm": -37.76405368156759, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05260425345361, + "entry_time": "2024-05-17T00:00:00", + "exit_price": 93.08641894302396, + "exit_time": "2024-05-18T00:00:00", + "gross_pnl": 3.3814689570348833, + "pnl": 3.3814689570348833, + "pnlcomm": 3.3814689570348833, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89786622090341, + "entry_time": "2024-05-20T00:00:00", + "exit_price": 93.19281076082636, + "exit_time": "2024-05-21T00:00:00", + "gross_pnl": 29.494453992295178, + "pnl": 29.494453992295178, + "pnlcomm": 29.494453992295178, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00268172437694, + "entry_time": "2024-05-23T00:00:00", + "exit_price": 93.8031782169886, + "exit_time": "2024-05-24T00:00:00", + "gross_pnl": 80.04964926116571, + "pnl": 80.04964926116571, + "pnlcomm": 80.04964926116571, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30303744020942, + "entry_time": "2024-05-26T00:00:00", + "exit_price": 93.96047444085842, + "exit_time": "2024-05-27T00:00:00", + "gross_pnl": -34.25629993510029, + "pnl": -34.25629993510029, + "pnlcomm": -34.25629993510029, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53102238294964, + "entry_time": "2024-05-29T00:00:00", + "exit_price": 93.55135190498416, + "exit_time": "2024-05-30T00:00:00", + "gross_pnl": 2.0329522034515435, + "pnl": 2.0329522034515435, + "pnlcomm": 2.0329522034515435, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73320965755093, + "entry_time": "2024-06-01T00:00:00", + "exit_price": 93.83108861382613, + "exit_time": "2024-06-02T00:00:00", + "gross_pnl": 9.78789562751956, + "pnl": 9.78789562751956, + "pnlcomm": 9.78789562751956, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66116571648418, + "entry_time": "2024-06-04T00:00:00", + "exit_price": 93.37760682748707, + "exit_time": "2024-06-05T00:00:00", + "gross_pnl": 71.64411110028936, + "pnl": 71.64411110028936, + "pnlcomm": 71.64411110028936, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73832896665387, + "entry_time": "2024-06-07T00:00:00", + "exit_price": 93.55125645985115, + "exit_time": "2024-06-08T00:00:00", + "gross_pnl": -18.707250680272125, + "pnl": -18.707250680272125, + "pnlcomm": -18.707250680272125, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05801072220544, + "entry_time": "2024-06-10T00:00:00", + "exit_price": 93.19615016955767, + "exit_time": "2024-06-11T00:00:00", + "gross_pnl": -86.18605526477694, + "pnl": -86.18605526477694, + "pnlcomm": -86.18605526477694, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71612053106102, + "entry_time": "2024-06-13T00:00:00", + "exit_price": 92.35363412291727, + "exit_time": "2024-06-14T00:00:00", + "gross_pnl": -36.24864081437522, + "pnl": -36.24864081437522, + "pnlcomm": -36.24864081437522, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89683728827593, + "entry_time": "2024-06-16T00:00:00", + "exit_price": 93.45394449656699, + "exit_time": "2024-06-17T00:00:00", + "gross_pnl": 55.71072082910575, + "pnl": 55.71072082910575, + "pnlcomm": 55.71072082910575, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64711251538864, + "entry_time": "2024-06-19T00:00:00", + "exit_price": 94.20425342905766, + "exit_time": "2024-06-20T00:00:00", + "gross_pnl": 55.71409136690164, + "pnl": 55.71409136690164, + "pnlcomm": 55.71409136690164, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27286775878677, + "entry_time": "2024-06-22T00:00:00", + "exit_price": 93.11098684044114, + "exit_time": "2024-06-23T00:00:00", + "gross_pnl": -16.188091834563068, + "pnl": -16.188091834563068, + "pnlcomm": -16.188091834563068, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82344576152076, + "entry_time": "2024-06-25T00:00:00", + "exit_price": 93.85991046136218, + "exit_time": "2024-06-26T00:00:00", + "gross_pnl": 3.6464699841417314, + "pnl": 3.6464699841417314, + "pnlcomm": 3.6464699841417314, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76944869834962, + "entry_time": "2024-06-28T00:00:00", + "exit_price": 94.49443525385506, + "exit_time": "2024-06-29T00:00:00", + "gross_pnl": 172.49865555054384, + "pnl": 172.49865555054384, + "pnlcomm": 172.49865555054384, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26714007172913, + "entry_time": "2024-07-01T00:00:00", + "exit_price": 93.55312747617486, + "exit_time": "2024-07-02T00:00:00", + "gross_pnl": -71.40125955542658, + "pnl": -71.40125955542658, + "pnlcomm": -71.40125955542658, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21338289364272, + "entry_time": "2024-07-04T00:00:00", + "exit_price": 93.50082066300278, + "exit_time": "2024-07-05T00:00:00", + "gross_pnl": -71.25622306399322, + "pnl": -71.25622306399322, + "pnlcomm": -71.25622306399322, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2831851440446, + "entry_time": "2024-07-07T00:00:00", + "exit_price": 92.64838687037759, + "exit_time": "2024-07-08T00:00:00", + "gross_pnl": -63.47982736670019, + "pnl": -63.47982736670019, + "pnlcomm": -63.47982736670019, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7216517557643, + "entry_time": "2024-07-10T00:00:00", + "exit_price": 92.97199380174195, + "exit_time": "2024-07-11T00:00:00", + "gross_pnl": -74.96579540223536, + "pnl": -74.96579540223536, + "pnlcomm": -74.96579540223536, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55110234448432, + "entry_time": "2024-07-13T00:00:00", + "exit_price": 92.47254018419862, + "exit_time": "2024-07-14T00:00:00", + "gross_pnl": -107.85621602856992, + "pnl": -107.85621602856992, + "pnlcomm": -107.85621602856992, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.35333984916059, + "entry_time": "2024-07-16T00:00:00", + "exit_price": 92.55290357280875, + "exit_time": "2024-07-17T00:00:00", + "gross_pnl": 19.956372364815422, + "pnl": 19.956372364815422, + "pnlcomm": 19.956372364815422, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.92761668682888, + "entry_time": "2024-07-19T00:00:00", + "exit_price": 92.52405415324874, + "exit_time": "2024-07-20T00:00:00", + "gross_pnl": 59.64374664198573, + "pnl": 59.64374664198573, + "pnlcomm": 59.64374664198573, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01759216619796, + "entry_time": "2024-07-22T00:00:00", + "exit_price": 91.9301791723341, + "exit_time": "2024-07-23T00:00:00", + "gross_pnl": -8.741299386385037, + "pnl": -8.741299386385037, + "pnlcomm": -8.741299386385037, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.98789247555584, + "entry_time": "2024-07-25T00:00:00", + "exit_price": 92.13492749804534, + "exit_time": "2024-07-26T00:00:00", + "gross_pnl": 14.703502248950429, + "pnl": 14.703502248950429, + "pnlcomm": 14.703502248950429, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.88900920001714, + "entry_time": "2024-07-28T00:00:00", + "exit_price": 91.63316803265334, + "exit_time": "2024-07-29T00:00:00", + "gross_pnl": -25.58411673637977, + "pnl": -25.58411673637977, + "pnlcomm": -25.58411673637977, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.85577813730865, + "entry_time": "2024-07-31T00:00:00", + "exit_price": 92.25060393364089, + "exit_time": "2024-08-01T00:00:00", + "gross_pnl": 39.48257963322419, + "pnl": 39.48257963322419, + "pnlcomm": 39.48257963322419, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37992029678232, + "entry_time": "2024-08-03T00:00:00", + "exit_price": 91.2161626045396, + "exit_time": "2024-08-04T00:00:00", + "gross_pnl": -16.375769224271153, + "pnl": -16.375769224271153, + "pnlcomm": -16.375769224271153, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.94097148564506, + "entry_time": "2024-08-06T00:00:00", + "exit_price": 91.61411385344917, + "exit_time": "2024-08-07T00:00:00", + "gross_pnl": -32.6857632195896, + "pnl": -32.6857632195896, + "pnlcomm": -32.6857632195896, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.26633312852945, + "entry_time": "2024-08-09T00:00:00", + "exit_price": 92.57486927906898, + "exit_time": "2024-08-10T00:00:00", + "gross_pnl": 30.85361505395241, + "pnl": 30.85361505395241, + "pnlcomm": 30.85361505395241, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25460128509323, + "entry_time": "2024-08-12T00:00:00", + "exit_price": 92.93806274853755, + "exit_time": "2024-08-13T00:00:00", + "gross_pnl": -31.653853655568298, + "pnl": -31.653853655568298, + "pnlcomm": -31.653853655568298, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88821464003595, + "entry_time": "2024-08-15T00:00:00", + "exit_price": 92.53437593350753, + "exit_time": "2024-08-16T00:00:00", + "gross_pnl": -35.38387065284212, + "pnl": -35.38387065284212, + "pnlcomm": -35.38387065284212, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.55582558991509, + "entry_time": "2024-08-18T00:00:00", + "exit_price": 92.57746904834741, + "exit_time": "2024-08-19T00:00:00", + "gross_pnl": 2.1643458432322404, + "pnl": 2.1643458432322404, + "pnlcomm": 2.1643458432322404, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35186779566517, + "entry_time": "2024-08-21T00:00:00", + "exit_price": 93.8222066824917, + "exit_time": "2024-08-22T00:00:00", + "gross_pnl": 47.0338886826525, + "pnl": 47.0338886826525, + "pnlcomm": 47.0338886826525, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33239215677628, + "entry_time": "2024-08-24T00:00:00", + "exit_price": 92.65684927729922, + "exit_time": "2024-08-25T00:00:00", + "gross_pnl": -67.55428794770637, + "pnl": -67.55428794770637, + "pnlcomm": -67.55428794770637, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07995330778445, + "entry_time": "2024-08-27T00:00:00", + "exit_price": 93.14274907856505, + "exit_time": "2024-08-28T00:00:00", + "gross_pnl": 6.279577078059617, + "pnl": 6.279577078059617, + "pnlcomm": 6.279577078059617, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.31638915313648, + "entry_time": "2024-08-30T00:00:00", + "exit_price": 92.80125655346451, + "exit_time": "2024-08-31T00:00:00", + "gross_pnl": -151.5132599671972, + "pnl": -151.5132599671972, + "pnlcomm": -151.5132599671972, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86908900365832, + "entry_time": "2024-09-02T00:00:00", + "exit_price": 92.43258549076677, + "exit_time": "2024-09-03T00:00:00", + "gross_pnl": -43.6503512891548, + "pnl": -43.6503512891548, + "pnlcomm": -43.6503512891548, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7418385386059, + "entry_time": "2024-09-05T00:00:00", + "exit_price": 93.04661736537737, + "exit_time": "2024-09-06T00:00:00", + "gross_pnl": 30.477882677146795, + "pnl": 30.477882677146795, + "pnlcomm": 30.477882677146795, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.18409149189988, + "entry_time": "2024-09-08T00:00:00", + "exit_price": 92.27288236124933, + "exit_time": "2024-09-09T00:00:00", + "gross_pnl": 108.87908693494524, + "pnl": 108.87908693494524, + "pnlcomm": 108.87908693494524, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66757472286285, + "entry_time": "2024-09-11T00:00:00", + "exit_price": 91.66108329653197, + "exit_time": "2024-09-12T00:00:00", + "gross_pnl": -100.64914263308822, + "pnl": -100.64914263308822, + "pnlcomm": -100.64914263308822, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0113429588981, + "entry_time": "2024-09-14T00:00:00", + "exit_price": 92.01542580767834, + "exit_time": "2024-09-15T00:00:00", + "gross_pnl": 100.40828487802429, + "pnl": 100.40828487802429, + "pnlcomm": 100.40828487802429, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87145951112797, + "entry_time": "2024-09-17T00:00:00", + "exit_price": 91.58043482842866, + "exit_time": "2024-09-18T00:00:00", + "gross_pnl": 70.89753173006983, + "pnl": 70.89753173006983, + "pnlcomm": 70.89753173006983, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28456359684716, + "entry_time": "2024-09-20T00:00:00", + "exit_price": 91.42689177563531, + "exit_time": "2024-09-21T00:00:00", + "gross_pnl": 114.23281787881479, + "pnl": 114.23281787881479, + "pnlcomm": 114.23281787881479, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.10394740945229, + "entry_time": "2024-09-23T00:00:00", + "exit_price": 91.5888902773369, + "exit_time": "2024-09-24T00:00:00", + "gross_pnl": 148.49428678846124, + "pnl": 148.49428678846124, + "pnlcomm": 148.49428678846124, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05233318851361, + "entry_time": "2024-09-26T00:00:00", + "exit_price": 91.20379964517136, + "exit_time": "2024-09-27T00:00:00", + "gross_pnl": 15.146645665774372, + "pnl": 15.146645665774372, + "pnlcomm": 15.146645665774372, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93054848304011, + "entry_time": "2024-09-29T00:00:00", + "exit_price": 91.4470753529935, + "exit_time": "2024-09-30T00:00:00", + "gross_pnl": 51.652686995338115, + "pnl": 51.652686995338115, + "pnlcomm": 51.652686995338115, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55093725008568, + "entry_time": "2024-10-02T00:00:00", + "exit_price": 90.1771270171211, + "exit_time": "2024-10-03T00:00:00", + "gross_pnl": -137.3810232964587, + "pnl": -137.3810232964587, + "pnlcomm": -137.3810232964587, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.51951955539236, + "entry_time": "2024-10-05T00:00:00", + "exit_price": 90.35054775405881, + "exit_time": "2024-10-06T00:00:00", + "gross_pnl": -16.897180133355505, + "pnl": -16.897180133355505, + "pnlcomm": -16.897180133355505, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20200706252784, + "entry_time": "2024-10-08T00:00:00", + "exit_price": 91.07198645570766, + "exit_time": "2024-10-09T00:00:00", + "gross_pnl": -13.002060682018168, + "pnl": -13.002060682018168, + "pnlcomm": -13.002060682018168, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.13850851279538, + "entry_time": "2024-10-11T00:00:00", + "exit_price": 90.2608758916971, + "exit_time": "2024-10-12T00:00:00", + "gross_pnl": -87.76326210982859, + "pnl": -87.76326210982859, + "pnlcomm": -87.76326210982859, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93035699558081, + "entry_time": "2024-10-14T00:00:00", + "exit_price": 90.52157669994283, + "exit_time": "2024-10-15T00:00:00", + "gross_pnl": -40.87802956379818, + "pnl": -40.87802956379818, + "pnlcomm": -40.87802956379818, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49395863364698, + "entry_time": "2024-10-17T00:00:00", + "exit_price": 89.86316250689507, + "exit_time": "2024-10-18T00:00:00", + "gross_pnl": -63.079612675191754, + "pnl": -63.079612675191754, + "pnlcomm": -63.079612675191754, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.18352844268802, + "entry_time": "2024-10-20T00:00:00", + "exit_price": 88.93546496698286, + "exit_time": "2024-10-21T00:00:00", + "gross_pnl": -124.80634757051519, + "pnl": -124.80634757051519, + "pnlcomm": -124.80634757051519, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.8113095296125, + "entry_time": "2024-10-23T00:00:00", + "exit_price": 89.54696410392557, + "exit_time": "2024-10-24T00:00:00", + "gross_pnl": -26.43454256869262, + "pnl": -26.43454256869262, + "pnlcomm": -26.43454256869262, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.0801204143829, + "entry_time": "2024-10-26T00:00:00", + "exit_price": 89.23016998477505, + "exit_time": "2024-10-27T00:00:00", + "gross_pnl": 15.004957039214162, + "pnl": 15.004957039214162, + "pnlcomm": 15.004957039214162, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.84774198158706, + "entry_time": "2024-10-29T00:00:00", + "exit_price": 89.88558944915762, + "exit_time": "2024-10-30T00:00:00", + "gross_pnl": 3.784746757055757, + "pnl": 3.784746757055757, + "pnlcomm": 3.784746757055757, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.52000332438061, + "entry_time": "2024-11-01T00:00:00", + "exit_price": 88.86871340352687, + "exit_time": "2024-11-02T00:00:00", + "gross_pnl": 34.87100791462581, + "pnl": 34.87100791462581, + "pnlcomm": 34.87100791462581, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.58373696827199, + "entry_time": "2024-11-04T00:00:00", + "exit_price": 88.82208371804109, + "exit_time": "2024-11-05T00:00:00", + "gross_pnl": -76.1653250230907, + "pnl": -76.1653250230907, + "pnlcomm": -76.1653250230907, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32832910147937, + "entry_time": "2024-11-07T00:00:00", + "exit_price": 89.06529443738525, + "exit_time": "2024-11-08T00:00:00", + "gross_pnl": -26.303466409412124, + "pnl": -26.303466409412124, + "pnlcomm": -26.303466409412124, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45977666376373, + "entry_time": "2024-11-10T00:00:00", + "exit_price": 89.24686599676619, + "exit_time": "2024-11-11T00:00:00", + "gross_pnl": -121.29106669975442, + "pnl": -121.29106669975442, + "pnlcomm": -121.29106669975442, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.21043430906948, + "entry_time": "2024-11-13T00:00:00", + "exit_price": 88.4518561142622, + "exit_time": "2024-11-14T00:00:00", + "gross_pnl": -75.8578194807285, + "pnl": -75.8578194807285, + "pnlcomm": -75.8578194807285, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.80819601768098, + "entry_time": "2024-11-16T00:00:00", + "exit_price": 88.9586155221746, + "exit_time": "2024-11-17T00:00:00", + "gross_pnl": 15.041950449361252, + "pnl": 15.041950449361252, + "pnlcomm": 15.041950449361252, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.14254378792333, + "entry_time": "2024-11-19T00:00:00", + "exit_price": 88.6718045936633, + "exit_time": "2024-11-20T00:00:00", + "gross_pnl": -47.073919426003386, + "pnl": -47.073919426003386, + "pnlcomm": -47.073919426003386, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.3689677842857, + "entry_time": "2024-11-22T00:00:00", + "exit_price": 88.87620295869029, + "exit_time": "2024-11-23T00:00:00", + "gross_pnl": -49.276482559541535, + "pnl": -49.276482559541535, + "pnlcomm": -49.276482559541535, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.06997514477665, + "entry_time": "2024-11-25T00:00:00", + "exit_price": 88.79230048470953, + "exit_time": "2024-11-26T00:00:00", + "gross_pnl": -27.767466006712027, + "pnl": -27.767466006712027, + "pnlcomm": -27.767466006712027, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.69842658289039, + "entry_time": "2024-11-28T00:00:00", + "exit_price": 88.84366945841847, + "exit_time": "2024-11-29T00:00:00", + "gross_pnl": -85.47571244719165, + "pnl": -85.47571244719165, + "pnlcomm": -85.47571244719165, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.75521347785289, + "entry_time": "2024-12-01T00:00:00", + "exit_price": 89.14459057740478, + "exit_time": "2024-12-02T00:00:00", + "gross_pnl": -61.06229004481065, + "pnl": -61.06229004481065, + "pnlcomm": -61.06229004481065, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.78540826994568, + "entry_time": "2024-12-04T00:00:00", + "exit_price": 89.0389294134589, + "exit_time": "2024-12-05T00:00:00", + "gross_pnl": 25.35211435132254, + "pnl": 25.35211435132254, + "pnlcomm": 25.35211435132254, + "size": 100 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.11917253451473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.54841534502786, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.03201587878578, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.94550278474797, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.67183298908238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.86549713479145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.19160897741419, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.48697641782272, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.74505140134526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.43249701182592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36317339817481, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.3184784020995, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.59194698786014, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.21300773889088, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.93323693635863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.01041702546699, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.12882215455511, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82503838919212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.20974209562837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.28418162139361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.91262465479313, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.47079432451613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.41396612142576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.74208634353057, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.96112016066533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.14757933275934, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.33794797010773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.95774776632322, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.39809150990904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.29624163714647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.98044425919083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.71415014911958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.68703409584347, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.19660477578049, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.09913803201934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.13975001075532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.7525000464393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.67014960303162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.16172259245428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.99277550738104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.726000665382, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.27597137389321, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.96674656359579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01407453019127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.01883446140224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.33686580554885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.61379453469056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.44418682978016, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.1261570487614, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.90367229199478, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.48715448535594, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.53898885220806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.13695584567007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.74920846022493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.28346179234327, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.39446913633991, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.38048314487808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.86853857797571, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.78335766752544, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.08258048792489, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.04409706752067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.00584315640894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17754603801194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.91386750387461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.07278397148802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.84957817071898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.66685696016805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.29703959359377, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.16284479663989, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.59827392536462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.02427769637677, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.02034152325665, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.10227360972624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.55074957264794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.4752285310497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.78482968977629, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.64550269913406, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.75829920829567, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.28405624956508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.40750734980367, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.9736108084372, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.11719582995507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.4244273841596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.46803368609852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.65390080108091, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.55529329412784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.84475344760442, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.34547532849058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.83286932713185, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.1414110724743, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.70880723169135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.37107171120154, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17212988349165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.88968353827181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17974473578754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.64495810760246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86042757757674, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.42922022261914, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.67123710700702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.1262468099545, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.99803204217791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.0746490327229, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.68852164950059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.90683245619206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.69867095887889, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.58028409299915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.78930171959787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.44349309161046, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.63928948741085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.8801021064717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.88804895153031, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.9129584357738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.35911188288489, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.55107978610341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.24566283787111, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.50854335078685, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85972377687798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.94180161552265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.42256786175979, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39260868907034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.47598985042309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.2217481384577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43771261461686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.25556396259081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.27520136851216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.22895283520214, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84721164221584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.21690016032666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.98012439288168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42241300564716, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5234973647714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.84780174120549, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.78357735159078, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.5180376571157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.07885735340791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.46287786089891, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.7806750796624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.99007562374577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.3160405598432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.69515591162462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.9307950005457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.49497584845733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.05277773908539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.63017059410102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.95560584181007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.85704345214471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.34581983849665, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.55148937480453, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.83406196186097, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.25669377064881, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.51637945271536, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.57103396676897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.43830185841739, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.4155507445711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.92267680402585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.75883349843212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.974264479532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.70988332181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.21365266173218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.08294324004585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.11928874045202, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.31180164071337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.00054275724281, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.65255133629894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.96503242935937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.79138811772025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.47378044689604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.31284487928606, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.73200506980342, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.3363427106496, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.56611574901736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.13272204200155, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.89963627791985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.38755792776327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.35474381234252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.97868642263799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.11962753041762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.25728100943367, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.076645155786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.1361736846976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.95761891143941, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.38251520181134, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.58405172820402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.1825648349693, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.31778631274507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.92748490697555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.11485299409067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.46828746700024, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.7892083341232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.2850707768965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.61528686513479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.16045065160826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98923853245553, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.78083136801966, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98736762370623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.41242668783207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.7821059253462, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.01676230346942, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.90986422948514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.85698353324744, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.72982041802001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.60761748093444, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.0385605171193, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.09198940082088, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.21597248424331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.490691270523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.2706953210234, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.23704650718707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.30522444084696, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.82731858826378, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.91407429365688, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.5460351903365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.93028933684711, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0553633238757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.47484452500944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.10094020807114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.01428360585088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.38292648890776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.48513559668872, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.27497370614257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.14886606297294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.29611163730506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.23350982317787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.79948982072462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98472225444857, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.71079305814114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.3396263042363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.98172498582129, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.42795373397291, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.6321305493393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.76479352938595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.48958247666039, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.73111789636548, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.61885876679554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.85401562603096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.49175141105385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.84289871423181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.99377199128872, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.76186428614056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.48850513355184, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.12395315196963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.53863571252707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.6026762767146, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.09752132137899, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.49274636123849, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.82226372897985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.79148532437996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.11483711173116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.80033950220172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.63729064888537, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.11575917668634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.28032546622858, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.53344904132359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.29557459823668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.01730754421833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.07935604760307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.79620422510413, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.24797305894252, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.19373825703377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.40514794332339, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.55648566288775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.55716667120137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.91494018138198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.48501201892987, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.90008526748946, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.83721845974864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.26504549069784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.06840340797214, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.26053581327312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.42454996605802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.94825682250637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.05109746301979, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.1969266603545, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.27193710609464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.97039812035842, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.34802647272141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.07904244701469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.79316819026657, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.5721771606179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.6253449835299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.88599336671724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9167314813735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.23555143341264, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69172330670986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.40326355089037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.32320287324674, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.32022315669315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.22613575397045, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.08195298394907, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.5883765126535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6323490375275, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.0747399163529, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.55723413541229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.78282068603487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.66145085922012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.46346097050873, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.00404625454874, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.66092881844988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.49919123199935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.97621398907071, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.41257974165285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.05124864668421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.01899188310071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.2559389154428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.12609495739093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.25576346468043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.47050530514431, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72410136704386, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.19884636287922, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.86432033375576, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34050558738045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.10587138419956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.72930751574246, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2563942182136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59980860135867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.54277270362402, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92591784638046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.14258894906092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11423308566697, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.03147452036931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.97245173381131, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.49318704896336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68468709145579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32003795658395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26674166444458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26630934814936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.4153331981033, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.36350758058099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.16332285120929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34043899579565, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.74219820454567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.55413171456674, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.58180279933771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02408626223293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87657341045227, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.55590567361484, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.08074161986468, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.80457382221171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8131686939551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.25793142134573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.95253144170447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.14743781912107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8783564574023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.9764387193147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.94516537050167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89603764932446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.63800292429943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.24337208101042, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59556244009269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28446378378608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13025499622808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.23383791902404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3328854638381, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96067846320523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.94965457520627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.16625059748041, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.8269642033066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.81310669049036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2555442210953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45622372930102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.83947343135847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.43135259957857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.53295655650527, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78816229160894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.9413213129086, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.40648296911729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.30279435197399, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.65263067129818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.8239628759463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.7795218814571, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.36068460994301, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.47451059527033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.09791235411565, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64232209133355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.9960341944844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.86057544771678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03722443992689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02540027670304, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.23831571579666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61642884685872, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9587336040414, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78520963834742, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.12207131713245, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.030634236321, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2580641252632, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57471719502651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.16033087447512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64298714231596, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75555986268627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29534460790408, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8204301569652, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.34161824742394, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.61753779742976, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.15624068230731, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.25917455813928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5936848786624, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.98045633035186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.98797939638727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35827005631805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.69155799194061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68091309416992, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70456318827733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16469231313611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8799099382491, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11566093967609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.80161139315015, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.15377445359951, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.15715297991916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86962603101973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72926386277882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1579385275225, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74116822603294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.31971390482752, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.20782644697857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01885490875779, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42230012835577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.99288411883724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.082184046767, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.85101362331126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98564664788431, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86959357102904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20013868958425, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84924924581607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.31289310035527, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.30858201402589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.99373607498532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.18572768435918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.33439114940059, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.07429869254726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04790943044297, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.64069907229371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26235855896988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.50379403067527, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.43691170957882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.37005197510278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.27057437223934, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.09337235241868, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71128565229746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02883456195461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.80490335979458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9287597961482, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.17470692964342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.2493152678643, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60050033989026, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09469925407369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3111349289259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.18816369089684, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42938460793316, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.41602741852829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.42310978968692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50953693273829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33123427861662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.96020937715257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.53068640749544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5609164087555, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89910933295498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.4272707886787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.19572149206287, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68137345397398, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.48011498833463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.73481537380023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9817766831428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62422399002075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.25402747101043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78794113614683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.51565520344022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.81994141877884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.73569183010366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.89304084668578, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.94563028017612, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.70380536433252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.18321579529317, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75634960957339, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.99346542277752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07784715364147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82473368702337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80939097372557, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.56855092683492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.22637736311736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.04989016451177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06688407845617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11481000895263, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.27282277875311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.10549027383173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.02590143870165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.0111357952797, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.36789726372409, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.16759918928896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.02364437811006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64247835816664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.20232839714718, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.51418676739564, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.81320041849361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.27166607324205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2545983932022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97497228207648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.67780842750179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.45906966920411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76345480442126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.43197465037622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3600604543369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44350843545416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39757672508603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.85230151275863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.81407145534195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01128875382821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.67591197573066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.51279666702179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.98461279621962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.18776220832692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68365711276127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52965334263803, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.97018528191016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.1704075246973, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.4092834971355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.80397108470675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.7224658447326, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.15638220769824, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.66063113797075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.93674170823937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.02426166276656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2868521233569, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.06798590582005, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.35136606041436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.99746534424483, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.56303029535638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.0942536160811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.42070005109457, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.41089068186189, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.18677881527823, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43901544778934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.5260369404649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.01177208564718, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.36159823018748, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.8208251198108, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28071492977152, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9250036260453, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.6150063093046, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.61363931969464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.38004154259693, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.96467806287603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.70041523761671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.62074541364396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.95651159207543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05267669381955, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.69416855510607, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.8695133244266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.61012799594212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.05464751490084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.46681240023963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.63067407291008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.96046847840074, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56273021751427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.14638715063298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.75859326793318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.97823499949781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.15637756363428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.71453147899727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.00941330347686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.97249110306038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.44900384555615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.26380626108603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.9389490074607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91676356991597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.13685393625028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92025914672816, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.9636459548143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.9470309766908, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.23464868145118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.16095300836626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.86371979002092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1658806519524, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.80999909964301, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.3916052906719, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79830122498419, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.92464426243117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74084404129732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.77591195761288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.129082151163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.29443539538282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.49821093674116, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.52895961614624, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.50773769923417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.20586243304412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.1593251595947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.8652392547076, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.88148378297518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.54298539634833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.97268456538903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.62712854780935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.74146887774299, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.42853595632805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.84848168731004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.83668379255865, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.47241973433749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.89842730786603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.82455441317694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.16986826544031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.1811588929617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.09911654611165, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.55257557802233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.6008717295654, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.68671023186488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.96517472835333, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.05260562521785, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.08006582461334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.79432064186736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.41108821991375, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87347025830266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.20564533828777, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.30309517181773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1406611037728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.24392591685461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.10896639776044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43429707485602, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.99823744300166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.51160983247296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.15695774047701, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.25313076740179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.3503914171167, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.47393608345517, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.98751697992218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.0545116492653, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01799823084976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05081241841744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.31407916672543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.80885265421585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.15205975168703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.47241880815605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54172600484964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.8976774720573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58791087448299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.02271267015783, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.10459083951521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24414870008319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.69109127617371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.65306278042236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.39816620647916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1810606061523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.49470462633181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01504374556126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.67904663244455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.74908045175502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.28081352108578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.72430502818085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.91000509633356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0266388958905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06932306108122, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2669116718157, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.31911690207038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.01378736632232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.69057272581715, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86605080021333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.54829275642138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92761316198515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07281692163534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.2809228591007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.11130793179962, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.78210365621943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99114272050637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26603620619441, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.26895473010688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.88756691851471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90535085923925, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.86627784439669, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.27678234231546, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21120724189035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.62182381785365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.70089986040492, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98061841891752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.63730668221625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.21809213108293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62513446883317, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.0550792423482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71116560219859, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.70112878957045, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.22008595203475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.26583380518775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84031644841893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.76253265375746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.36921450181964, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38751561741323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.7594276079707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20505090808615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01993010545006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.25253006691226, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.9292129294191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.45831791808807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01874761761506, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.70179579177142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.45782648578765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.9654506293958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.69543160906309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.23626703373414, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.23730582460071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.58630669240723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.24411442253736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.80412345904836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.33266826608637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.08584208568091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.20511704388718, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73586252939168, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6229802242446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66558700926207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.74677062129318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.54017463980657, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.730138438308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.49572076787184, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.77203615539878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.91635203682458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.91294155802173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.85493736088272, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.07037492573126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.35918129576551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21752684184962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82182795562746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.91554181329224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2637454877203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42377971468683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.9956096009709, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.95024629295155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.02384747382928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.73848563922941, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78634727970504, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.46503843997183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.75198886376967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.39876122857235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.11567284541557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.77091533493147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3485194106044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.04122370969267, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97807111210727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.82297627909733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.88908258807695, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.02494822567454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52813633390632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.77607586946252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84906975105618, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10682536410768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60098332710814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16477240647922, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64464350405021, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.34853961981467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.90164291858915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.52920571661875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96718442791747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1449985691514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.09214526901171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08808617199072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.57735843418071, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.03374091329063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.67153521214688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90721494360177, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94800270723887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.77341143396697, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.16810608211969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1295561924666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6109897663897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09160273927316, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33166346007059, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53620789150742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21568894504843, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93343913761625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02299067534886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.18544500815403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.98907937476646, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.45348785433026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.02085687929099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84830391916218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.43699045607909, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.95759166912262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.47551491598016, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.66498305754212, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.36643618283398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.3496449568648, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06229907806569, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93784310790696, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96780942003683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88445131540618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.08186481058257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.20796655389181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9654081254928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49393791749024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05007592523164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.84518996211608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.32190345568543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32827178627502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26562867244172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9489490131078, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.54756230484855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.52695826109523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.16120912048845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.73109278013733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.12967158946792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66144197243285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35105870140517, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32497954050243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.404028525945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5596224194739, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06373732644884, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.82924854494932, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63616550173667, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.79933273190036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.95120755426662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.56403816854014, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35426808914588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35865607168631, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.90482034285156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9985787957225, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8768940380532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86502942650776, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82867955654159, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06669061925808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.05805100493505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.19478081630376, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.4726753044577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87741920594638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.47630925649874, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.67940992744533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83387030747774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.77541066961662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.21806909335821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2116719393634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.63189068076446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.31676028980675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96917376263126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.3332407570871, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.63597205774145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00130198273087, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05926832590498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.76190103073331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.24963627943364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.73904226779082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.53198582108524, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29391446442062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.60323551607766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.17535379161295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.95745054254392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.65432843266518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.33856790601594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.36956060356385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.2507487739047, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.98092766917739, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.16338627425559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.95283790294347, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.37363985497257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.41734797456819, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.46879833485087, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.89779171625212, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.56566914846213, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.12295330761387, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.47229523041987, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.01642931045993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.97899403484826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.29040521639678, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.62958711128005, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.94114223449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38592136937638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.493222435549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3474523152517, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.84805377401344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.24313248176318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.23716867785055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3344550507391, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.25058017257405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26148603669161, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.78124566715694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.30392352510412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.05471403229689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26889976544973, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.97149252732743, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.49652862514738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.49761686858754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96133483843103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60373115569557, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.43278823558683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.216186422251, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.22790913521419, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5392105794396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3857390941578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0337408175209, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.39823678210567, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08940418013472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.65920217896303, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.39853539402684, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.65048655775455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.79873760769597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.68828575617101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87251964203307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5300255114375, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.79086592344467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57270931229704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88859692291733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.80271734344691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04073002158317, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.46828834544144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.23692924750448, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.43771978777833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09517649815284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.97835234626153, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79133291522645, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02945945000636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.45235296621496, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.63061442838703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1729530420449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58327824763774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.53629152727201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.30651397849368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69842586893596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.16248763742118, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.49605102540508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.25313944944546, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8421663218519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97561455613513, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.01878568439928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7731623418128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.3031103300392, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82895908639827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.34460637435383, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.32181327562058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.52607935640549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2357948297768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.68746434551585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58592175261929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.4669708006904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.654447961068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3612670935331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01031054901587, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.37919304454006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.41169786096938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.29381617044329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.70386499802939, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.42981226133158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13311787546733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.41698336938475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.39366908316057, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.89356698837386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.60226357609555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.41574363121151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.77307124686526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.32527272706531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02617500869306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.94533987249052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0185892574846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.30963127571127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.25489319248068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74391567498765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.20889480054281, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11263111652507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.10139698703692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71015543952899, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.47583632063913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75986386635343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.27037620813209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.44774661355898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.99875783176927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.58344310898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.14439051922356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.54039819515216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.9236778577475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.05584126819757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.35601781114134, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.81351651597147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84701543791368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.72332949821384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.51107159043487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.91369044105626, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.12129104458734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.14884637460803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89417488264915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.12845985022912, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6597993052993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.96178874818798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.4511703887473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.89229345893365, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.58860576042824, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.04178116383622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.4578576609693, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.86053478009173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.76430023458303, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.8053175522895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.40836408730765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.85612524977265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.40863693697362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.09196518919534, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.91994528712154, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.4574772984541, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.40486331313025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.8856295626394, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.41673292493975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.3011515367656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.50993042362319, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.8443544450889, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.58646684173618, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.51863942815191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.02582579018504, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.64624335712315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.62478266594604, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.97351592845855, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.2565162152012, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.32379857764126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96151236382953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.38409820559012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.76791246698865, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.15204268625024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.14536275879573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.92555424660308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28378367357755, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6447277617356, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94359099606793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.63169426987818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61709548381037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99406223655019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.51586581649707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.88355978598187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.59210068726338, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.20766791171343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.03526629028748, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73917319444821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.21019311262798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87224010683995, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.42438731231145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32218202085551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84840341954816, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.74542752078266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.97099698374726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5673298293271, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.9938401219299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.89305134977978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.62217998545916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36509094658045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.88634389481254, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09706919037085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.26411816919232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.87466770876313, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60479889553623, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.20308651861096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.03254850546956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.38853458659054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15112623454131, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.96842409215192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.88812859002927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24664780939709, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.55850895917358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.87161322114831, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.00535793552656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.4480286140058, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06090359266081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86729712174954, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.52050959132679, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.61545833641877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11576558511285, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.83965947403613, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.12256163749144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01797419460767, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19504665832812, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.52501223027797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70543373709387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.76145907090128, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.99231970762736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.72601264375818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.17294252688178, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.66991995260973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29227941579406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.05260425345361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.08641894302396, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.89786622090341, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19281076082636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.00268172437694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8031782169886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.30303744020942, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96047444085842, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.53102238294964, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55135190498416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73320965755092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83108861382613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66116571648418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37760682748707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73832896665387, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55125645985115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.05801072220544, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19615016955767, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71612053106102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35363412291727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.89683728827593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.45394449656699, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.64711251538863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20425342905766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.27286775878677, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11098684044114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.82344576152076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.85991046136218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.76944869834962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.49443525385506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26714007172914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55312747617486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21338289364272, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.50082066300278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2831851440446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64838687037759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7216517557643, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97199380174195, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.55110234448432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.47254018419862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.35333984916058, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.55290357280875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.92761668682888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52405415324874, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01759216619796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9301791723341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.98789247555584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.13492749804534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.88900920001714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.63316803265334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.85577813730865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.25060393364089, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37992029678232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.2161626045396, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.94097148564505, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61411385344917, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.26633312852945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57486927906898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.25460128509323, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.93806274853755, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.88821464003595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53437593350753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5558255899151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57746904834741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35186779566517, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8222066824917, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.33239215677628, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.65684927729922, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07995330778445, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.14274907856505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.31638915313647, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.80125655346451, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86908900365832, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.43258549076677, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74183853860589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.04661736537737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.18409149189986, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.27288236124933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66757472286284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.66108329653197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.0113429588981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.01542580767834, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87145951112795, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58043482842866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.28456359684716, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.42689177563531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.10394740945229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.5888902773369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05233318851363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.20379964517136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.93054848304011, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.4470753529935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.55093725008568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1771270171211, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.51951955539236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.35054775405881, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.20200706252784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.07198645570766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.13850851279538, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.2608758916971, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.93035699558081, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.52157669994283, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.49395863364698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.86316250689507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.18352844268802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93546496698286, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.8113095296125, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.54696410392557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.08012041438292, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.23016998477505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.84774198158706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.88558944915762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.52000332438061, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.86871340352687, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.58373696827199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.82208371804109, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.32832910147938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.06529443738525, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.45977666376373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.24686599676619, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.21043430906948, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.4518561142622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.80819601768098, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.9586155221746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.14254378792333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.6718045936633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.3689677842857, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.87620295869029, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.06997514477666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.79230048470953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.69842658289039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.84366945841847, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.75521347785288, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.14459057740478, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.78540826994568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.0389294134589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-05T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.11917253451473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.54841534502786, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.03201587878578, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94550278474797, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.67183298908238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.86549713479145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.1916089774142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48697641782272, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.74505140134526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.4324970118259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36317339817481, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3184784020995, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.59194698786014, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21300773889088, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.93323693635863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.01041702546699, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.12882215455511, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82503838919212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20974209562837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.28418162139361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.91262465479312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.47079432451613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.41396612142576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.74208634353057, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.96112016066532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.14757933275934, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.33794797010775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.95774776632322, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.39809150990905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29624163714647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.98044425919083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.71415014911958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68703409584346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.19660477578049, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.09913803201934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13975001075532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7525000464393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67014960303162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.16172259245428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.99277550738105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.726000665382, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27597137389321, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.96674656359579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01407453019127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01883446140224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.33686580554885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.61379453469056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.44418682978015, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.1261570487614, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.90367229199477, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.48715448535594, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.53898885220806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.13695584567007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.74920846022492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.28346179234327, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.39446913633991, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.38048314487808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8685385779757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.78335766752544, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.08258048792487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.04409706752067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.00584315640894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17754603801194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.91386750387461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.07278397148802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.84957817071898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.66685696016805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.29703959359377, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.16284479663989, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.59827392536462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.02427769637677, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.02034152325665, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.10227360972624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.55074957264794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4752285310497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.78482968977629, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.64550269913406, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.75829920829567, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.28405624956507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.40750734980367, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.9736108084372, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.11719582995507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.42442738415961, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.46803368609852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.65390080108091, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.55529329412784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.84475344760442, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.34547532849058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.83286932713185, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.1414110724743, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.70880723169135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.37107171120152, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17212988349165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.88968353827183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17974473578754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.64495810760246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86042757757674, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.42922022261914, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67123710700702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.1262468099545, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99803204217791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.0746490327229, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68852164950059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.90683245619206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.6986709588789, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.58028409299915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.78930171959787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.44349309161048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.63928948741085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.8801021064717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.88804895153031, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9129584357738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.35911188288487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.55107978610341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.24566283787111, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.50854335078685, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85972377687798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.94180161552265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42256786175977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39260868907034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.47598985042309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.2217481384577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43771261461684, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.2555639625908, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27520136851216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.22895283520215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84721164221584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.21690016032666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.98012439288168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42241300564716, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.52349736477139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8478017412055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.78357735159078, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.5180376571157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.07885735340791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.46287786089891, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7806750796624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.99007562374577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3160405598432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.69515591162462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.9307950005457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.49497584845733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.05277773908537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.63017059410102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.95560584181007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.85704345214472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.34581983849665, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.55148937480453, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.83406196186097, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.25669377064882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.51637945271536, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.57103396676898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4383018584174, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4155507445711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.92267680402585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.75883349843212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.974264479532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.70988332181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21365266173217, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.08294324004584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11928874045203, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31180164071337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.00054275724283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.65255133629894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.96503242935937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79138811772026, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.47378044689603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31284487928606, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.73200506980342, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3363427106496, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.56611574901736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.13272204200155, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.89963627791985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.38755792776327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.35474381234252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.97868642263798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.11962753041762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25728100943367, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.076645155786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13617368469758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9576189114394, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.38251520181134, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.58405172820402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.18256483496931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.31778631274507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.92748490697555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11485299409067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.46828746700025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.7892083341232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.2850707768965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.61528686513479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16045065160826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98923853245553, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.78083136801966, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98736762370623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.41242668783207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7821059253462, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.01676230346942, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.90986422948514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85698353324744, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.72982041802001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60761748093444, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0385605171193, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.09198940082088, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21597248424331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.490691270523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.2706953210234, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.23704650718707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.30522444084696, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.82731858826376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.91407429365688, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.5460351903365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.93028933684711, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0553633238757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.47484452500944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.10094020807114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01428360585086, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.38292648890776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.48513559668872, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.27497370614257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.14886606297294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.29611163730506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.23350982317787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.79948982072462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98472225444857, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.71079305814114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3396263042363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98172498582129, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.42795373397291, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.6321305493393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.76479352938595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.48958247666037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.73111789636546, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.61885876679554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.85401562603096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.49175141105384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.84289871423181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.99377199128872, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.76186428614056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.48850513355184, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.12395315196963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.53863571252707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.6026762767146, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.09752132137899, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.4927463612385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.82226372897985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.79148532437995, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.11483711173116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.80033950220171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.63729064888537, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.11575917668634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.28032546622858, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.53344904132358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.29557459823668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.01730754421833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.07935604760307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.79620422510413, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.24797305894252, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.19373825703377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.40514794332339, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.55648566288775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.55716667120137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.91494018138197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.48501201892987, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.90008526748947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.83721845974864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.26504549069784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.06840340797214, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.26053581327312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.42454996605802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94825682250638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.05109746301977, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.1969266603545, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.27193710609464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.97039812035842, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.34802647272141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.07904244701469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.79316819026657, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.5721771606179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.6253449835299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.88599336671724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9167314813735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.23555143341264, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69172330670986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40326355089037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32320287324674, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32022315669313, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.22613575397045, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.08195298394907, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5883765126535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6323490375275, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0747399163529, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.55723413541229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.78282068603487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66145085922012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.46346097050873, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.00404625454874, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.66092881844989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.49919123199933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.97621398907071, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.41257974165285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.05124864668421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01899188310071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2559389154428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.12609495739092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25576346468043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4705053051443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72410136704386, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19884636287924, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86432033375576, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34050558738045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10587138419956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72930751574246, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25639421821361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59980860135867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.54277270362404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92591784638046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14258894906092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11423308566697, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03147452036931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9724517338113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49318704896338, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68468709145579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32003795658395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26674166444458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26630934814938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41533319810328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36350758058099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.16332285120929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34043899579565, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74219820454567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.55413171456674, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58180279933771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02408626223293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87657341045228, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.55590567361486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.08074161986468, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80457382221171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8131686939551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25793142134573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95253144170447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14743781912107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87835645740229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9764387193147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94516537050167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89603764932446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.63800292429943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.24337208101042, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59556244009269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28446378378608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13025499622808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.23383791902404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3328854638381, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96067846320523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94965457520625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.16625059748041, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8269642033066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81310669049034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25554422109529, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45622372930102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.83947343135847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43135259957857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.53295655650527, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78816229160893, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9413213129086, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40648296911729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.30279435197399, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65263067129817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8239628759463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.7795218814571, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36068460994301, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47451059527033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.09791235411565, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64232209133355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9960341944844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86057544771678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03722443992689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02540027670304, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23831571579666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61642884685872, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.95873360404138, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78520963834742, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12207131713245, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.030634236321, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2580641252632, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57471719502651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.16033087447514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64298714231596, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75555986268628, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29534460790408, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82043015696519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34161824742394, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61753779742976, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15624068230731, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25917455813928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5936848786624, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98045633035186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.98797939638727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35827005631805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69155799194061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68091309416992, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70456318827733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16469231313611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8799099382491, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11566093967609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80161139315015, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15377445359951, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15715297991916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86962603101975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72926386277882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1579385275225, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74116822603293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31971390482754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20782644697857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01885490875779, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42230012835576, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.99288411883725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.082184046767, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.85101362331126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98564664788431, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86959357102904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20013868958425, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84924924581607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31289310035527, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.30858201402589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.99373607498532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.18572768435916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33439114940057, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07429869254726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04790943044299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64069907229371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26235855896988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50379403067527, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43691170957882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37005197510278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.27057437223934, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.09337235241868, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71128565229746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02883456195461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80490335979457, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9287597961482, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.17470692964342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.24931526786432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60050033989026, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09469925407369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3111349289259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18816369089683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42938460793316, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41602741852829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42310978968692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50953693273829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3312342786166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96020937715257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53068640749544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56091640875552, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89910933295498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.42727078867868, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.19572149206287, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68137345397398, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.48011498833462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73481537380023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9817766831428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62422399002075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25402747101043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78794113614681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.51565520344022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81994141877884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73569183010366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.89304084668578, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94563028017612, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.70380536433252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.18321579529317, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75634960957339, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99346542277752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07784715364147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82473368702337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80939097372557, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.56855092683492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22637736311736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04989016451177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06688407845617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11481000895263, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27282277875311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.10549027383173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.02590143870165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0111357952797, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36789726372407, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.16759918928896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.02364437811006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64247835816664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20232839714717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.51418676739564, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81320041849362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.27166607324205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2545983932022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9749722820765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.67780842750179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45906966920411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76345480442126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43197465037622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3600604543369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44350843545416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39757672508603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.85230151275863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.81407145534195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01128875382821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.67591197573066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.51279666702179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.98461279621962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.18776220832692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68365711276127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52965334263803, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97018528191016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.1704075246973, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.4092834971355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80397108470676, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.7224658447326, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.15638220769824, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.66063113797075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.93674170823937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02426166276656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2868521233569, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06798590582007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.35136606041436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.99746534424483, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.56303029535638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09425361608109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.42070005109457, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41089068186189, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.18677881527823, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43901544778936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.5260369404649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01177208564717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36159823018748, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.82082511981079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2807149297715, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9250036260453, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.6150063093046, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.61363931969464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.38004154259691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.96467806287603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.70041523761671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.62074541364396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.95651159207542, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05267669381956, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.69416855510607, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.8695133244266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.61012799594214, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.05464751490085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.46681240023963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.63067407291008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.96046847840074, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56273021751427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.14638715063298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.75859326793318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97823499949781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1563775636343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.71453147899727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.00941330347686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97249110306038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.44900384555615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.26380626108603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.9389490074607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91676356991597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.13685393625028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92025914672814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.9636459548143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9470309766908, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23464868145118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.16095300836626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86371979002091, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1658806519524, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.80999909964301, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.3916052906719, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79830122498419, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.92464426243117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74084404129731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.77591195761288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.129082151163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.29443539538282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.49821093674116, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.52895961614624, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.50773769923417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.20586243304412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1593251595947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86523925470759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.88148378297518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.54298539634833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97268456538903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62712854780935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.74146887774299, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.42853595632805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.84848168731006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.83668379255865, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.47241973433749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.89842730786603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.82455441317694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.16986826544031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.1811588929617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.09911654611166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.55257557802233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60087172956541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.68671023186488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.96517472835335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.05260562521785, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.08006582461334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.79432064186736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.41108821991375, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87347025830266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20564533828775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.30309517181773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1406611037728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.24392591685461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.10896639776043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43429707485602, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.99823744300166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.51160983247296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.15695774047701, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.25313076740179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.3503914171167, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47393608345517, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.98751697992219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0545116492653, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01799823084976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05081241841745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.31407916672543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.80885265421585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.15205975168703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47241880815605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54172600484964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8976774720573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58791087448299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.02271267015783, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1045908395152, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24414870008319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69109127617371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.65306278042235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.39816620647916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1810606061523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49470462633181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01504374556126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67904663244455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74908045175502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28081352108579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72430502818084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.91000509633358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0266388958905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0693230610812, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2669116718157, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31911690207038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.01378736632232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69057272581715, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86605080021333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54829275642138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92761316198515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07281692163534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2809228591007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11130793179962, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.78210365621945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99114272050637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26603620619443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.26895473010688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.88756691851471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90535085923925, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.8662778443967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.27678234231546, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21120724189035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.62182381785365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.70089986040492, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98061841891752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.63730668221623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.21809213108293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62513446883317, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0550792423482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7111656021986, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.70112878957045, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.22008595203475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.26583380518775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84031644841893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.76253265375746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36921450181964, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38751561741323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.75942760797071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20505090808616, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01993010545006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25253006691226, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9292129294191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.45831791808807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01874761761506, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.70179579177142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.45782648578765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.9654506293958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.69543160906309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.23626703373412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.23730582460071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58630669240723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.24411442253736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80412345904836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33266826608637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08584208568091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20511704388718, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73586252939168, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6229802242446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66558700926207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74677062129318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54017463980658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.730138438308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49572076787184, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.77203615539878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.91635203682458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91294155802171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85493736088273, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07037492573127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3591812957655, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21752684184962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82182795562746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91554181329224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2637454877203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42377971468683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9956096009709, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95024629295155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.02384747382928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.7384856392294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78634727970504, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.46503843997183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.75198886376967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.39876122857235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.11567284541557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77091533493147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34851941060441, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.04122370969267, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97807111210729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82297627909733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88908258807695, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.02494822567455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52813633390632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77607586946252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84906975105618, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10682536410768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60098332710814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16477240647923, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6446435040502, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.34853961981467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90164291858915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52920571661875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96718442791747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1449985691514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09214526901171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08808617199072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.57735843418071, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.03374091329061, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67153521214688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90721494360177, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94800270723887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.77341143396697, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16810608211968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1295561924666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61098976638968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09160273927314, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3316634600706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53620789150742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21568894504843, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93343913761625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02299067534886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18544500815403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.98907937476646, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.45348785433026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02085687929099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84830391916218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43699045607909, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.95759166912264, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.47551491598014, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66498305754212, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36643618283398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3496449568648, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06229907806569, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93784310790696, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96780942003683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88445131540618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08186481058257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20796655389181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9654081254928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49393791749024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05007592523162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84518996211608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32190345568543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32827178627502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26562867244172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9489490131078, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54756230484855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52695826109522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16120912048845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73109278013733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12967158946793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66144197243285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35105870140517, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32497954050243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.404028525945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.5596224194739, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06373732644884, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82924854494931, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63616550173667, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.79933273190036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95120755426662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56403816854014, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35426808914588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35865607168631, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90482034285156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9985787957225, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8768940380532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86502942650776, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82867955654159, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06669061925808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.05805100493507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19478081630376, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.4726753044577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8774192059464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.47630925649874, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67940992744533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83387030747774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77541066961662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21806909335821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2116719393634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63189068076446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31676028980675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96917376263126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3332407570871, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.63597205774145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00130198273088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05926832590498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76190103073331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.24963627943366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.73904226779082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53198582108524, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29391446442064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.60323551607766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.17535379161295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95745054254392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.65432843266518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33856790601594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36956060356385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.2507487739047, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9809276691774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.16338627425559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95283790294347, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37363985497257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.41734797456819, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46879833485087, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89779171625213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.56566914846213, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.12295330761386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.47229523041987, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01642931045994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.97899403484826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.29040521639678, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62958711128005, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94114223449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38592136937638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.493222435549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3474523152517, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84805377401344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.24313248176318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23716867785055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3344550507391, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25058017257405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26148603669161, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.78124566715695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.30392352510412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05471403229689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26889976544973, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.97149252732743, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49652862514739, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49761686858754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96133483843103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60373115569557, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43278823558683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.216186422251, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22790913521419, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53921057943961, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3857390941578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03374081752091, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.39823678210567, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08940418013472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.65920217896303, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.39853539402684, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65048655775453, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.79873760769597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68828575617101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87251964203307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5300255114375, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79086592344467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57270931229704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88859692291733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80271734344691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04073002158317, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46828834544144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23692924750449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43771978777833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09517649815284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.97835234626153, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79133291522645, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02945945000636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.45235296621496, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.63061442838703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1729530420449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58327824763774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.536291527272, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.30651397849368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69842586893596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16248763742118, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49605102540508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25313944944546, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8421663218519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97561455613513, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.01878568439928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7731623418128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3031103300392, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82895908639826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.34460637435383, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32181327562058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.5260793564055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2357948297768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.68746434551585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58592175261929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.46697080069039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.654447961068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3612670935331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01031054901587, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.37919304454006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41169786096938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.29381617044329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.70386499802939, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.42981226133158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13311787546735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41698336938477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39366908316056, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.89356698837386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.60226357609555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.41574363121151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.77307124686526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32527272706531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02617500869306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9453398724905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0185892574846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.30963127571127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25489319248068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74391567498766, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20889480054281, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11263111652507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10139698703692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71015543952899, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.47583632063913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75986386635343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.27037620813209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.44774661355898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.99875783176927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58344310898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14439051922356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.54039819515215, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92367785774749, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05584126819757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35601781114134, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81351651597147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84701543791368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72332949821384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.51107159043485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91369044105626, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12129104458734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.14884637460801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89417488264915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12845985022912, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65979930529929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96178874818798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4511703887473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.89229345893365, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58860576042824, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.04178116383622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4578576609693, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.86053478009173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.76430023458302, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.8053175522895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40836408730766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.85612524977265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40863693697362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.09196518919535, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.91994528712154, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.45747729845408, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.40486331313025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.8856295626394, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.41673292493975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.30115153676562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50993042362319, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.8443544450889, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58646684173618, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.51863942815191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02582579018504, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.64624335712315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.62478266594604, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.97351592845854, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.2565162152012, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32379857764127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96151236382953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38409820559012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.76791246698866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.15204268625024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14536275879573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.92555424660308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28378367357755, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6447277617356, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94359099606793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6316942698782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61709548381037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99406223655019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51586581649707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88355978598187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59210068726337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20766791171343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03526629028747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73917319444821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21019311262799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87224010683994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42438731231145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32218202085551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84840341954816, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74542752078266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.97099698374727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.5673298293271, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.99384012192989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89305134977978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62217998545916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36509094658045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88634389481254, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09706919037085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.26411816919232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87466770876311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60479889553625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20308651861096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03254850546956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.38853458659054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15112623454132, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96842409215192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.88812859002927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24664780939709, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.55850895917358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87161322114831, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00535793552655, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44802861400582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06090359266082, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86729712174954, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.52050959132679, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.61545833641875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11576558511285, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.83965947403613, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12256163749143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01797419460767, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19504665832812, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.52501223027797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70543373709387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76145907090127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.99231970762736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72601264375818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.17294252688178, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66991995260973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29227941579406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.05260425345361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.08641894302396, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89786622090341, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19281076082636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00268172437694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8031782169886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.30303744020942, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96047444085842, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53102238294964, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55135190498417, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73320965755093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83108861382613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66116571648418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37760682748707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73832896665387, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55125645985113, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05801072220544, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19615016955768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71612053106102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35363412291727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89683728827593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.45394449656698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64711251538864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20425342905766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27286775878677, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11098684044114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82344576152076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.85991046136218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76944869834962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49443525385506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26714007172913, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55312747617486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21338289364272, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.50082066300278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2831851440446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64838687037759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7216517557643, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97199380174193, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55110234448432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.47254018419862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35333984916059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.55290357280873, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.92761668682888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52405415324874, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01759216619796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9301791723341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.98789247555584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.13492749804534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.88900920001714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.63316803265334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.85577813730865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25060393364089, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37992029678232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2161626045396, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94097148564506, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61411385344917, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.26633312852945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57486927906898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25460128509323, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.93806274853755, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88821464003595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53437593350753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.55582558991509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57746904834741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35186779566517, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82220668249171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33239215677628, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.65684927729923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07995330778445, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14274907856505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.31638915313648, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.80125655346451, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86908900365832, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43258549076675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7418385386059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04661736537737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.18409149189988, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.27288236124932, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66757472286285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.66108329653198, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0113429588981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01542580767835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87145951112797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58043482842866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.28456359684716, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.4268917756353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.10394740945229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.5888902773369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05233318851361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20379964517137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93054848304011, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.4470753529935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.55093725008568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1771270171211, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.51951955539236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.35054775405881, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20200706252784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07198645570766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13850851279538, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.26087589169711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93035699558081, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.52157669994284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.49395863364698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.86316250689507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.18352844268802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93546496698288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.8113095296125, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.54696410392556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.0801204143829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.23016998477505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.84774198158706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.88558944915762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.52000332438061, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.86871340352687, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.58373696827199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.82208371804109, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.32832910147937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.06529443738526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.45977666376373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.24686599676619, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.21043430906948, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.45185611426218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.80819601768098, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.95861552217461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.14254378792333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.6718045936633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.3689677842857, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.87620295869029, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.06997514477665, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.79230048470953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.69842658289039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.84366945841847, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.75521347785289, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.14459057740478, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.78540826994568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.0389294134589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-05T00:00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Backtrader", + "passed": true, + "scenario_id": "17" + }, "detail": null, + "duration_seconds": 0.5533595648594201, + "framework": "backtrader", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 0.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.11917253451473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.54841534502786, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.03201587878578, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.94550278474797, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.67183298908238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.86549713479145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.1916089774142, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.48697641782272, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.74505140134526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.4324970118259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.36317339817481, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3184784020995, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.59194698786014, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21300773889088, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.93323693635863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.01041702546699, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.12882215455511, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.82503838919212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.20974209562837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.28418162139361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.91262465479312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.47079432451613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.41396612142576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.74208634353057, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.96112016066532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.14757933275934, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.33794797010775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.95774776632322, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.39809150990905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.29624163714647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.98044425919083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.71415014911958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68703409584346, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.19660477578049, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.09913803201934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13975001075532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7525000464393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67014960303162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.16172259245428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.99277550738105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.726000665382, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27597137389321, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.96674656359579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01407453019127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01883446140224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.33686580554885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.61379453469056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.44418682978015, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.1261570487614, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.90367229199477, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.48715448535594, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.53898885220806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.13695584567007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.74920846022492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.28346179234327, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.39446913633991, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.38048314487808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8685385779757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.78335766752544, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.08258048792487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.04409706752067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.00584315640894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17754603801194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.91386750387461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.07278397148802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.84957817071898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.66685696016805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.29703959359377, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.16284479663989, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.59827392536462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.02427769637677, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.02034152325665, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.10227360972624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.55074957264794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4752285310497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.78482968977629, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.64550269913406, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.75829920829567, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.28405624956507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.40750734980367, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.9736108084372, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.11719582995507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.42442738415961, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.46803368609852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.65390080108091, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.55529329412784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.84475344760442, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.34547532849058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.83286932713185, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.1414110724743, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.70880723169135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.37107171120152, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17212988349165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.88968353827183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.17974473578754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.64495810760246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86042757757674, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.42922022261914, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67123710700702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.1262468099545, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.99803204217791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.0746490327229, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68852164950059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.90683245619206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.6986709588789, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.58028409299915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.78930171959787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.44349309161048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.63928948741085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.8801021064717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.88804895153031, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9129584357738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.35911188288487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.55107978610341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.24566283787111, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.50854335078685, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85972377687798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.94180161552265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42256786175977, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.39260868907034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.47598985042309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.2217481384577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.43771261461684, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.2555639625908, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.27520136851216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.22895283520215, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84721164221584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.21690016032666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.98012439288168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.42241300564716, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.52349736477139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.8478017412055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.78357735159078, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.5180376571157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.07885735340791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.46287786089891, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7806750796624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.99007562374577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3160405598432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.69515591162462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.9307950005457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.49497584845733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.05277773908537, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.63017059410102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.95560584181007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.85704345214472, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.34581983849665, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.55148937480453, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.83406196186097, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.25669377064882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.51637945271536, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.57103396676898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4383018584174, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.4155507445711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.92267680402585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.75883349843212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.974264479532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.70988332181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21365266173217, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.08294324004584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11928874045203, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31180164071337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.00054275724283, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.65255133629894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.96503242935937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.79138811772026, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.47378044689603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.31284487928606, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.73200506980342, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3363427106496, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.56611574901736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.13272204200155, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.89963627791985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.38755792776327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.35474381234252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.97868642263798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.11962753041762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.25728100943367, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.076645155786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.13617368469758, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.9576189114394, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.38251520181134, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.58405172820402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.18256483496931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.31778631274507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.92748490697555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11485299409067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.46828746700025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.7892083341232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.2850707768965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.61528686513479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16045065160826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98923853245553, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.78083136801966, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98736762370623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.41242668783207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.7821059253462, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.01676230346942, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.90986422948514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.85698353324744, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.72982041802001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.60761748093444, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0385605171193, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.09198940082088, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21597248424331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.490691270523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.2706953210234, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.23704650718707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.30522444084696, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.82731858826376, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.91407429365688, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.5460351903365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.93028933684711, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.0553633238757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.47484452500944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.10094020807114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.01428360585086, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.38292648890776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.48513559668872, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.27497370614257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.14886606297294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.29611163730506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.23350982317787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.79948982072462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98472225444857, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.71079305814114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.3396263042363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.98172498582129, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.42795373397291, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.6321305493393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.76479352938595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.48958247666037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.73111789636546, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.61885876679554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.85401562603096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.49175141105384, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.84289871423181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.99377199128872, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.76186428614056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.48850513355184, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.12395315196963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.53863571252707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.6026762767146, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.09752132137899, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.4927463612385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.82226372897985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.79148532437995, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.11483711173116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.80033950220171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.63729064888537, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.11575917668634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.28032546622858, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.53344904132358, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.29557459823668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.01730754421833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.07935604760307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.79620422510413, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.24797305894252, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.19373825703377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.40514794332339, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.55648566288775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.55716667120137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.91494018138197, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.48501201892987, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.90008526748947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.83721845974864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.26504549069784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.06840340797214, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.26053581327312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.42454996605802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94825682250638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.05109746301977, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.1969266603545, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.27193710609464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.97039812035842, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.34802647272141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.07904244701469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.79316819026657, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.5721771606179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.6253449835299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.88599336671724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9167314813735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.23555143341264, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.69172330670986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40326355089037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32320287324674, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32022315669313, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.22613575397045, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.08195298394907, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.5883765126535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6323490375275, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0747399163529, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.55723413541229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.78282068603487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66145085922012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.46346097050873, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.00404625454874, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.66092881844989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.49919123199933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.97621398907071, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.41257974165285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.05124864668421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01899188310071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2559389154428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.12609495739092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25576346468043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4705053051443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72410136704386, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19884636287924, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86432033375576, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34050558738045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.10587138419956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72930751574246, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25639421821361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59980860135867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.54277270362404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92591784638046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14258894906092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11423308566697, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03147452036931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9724517338113, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49318704896338, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68468709145579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32003795658395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26674166444458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26630934814938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41533319810328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36350758058099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.16332285120929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34043899579565, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74219820454567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.55413171456674, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58180279933771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02408626223293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87657341045228, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.55590567361486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.08074161986468, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80457382221171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8131686939551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25793142134573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95253144170447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14743781912107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87835645740229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9764387193147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94516537050167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89603764932446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.63800292429943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.24337208101042, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.59556244009269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.28446378378608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13025499622808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.23383791902404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3328854638381, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96067846320523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94965457520625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.16625059748041, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8269642033066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81310669049034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25554422109529, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.45622372930102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.83947343135847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43135259957857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.53295655650527, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78816229160893, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9413213129086, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.40648296911729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.30279435197399, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.65263067129817, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8239628759463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.7795218814571, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36068460994301, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47451059527033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.09791235411565, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64232209133355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9960341944844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86057544771678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03722443992689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02540027670304, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23831571579666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61642884685872, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.95873360404138, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78520963834742, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12207131713245, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.030634236321, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2580641252632, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57471719502651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.16033087447514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64298714231596, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75555986268628, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29534460790408, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82043015696519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34161824742394, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61753779742976, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15624068230731, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25917455813928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5936848786624, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98045633035186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.98797939638727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35827005631805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69155799194061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68091309416992, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.70456318827733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16469231313611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8799099382491, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11566093967609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80161139315015, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.15377445359951, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.15715297991916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86962603101975, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72926386277882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1579385275225, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74116822603293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31971390482754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20782644697857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01885490875779, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42230012835576, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.99288411883725, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.082184046767, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.85101362331126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98564664788431, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86959357102904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20013868958425, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84924924581607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31289310035527, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.30858201402589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.99373607498532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.18572768435916, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33439114940057, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07429869254726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.04790943044299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64069907229371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26235855896988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50379403067527, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43691170957882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37005197510278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.27057437223934, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.09337235241868, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.71128565229746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02883456195461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80490335979457, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9287597961482, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.17470692964342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.24931526786432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60050033989026, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09469925407369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3111349289259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18816369089683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.42938460793316, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.41602741852829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42310978968692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.50953693273829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3312342786166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96020937715257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53068640749544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56091640875552, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89910933295498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.42727078867868, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.19572149206287, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68137345397398, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.48011498833462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73481537380023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.9817766831428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62422399002075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25402747101043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.78794113614681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.51565520344022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81994141877884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73569183010366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.89304084668578, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94563028017612, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.70380536433252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.18321579529317, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75634960957339, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99346542277752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07784715364147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82473368702337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80939097372557, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.56855092683492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22637736311736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04989016451177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06688407845617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11481000895263, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27282277875311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.10549027383173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.02590143870165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0111357952797, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36789726372407, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.16759918928896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.02364437811006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.64247835816664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20232839714717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.51418676739564, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.81320041849362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.27166607324205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2545983932022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9749722820765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.67780842750179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.45906966920411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.76345480442126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43197465037622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3600604543369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44350843545416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39757672508603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.85230151275863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.81407145534195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01128875382821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.67591197573066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.51279666702179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.98461279621962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.18776220832692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.68365711276127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52965334263803, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97018528191016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.1704075246973, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.4092834971355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.80397108470676, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.7224658447326, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.15638220769824, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.66063113797075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.93674170823937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.02426166276656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2868521233569, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.06798590582007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.35136606041436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.99746534424483, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.56303029535638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09425361608109, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.42070005109457, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41089068186189, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.18677881527823, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43901544778936, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.5260369404649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01177208564717, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.36159823018748, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.82082511981079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2807149297715, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9250036260453, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.6150063093046, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.61363931969464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.38004154259691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.96467806287603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.70041523761671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.62074541364396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.95651159207542, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05267669381956, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.69416855510607, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.8695133244266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.61012799594214, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.05464751490085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.46681240023963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.63067407291008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.96046847840074, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.56273021751427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.14638715063298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.75859326793318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97823499949781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1563775636343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.71453147899727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.00941330347686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97249110306038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.44900384555615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.26380626108603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.9389490074607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.91676356991597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.13685393625028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92025914672814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.9636459548143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.9470309766908, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.23464868145118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.16095300836626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86371979002091, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1658806519524, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.80999909964301, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.3916052906719, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.79830122498419, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.92464426243117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.74084404129731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.77591195761288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.129082151163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.29443539538282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.49821093674116, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.52895961614624, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.50773769923417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.20586243304412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1593251595947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.86523925470759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.88148378297518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.54298539634833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97268456538903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.62712854780935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.74146887774299, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.42853595632805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.84848168731006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.83668379255865, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.47241973433749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.89842730786603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.82455441317694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.16986826544031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.1811588929617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.09911654611166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.55257557802233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.60087172956541, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.68671023186488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.96517472835335, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.05260562521785, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.08006582461334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.79432064186736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.41108821991375, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87347025830266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20564533828775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.30309517181773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1406611037728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.24392591685461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.10896639776043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43429707485602, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.99823744300166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.51160983247296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.15695774047701, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.25313076740179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.3503914171167, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47393608345517, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.98751697992219, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0545116492653, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01799823084976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05081241841745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.31407916672543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.80885265421585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.15205975168703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.47241880815605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.54172600484964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8976774720573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58791087448299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.02271267015783, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.1045908395152, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24414870008319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69109127617371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.65306278042235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.39816620647916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1810606061523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49470462633181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01504374556126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67904663244455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74908045175502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.28081352108579, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.72430502818084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.91000509633358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0266388958905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.0693230610812, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2669116718157, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31911690207038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.01378736632232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.69057272581715, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86605080021333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54829275642138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.92761316198515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.07281692163534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.2809228591007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11130793179962, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.78210365621945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.99114272050637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26603620619443, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.26895473010688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.88756691851471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.90535085923925, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.8662778443967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.27678234231546, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21120724189035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.62182381785365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.70089986040492, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.98061841891752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.63730668221623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.21809213108293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62513446883317, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.0550792423482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7111656021986, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.70112878957045, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.22008595203475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.26583380518775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84031644841893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.76253265375746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36921450181964, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38751561741323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.75942760797071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20505090808616, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01993010545006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25253006691226, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9292129294191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.45831791808807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.01874761761506, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.70179579177142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.45782648578765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.9654506293958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.69543160906309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.23626703373412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.23730582460071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58630669240723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.24411442253736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.80412345904836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33266826608637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08584208568091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20511704388718, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73586252939168, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6229802242446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66558700926207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74677062129318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54017463980658, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.730138438308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49572076787184, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.77203615539878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.91635203682458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91294155802171, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.85493736088273, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07037492573127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3591812957655, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21752684184962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82182795562746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91554181329224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2637454877203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42377971468683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9956096009709, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95024629295155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.02384747382928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.7384856392294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78634727970504, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.46503843997183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.75198886376967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.39876122857235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.11567284541557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77091533493147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34851941060441, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.04122370969267, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97807111210729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82297627909733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88908258807695, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.02494822567455, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52813633390632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77607586946252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84906975105618, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10682536410768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60098332710814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16477240647923, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.6446435040502, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.34853961981467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90164291858915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52920571661875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96718442791747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1449985691514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09214526901171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08808617199072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.57735843418071, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.03374091329061, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67153521214688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90721494360177, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94800270723887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.77341143396697, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16810608211968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.1295561924666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61098976638968, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09160273927314, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3316634600706, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53620789150742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21568894504843, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93343913761625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02299067534886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.18544500815403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.98907937476646, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.45348785433026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02085687929099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.84830391916218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43699045607909, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.95759166912264, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.47551491598014, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66498305754212, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.36643618283398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3496449568648, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06229907806569, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.93784310790696, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96780942003683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88445131540618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08186481058257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20796655389181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9654081254928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49393791749024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05007592523162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.84518996211608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32190345568543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32827178627502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26562867244172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9489490131078, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54756230484855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.52695826109522, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16120912048845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73109278013733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12967158946793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66144197243285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35105870140517, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32497954050243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.404028525945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.5596224194739, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06373732644884, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82924854494931, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.63616550173667, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.79933273190036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95120755426662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56403816854014, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35426808914588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35865607168631, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.90482034285156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9985787957225, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8768940380532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86502942650776, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82867955654159, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06669061925808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.05805100493507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19478081630376, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.4726753044577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.8774192059464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.47630925649874, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.67940992744533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83387030747774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.77541066961662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21806909335821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2116719393634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.63189068076446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.31676028980675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96917376263126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3332407570871, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.63597205774145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.00130198273088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05926832590498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76190103073331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.24963627943366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.73904226779082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53198582108524, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.29391446442064, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.60323551607766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.17535379161295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95745054254392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.65432843266518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.33856790601594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.36956060356385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.2507487739047, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.9809276691774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.16338627425559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.95283790294347, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37363985497257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.41734797456819, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46879833485087, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.89779171625213, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.56566914846213, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.12295330761386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.47229523041987, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.01642931045994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.97899403484826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.29040521639678, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.62958711128005, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94114223449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38592136937638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.493222435549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3474523152517, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.84805377401344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.24313248176318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23716867785055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.3344550507391, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25058017257405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26148603669161, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.78124566715695, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.30392352510412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05471403229689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.26889976544973, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.97149252732743, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.49652862514739, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49761686858754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96133483843103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.60373115569557, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43278823558683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.216186422251, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22790913521419, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.53921057943961, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3857390941578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03374081752091, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.39823678210567, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08940418013472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.65920217896303, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.39853539402684, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65048655775453, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.79873760769597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.68828575617101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87251964203307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5300255114375, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.79086592344467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57270931229704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88859692291733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.80271734344691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04073002158317, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.46828834544144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23692924750449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.43771978777833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.09517649815284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.97835234626153, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.79133291522645, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02945945000636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.45235296621496, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.63061442838703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.1729530420449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58327824763774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.536291527272, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.30651397849368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.69842586893596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.16248763742118, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.49605102540508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25313944944546, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.8421663218519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97561455613513, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.01878568439928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7731623418128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.3031103300392, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82895908639826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.34460637435383, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32181327562058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.5260793564055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.2357948297768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.68746434551585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58592175261929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.46697080069039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.654447961068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.3612670935331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.01031054901587, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.37919304454006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41169786096938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.29381617044329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.70386499802939, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.42981226133158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13311787546735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.41698336938477, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.39366908316056, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.89356698837386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.60226357609555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.41574363121151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.77307124686526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.32527272706531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.02617500869306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.9453398724905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.0185892574846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.30963127571127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25489319248068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.74391567498766, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20889480054281, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.11263111652507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.10139698703692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.71015543952899, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.47583632063913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.75986386635343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.27037620813209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.44774661355898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.99875783176927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.58344310898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14439051922356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.54039819515215, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.92367785774749, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05584126819757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35601781114134, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.81351651597147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84701543791368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72332949821384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.51107159043485, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.91369044105626, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12129104458734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.14884637460801, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89417488264915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.12845985022912, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.65979930529929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96178874818798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4511703887473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.89229345893365, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58860576042824, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.04178116383622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.4578576609693, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.86053478009173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.76430023458302, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.8053175522895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40836408730766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.85612524977265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.40863693697362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.09196518919535, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.91994528712154, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.45747729845408, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.40486331313025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.8856295626394, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.41673292493975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.30115153676562, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.50993042362319, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.8443544450889, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58646684173618, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.51863942815191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.02582579018504, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.64624335712315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.62478266594604, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.97351592845854, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.2565162152012, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32379857764127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96151236382953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.38409820559012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.76791246698866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.15204268625024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.14536275879573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.92555424660308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.28378367357755, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6447277617356, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.94359099606793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.6316942698782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.61709548381037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.99406223655019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.51586581649707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88355978598187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.59210068726337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.20766791171343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.03526629028747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73917319444821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.21019311262799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87224010683994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.42438731231145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.32218202085551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84840341954816, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.74542752078266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.97099698374727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.5673298293271, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.99384012192989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89305134977978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.62217998545916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.36509094658045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88634389481254, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.09706919037085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.26411816919232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87466770876311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.60479889553625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.20308651861096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.03254850546956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.38853458659054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.15112623454132, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96842409215192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.88812859002927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.24664780939709, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.55850895917358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.87161322114831, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.00535793552655, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.44802861400582, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06090359266082, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86729712174954, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.52050959132679, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.61545833641875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11576558511285, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.83965947403613, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.12256163749143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01797419460767, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19504665832812, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.52501223027797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.70543373709387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.76145907090127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.99231970762736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.72601264375818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.17294252688178, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66991995260973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.29227941579406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.05260425345361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.08641894302396, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89786622090341, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19281076082636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.00268172437694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.8031782169886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.30303744020942, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96047444085842, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.53102238294964, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55135190498417, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73320965755093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.83108861382613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66116571648418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.37760682748707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.73832896665387, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55125645985113, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.05801072220544, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19615016955768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71612053106102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35363412291727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.89683728827593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.45394449656698, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.64711251538864, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20425342905766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.27286775878677, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.11098684044114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82344576152076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.85991046136218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76944869834962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.49443525385506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.26714007172913, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55312747617486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21338289364272, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.50082066300278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.2831851440446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.64838687037759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.7216517557643, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97199380174193, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.55110234448432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.47254018419862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.35333984916059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.55290357280873, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.92761668682888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52405415324874, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01759216619796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.9301791723341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.98789247555584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.13492749804534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.88900920001714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.63316803265334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.85577813730865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.25060393364089, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.37992029678232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.2161626045396, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.94097148564506, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.61411385344917, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.26633312852945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57486927906898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.25460128509323, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.93806274853755, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.88821464003595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.53437593350753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.55582558991509, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57746904834741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35186779566517, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.82220668249171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.33239215677628, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.65684927729923, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.07995330778445, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.14274907856505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.31638915313648, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.80125655346451, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.86908900365832, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.43258549076675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.7418385386059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.04661736537737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.18409149189988, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.27288236124932, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.66757472286285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.66108329653198, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.0113429588981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.01542580767835, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87145951112797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58043482842866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.28456359684716, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.4268917756353, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.10394740945229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.5888902773369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.05233318851361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20379964517137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93054848304011, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.4470753529935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.55093725008568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.1771270171211, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.51951955539236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.35054775405881, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20200706252784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.07198645570766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.13850851279538, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.26087589169711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93035699558081, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.52157669994284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.49395863364698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.86316250689507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.18352844268802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.93546496698288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.8113095296125, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.54696410392556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.0801204143829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.23016998477505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.84774198158706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.88558944915762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.52000332438061, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.86871340352687, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.58373696827199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.82208371804109, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.32832910147937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.06529443738526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.45977666376373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.24686599676619, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.21043430906948, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.45185611426218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.80819601768098, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.95861552217461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.14254378792333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.6718045936633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.3689677842857, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.87620295869029, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.06997514477665, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.79230048470953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.69842658289039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.84366945841847, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.75521347785289, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.14459057740478, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.78540826994568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.0389294134589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-05T00:00:00" + } + ], + "final_value": 98797.5798029603, + "framework": "Backtrader", + "num_trades": 600, + "total_pnl": -1202.420197039697, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.11917253451473, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 99.54841534502786, + "exit_time": "2020-01-04T00:00:00", + "gross_pnl": -157.07571894868693, + "pnl": -157.07571894868693, + "pnlcomm": -157.07571894868693, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.03201587878578, + "entry_time": "2020-01-06T00:00:00", + "exit_price": 99.94550278474797, + "exit_time": "2020-01-07T00:00:00", + "gross_pnl": -8.651309403781227, + "pnl": -8.651309403781227, + "pnlcomm": -8.651309403781227, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.67183298908238, + "entry_time": "2020-01-09T00:00:00", + "exit_price": 99.86549713479145, + "exit_time": "2020-01-10T00:00:00", + "gross_pnl": 19.366414570907864, + "pnl": 19.366414570907864, + "pnlcomm": 19.366414570907864, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.1916089774142, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 100.48697641782272, + "exit_time": "2020-01-13T00:00:00", + "gross_pnl": 29.536744040851204, + "pnl": 29.536744040851204, + "pnlcomm": 29.536744040851204, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.74505140134526, + "entry_time": "2020-01-15T00:00:00", + "exit_price": 99.43249701182592, + "exit_time": "2020-01-16T00:00:00", + "gross_pnl": -31.255438951934877, + "pnl": -31.255438951934877, + "pnlcomm": -31.255438951934877, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36317339817481, + "entry_time": "2020-01-18T00:00:00", + "exit_price": 100.3184784020995, + "exit_time": "2020-01-19T00:00:00", + "gross_pnl": 95.53050039246926, + "pnl": 95.53050039246926, + "pnlcomm": 95.53050039246926, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.59194698786014, + "entry_time": "2020-01-21T00:00:00", + "exit_price": 99.21300773889088, + "exit_time": "2020-01-22T00:00:00", + "gross_pnl": -37.89392489692602, + "pnl": -37.89392489692602, + "pnlcomm": -37.89392489692602, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.93323693635863, + "entry_time": "2020-01-24T00:00:00", + "exit_price": 101.01041702546699, + "exit_time": "2020-01-25T00:00:00", + "gross_pnl": 107.71800891083672, + "pnl": 107.71800891083672, + "pnlcomm": 107.71800891083672, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.12882215455511, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 98.82503838919212, + "exit_time": "2020-01-28T00:00:00", + "gross_pnl": -130.37837653629936, + "pnl": -130.37837653629936, + "pnlcomm": -130.37837653629936, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20974209562837, + "entry_time": "2020-01-30T00:00:00", + "exit_price": 99.28418162139361, + "exit_time": "2020-01-31T00:00:00", + "gross_pnl": 7.443952576524282, + "pnl": 7.443952576524282, + "pnlcomm": 7.443952576524282, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91262465479312, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 98.47079432451613, + "exit_time": "2020-02-03T00:00:00", + "gross_pnl": -144.18303302769857, + "pnl": -144.18303302769857, + "pnlcomm": -144.18303302769857, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.41396612142576, + "entry_time": "2020-02-05T00:00:00", + "exit_price": 99.74208634353057, + "exit_time": "2020-02-06T00:00:00", + "gross_pnl": 132.81202221048147, + "pnl": 132.81202221048147, + "pnlcomm": 132.81202221048147, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96112016066532, + "entry_time": "2020-02-08T00:00:00", + "exit_price": 99.14757933275934, + "exit_time": "2020-02-09T00:00:00", + "gross_pnl": 18.64591720940183, + "pnl": 18.64591720940183, + "pnlcomm": 18.64591720940183, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.33794797010775, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 98.95774776632322, + "exit_time": "2020-02-12T00:00:00", + "gross_pnl": -38.02002037845256, + "pnl": -38.02002037845256, + "pnlcomm": -38.02002037845256, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.39809150990905, + "entry_time": "2020-02-14T00:00:00", + "exit_price": 99.29624163714647, + "exit_time": "2020-02-15T00:00:00", + "gross_pnl": -10.18498727625854, + "pnl": -10.18498727625854, + "pnlcomm": -10.18498727625854, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.98044425919083, + "entry_time": "2020-02-17T00:00:00", + "exit_price": 98.71415014911958, + "exit_time": "2020-02-18T00:00:00", + "gross_pnl": -26.629411007125725, + "pnl": -26.629411007125725, + "pnlcomm": -26.629411007125725, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68703409584346, + "entry_time": "2020-02-20T00:00:00", + "exit_price": 99.19660477578049, + "exit_time": "2020-02-21T00:00:00", + "gross_pnl": 50.957067993702765, + "pnl": 50.957067993702765, + "pnlcomm": 50.957067993702765, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.09913803201934, + "entry_time": "2020-02-23T00:00:00", + "exit_price": 99.13975001075532, + "exit_time": "2020-02-24T00:00:00", + "gross_pnl": -95.93880212640187, + "pnl": -95.93880212640187, + "pnlcomm": -95.93880212640187, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7525000464393, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 98.67014960303162, + "exit_time": "2020-02-27T00:00:00", + "gross_pnl": -8.235044340767672, + "pnl": -8.235044340767672, + "pnlcomm": -8.235044340767672, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.16172259245428, + "entry_time": "2020-02-29T00:00:00", + "exit_price": 99.99277550738104, + "exit_time": "2020-03-01T00:00:00", + "gross_pnl": 83.1052914926758, + "pnl": 83.1052914926758, + "pnlcomm": 83.1052914926758, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.726000665382, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 99.27597137389321, + "exit_time": "2020-03-04T00:00:00", + "gross_pnl": 54.997070851121066, + "pnl": 54.997070851121066, + "pnlcomm": 54.997070851121066, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.96674656359579, + "entry_time": "2020-03-06T00:00:00", + "exit_price": 99.01407453019127, + "exit_time": "2020-03-07T00:00:00", + "gross_pnl": -95.26720334045251, + "pnl": -95.26720334045251, + "pnlcomm": -95.26720334045251, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.01883446140224, + "entry_time": "2020-03-09T00:00:00", + "exit_price": 99.33686580554885, + "exit_time": "2020-03-10T00:00:00", + "gross_pnl": 31.803134414661827, + "pnl": 31.803134414661827, + "pnlcomm": 31.803134414661827, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.61379453469056, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 99.44418682978016, + "exit_time": "2020-03-13T00:00:00", + "gross_pnl": -16.960770491039057, + "pnl": -16.960770491039057, + "pnlcomm": -16.960770491039057, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.1261570487614, + "entry_time": "2020-03-15T00:00:00", + "exit_price": 98.90367229199478, + "exit_time": "2020-03-16T00:00:00", + "gross_pnl": 77.75152432333812, + "pnl": 77.75152432333812, + "pnlcomm": 77.75152432333812, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.48715448535594, + "entry_time": "2020-03-18T00:00:00", + "exit_price": 98.53898885220806, + "exit_time": "2020-03-19T00:00:00", + "gross_pnl": -94.81656331478803, + "pnl": -94.81656331478803, + "pnlcomm": -94.81656331478803, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.13695584567007, + "entry_time": "2020-03-21T00:00:00", + "exit_price": 98.74920846022493, + "exit_time": "2020-03-22T00:00:00", + "gross_pnl": -138.7747385445138, + "pnl": -138.7747385445138, + "pnlcomm": -138.7747385445138, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.28346179234327, + "entry_time": "2020-03-24T00:00:00", + "exit_price": 99.39446913633991, + "exit_time": "2020-03-25T00:00:00", + "gross_pnl": 11.100734399663281, + "pnl": 11.100734399663281, + "pnlcomm": 11.100734399663281, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.38048314487808, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 98.86853857797571, + "exit_time": "2020-03-28T00:00:00", + "gross_pnl": -51.19445669023719, + "pnl": -51.19445669023719, + "pnlcomm": -51.19445669023719, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.78335766752544, + "entry_time": "2020-03-30T00:00:00", + "exit_price": 100.08258048792489, + "exit_time": "2020-03-31T00:00:00", + "gross_pnl": 29.922282039945003, + "pnl": 29.922282039945003, + "pnlcomm": 29.922282039945003, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.04409706752067, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 100.00584315640894, + "exit_time": "2020-04-03T00:00:00", + "gross_pnl": -3.8253911111723937, + "pnl": -3.8253911111723937, + "pnlcomm": -3.8253911111723937, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17754603801194, + "entry_time": "2020-04-05T00:00:00", + "exit_price": 99.91386750387461, + "exit_time": "2020-04-06T00:00:00", + "gross_pnl": 73.63214658626731, + "pnl": 73.63214658626731, + "pnlcomm": 73.63214658626731, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.07278397148802, + "entry_time": "2020-04-08T00:00:00", + "exit_price": 99.84957817071898, + "exit_time": "2020-04-09T00:00:00", + "gross_pnl": -122.3205800769037, + "pnl": -122.3205800769037, + "pnlcomm": -122.3205800769037, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.66685696016805, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 100.29703959359377, + "exit_time": "2020-04-12T00:00:00", + "gross_pnl": 63.018263342571856, + "pnl": 63.018263342571856, + "pnlcomm": 63.018263342571856, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.16284479663989, + "entry_time": "2020-04-14T00:00:00", + "exit_price": 99.59827392536462, + "exit_time": "2020-04-15T00:00:00", + "gross_pnl": -56.457087127526506, + "pnl": -56.457087127526506, + "pnlcomm": -56.457087127526506, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.02427769637677, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 100.02034152325665, + "exit_time": "2020-04-18T00:00:00", + "gross_pnl": -0.39361731201239536, + "pnl": -0.39361731201239536, + "pnlcomm": -0.39361731201239536, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.10227360972624, + "entry_time": "2020-04-20T00:00:00", + "exit_price": 99.55074957264794, + "exit_time": "2020-04-21T00:00:00", + "gross_pnl": -55.15240370782948, + "pnl": -55.15240370782948, + "pnlcomm": -55.15240370782948, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4752285310497, + "entry_time": "2020-04-23T00:00:00", + "exit_price": 100.78482968977629, + "exit_time": "2020-04-24T00:00:00", + "gross_pnl": 30.960115872659344, + "pnl": 30.960115872659344, + "pnlcomm": 30.960115872659344, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64550269913406, + "entry_time": "2020-04-26T00:00:00", + "exit_price": 100.75829920829567, + "exit_time": "2020-04-27T00:00:00", + "gross_pnl": 11.279650916161188, + "pnl": 11.279650916161188, + "pnlcomm": 11.279650916161188, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.28405624956507, + "entry_time": "2020-04-29T00:00:00", + "exit_price": 100.40750734980367, + "exit_time": "2020-04-30T00:00:00", + "gross_pnl": 12.345110023859718, + "pnl": 12.345110023859718, + "pnlcomm": 12.345110023859718, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.9736108084372, + "entry_time": "2020-05-02T00:00:00", + "exit_price": 99.11719582995507, + "exit_time": "2020-05-03T00:00:00", + "gross_pnl": -185.64149784821353, + "pnl": -185.64149784821353, + "pnlcomm": -185.64149784821353, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.42442738415961, + "entry_time": "2020-05-05T00:00:00", + "exit_price": 100.46803368609852, + "exit_time": "2020-05-06T00:00:00", + "gross_pnl": 4.360630193890813, + "pnl": 4.360630193890813, + "pnlcomm": 4.360630193890813, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.65390080108091, + "entry_time": "2020-05-08T00:00:00", + "exit_price": 101.55529329412784, + "exit_time": "2020-05-09T00:00:00", + "gross_pnl": 90.13924930469273, + "pnl": 90.13924930469273, + "pnlcomm": 90.13924930469273, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.84475344760442, + "entry_time": "2020-05-11T00:00:00", + "exit_price": 101.34547532849058, + "exit_time": "2020-05-12T00:00:00", + "gross_pnl": 50.07218808861609, + "pnl": 50.07218808861609, + "pnlcomm": 50.07218808861609, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.83286932713185, + "entry_time": "2020-05-14T00:00:00", + "exit_price": 100.1414110724743, + "exit_time": "2020-05-15T00:00:00", + "gross_pnl": -69.14582546575474, + "pnl": -69.14582546575474, + "pnlcomm": -69.14582546575474, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.70880723169135, + "entry_time": "2020-05-17T00:00:00", + "exit_price": 100.37107171120154, + "exit_time": "2020-05-18T00:00:00", + "gross_pnl": -33.773552048981514, + "pnl": -33.773552048981514, + "pnlcomm": -33.773552048981514, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17212988349165, + "entry_time": "2020-05-20T00:00:00", + "exit_price": 100.88968353827181, + "exit_time": "2020-05-21T00:00:00", + "gross_pnl": 171.75536547801613, + "pnl": 171.75536547801613, + "pnlcomm": 171.75536547801613, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17974473578754, + "entry_time": "2020-05-23T00:00:00", + "exit_price": 99.64495810760246, + "exit_time": "2020-05-24T00:00:00", + "gross_pnl": 46.521337181492584, + "pnl": 46.521337181492584, + "pnlcomm": 46.521337181492584, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86042757757674, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 99.42922022261914, + "exit_time": "2020-05-27T00:00:00", + "gross_pnl": 56.8792645042393, + "pnl": 56.8792645042393, + "pnlcomm": 56.8792645042393, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67123710700702, + "entry_time": "2020-05-29T00:00:00", + "exit_price": 99.1262468099545, + "exit_time": "2020-05-30T00:00:00", + "gross_pnl": 45.500970294747844, + "pnl": 45.500970294747844, + "pnlcomm": 45.500970294747844, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99803204217791, + "entry_time": "2020-06-01T00:00:00", + "exit_price": 98.0746490327229, + "exit_time": "2020-06-02T00:00:00", + "gross_pnl": 7.661699054499138, + "pnl": 7.661699054499138, + "pnlcomm": 7.661699054499138, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68852164950059, + "entry_time": "2020-06-04T00:00:00", + "exit_price": 98.90683245619206, + "exit_time": "2020-06-05T00:00:00", + "gross_pnl": 21.831080669147696, + "pnl": 21.831080669147696, + "pnlcomm": 21.831080669147696, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.6986709588789, + "entry_time": "2020-06-07T00:00:00", + "exit_price": 98.58028409299915, + "exit_time": "2020-06-08T00:00:00", + "gross_pnl": -11.838686587975644, + "pnl": -11.838686587975644, + "pnlcomm": -11.838686587975644, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.78930171959787, + "entry_time": "2020-06-10T00:00:00", + "exit_price": 99.44349309161046, + "exit_time": "2020-06-11T00:00:00", + "gross_pnl": 65.41913720125905, + "pnl": 65.41913720125905, + "pnlcomm": 65.41913720125905, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.63928948741085, + "entry_time": "2020-06-13T00:00:00", + "exit_price": 99.8801021064717, + "exit_time": "2020-06-14T00:00:00", + "gross_pnl": 24.081261906084706, + "pnl": 24.081261906084706, + "pnlcomm": 24.081261906084706, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88804895153031, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 98.9129584357738, + "exit_time": "2020-06-17T00:00:00", + "gross_pnl": 2.490948424349426, + "pnl": 2.490948424349426, + "pnlcomm": 2.490948424349426, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.35911188288487, + "entry_time": "2020-06-19T00:00:00", + "exit_price": 99.55107978610341, + "exit_time": "2020-06-20T00:00:00", + "gross_pnl": 19.196790321853996, + "pnl": 19.196790321853996, + "pnlcomm": 19.196790321853996, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.24566283787111, + "entry_time": "2020-06-22T00:00:00", + "exit_price": 99.50854335078685, + "exit_time": "2020-06-23T00:00:00", + "gross_pnl": 26.288051291574277, + "pnl": 26.288051291574277, + "pnlcomm": 26.288051291574277, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85972377687798, + "entry_time": "2020-06-25T00:00:00", + "exit_price": 98.94180161552265, + "exit_time": "2020-06-26T00:00:00", + "gross_pnl": 8.207783864466478, + "pnl": 8.207783864466478, + "pnlcomm": 8.207783864466478, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.42256786175977, + "entry_time": "2020-06-28T00:00:00", + "exit_price": 98.39260868907034, + "exit_time": "2020-06-29T00:00:00", + "gross_pnl": -2.99591726894306, + "pnl": -2.99591726894306, + "pnlcomm": -2.99591726894306, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47598985042309, + "entry_time": "2020-07-01T00:00:00", + "exit_price": 98.2217481384577, + "exit_time": "2020-07-02T00:00:00", + "gross_pnl": -25.42417119653919, + "pnl": -25.42417119653919, + "pnlcomm": -25.42417119653919, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43771261461684, + "entry_time": "2020-07-04T00:00:00", + "exit_price": 99.25556396259081, + "exit_time": "2020-07-05T00:00:00", + "gross_pnl": -18.214865202602937, + "pnl": -18.214865202602937, + "pnlcomm": -18.214865202602937, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27520136851216, + "entry_time": "2020-07-07T00:00:00", + "exit_price": 99.22895283520214, + "exit_time": "2020-07-08T00:00:00", + "gross_pnl": -4.624853331002043, + "pnl": -4.624853331002043, + "pnlcomm": -4.624853331002043, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84721164221584, + "entry_time": "2020-07-10T00:00:00", + "exit_price": 98.21690016032666, + "exit_time": "2020-07-11T00:00:00", + "gross_pnl": -63.031148188917996, + "pnl": -63.031148188917996, + "pnlcomm": -63.031148188917996, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.98012439288168, + "entry_time": "2020-07-13T00:00:00", + "exit_price": 98.42241300564716, + "exit_time": "2020-07-14T00:00:00", + "gross_pnl": -55.77113872345194, + "pnl": -55.77113872345194, + "pnlcomm": -55.77113872345194, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.52349736477139, + "entry_time": "2020-07-16T00:00:00", + "exit_price": 98.84780174120549, + "exit_time": "2020-07-17T00:00:00", + "gross_pnl": -67.56956235659004, + "pnl": -67.56956235659004, + "pnlcomm": -67.56956235659004, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.78357735159078, + "entry_time": "2020-07-19T00:00:00", + "exit_price": 98.5180376571157, + "exit_time": "2020-07-20T00:00:00", + "gross_pnl": -26.553969447508052, + "pnl": -26.553969447508052, + "pnlcomm": -26.553969447508052, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07885735340791, + "entry_time": "2020-07-22T00:00:00", + "exit_price": 98.46287786089891, + "exit_time": "2020-07-23T00:00:00", + "gross_pnl": 38.40205074910017, + "pnl": 38.40205074910017, + "pnlcomm": 38.40205074910017, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7806750796624, + "entry_time": "2020-07-25T00:00:00", + "exit_price": 98.99007562374577, + "exit_time": "2020-07-26T00:00:00", + "gross_pnl": 20.94005440833655, + "pnl": 20.94005440833655, + "pnlcomm": 20.94005440833655, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.3160405598432, + "entry_time": "2020-07-28T00:00:00", + "exit_price": 97.69515591162462, + "exit_time": "2020-07-29T00:00:00", + "gross_pnl": -62.08846482185777, + "pnl": -62.08846482185777, + "pnlcomm": -62.08846482185777, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.9307950005457, + "entry_time": "2020-07-31T00:00:00", + "exit_price": 97.49497584845733, + "exit_time": "2020-08-01T00:00:00", + "gross_pnl": -43.581915208837074, + "pnl": -43.581915208837074, + "pnlcomm": -43.581915208837074, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.05277773908537, + "entry_time": "2020-08-03T00:00:00", + "exit_price": 97.63017059410102, + "exit_time": "2020-08-04T00:00:00", + "gross_pnl": -42.26071449843545, + "pnl": -42.26071449843545, + "pnlcomm": -42.26071449843545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.95560584181007, + "entry_time": "2020-08-06T00:00:00", + "exit_price": 97.85704345214471, + "exit_time": "2020-08-07T00:00:00", + "gross_pnl": -109.85623896653607, + "pnl": -109.85623896653607, + "pnlcomm": -109.85623896653607, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.34581983849665, + "entry_time": "2020-08-09T00:00:00", + "exit_price": 98.55148937480453, + "exit_time": "2020-08-10T00:00:00", + "gross_pnl": 120.56695363078802, + "pnl": 120.56695363078802, + "pnlcomm": 120.56695363078802, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.83406196186097, + "entry_time": "2020-08-12T00:00:00", + "exit_price": 97.25669377064881, + "exit_time": "2020-08-13T00:00:00", + "gross_pnl": -57.73681912121589, + "pnl": -57.73681912121589, + "pnlcomm": -57.73681912121589, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.51637945271536, + "entry_time": "2020-08-15T00:00:00", + "exit_price": 97.57103396676897, + "exit_time": "2020-08-16T00:00:00", + "gross_pnl": 5.465451405360966, + "pnl": 5.465451405360966, + "pnlcomm": 5.465451405360966, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.4383018584174, + "entry_time": "2020-08-18T00:00:00", + "exit_price": 98.4155507445711, + "exit_time": "2020-08-19T00:00:00", + "gross_pnl": -2.2751113846297244, + "pnl": -2.2751113846297244, + "pnlcomm": -2.2751113846297244, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.92267680402585, + "entry_time": "2020-08-21T00:00:00", + "exit_price": 98.75883349843212, + "exit_time": "2020-08-22T00:00:00", + "gross_pnl": 83.61566944062702, + "pnl": 83.61566944062702, + "pnlcomm": 83.61566944062702, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.974264479532, + "entry_time": "2020-08-24T00:00:00", + "exit_price": 99.70988332181, + "exit_time": "2020-08-25T00:00:00", + "gross_pnl": 173.56188422780008, + "pnl": 173.56188422780008, + "pnlcomm": 173.56188422780008, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21365266173217, + "entry_time": "2020-08-27T00:00:00", + "exit_price": 98.08294324004585, + "exit_time": "2020-08-28T00:00:00", + "gross_pnl": -113.07094216863192, + "pnl": -113.07094216863192, + "pnlcomm": -113.07094216863192, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11928874045203, + "entry_time": "2020-08-30T00:00:00", + "exit_price": 98.31180164071337, + "exit_time": "2020-08-31T00:00:00", + "gross_pnl": 19.25129002613346, + "pnl": 19.25129002613346, + "pnlcomm": 19.25129002613346, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.00054275724283, + "entry_time": "2020-09-02T00:00:00", + "exit_price": 98.65255133629894, + "exit_time": "2020-09-03T00:00:00", + "gross_pnl": 65.20085790561154, + "pnl": 65.20085790561154, + "pnlcomm": 65.20085790561154, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96503242935937, + "entry_time": "2020-09-05T00:00:00", + "exit_price": 98.79138811772025, + "exit_time": "2020-09-06T00:00:00", + "gross_pnl": -17.364431163912286, + "pnl": -17.364431163912286, + "pnlcomm": -17.364431163912286, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.47378044689603, + "entry_time": "2020-09-08T00:00:00", + "exit_price": 98.31284487928606, + "exit_time": "2020-09-09T00:00:00", + "gross_pnl": -116.09355676099682, + "pnl": -116.09355676099682, + "pnlcomm": -116.09355676099682, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.73200506980342, + "entry_time": "2020-09-11T00:00:00", + "exit_price": 98.3363427106496, + "exit_time": "2020-09-12T00:00:00", + "gross_pnl": 60.43376408461825, + "pnl": 60.43376408461825, + "pnlcomm": 60.43376408461825, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.56611574901736, + "entry_time": "2020-09-14T00:00:00", + "exit_price": 98.13272204200155, + "exit_time": "2020-09-15T00:00:00", + "gross_pnl": -43.339370701581004, + "pnl": -43.339370701581004, + "pnlcomm": -43.339370701581004, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.89963627791985, + "entry_time": "2020-09-17T00:00:00", + "exit_price": 98.38755792776327, + "exit_time": "2020-09-18T00:00:00", + "gross_pnl": 148.79216498434147, + "pnl": 148.79216498434147, + "pnlcomm": 148.79216498434147, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.35474381234252, + "entry_time": "2020-09-20T00:00:00", + "exit_price": 98.97868642263799, + "exit_time": "2020-09-21T00:00:00", + "gross_pnl": 62.39426102954724, + "pnl": 62.39426102954724, + "pnlcomm": 62.39426102954724, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.11962753041762, + "entry_time": "2020-09-23T00:00:00", + "exit_price": 99.25728100943367, + "exit_time": "2020-09-24T00:00:00", + "gross_pnl": 13.765347901605196, + "pnl": 13.765347901605196, + "pnlcomm": 13.765347901605196, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.076645155786, + "entry_time": "2020-09-26T00:00:00", + "exit_price": 99.1361736846976, + "exit_time": "2020-09-27T00:00:00", + "gross_pnl": 5.952852891159921, + "pnl": 5.952852891159921, + "pnlcomm": 5.952852891159921, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.9576189114394, + "entry_time": "2020-09-29T00:00:00", + "exit_price": 99.38251520181134, + "exit_time": "2020-09-30T00:00:00", + "gross_pnl": 42.48962903719473, + "pnl": 42.48962903719473, + "pnlcomm": 42.48962903719473, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.58405172820402, + "entry_time": "2020-10-02T00:00:00", + "exit_price": 100.1825648349693, + "exit_time": "2020-10-03T00:00:00", + "gross_pnl": 59.85131067652816, + "pnl": 59.85131067652816, + "pnlcomm": 59.85131067652816, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31778631274507, + "entry_time": "2020-10-05T00:00:00", + "exit_price": 98.92748490697555, + "exit_time": "2020-10-06T00:00:00", + "gross_pnl": -39.03014057695202, + "pnl": -39.03014057695202, + "pnlcomm": -39.03014057695202, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11485299409067, + "entry_time": "2020-10-08T00:00:00", + "exit_price": 97.46828746700024, + "exit_time": "2020-10-09T00:00:00", + "gross_pnl": -64.65655270904307, + "pnl": -64.65655270904307, + "pnlcomm": -64.65655270904307, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7892083341232, + "entry_time": "2020-10-11T00:00:00", + "exit_price": 99.2850707768965, + "exit_time": "2020-10-12T00:00:00", + "gross_pnl": 149.58624427733014, + "pnl": 149.58624427733014, + "pnlcomm": 149.58624427733014, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.61528686513479, + "entry_time": "2020-10-14T00:00:00", + "exit_price": 98.16045065160826, + "exit_time": "2020-10-15T00:00:00", + "gross_pnl": 54.51637864734664, + "pnl": 54.51637864734664, + "pnlcomm": 54.51637864734664, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98923853245553, + "entry_time": "2020-10-17T00:00:00", + "exit_price": 97.78083136801966, + "exit_time": "2020-10-18T00:00:00", + "gross_pnl": -20.84071644358687, + "pnl": -20.84071644358687, + "pnlcomm": -20.84071644358687, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98736762370623, + "entry_time": "2020-10-20T00:00:00", + "exit_price": 98.41242668783207, + "exit_time": "2020-10-21T00:00:00", + "gross_pnl": 42.50590641258327, + "pnl": 42.50590641258327, + "pnlcomm": 42.50590641258327, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7821059253462, + "entry_time": "2020-10-23T00:00:00", + "exit_price": 98.01676230346942, + "exit_time": "2020-10-24T00:00:00", + "gross_pnl": -76.53436218767808, + "pnl": -76.53436218767808, + "pnlcomm": -76.53436218767808, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.90986422948514, + "entry_time": "2020-10-26T00:00:00", + "exit_price": 98.85698353324744, + "exit_time": "2020-10-27T00:00:00", + "gross_pnl": -5.288069623769331, + "pnl": -5.288069623769331, + "pnlcomm": -5.288069623769331, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.72982041802001, + "entry_time": "2020-10-29T00:00:00", + "exit_price": 98.60761748093444, + "exit_time": "2020-10-30T00:00:00", + "gross_pnl": -12.220293708557506, + "pnl": -12.220293708557506, + "pnlcomm": -12.220293708557506, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.0385605171193, + "entry_time": "2020-11-01T00:00:00", + "exit_price": 99.09198940082088, + "exit_time": "2020-11-02T00:00:00", + "gross_pnl": 5.342888370158505, + "pnl": 5.342888370158505, + "pnlcomm": 5.342888370158505, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21597248424331, + "entry_time": "2020-11-04T00:00:00", + "exit_price": 98.490691270523, + "exit_time": "2020-11-05T00:00:00", + "gross_pnl": -72.5281213720308, + "pnl": -72.5281213720308, + "pnlcomm": -72.5281213720308, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.2706953210234, + "entry_time": "2020-11-07T00:00:00", + "exit_price": 98.23704650718707, + "exit_time": "2020-11-08T00:00:00", + "gross_pnl": -3.3648813836322233, + "pnl": -3.3648813836322233, + "pnlcomm": -3.3648813836322233, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30522444084696, + "entry_time": "2020-11-10T00:00:00", + "exit_price": 97.82731858826378, + "exit_time": "2020-11-11T00:00:00", + "gross_pnl": 52.20941474168228, + "pnl": 52.20941474168228, + "pnlcomm": 52.20941474168228, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.91407429365688, + "entry_time": "2020-11-13T00:00:00", + "exit_price": 98.5460351903365, + "exit_time": "2020-11-14T00:00:00", + "gross_pnl": -36.80391033203847, + "pnl": -36.80391033203847, + "pnlcomm": -36.80391033203847, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.93028933684711, + "entry_time": "2020-11-16T00:00:00", + "exit_price": 99.0553633238757, + "exit_time": "2020-11-17T00:00:00", + "gross_pnl": 12.507398702858552, + "pnl": 12.507398702858552, + "pnlcomm": 12.507398702858552, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47484452500944, + "entry_time": "2020-11-19T00:00:00", + "exit_price": 98.10094020807114, + "exit_time": "2020-11-20T00:00:00", + "gross_pnl": -37.390431693830806, + "pnl": -37.390431693830806, + "pnlcomm": -37.390431693830806, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.01428360585086, + "entry_time": "2020-11-22T00:00:00", + "exit_price": 97.38292648890776, + "exit_time": "2020-11-23T00:00:00", + "gross_pnl": -163.13571169431071, + "pnl": -163.13571169431071, + "pnlcomm": -163.13571169431071, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48513559668872, + "entry_time": "2020-11-25T00:00:00", + "exit_price": 97.27497370614257, + "exit_time": "2020-11-26T00:00:00", + "gross_pnl": -121.01618905461464, + "pnl": -121.01618905461464, + "pnlcomm": -121.01618905461464, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.14886606297294, + "entry_time": "2020-11-28T00:00:00", + "exit_price": 98.29611163730506, + "exit_time": "2020-11-29T00:00:00", + "gross_pnl": 14.724557433211771, + "pnl": 14.724557433211771, + "pnlcomm": 14.724557433211771, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.23350982317787, + "entry_time": "2020-12-01T00:00:00", + "exit_price": 97.79948982072462, + "exit_time": "2020-12-02T00:00:00", + "gross_pnl": 56.59799975467479, + "pnl": 56.59799975467479, + "pnlcomm": 56.59799975467479, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98472225444857, + "entry_time": "2020-12-04T00:00:00", + "exit_price": 97.71079305814114, + "exit_time": "2020-12-05T00:00:00", + "gross_pnl": -27.392919630743506, + "pnl": -27.392919630743506, + "pnlcomm": -27.392919630743506, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.3396263042363, + "entry_time": "2020-12-07T00:00:00", + "exit_price": 97.98172498582129, + "exit_time": "2020-12-08T00:00:00", + "gross_pnl": -35.790131841501704, + "pnl": -35.790131841501704, + "pnlcomm": -35.790131841501704, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.42795373397291, + "entry_time": "2020-12-10T00:00:00", + "exit_price": 96.6321305493393, + "exit_time": "2020-12-11T00:00:00", + "gross_pnl": -79.5823184633619, + "pnl": -79.5823184633619, + "pnlcomm": -79.5823184633619, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.76479352938595, + "entry_time": "2020-12-13T00:00:00", + "exit_price": 98.48958247666039, + "exit_time": "2020-12-14T00:00:00", + "gross_pnl": 172.47889472744333, + "pnl": 172.47889472744333, + "pnlcomm": 172.47889472744333, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.73111789636546, + "entry_time": "2020-12-16T00:00:00", + "exit_price": 97.61885876679554, + "exit_time": "2020-12-17T00:00:00", + "gross_pnl": 88.77408704300791, + "pnl": 88.77408704300791, + "pnlcomm": 88.77408704300791, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.85401562603096, + "entry_time": "2020-12-19T00:00:00", + "exit_price": 96.49175141105385, + "exit_time": "2020-12-20T00:00:00", + "gross_pnl": -136.22642149771025, + "pnl": -136.22642149771025, + "pnlcomm": -136.22642149771025, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.84289871423181, + "entry_time": "2020-12-22T00:00:00", + "exit_price": 96.99377199128872, + "exit_time": "2020-12-23T00:00:00", + "gross_pnl": -84.91267229430832, + "pnl": -84.91267229430832, + "pnlcomm": -84.91267229430832, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.76186428614056, + "entry_time": "2020-12-25T00:00:00", + "exit_price": 96.48850513355184, + "exit_time": "2020-12-26T00:00:00", + "gross_pnl": -27.33591525887249, + "pnl": -27.33591525887249, + "pnlcomm": -27.33591525887249, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.12395315196963, + "entry_time": "2020-12-28T00:00:00", + "exit_price": 97.53863571252707, + "exit_time": "2020-12-29T00:00:00", + "gross_pnl": 41.46825605574378, + "pnl": 41.46825605574378, + "pnlcomm": 41.46825605574378, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6026762767146, + "entry_time": "2020-12-31T00:00:00", + "exit_price": 97.09752132137899, + "exit_time": "2021-01-01T00:00:00", + "gross_pnl": -50.51549553356125, + "pnl": -50.51549553356125, + "pnlcomm": -50.51549553356125, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.4927463612385, + "entry_time": "2021-01-03T00:00:00", + "exit_price": 96.82226372897985, + "exit_time": "2021-01-04T00:00:00", + "gross_pnl": -67.04826322586541, + "pnl": -67.04826322586541, + "pnlcomm": -67.04826322586541, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.79148532437995, + "entry_time": "2021-01-06T00:00:00", + "exit_price": 97.11483711173116, + "exit_time": "2021-01-07T00:00:00", + "gross_pnl": 32.33517873512142, + "pnl": 32.33517873512142, + "pnlcomm": 32.33517873512142, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.80033950220171, + "entry_time": "2021-01-09T00:00:00", + "exit_price": 96.63729064888537, + "exit_time": "2021-01-10T00:00:00", + "gross_pnl": 83.69511466836599, + "pnl": 83.69511466836599, + "pnlcomm": 83.69511466836599, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.11575917668634, + "entry_time": "2021-01-12T00:00:00", + "exit_price": 96.28032546622858, + "exit_time": "2021-01-13T00:00:00", + "gross_pnl": 16.456628954223618, + "pnl": 16.456628954223618, + "pnlcomm": 16.456628954223618, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.53344904132358, + "entry_time": "2021-01-15T00:00:00", + "exit_price": 97.29557459823668, + "exit_time": "2021-01-16T00:00:00", + "gross_pnl": 76.21255569131051, + "pnl": 76.21255569131051, + "pnlcomm": 76.21255569131051, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.01730754421833, + "entry_time": "2021-01-18T00:00:00", + "exit_price": 96.07935604760307, + "exit_time": "2021-01-19T00:00:00", + "gross_pnl": 6.204850338474444, + "pnl": 6.204850338474444, + "pnlcomm": 6.204850338474444, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.79620422510413, + "entry_time": "2021-01-21T00:00:00", + "exit_price": 95.24797305894252, + "exit_time": "2021-01-22T00:00:00", + "gross_pnl": -54.82311661616137, + "pnl": -54.82311661616137, + "pnlcomm": -54.82311661616137, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.19373825703377, + "entry_time": "2021-01-24T00:00:00", + "exit_price": 95.40514794332339, + "exit_time": "2021-01-25T00:00:00", + "gross_pnl": 21.140968628961332, + "pnl": 21.140968628961332, + "pnlcomm": 21.140968628961332, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.55648566288775, + "entry_time": "2021-01-27T00:00:00", + "exit_price": 96.55716667120137, + "exit_time": "2021-01-28T00:00:00", + "gross_pnl": 100.06810083136202, + "pnl": 100.06810083136202, + "pnlcomm": 100.06810083136202, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.91494018138197, + "entry_time": "2021-01-30T00:00:00", + "exit_price": 95.48501201892987, + "exit_time": "2021-01-31T00:00:00", + "gross_pnl": 57.00718375478999, + "pnl": 57.00718375478999, + "pnlcomm": 57.00718375478999, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.90008526748947, + "entry_time": "2021-02-02T00:00:00", + "exit_price": 95.83721845974864, + "exit_time": "2021-02-03T00:00:00", + "gross_pnl": -6.286680774083209, + "pnl": -6.286680774083209, + "pnlcomm": -6.286680774083209, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.26504549069784, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 96.06840340797214, + "exit_time": "2021-02-06T00:00:00", + "gross_pnl": 80.33579172742975, + "pnl": 80.33579172742975, + "pnlcomm": 80.33579172742975, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.26053581327312, + "entry_time": "2021-02-08T00:00:00", + "exit_price": 95.42454996605802, + "exit_time": "2021-02-09T00:00:00", + "gross_pnl": 16.401415278490106, + "pnl": 16.401415278490106, + "pnlcomm": 16.401415278490106, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94825682250638, + "entry_time": "2021-02-11T00:00:00", + "exit_price": 95.05109746301979, + "exit_time": "2021-02-12T00:00:00", + "gross_pnl": 10.284064051340636, + "pnl": 10.284064051340636, + "pnlcomm": 10.284064051340636, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.1969266603545, + "entry_time": "2021-02-14T00:00:00", + "exit_price": 96.27193710609464, + "exit_time": "2021-02-15T00:00:00", + "gross_pnl": 7.501044574013349, + "pnl": 7.501044574013349, + "pnlcomm": 7.501044574013349, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.97039812035842, + "entry_time": "2021-02-17T00:00:00", + "exit_price": 96.34802647272141, + "exit_time": "2021-02-18T00:00:00", + "gross_pnl": -62.237164763701, + "pnl": -62.237164763701, + "pnlcomm": -62.237164763701, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.07904244701469, + "entry_time": "2021-02-20T00:00:00", + "exit_price": 96.79316819026657, + "exit_time": "2021-02-21T00:00:00", + "gross_pnl": -28.587425674811584, + "pnl": -28.587425674811584, + "pnlcomm": -28.587425674811584, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5721771606179, + "entry_time": "2021-02-23T00:00:00", + "exit_price": 95.6253449835299, + "exit_time": "2021-02-24T00:00:00", + "gross_pnl": 5.316782291200184, + "pnl": 5.316782291200184, + "pnlcomm": 5.316782291200184, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88599336671724, + "entry_time": "2021-02-26T00:00:00", + "exit_price": 93.9167314813735, + "exit_time": "2021-02-27T00:00:00", + "gross_pnl": -96.92618853437409, + "pnl": -96.92618853437409, + "pnlcomm": -96.92618853437409, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23555143341264, + "entry_time": "2021-03-01T00:00:00", + "exit_price": 94.69172330670986, + "exit_time": "2021-03-02T00:00:00", + "gross_pnl": -54.38281267027776, + "pnl": -54.38281267027776, + "pnlcomm": -54.38281267027776, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.40326355089037, + "entry_time": "2021-03-04T00:00:00", + "exit_price": 94.32320287324674, + "exit_time": "2021-03-05T00:00:00", + "gross_pnl": -8.006067764362967, + "pnl": -8.006067764362967, + "pnlcomm": -8.006067764362967, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.32022315669313, + "entry_time": "2021-03-07T00:00:00", + "exit_price": 94.22613575397045, + "exit_time": "2021-03-08T00:00:00", + "gross_pnl": -9.408740272267835, + "pnl": -9.408740272267835, + "pnlcomm": -9.408740272267835, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.08195298394907, + "entry_time": "2021-03-10T00:00:00", + "exit_price": 94.5883765126535, + "exit_time": "2021-03-11T00:00:00", + "gross_pnl": -49.35764712955688, + "pnl": -49.35764712955688, + "pnlcomm": -49.35764712955688, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6323490375275, + "entry_time": "2021-03-13T00:00:00", + "exit_price": 95.0747399163529, + "exit_time": "2021-03-14T00:00:00", + "gross_pnl": 44.23908788253925, + "pnl": 44.23908788253925, + "pnlcomm": 44.23908788253925, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.55723413541229, + "entry_time": "2021-03-16T00:00:00", + "exit_price": 94.78282068603487, + "exit_time": "2021-03-17T00:00:00", + "gross_pnl": 22.558655062258026, + "pnl": 22.558655062258026, + "pnlcomm": 22.558655062258026, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66145085922012, + "entry_time": "2021-03-19T00:00:00", + "exit_price": 95.46346097050873, + "exit_time": "2021-03-20T00:00:00", + "gross_pnl": 180.20101112886096, + "pnl": 180.20101112886096, + "pnlcomm": 180.20101112886096, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.00404625454874, + "entry_time": "2021-03-22T00:00:00", + "exit_price": 94.66092881844988, + "exit_time": "2021-03-23T00:00:00", + "gross_pnl": -34.31174360988649, + "pnl": -34.31174360988649, + "pnlcomm": -34.31174360988649, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.49919123199933, + "entry_time": "2021-03-25T00:00:00", + "exit_price": 93.97621398907071, + "exit_time": "2021-03-26T00:00:00", + "gross_pnl": -152.29772429286186, + "pnl": -152.29772429286186, + "pnlcomm": -152.29772429286186, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.41257974165285, + "entry_time": "2021-03-28T00:00:00", + "exit_price": 95.05124864668421, + "exit_time": "2021-03-29T00:00:00", + "gross_pnl": 63.86689050313663, + "pnl": 63.86689050313663, + "pnlcomm": 63.86689050313663, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01899188310071, + "entry_time": "2021-03-31T00:00:00", + "exit_price": 94.2559389154428, + "exit_time": "2021-04-01T00:00:00", + "gross_pnl": 23.694703234208703, + "pnl": 23.694703234208703, + "pnlcomm": 23.694703234208703, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.12609495739092, + "entry_time": "2021-04-03T00:00:00", + "exit_price": 94.25576346468043, + "exit_time": "2021-04-04T00:00:00", + "gross_pnl": 12.966850728950874, + "pnl": 12.966850728950874, + "pnlcomm": 12.966850728950874, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.4705053051443, + "entry_time": "2021-04-06T00:00:00", + "exit_price": 93.72410136704386, + "exit_time": "2021-04-07T00:00:00", + "gross_pnl": 25.35960618995574, + "pnl": 25.35960618995574, + "pnlcomm": 25.35960618995574, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19884636287924, + "entry_time": "2021-04-09T00:00:00", + "exit_price": 93.86432033375576, + "exit_time": "2021-04-10T00:00:00", + "gross_pnl": 66.54739708765192, + "pnl": 66.54739708765192, + "pnlcomm": 66.54739708765192, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34050558738045, + "entry_time": "2021-04-12T00:00:00", + "exit_price": 94.10587138419956, + "exit_time": "2021-04-13T00:00:00", + "gross_pnl": 76.53657968191112, + "pnl": 76.53657968191112, + "pnlcomm": 76.53657968191112, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72930751574246, + "entry_time": "2021-04-15T00:00:00", + "exit_price": 93.2563942182136, + "exit_time": "2021-04-16T00:00:00", + "gross_pnl": -47.29132975288621, + "pnl": -47.29132975288621, + "pnlcomm": -47.29132975288621, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59980860135867, + "entry_time": "2021-04-18T00:00:00", + "exit_price": 94.54277270362402, + "exit_time": "2021-04-19T00:00:00", + "gross_pnl": 94.29641022653499, + "pnl": 94.29641022653499, + "pnlcomm": 94.29641022653499, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92591784638046, + "entry_time": "2021-04-21T00:00:00", + "exit_price": 94.14258894906092, + "exit_time": "2021-04-22T00:00:00", + "gross_pnl": 121.66711026804649, + "pnl": 121.66711026804649, + "pnlcomm": 121.66711026804649, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11423308566697, + "entry_time": "2021-04-24T00:00:00", + "exit_price": 93.03147452036931, + "exit_time": "2021-04-25T00:00:00", + "gross_pnl": -108.27585652976524, + "pnl": -108.27585652976524, + "pnlcomm": -108.27585652976524, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9724517338113, + "entry_time": "2021-04-27T00:00:00", + "exit_price": 93.49318704896336, + "exit_time": "2021-04-28T00:00:00", + "gross_pnl": -147.92646848479336, + "pnl": -147.92646848479336, + "pnlcomm": -147.92646848479336, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68468709145579, + "entry_time": "2021-04-30T00:00:00", + "exit_price": 93.32003795658395, + "exit_time": "2021-05-01T00:00:00", + "gross_pnl": -36.46491348718399, + "pnl": -36.46491348718399, + "pnlcomm": -36.46491348718399, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26674166444458, + "entry_time": "2021-05-03T00:00:00", + "exit_price": 94.26630934814936, + "exit_time": "2021-05-04T00:00:00", + "gross_pnl": -0.043231629521756076, + "pnl": -0.043231629521756076, + "pnlcomm": -0.043231629521756076, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.41533319810328, + "entry_time": "2021-05-06T00:00:00", + "exit_price": 93.36350758058099, + "exit_time": "2021-05-07T00:00:00", + "gross_pnl": -5.182561752229731, + "pnl": -5.182561752229731, + "pnlcomm": -5.182561752229731, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.16332285120929, + "entry_time": "2021-05-09T00:00:00", + "exit_price": 94.34043899579565, + "exit_time": "2021-05-10T00:00:00", + "gross_pnl": 17.711614458636404, + "pnl": 17.711614458636404, + "pnlcomm": 17.711614458636404, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74219820454567, + "entry_time": "2021-05-12T00:00:00", + "exit_price": 94.55413171456674, + "exit_time": "2021-05-13T00:00:00", + "gross_pnl": 81.19335100210634, + "pnl": 81.19335100210634, + "pnlcomm": 81.19335100210634, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.58180279933771, + "entry_time": "2021-05-15T00:00:00", + "exit_price": 94.02408626223293, + "exit_time": "2021-05-16T00:00:00", + "gross_pnl": 44.22834628952188, + "pnl": 44.22834628952188, + "pnlcomm": 44.22834628952188, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87657341045228, + "entry_time": "2021-05-18T00:00:00", + "exit_price": 94.55590567361484, + "exit_time": "2021-05-19T00:00:00", + "gross_pnl": 67.93322631625642, + "pnl": 67.93322631625642, + "pnlcomm": 67.93322631625642, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08074161986468, + "entry_time": "2021-05-21T00:00:00", + "exit_price": 93.80457382221171, + "exit_time": "2021-05-22T00:00:00", + "gross_pnl": 72.3832202347026, + "pnl": 72.3832202347026, + "pnlcomm": 72.3832202347026, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8131686939551, + "entry_time": "2021-05-24T00:00:00", + "exit_price": 93.25793142134573, + "exit_time": "2021-05-25T00:00:00", + "gross_pnl": 44.476272739062495, + "pnl": 44.476272739062495, + "pnlcomm": 44.476272739062495, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95253144170447, + "entry_time": "2021-05-27T00:00:00", + "exit_price": 93.14743781912107, + "exit_time": "2021-05-28T00:00:00", + "gross_pnl": 19.490637741660066, + "pnl": 19.490637741660066, + "pnlcomm": 19.490637741660066, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87835645740229, + "entry_time": "2021-05-30T00:00:00", + "exit_price": 92.9764387193147, + "exit_time": "2021-05-31T00:00:00", + "gross_pnl": 9.808226191240976, + "pnl": 9.808226191240976, + "pnlcomm": 9.808226191240976, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94516537050167, + "entry_time": "2021-06-02T00:00:00", + "exit_price": 92.89603764932446, + "exit_time": "2021-06-03T00:00:00", + "gross_pnl": -4.912772117721431, + "pnl": -4.912772117721431, + "pnlcomm": -4.912772117721431, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63800292429943, + "entry_time": "2021-06-05T00:00:00", + "exit_price": 93.24337208101042, + "exit_time": "2021-06-06T00:00:00", + "gross_pnl": 160.53691567109922, + "pnl": 160.53691567109922, + "pnlcomm": 160.53691567109922, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59556244009269, + "entry_time": "2021-06-08T00:00:00", + "exit_price": 91.28446378378608, + "exit_time": "2021-06-09T00:00:00", + "gross_pnl": -31.109865630661204, + "pnl": -31.109865630661204, + "pnlcomm": -31.109865630661204, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13025499622808, + "entry_time": "2021-06-11T00:00:00", + "exit_price": 92.23383791902404, + "exit_time": "2021-06-12T00:00:00", + "gross_pnl": -89.64170772040347, + "pnl": -89.64170772040347, + "pnlcomm": -89.64170772040347, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3328854638381, + "entry_time": "2021-06-14T00:00:00", + "exit_price": 92.96067846320523, + "exit_time": "2021-06-15T00:00:00", + "gross_pnl": 62.77929993671307, + "pnl": 62.77929993671307, + "pnlcomm": 62.77929993671307, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.94965457520625, + "entry_time": "2021-06-17T00:00:00", + "exit_price": 92.16625059748041, + "exit_time": "2021-06-18T00:00:00", + "gross_pnl": 21.65960222741603, + "pnl": 21.65960222741603, + "pnlcomm": 21.65960222741603, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8269642033066, + "entry_time": "2021-06-20T00:00:00", + "exit_price": 91.81310669049036, + "exit_time": "2021-06-21T00:00:00", + "gross_pnl": -1.3857512816244366, + "pnl": -1.3857512816244366, + "pnlcomm": -1.3857512816244366, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.25554422109529, + "entry_time": "2021-06-23T00:00:00", + "exit_price": 92.45622372930102, + "exit_time": "2021-06-24T00:00:00", + "gross_pnl": 20.067950820572378, + "pnl": 20.067950820572378, + "pnlcomm": 20.067950820572378, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.83947343135847, + "entry_time": "2021-06-26T00:00:00", + "exit_price": 92.43135259957857, + "exit_time": "2021-06-27T00:00:00", + "gross_pnl": 59.18791682201032, + "pnl": 59.18791682201032, + "pnlcomm": 59.18791682201032, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.53295655650527, + "entry_time": "2021-06-29T00:00:00", + "exit_price": 91.78816229160894, + "exit_time": "2021-06-30T00:00:00", + "gross_pnl": 25.520573510367228, + "pnl": 25.520573510367228, + "pnlcomm": 25.520573510367228, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9413213129086, + "entry_time": "2021-07-02T00:00:00", + "exit_price": 92.40648296911729, + "exit_time": "2021-07-03T00:00:00", + "gross_pnl": 146.5161656208693, + "pnl": 146.5161656208693, + "pnlcomm": 146.5161656208693, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.30279435197399, + "entry_time": "2021-07-05T00:00:00", + "exit_price": 90.65263067129818, + "exit_time": "2021-07-06T00:00:00", + "gross_pnl": -65.01636806758029, + "pnl": -65.01636806758029, + "pnlcomm": -65.01636806758029, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8239628759463, + "entry_time": "2021-07-08T00:00:00", + "exit_price": 91.7795218814571, + "exit_time": "2021-07-09T00:00:00", + "gross_pnl": -4.444099448919303, + "pnl": -4.444099448919303, + "pnlcomm": -4.444099448919303, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36068460994301, + "entry_time": "2021-07-11T00:00:00", + "exit_price": 91.47451059527033, + "exit_time": "2021-07-12T00:00:00", + "gross_pnl": 11.382598532732402, + "pnl": 11.382598532732402, + "pnlcomm": 11.382598532732402, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09791235411565, + "entry_time": "2021-07-14T00:00:00", + "exit_price": 91.64232209133355, + "exit_time": "2021-07-15T00:00:00", + "gross_pnl": 54.44097372179044, + "pnl": 54.44097372179044, + "pnlcomm": 54.44097372179044, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9960341944844, + "entry_time": "2021-07-17T00:00:00", + "exit_price": 90.86057544771678, + "exit_time": "2021-07-18T00:00:00", + "gross_pnl": -13.545874676761116, + "pnl": -13.545874676761116, + "pnlcomm": -13.545874676761116, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03722443992689, + "entry_time": "2021-07-20T00:00:00", + "exit_price": 91.02540027670304, + "exit_time": "2021-07-21T00:00:00", + "gross_pnl": -101.18241632238494, + "pnl": -101.18241632238494, + "pnlcomm": -101.18241632238494, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23831571579666, + "entry_time": "2021-07-23T00:00:00", + "exit_price": 91.61642884685872, + "exit_time": "2021-07-24T00:00:00", + "gross_pnl": 37.81131310620651, + "pnl": 37.81131310620651, + "pnlcomm": 37.81131310620651, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.95873360404138, + "entry_time": "2021-07-26T00:00:00", + "exit_price": 91.78520963834742, + "exit_time": "2021-07-27T00:00:00", + "gross_pnl": -17.352396569395978, + "pnl": -17.352396569395978, + "pnlcomm": -17.352396569395978, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12207131713245, + "entry_time": "2021-07-29T00:00:00", + "exit_price": 93.030634236321, + "exit_time": "2021-07-30T00:00:00", + "gross_pnl": 90.85629191885545, + "pnl": 90.85629191885545, + "pnlcomm": 90.85629191885545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2580641252632, + "entry_time": "2021-08-01T00:00:00", + "exit_price": 92.57471719502651, + "exit_time": "2021-08-02T00:00:00", + "gross_pnl": 31.6653069763305, + "pnl": 31.6653069763305, + "pnlcomm": 31.6653069763305, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.16033087447514, + "entry_time": "2021-08-04T00:00:00", + "exit_price": 91.64298714231596, + "exit_time": "2021-08-05T00:00:00", + "gross_pnl": -51.73437321591763, + "pnl": -51.73437321591763, + "pnlcomm": -51.73437321591763, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75555986268628, + "entry_time": "2021-08-07T00:00:00", + "exit_price": 93.29534460790408, + "exit_time": "2021-08-08T00:00:00", + "gross_pnl": 53.97847452178013, + "pnl": 53.97847452178013, + "pnlcomm": 53.97847452178013, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82043015696519, + "entry_time": "2021-08-10T00:00:00", + "exit_price": 93.34161824742394, + "exit_time": "2021-08-11T00:00:00", + "gross_pnl": 52.118809045875025, + "pnl": 52.118809045875025, + "pnlcomm": 52.118809045875025, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.61753779742976, + "entry_time": "2021-08-13T00:00:00", + "exit_price": 94.15624068230731, + "exit_time": "2021-08-14T00:00:00", + "gross_pnl": 53.87028848775515, + "pnl": 53.87028848775515, + "pnlcomm": 53.87028848775515, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.25917455813928, + "entry_time": "2021-08-16T00:00:00", + "exit_price": 93.5936848786624, + "exit_time": "2021-08-17T00:00:00", + "gross_pnl": -66.54896794768774, + "pnl": -66.54896794768774, + "pnlcomm": -66.54896794768774, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.98045633035186, + "entry_time": "2021-08-19T00:00:00", + "exit_price": 93.98797939638727, + "exit_time": "2021-08-20T00:00:00", + "gross_pnl": 100.7523066035418, + "pnl": 100.7523066035418, + "pnlcomm": 100.7523066035418, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35827005631805, + "entry_time": "2021-08-22T00:00:00", + "exit_price": 93.69155799194061, + "exit_time": "2021-08-23T00:00:00", + "gross_pnl": 33.328793562256465, + "pnl": 33.328793562256465, + "pnlcomm": 33.328793562256465, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68091309416992, + "entry_time": "2021-08-25T00:00:00", + "exit_price": 92.70456318827733, + "exit_time": "2021-08-26T00:00:00", + "gross_pnl": 2.3650094107409814, + "pnl": 2.3650094107409814, + "pnlcomm": 2.3650094107409814, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16469231313611, + "entry_time": "2021-08-28T00:00:00", + "exit_price": 92.8799099382491, + "exit_time": "2021-08-29T00:00:00", + "gross_pnl": -28.478237488701552, + "pnl": -28.478237488701552, + "pnlcomm": -28.478237488701552, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11566093967609, + "entry_time": "2021-08-31T00:00:00", + "exit_price": 93.80161139315015, + "exit_time": "2021-09-01T00:00:00", + "gross_pnl": -31.40495465259363, + "pnl": -31.40495465259363, + "pnlcomm": -31.40495465259363, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15377445359951, + "entry_time": "2021-09-03T00:00:00", + "exit_price": 94.15715297991916, + "exit_time": "2021-09-04T00:00:00", + "gross_pnl": 100.33785263196506, + "pnl": 100.33785263196506, + "pnlcomm": 100.33785263196506, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86962603101975, + "entry_time": "2021-09-06T00:00:00", + "exit_price": 93.72926386277882, + "exit_time": "2021-09-07T00:00:00", + "gross_pnl": -14.036216824092662, + "pnl": -14.036216824092662, + "pnlcomm": -14.036216824092662, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1579385275225, + "entry_time": "2021-09-09T00:00:00", + "exit_price": 93.74116822603294, + "exit_time": "2021-09-10T00:00:00", + "gross_pnl": -41.67703014895636, + "pnl": -41.67703014895636, + "pnlcomm": -41.67703014895636, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.31971390482754, + "entry_time": "2021-09-12T00:00:00", + "exit_price": 93.20782644697857, + "exit_time": "2021-09-13T00:00:00", + "gross_pnl": -11.188745784896525, + "pnl": -11.188745784896525, + "pnlcomm": -11.188745784896525, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01885490875779, + "entry_time": "2021-09-15T00:00:00", + "exit_price": 94.42230012835577, + "exit_time": "2021-09-16T00:00:00", + "gross_pnl": -59.655478040201615, + "pnl": -59.655478040201615, + "pnlcomm": -59.655478040201615, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.99288411883725, + "entry_time": "2021-09-18T00:00:00", + "exit_price": 94.082184046767, + "exit_time": "2021-09-19T00:00:00", + "gross_pnl": 8.929992792974417, + "pnl": 8.929992792974417, + "pnlcomm": 8.929992792974417, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.85101362331126, + "entry_time": "2021-09-21T00:00:00", + "exit_price": 94.98564664788431, + "exit_time": "2021-09-22T00:00:00", + "gross_pnl": 113.46330245730485, + "pnl": 113.46330245730485, + "pnlcomm": 113.46330245730485, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86959357102904, + "entry_time": "2021-09-24T00:00:00", + "exit_price": 94.20013868958425, + "exit_time": "2021-09-25T00:00:00", + "gross_pnl": 33.05451185552073, + "pnl": 33.05451185552073, + "pnlcomm": 33.05451185552073, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84924924581607, + "entry_time": "2021-09-27T00:00:00", + "exit_price": 93.31289310035527, + "exit_time": "2021-09-28T00:00:00", + "gross_pnl": -153.63561454608003, + "pnl": -153.63561454608003, + "pnlcomm": -153.63561454608003, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30858201402589, + "entry_time": "2021-09-30T00:00:00", + "exit_price": 93.99373607498532, + "exit_time": "2021-10-01T00:00:00", + "gross_pnl": -31.484593904056624, + "pnl": -31.484593904056624, + "pnlcomm": -31.484593904056624, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.18572768435916, + "entry_time": "2021-10-03T00:00:00", + "exit_price": 94.33439114940059, + "exit_time": "2021-10-04T00:00:00", + "gross_pnl": -85.13365349585769, + "pnl": -85.13365349585769, + "pnlcomm": -85.13365349585769, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07429869254726, + "entry_time": "2021-10-06T00:00:00", + "exit_price": 94.04790943044297, + "exit_time": "2021-10-07T00:00:00", + "gross_pnl": -2.638926210428849, + "pnl": -2.638926210428849, + "pnlcomm": -2.638926210428849, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64069907229371, + "entry_time": "2021-10-09T00:00:00", + "exit_price": 94.26235855896988, + "exit_time": "2021-10-10T00:00:00", + "gross_pnl": 62.16594866761653, + "pnl": 62.16594866761653, + "pnlcomm": 62.16594866761653, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50379403067527, + "entry_time": "2021-10-12T00:00:00", + "exit_price": 94.43691170957882, + "exit_time": "2021-10-13T00:00:00", + "gross_pnl": -6.688232109644332, + "pnl": -6.688232109644332, + "pnlcomm": -6.688232109644332, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37005197510278, + "entry_time": "2021-10-15T00:00:00", + "exit_price": 94.27057437223934, + "exit_time": "2021-10-16T00:00:00", + "gross_pnl": -9.947760286344476, + "pnl": -9.947760286344476, + "pnlcomm": -9.947760286344476, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.09337235241868, + "entry_time": "2021-10-18T00:00:00", + "exit_price": 94.71128565229746, + "exit_time": "2021-10-19T00:00:00", + "gross_pnl": -38.20867001212207, + "pnl": -38.20867001212207, + "pnlcomm": -38.20867001212207, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02883456195461, + "entry_time": "2021-10-21T00:00:00", + "exit_price": 94.80490335979458, + "exit_time": "2021-10-22T00:00:00", + "gross_pnl": 77.60687978399687, + "pnl": 77.60687978399687, + "pnlcomm": 77.60687978399687, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9287597961482, + "entry_time": "2021-10-24T00:00:00", + "exit_price": 95.17470692964342, + "exit_time": "2021-10-25T00:00:00", + "gross_pnl": 124.59471334952212, + "pnl": 124.59471334952212, + "pnlcomm": 124.59471334952212, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.24931526786432, + "entry_time": "2021-10-27T00:00:00", + "exit_price": 93.60050033989026, + "exit_time": "2021-10-28T00:00:00", + "gross_pnl": -64.88149279740583, + "pnl": -64.88149279740583, + "pnlcomm": -64.88149279740583, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09469925407369, + "entry_time": "2021-10-30T00:00:00", + "exit_price": 94.3111349289259, + "exit_time": "2021-10-31T00:00:00", + "gross_pnl": 21.64356748522067, + "pnl": 21.64356748522067, + "pnlcomm": 21.64356748522067, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18816369089683, + "entry_time": "2021-11-02T00:00:00", + "exit_price": 94.42938460793316, + "exit_time": "2021-11-03T00:00:00", + "gross_pnl": 24.122091703632975, + "pnl": 24.122091703632975, + "pnlcomm": 24.122091703632975, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.41602741852829, + "entry_time": "2021-11-05T00:00:00", + "exit_price": 93.42310978968692, + "exit_time": "2021-11-06T00:00:00", + "gross_pnl": 0.7082371158631418, + "pnl": 0.7082371158631418, + "pnlcomm": 0.7082371158631418, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50953693273829, + "entry_time": "2021-11-08T00:00:00", + "exit_price": 93.33123427861662, + "exit_time": "2021-11-09T00:00:00", + "gross_pnl": 82.16973458783343, + "pnl": 82.16973458783343, + "pnlcomm": 82.16973458783343, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96020937715257, + "entry_time": "2021-11-11T00:00:00", + "exit_price": 93.53068640749544, + "exit_time": "2021-11-12T00:00:00", + "gross_pnl": 57.04770303428717, + "pnl": 57.04770303428717, + "pnlcomm": 57.04770303428717, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56091640875552, + "entry_time": "2021-11-14T00:00:00", + "exit_price": 92.89910933295498, + "exit_time": "2021-11-15T00:00:00", + "gross_pnl": 33.81929241994612, + "pnl": 33.81929241994612, + "pnlcomm": 33.81929241994612, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.42727078867868, + "entry_time": "2021-11-17T00:00:00", + "exit_price": 92.19572149206287, + "exit_time": "2021-11-18T00:00:00", + "gross_pnl": -23.154929661581036, + "pnl": -23.154929661581036, + "pnlcomm": -23.154929661581036, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68137345397398, + "entry_time": "2021-11-20T00:00:00", + "exit_price": 92.48011498833463, + "exit_time": "2021-11-21T00:00:00", + "gross_pnl": -20.125846563934147, + "pnl": -20.125846563934147, + "pnlcomm": -20.125846563934147, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73481537380023, + "entry_time": "2021-11-23T00:00:00", + "exit_price": 93.9817766831428, + "exit_time": "2021-11-24T00:00:00", + "gross_pnl": 124.69613093425664, + "pnl": 124.69613093425664, + "pnlcomm": 124.69613093425664, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62422399002075, + "entry_time": "2021-11-26T00:00:00", + "exit_price": 92.25402747101043, + "exit_time": "2021-11-27T00:00:00", + "gross_pnl": -37.01965190103209, + "pnl": -37.01965190103209, + "pnlcomm": -37.01965190103209, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78794113614681, + "entry_time": "2021-11-29T00:00:00", + "exit_price": 92.51565520344022, + "exit_time": "2021-11-30T00:00:00", + "gross_pnl": -27.228593270659474, + "pnl": -27.228593270659474, + "pnlcomm": -27.228593270659474, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81994141877884, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 91.73569183010366, + "exit_time": "2021-12-03T00:00:00", + "gross_pnl": -8.424958867517773, + "pnl": -8.424958867517773, + "pnlcomm": -8.424958867517773, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89304084668578, + "entry_time": "2021-12-05T00:00:00", + "exit_price": 91.94563028017612, + "exit_time": "2021-12-06T00:00:00", + "gross_pnl": 5.258943349033984, + "pnl": 5.258943349033984, + "pnlcomm": 5.258943349033984, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.70380536433252, + "entry_time": "2021-12-08T00:00:00", + "exit_price": 92.18321579529317, + "exit_time": "2021-12-09T00:00:00", + "gross_pnl": 47.94104309606411, + "pnl": 47.94104309606411, + "pnlcomm": 47.94104309606411, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75634960957339, + "entry_time": "2021-12-11T00:00:00", + "exit_price": 92.99346542277752, + "exit_time": "2021-12-12T00:00:00", + "gross_pnl": 23.711581320412733, + "pnl": 23.711581320412733, + "pnlcomm": 23.711581320412733, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07784715364147, + "entry_time": "2021-12-14T00:00:00", + "exit_price": 92.82473368702337, + "exit_time": "2021-12-15T00:00:00", + "gross_pnl": -25.31134666181032, + "pnl": -25.31134666181032, + "pnlcomm": -25.31134666181032, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80939097372557, + "entry_time": "2021-12-17T00:00:00", + "exit_price": 93.56855092683492, + "exit_time": "2021-12-18T00:00:00", + "gross_pnl": -24.084004689065353, + "pnl": -24.084004689065353, + "pnlcomm": -24.084004689065353, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22637736311736, + "entry_time": "2021-12-20T00:00:00", + "exit_price": 93.04989016451177, + "exit_time": "2021-12-21T00:00:00", + "gross_pnl": -17.648719860559936, + "pnl": -17.648719860559936, + "pnlcomm": -17.648719860559936, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06688407845617, + "entry_time": "2021-12-23T00:00:00", + "exit_price": 93.11481000895263, + "exit_time": "2021-12-24T00:00:00", + "gross_pnl": 4.792593049646143, + "pnl": 4.792593049646143, + "pnlcomm": 4.792593049646143, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27282277875311, + "entry_time": "2021-12-26T00:00:00", + "exit_price": 92.10549027383173, + "exit_time": "2021-12-27T00:00:00", + "gross_pnl": -116.73325049213759, + "pnl": -116.73325049213759, + "pnlcomm": -116.73325049213759, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02590143870165, + "entry_time": "2021-12-29T00:00:00", + "exit_price": 93.0111357952797, + "exit_time": "2021-12-30T00:00:00", + "gross_pnl": 98.52343565780473, + "pnl": 98.52343565780473, + "pnlcomm": 98.52343565780473, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36789726372407, + "entry_time": "2022-01-01T00:00:00", + "exit_price": 91.16759918928896, + "exit_time": "2022-01-02T00:00:00", + "gross_pnl": -20.02980744351106, + "pnl": -20.02980744351106, + "pnlcomm": -20.02980744351106, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02364437811006, + "entry_time": "2022-01-04T00:00:00", + "exit_price": 91.64247835816664, + "exit_time": "2022-01-05T00:00:00", + "gross_pnl": -38.11660199434215, + "pnl": -38.11660199434215, + "pnlcomm": -38.11660199434215, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20232839714717, + "entry_time": "2022-01-07T00:00:00", + "exit_price": 92.51418676739564, + "exit_time": "2022-01-08T00:00:00", + "gross_pnl": 31.185837024847274, + "pnl": 31.185837024847274, + "pnlcomm": 31.185837024847274, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81320041849362, + "entry_time": "2022-01-10T00:00:00", + "exit_price": 92.27166607324205, + "exit_time": "2022-01-11T00:00:00", + "gross_pnl": 45.84656547484229, + "pnl": 45.84656547484229, + "pnlcomm": 45.84656547484229, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2545983932022, + "entry_time": "2022-01-13T00:00:00", + "exit_price": 91.97497228207648, + "exit_time": "2022-01-14T00:00:00", + "gross_pnl": -27.962611112572233, + "pnl": -27.962611112572233, + "pnlcomm": -27.962611112572233, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.67780842750179, + "entry_time": "2022-01-16T00:00:00", + "exit_price": 91.45906966920411, + "exit_time": "2022-01-17T00:00:00", + "gross_pnl": -21.87387582976754, + "pnl": -21.87387582976754, + "pnlcomm": -21.87387582976754, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76345480442126, + "entry_time": "2022-01-19T00:00:00", + "exit_price": 91.43197465037622, + "exit_time": "2022-01-20T00:00:00", + "gross_pnl": -33.148015404503894, + "pnl": -33.148015404503894, + "pnlcomm": -33.148015404503894, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3600604543369, + "entry_time": "2022-01-22T00:00:00", + "exit_price": 92.44350843545416, + "exit_time": "2022-01-23T00:00:00", + "gross_pnl": 8.344798111725993, + "pnl": 8.344798111725993, + "pnlcomm": 8.344798111725993, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39757672508603, + "entry_time": "2022-01-25T00:00:00", + "exit_price": 91.85230151275863, + "exit_time": "2022-01-26T00:00:00", + "gross_pnl": 45.47247876726033, + "pnl": 45.47247876726033, + "pnlcomm": 45.47247876726033, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.81407145534195, + "entry_time": "2022-01-28T00:00:00", + "exit_price": 91.01128875382821, + "exit_time": "2022-01-29T00:00:00", + "gross_pnl": 19.721729848626524, + "pnl": 19.721729848626524, + "pnlcomm": 19.721729848626524, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.67591197573066, + "entry_time": "2022-01-31T00:00:00", + "exit_price": 90.51279666702179, + "exit_time": "2022-02-01T00:00:00", + "gross_pnl": -116.31153087088677, + "pnl": -116.31153087088677, + "pnlcomm": -116.31153087088677, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.98461279621962, + "entry_time": "2022-02-03T00:00:00", + "exit_price": 91.18776220832692, + "exit_time": "2022-02-04T00:00:00", + "gross_pnl": -79.68505878927061, + "pnl": -79.68505878927061, + "pnlcomm": -79.68505878927061, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68365711276127, + "entry_time": "2022-02-06T00:00:00", + "exit_price": 92.52965334263803, + "exit_time": "2022-02-07T00:00:00", + "gross_pnl": -15.40037701232393, + "pnl": -15.40037701232393, + "pnlcomm": -15.40037701232393, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.97018528191016, + "entry_time": "2022-02-09T00:00:00", + "exit_price": 92.1704075246973, + "exit_time": "2022-02-10T00:00:00", + "gross_pnl": 20.022224278713452, + "pnl": 20.022224278713452, + "pnlcomm": 20.022224278713452, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.4092834971355, + "entry_time": "2022-02-12T00:00:00", + "exit_price": 91.80397108470675, + "exit_time": "2022-02-13T00:00:00", + "gross_pnl": 39.46875875712408, + "pnl": 39.46875875712408, + "pnlcomm": 39.46875875712408, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.7224658447326, + "entry_time": "2022-02-15T00:00:00", + "exit_price": 91.15638220769824, + "exit_time": "2022-02-16T00:00:00", + "gross_pnl": -56.608363703435316, + "pnl": -56.608363703435316, + "pnlcomm": -56.608363703435316, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66063113797075, + "entry_time": "2022-02-18T00:00:00", + "exit_price": 91.93674170823937, + "exit_time": "2022-02-19T00:00:00", + "gross_pnl": 27.611057026861374, + "pnl": 27.611057026861374, + "pnlcomm": 27.611057026861374, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.02426166276656, + "entry_time": "2022-02-21T00:00:00", + "exit_price": 92.2868521233569, + "exit_time": "2022-02-22T00:00:00", + "gross_pnl": 126.25904605903315, + "pnl": 126.25904605903315, + "pnlcomm": 126.25904605903315, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06798590582007, + "entry_time": "2022-02-24T00:00:00", + "exit_price": 91.35136606041436, + "exit_time": "2022-02-25T00:00:00", + "gross_pnl": 28.338015459429755, + "pnl": 28.338015459429755, + "pnlcomm": 28.338015459429755, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.99746534424483, + "entry_time": "2022-02-27T00:00:00", + "exit_price": 91.56303029535638, + "exit_time": "2022-02-28T00:00:00", + "gross_pnl": 56.556495111155414, + "pnl": 56.556495111155414, + "pnlcomm": 56.556495111155414, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09425361608109, + "entry_time": "2022-03-02T00:00:00", + "exit_price": 91.42070005109457, + "exit_time": "2022-03-03T00:00:00", + "gross_pnl": -67.35535649865199, + "pnl": -67.35535649865199, + "pnlcomm": -67.35535649865199, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.41089068186189, + "entry_time": "2022-03-05T00:00:00", + "exit_price": 90.18677881527823, + "exit_time": "2022-03-06T00:00:00", + "gross_pnl": -122.41118665836552, + "pnl": -122.41118665836552, + "pnlcomm": -122.41118665836552, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43901544778936, + "entry_time": "2022-03-08T00:00:00", + "exit_price": 91.5260369404649, + "exit_time": "2022-03-09T00:00:00", + "gross_pnl": 8.70214926755466, + "pnl": 8.70214926755466, + "pnlcomm": 8.70214926755466, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.01177208564717, + "entry_time": "2022-03-11T00:00:00", + "exit_price": 91.36159823018748, + "exit_time": "2022-03-12T00:00:00", + "gross_pnl": 34.98261445403159, + "pnl": 34.98261445403159, + "pnlcomm": 34.98261445403159, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82082511981079, + "entry_time": "2022-03-14T00:00:00", + "exit_price": 91.28071492977152, + "exit_time": "2022-03-15T00:00:00", + "gross_pnl": 45.988980996072826, + "pnl": 45.988980996072826, + "pnlcomm": 45.988980996072826, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9250036260453, + "entry_time": "2022-03-17T00:00:00", + "exit_price": 90.6150063093046, + "exit_time": "2022-03-18T00:00:00", + "gross_pnl": -130.99973167406915, + "pnl": -130.99973167406915, + "pnlcomm": -130.99973167406915, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.61363931969464, + "entry_time": "2022-03-20T00:00:00", + "exit_price": 90.38004154259693, + "exit_time": "2022-03-21T00:00:00", + "gross_pnl": -23.35977770977138, + "pnl": -23.35977770977138, + "pnlcomm": -23.35977770977138, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.96467806287603, + "entry_time": "2022-03-23T00:00:00", + "exit_price": 90.70041523761671, + "exit_time": "2022-03-24T00:00:00", + "gross_pnl": -26.426282525932265, + "pnl": -26.426282525932265, + "pnlcomm": -26.426282525932265, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.62074541364396, + "entry_time": "2022-03-26T00:00:00", + "exit_price": 90.95651159207543, + "exit_time": "2022-03-27T00:00:00", + "gross_pnl": 33.576617843147005, + "pnl": 33.576617843147005, + "pnlcomm": 33.576617843147005, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05267669381956, + "entry_time": "2022-03-29T00:00:00", + "exit_price": 91.69416855510607, + "exit_time": "2022-03-30T00:00:00", + "gross_pnl": 64.14918612865108, + "pnl": 64.14918612865108, + "pnlcomm": 64.14918612865108, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8695133244266, + "entry_time": "2022-04-01T00:00:00", + "exit_price": 90.61012799594212, + "exit_time": "2022-04-02T00:00:00", + "gross_pnl": -25.938532848448403, + "pnl": -25.938532848448403, + "pnlcomm": -25.938532848448403, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.05464751490085, + "entry_time": "2022-04-04T00:00:00", + "exit_price": 90.46681240023963, + "exit_time": "2022-04-05T00:00:00", + "gross_pnl": 41.21648853387825, + "pnl": 41.21648853387825, + "pnlcomm": 41.21648853387825, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63067407291008, + "entry_time": "2022-04-07T00:00:00", + "exit_price": 89.96046847840074, + "exit_time": "2022-04-08T00:00:00", + "gross_pnl": -67.02055945093406, + "pnl": -67.02055945093406, + "pnlcomm": -67.02055945093406, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56273021751427, + "entry_time": "2022-04-10T00:00:00", + "exit_price": 90.14638715063298, + "exit_time": "2022-04-11T00:00:00", + "gross_pnl": -41.63430668812964, + "pnl": -41.63430668812964, + "pnlcomm": -41.63430668812964, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.75859326793318, + "entry_time": "2022-04-13T00:00:00", + "exit_price": 90.97823499949781, + "exit_time": "2022-04-14T00:00:00", + "gross_pnl": 121.96417315646357, + "pnl": 121.96417315646357, + "pnlcomm": 121.96417315646357, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.1563775636343, + "entry_time": "2022-04-16T00:00:00", + "exit_price": 89.71453147899727, + "exit_time": "2022-04-17T00:00:00", + "gross_pnl": -44.18460846370209, + "pnl": -44.18460846370209, + "pnlcomm": -44.18460846370209, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.00941330347686, + "entry_time": "2022-04-19T00:00:00", + "exit_price": 90.97249110306038, + "exit_time": "2022-04-20T00:00:00", + "gross_pnl": 96.3077799583516, + "pnl": 96.3077799583516, + "pnlcomm": 96.3077799583516, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.44900384555615, + "entry_time": "2022-04-22T00:00:00", + "exit_price": 90.26380626108603, + "exit_time": "2022-04-23T00:00:00", + "gross_pnl": -18.519758447011725, + "pnl": -18.519758447011725, + "pnlcomm": -18.519758447011725, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.9389490074607, + "entry_time": "2022-04-25T00:00:00", + "exit_price": 90.91676356991597, + "exit_time": "2022-04-26T00:00:00", + "gross_pnl": 97.7814562455265, + "pnl": 97.7814562455265, + "pnlcomm": 97.7814562455265, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.13685393625028, + "entry_time": "2022-04-28T00:00:00", + "exit_price": 90.92025914672816, + "exit_time": "2022-04-29T00:00:00", + "gross_pnl": 78.34052104778806, + "pnl": 78.34052104778806, + "pnlcomm": 78.34052104778806, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.9636459548143, + "entry_time": "2022-05-01T00:00:00", + "exit_price": 90.9470309766908, + "exit_time": "2022-05-02T00:00:00", + "gross_pnl": 98.33850218765008, + "pnl": 98.33850218765008, + "pnlcomm": 98.33850218765008, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23464868145118, + "entry_time": "2022-05-04T00:00:00", + "exit_price": 92.16095300836626, + "exit_time": "2022-05-05T00:00:00", + "gross_pnl": 92.6304326915087, + "pnl": 92.6304326915087, + "pnlcomm": 92.6304326915087, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86371979002091, + "entry_time": "2022-05-07T00:00:00", + "exit_price": 90.1658806519524, + "exit_time": "2022-05-08T00:00:00", + "gross_pnl": -69.78391380685025, + "pnl": -69.78391380685025, + "pnlcomm": -69.78391380685025, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.80999909964301, + "entry_time": "2022-05-10T00:00:00", + "exit_price": 91.3916052906719, + "exit_time": "2022-05-11T00:00:00", + "gross_pnl": 58.160619102889655, + "pnl": 58.160619102889655, + "pnlcomm": 58.160619102889655, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79830122498419, + "entry_time": "2022-05-13T00:00:00", + "exit_price": 91.92464426243117, + "exit_time": "2022-05-14T00:00:00", + "gross_pnl": 12.634303744698627, + "pnl": 12.634303744698627, + "pnlcomm": 12.634303744698627, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74084404129731, + "entry_time": "2022-05-16T00:00:00", + "exit_price": 91.77591195761288, + "exit_time": "2022-05-17T00:00:00", + "gross_pnl": 3.5067916315568937, + "pnl": 3.5067916315568937, + "pnlcomm": 3.5067916315568937, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.129082151163, + "entry_time": "2022-05-19T00:00:00", + "exit_price": 91.29443539538282, + "exit_time": "2022-05-20T00:00:00", + "gross_pnl": 16.535324421981556, + "pnl": 16.535324421981556, + "pnlcomm": 16.535324421981556, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.49821093674116, + "entry_time": "2022-05-22T00:00:00", + "exit_price": 90.52895961614624, + "exit_time": "2022-05-23T00:00:00", + "gross_pnl": 103.07486794050789, + "pnl": 103.07486794050789, + "pnlcomm": 103.07486794050789, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.50773769923417, + "entry_time": "2022-05-25T00:00:00", + "exit_price": 90.20586243304412, + "exit_time": "2022-05-26T00:00:00", + "gross_pnl": -30.18752661900521, + "pnl": -30.18752661900521, + "pnlcomm": -30.18752661900521, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1593251595947, + "entry_time": "2022-05-28T00:00:00", + "exit_price": 90.8652392547076, + "exit_time": "2022-05-29T00:00:00", + "gross_pnl": -29.408590488709763, + "pnl": -29.408590488709763, + "pnlcomm": -29.408590488709763, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.88148378297518, + "entry_time": "2022-05-31T00:00:00", + "exit_price": 90.54298539634833, + "exit_time": "2022-06-01T00:00:00", + "gross_pnl": 66.15016133731473, + "pnl": 66.15016133731473, + "pnlcomm": 66.15016133731473, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.97268456538903, + "entry_time": "2022-06-03T00:00:00", + "exit_price": 91.62712854780935, + "exit_time": "2022-06-04T00:00:00", + "gross_pnl": 65.44439824203181, + "pnl": 65.44439824203181, + "pnlcomm": 65.44439824203181, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.74146887774299, + "entry_time": "2022-06-06T00:00:00", + "exit_price": 90.42853595632805, + "exit_time": "2022-06-07T00:00:00", + "gross_pnl": -31.293292141494078, + "pnl": -31.293292141494078, + "pnlcomm": -31.293292141494078, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84848168731006, + "entry_time": "2022-06-09T00:00:00", + "exit_price": 90.83668379255865, + "exit_time": "2022-06-10T00:00:00", + "gross_pnl": -1.1797894751410354, + "pnl": -1.1797894751410354, + "pnlcomm": -1.1797894751410354, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.47241973433749, + "entry_time": "2022-06-12T00:00:00", + "exit_price": 89.89842730786603, + "exit_time": "2022-06-13T00:00:00", + "gross_pnl": -57.39924264714631, + "pnl": -57.39924264714631, + "pnlcomm": -57.39924264714631, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82455441317694, + "entry_time": "2022-06-15T00:00:00", + "exit_price": 90.16986826544031, + "exit_time": "2022-06-16T00:00:00", + "gross_pnl": -65.46861477366264, + "pnl": -65.46861477366264, + "pnlcomm": -65.46861477366264, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.1811588929617, + "entry_time": "2022-06-18T00:00:00", + "exit_price": 90.09911654611165, + "exit_time": "2022-06-19T00:00:00", + "gross_pnl": 91.79576531499407, + "pnl": 91.79576531499407, + "pnlcomm": 91.79576531499407, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.55257557802233, + "entry_time": "2022-06-21T00:00:00", + "exit_price": 90.6008717295654, + "exit_time": "2022-06-22T00:00:00", + "gross_pnl": 4.829615154307021, + "pnl": 4.829615154307021, + "pnlcomm": 4.829615154307021, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.68671023186488, + "entry_time": "2022-06-24T00:00:00", + "exit_price": 89.96517472835333, + "exit_time": "2022-06-25T00:00:00", + "gross_pnl": -72.15355035115465, + "pnl": -72.15355035115465, + "pnlcomm": -72.15355035115465, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.05260562521785, + "entry_time": "2022-06-27T00:00:00", + "exit_price": 90.08006582461334, + "exit_time": "2022-06-28T00:00:00", + "gross_pnl": 2.7460199395491713, + "pnl": 2.7460199395491713, + "pnlcomm": 2.7460199395491713, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79432064186736, + "entry_time": "2022-06-30T00:00:00", + "exit_price": 92.41108821991375, + "exit_time": "2022-07-01T00:00:00", + "gross_pnl": 161.67675780463924, + "pnl": 161.67675780463924, + "pnlcomm": 161.67675780463924, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87347025830266, + "entry_time": "2022-07-03T00:00:00", + "exit_price": 91.20564533828777, + "exit_time": "2022-07-04T00:00:00", + "gross_pnl": 33.2175079985106, + "pnl": 33.2175079985106, + "pnlcomm": 33.2175079985106, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.30309517181773, + "entry_time": "2022-07-06T00:00:00", + "exit_price": 90.1406611037728, + "exit_time": "2022-07-07T00:00:00", + "gross_pnl": -116.24340680449308, + "pnl": -116.24340680449308, + "pnlcomm": -116.24340680449308, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.24392591685461, + "entry_time": "2022-07-09T00:00:00", + "exit_price": 91.10896639776044, + "exit_time": "2022-07-10T00:00:00", + "gross_pnl": 86.5040480905833, + "pnl": 86.5040480905833, + "pnlcomm": 86.5040480905833, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43429707485602, + "entry_time": "2022-07-12T00:00:00", + "exit_price": 90.99823744300166, + "exit_time": "2022-07-13T00:00:00", + "gross_pnl": -43.60596318543628, + "pnl": -43.60596318543628, + "pnlcomm": -43.60596318543628, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.51160983247296, + "entry_time": "2022-07-15T00:00:00", + "exit_price": 91.15695774047701, + "exit_time": "2022-07-16T00:00:00", + "gross_pnl": 64.53479080040552, + "pnl": 64.53479080040552, + "pnlcomm": 64.53479080040552, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.25313076740179, + "entry_time": "2022-07-18T00:00:00", + "exit_price": 90.3503914171167, + "exit_time": "2022-07-19T00:00:00", + "gross_pnl": -90.27393502850884, + "pnl": -90.27393502850884, + "pnlcomm": -90.27393502850884, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47393608345517, + "entry_time": "2022-07-21T00:00:00", + "exit_price": 89.98751697992218, + "exit_time": "2022-07-22T00:00:00", + "gross_pnl": -148.64191035329952, + "pnl": -148.64191035329952, + "pnlcomm": -148.64191035329952, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.0545116492653, + "entry_time": "2022-07-24T00:00:00", + "exit_price": 91.01799823084976, + "exit_time": "2022-07-25T00:00:00", + "gross_pnl": -103.6513418415538, + "pnl": -103.6513418415538, + "pnlcomm": -103.6513418415538, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05081241841745, + "entry_time": "2022-07-27T00:00:00", + "exit_price": 91.31407916672543, + "exit_time": "2022-07-28T00:00:00", + "gross_pnl": 26.326674830798424, + "pnl": 26.326674830798424, + "pnlcomm": 26.326674830798424, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.80885265421585, + "entry_time": "2022-07-30T00:00:00", + "exit_price": 91.15205975168703, + "exit_time": "2022-07-31T00:00:00", + "gross_pnl": 34.32070974711792, + "pnl": 34.32070974711792, + "pnlcomm": 34.32070974711792, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47241880815605, + "entry_time": "2022-08-02T00:00:00", + "exit_price": 91.54172600484964, + "exit_time": "2022-08-03T00:00:00", + "gross_pnl": 6.930719669358609, + "pnl": 6.930719669358609, + "pnlcomm": 6.930719669358609, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8976774720573, + "entry_time": "2022-08-05T00:00:00", + "exit_price": 91.58791087448299, + "exit_time": "2022-08-06T00:00:00", + "gross_pnl": -30.97665975743098, + "pnl": -30.97665975743098, + "pnlcomm": -30.97665975743098, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02271267015783, + "entry_time": "2022-08-08T00:00:00", + "exit_price": 91.10459083951521, + "exit_time": "2022-08-09T00:00:00", + "gross_pnl": -91.81218306426189, + "pnl": -91.81218306426189, + "pnlcomm": -91.81218306426189, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24414870008319, + "entry_time": "2022-08-11T00:00:00", + "exit_price": 92.69109127617371, + "exit_time": "2022-08-12T00:00:00", + "gross_pnl": 44.6942576090521, + "pnl": 44.6942576090521, + "pnlcomm": 44.6942576090521, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.65306278042235, + "entry_time": "2022-08-14T00:00:00", + "exit_price": 92.39816620647916, + "exit_time": "2022-08-15T00:00:00", + "gross_pnl": 74.5103426056815, + "pnl": 74.5103426056815, + "pnlcomm": 74.5103426056815, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1810606061523, + "entry_time": "2022-08-17T00:00:00", + "exit_price": 92.49470462633181, + "exit_time": "2022-08-18T00:00:00", + "gross_pnl": -68.63559798204903, + "pnl": -68.63559798204903, + "pnlcomm": -68.63559798204903, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01504374556126, + "entry_time": "2022-08-20T00:00:00", + "exit_price": 92.67904663244455, + "exit_time": "2022-08-21T00:00:00", + "gross_pnl": 66.40028868832957, + "pnl": 66.40028868832957, + "pnlcomm": 66.40028868832957, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74908045175502, + "entry_time": "2022-08-23T00:00:00", + "exit_price": 93.28081352108578, + "exit_time": "2022-08-24T00:00:00", + "gross_pnl": -46.82669306692446, + "pnl": -46.82669306692446, + "pnlcomm": -46.82669306692446, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72430502818084, + "entry_time": "2022-08-26T00:00:00", + "exit_price": 92.91000509633356, + "exit_time": "2022-08-27T00:00:00", + "gross_pnl": -81.42999318472732, + "pnl": -81.42999318472732, + "pnlcomm": -81.42999318472732, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0266388958905, + "entry_time": "2022-08-29T00:00:00", + "exit_price": 93.06932306108122, + "exit_time": "2022-08-30T00:00:00", + "gross_pnl": 4.268416519072105, + "pnl": 4.268416519072105, + "pnlcomm": 4.268416519072105, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2669116718157, + "entry_time": "2022-09-01T00:00:00", + "exit_price": 93.31911690207038, + "exit_time": "2022-09-02T00:00:00", + "gross_pnl": 5.220523025467116, + "pnl": 5.220523025467116, + "pnlcomm": 5.220523025467116, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.01378736632232, + "entry_time": "2022-09-04T00:00:00", + "exit_price": 92.69057272581715, + "exit_time": "2022-09-05T00:00:00", + "gross_pnl": -32.32146405051708, + "pnl": -32.32146405051708, + "pnlcomm": -32.32146405051708, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86605080021333, + "entry_time": "2022-09-07T00:00:00", + "exit_price": 93.54829275642138, + "exit_time": "2022-09-08T00:00:00", + "gross_pnl": 68.22419562080455, + "pnl": 68.22419562080455, + "pnlcomm": 68.22419562080455, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92761316198515, + "entry_time": "2022-09-10T00:00:00", + "exit_price": 92.07281692163534, + "exit_time": "2022-09-11T00:00:00", + "gross_pnl": -185.47962403498133, + "pnl": -185.47962403498133, + "pnlcomm": -185.47962403498133, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2809228591007, + "entry_time": "2022-09-13T00:00:00", + "exit_price": 94.11130793179962, + "exit_time": "2022-09-14T00:00:00", + "gross_pnl": -16.96149273010832, + "pnl": -16.96149273010832, + "pnlcomm": -16.96149273010832, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.78210365621945, + "entry_time": "2022-09-16T00:00:00", + "exit_price": 94.99114272050637, + "exit_time": "2022-09-17T00:00:00", + "gross_pnl": 20.903906428692665, + "pnl": 20.903906428692665, + "pnlcomm": 20.903906428692665, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26603620619443, + "entry_time": "2022-09-19T00:00:00", + "exit_price": 95.26895473010688, + "exit_time": "2022-09-20T00:00:00", + "gross_pnl": 100.29185239124558, + "pnl": 100.29185239124558, + "pnlcomm": 100.29185239124558, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88756691851471, + "entry_time": "2022-09-22T00:00:00", + "exit_price": 94.90535085923925, + "exit_time": "2022-09-23T00:00:00", + "gross_pnl": 1.778394072454148, + "pnl": 1.778394072454148, + "pnlcomm": 1.778394072454148, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8662778443967, + "entry_time": "2022-09-25T00:00:00", + "exit_price": 94.27678234231546, + "exit_time": "2022-09-26T00:00:00", + "gross_pnl": -58.94955020812489, + "pnl": -58.94955020812489, + "pnlcomm": -58.94955020812489, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21120724189035, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 93.62182381785365, + "exit_time": "2022-09-29T00:00:00", + "gross_pnl": -58.93834240366971, + "pnl": -58.93834240366971, + "pnlcomm": -58.93834240366971, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70089986040492, + "entry_time": "2022-10-01T00:00:00", + "exit_price": 94.98061841891752, + "exit_time": "2022-10-02T00:00:00", + "gross_pnl": 27.971855851259875, + "pnl": 27.971855851259875, + "pnlcomm": 27.971855851259875, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.63730668221623, + "entry_time": "2022-10-04T00:00:00", + "exit_price": 95.21809213108293, + "exit_time": "2022-10-05T00:00:00", + "gross_pnl": 58.07854488666919, + "pnl": 58.07854488666919, + "pnlcomm": 58.07854488666919, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62513446883317, + "entry_time": "2022-10-07T00:00:00", + "exit_price": 95.0550792423482, + "exit_time": "2022-10-08T00:00:00", + "gross_pnl": 42.994477351503235, + "pnl": 42.994477351503235, + "pnlcomm": 42.994477351503235, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7111656021986, + "entry_time": "2022-10-10T00:00:00", + "exit_price": 94.70112878957045, + "exit_time": "2022-10-11T00:00:00", + "gross_pnl": 98.9963187371842, + "pnl": 98.9963187371842, + "pnlcomm": 98.9963187371842, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.22008595203475, + "entry_time": "2022-10-13T00:00:00", + "exit_price": 95.26583380518775, + "exit_time": "2022-10-14T00:00:00", + "gross_pnl": 104.57478531530029, + "pnl": 104.57478531530029, + "pnlcomm": 104.57478531530029, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84031644841893, + "entry_time": "2022-10-16T00:00:00", + "exit_price": 94.76253265375746, + "exit_time": "2022-10-17T00:00:00", + "gross_pnl": -7.778379466147101, + "pnl": -7.778379466147101, + "pnlcomm": -7.778379466147101, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36921450181964, + "entry_time": "2022-10-19T00:00:00", + "exit_price": 94.38751561741323, + "exit_time": "2022-10-20T00:00:00", + "gross_pnl": 101.83011155935873, + "pnl": 101.83011155935873, + "pnlcomm": 101.83011155935873, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.75942760797071, + "entry_time": "2022-10-22T00:00:00", + "exit_price": 94.20505090808615, + "exit_time": "2022-10-23T00:00:00", + "gross_pnl": -55.437669988455696, + "pnl": -55.437669988455696, + "pnlcomm": -55.437669988455696, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01993010545006, + "entry_time": "2022-10-25T00:00:00", + "exit_price": 94.25253006691226, + "exit_time": "2022-10-26T00:00:00", + "gross_pnl": -76.74000385378008, + "pnl": -76.74000385378008, + "pnlcomm": -76.74000385378008, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9292129294191, + "entry_time": "2022-10-28T00:00:00", + "exit_price": 95.45831791808807, + "exit_time": "2022-10-29T00:00:00", + "gross_pnl": 52.910498866897626, + "pnl": 52.910498866897626, + "pnlcomm": 52.910498866897626, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01874761761506, + "entry_time": "2022-10-31T00:00:00", + "exit_price": 95.70179579177142, + "exit_time": "2022-11-01T00:00:00", + "gross_pnl": 68.30481741563545, + "pnl": 68.30481741563545, + "pnlcomm": 68.30481741563545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.45782648578765, + "entry_time": "2022-11-03T00:00:00", + "exit_price": 95.9654506293958, + "exit_time": "2022-11-04T00:00:00", + "gross_pnl": -49.237585639184545, + "pnl": -49.237585639184545, + "pnlcomm": -49.237585639184545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.69543160906309, + "entry_time": "2022-11-06T00:00:00", + "exit_price": 96.23626703373414, + "exit_time": "2022-11-07T00:00:00", + "gross_pnl": 54.08354246710445, + "pnl": 54.08354246710445, + "pnlcomm": 54.08354246710445, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23730582460071, + "entry_time": "2022-11-09T00:00:00", + "exit_price": 94.58630669240723, + "exit_time": "2022-11-10T00:00:00", + "gross_pnl": -65.09991321934763, + "pnl": -65.09991321934763, + "pnlcomm": -65.09991321934763, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.24411442253736, + "entry_time": "2022-11-12T00:00:00", + "exit_price": 94.80412345904836, + "exit_time": "2022-11-13T00:00:00", + "gross_pnl": -43.999096348900935, + "pnl": -43.999096348900935, + "pnlcomm": -43.999096348900935, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33266826608637, + "entry_time": "2022-11-15T00:00:00", + "exit_price": 94.08584208568091, + "exit_time": "2022-11-16T00:00:00", + "gross_pnl": -24.682618040546345, + "pnl": -24.682618040546345, + "pnlcomm": -24.682618040546345, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20511704388718, + "entry_time": "2022-11-18T00:00:00", + "exit_price": 93.73586252939168, + "exit_time": "2022-11-19T00:00:00", + "gross_pnl": -46.92545144955034, + "pnl": -46.92545144955034, + "pnlcomm": -46.92545144955034, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6229802242446, + "entry_time": "2022-11-21T00:00:00", + "exit_price": 93.66558700926207, + "exit_time": "2022-11-22T00:00:00", + "gross_pnl": -95.7393214982531, + "pnl": -95.7393214982531, + "pnlcomm": -95.7393214982531, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74677062129318, + "entry_time": "2022-11-24T00:00:00", + "exit_price": 93.54017463980657, + "exit_time": "2022-11-25T00:00:00", + "gross_pnl": -20.659598148661473, + "pnl": -20.659598148661473, + "pnlcomm": -20.659598148661473, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.730138438308, + "entry_time": "2022-11-27T00:00:00", + "exit_price": 93.49572076787184, + "exit_time": "2022-11-28T00:00:00", + "gross_pnl": -23.44176704361587, + "pnl": -23.44176704361587, + "pnlcomm": -23.44176704361587, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77203615539878, + "entry_time": "2022-11-30T00:00:00", + "exit_price": 92.91635203682458, + "exit_time": "2022-12-01T00:00:00", + "gross_pnl": -85.5684118574203, + "pnl": -85.5684118574203, + "pnlcomm": -85.5684118574203, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91294155802171, + "entry_time": "2022-12-03T00:00:00", + "exit_price": 92.85493736088272, + "exit_time": "2022-12-04T00:00:00", + "gross_pnl": -105.80041971389988, + "pnl": -105.80041971389988, + "pnlcomm": -105.80041971389988, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07037492573127, + "entry_time": "2022-12-06T00:00:00", + "exit_price": 93.35918129576551, + "exit_time": "2022-12-07T00:00:00", + "gross_pnl": -71.11936299657629, + "pnl": -71.11936299657629, + "pnlcomm": -71.11936299657629, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21752684184962, + "entry_time": "2022-12-09T00:00:00", + "exit_price": 93.82182795562746, + "exit_time": "2022-12-10T00:00:00", + "gross_pnl": 60.430111377783646, + "pnl": 60.430111377783646, + "pnlcomm": 60.430111377783646, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91554181329224, + "entry_time": "2022-12-12T00:00:00", + "exit_price": 93.2637454877203, + "exit_time": "2022-12-13T00:00:00", + "gross_pnl": -65.17963255719366, + "pnl": -65.17963255719366, + "pnlcomm": -65.17963255719366, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42377971468683, + "entry_time": "2022-12-15T00:00:00", + "exit_price": 92.9956096009709, + "exit_time": "2022-12-16T00:00:00", + "gross_pnl": -42.817011371593594, + "pnl": -42.817011371593594, + "pnlcomm": -42.817011371593594, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95024629295155, + "entry_time": "2022-12-18T00:00:00", + "exit_price": 92.02384747382928, + "exit_time": "2022-12-19T00:00:00", + "gross_pnl": -92.63988191222694, + "pnl": -92.63988191222694, + "pnlcomm": -92.63988191222694, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.7384856392294, + "entry_time": "2022-12-21T00:00:00", + "exit_price": 91.78634727970504, + "exit_time": "2022-12-22T00:00:00", + "gross_pnl": 104.78616404756451, + "pnl": 104.78616404756451, + "pnlcomm": 104.78616404756451, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.46503843997183, + "entry_time": "2022-12-24T00:00:00", + "exit_price": 91.75198886376967, + "exit_time": "2022-12-25T00:00:00", + "gross_pnl": 28.69504237978333, + "pnl": 28.69504237978333, + "pnlcomm": 28.69504237978333, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.39876122857235, + "entry_time": "2022-12-27T00:00:00", + "exit_price": 92.11567284541557, + "exit_time": "2022-12-28T00:00:00", + "gross_pnl": -28.30883831567803, + "pnl": -28.30883831567803, + "pnlcomm": -28.30883831567803, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77091533493147, + "entry_time": "2022-12-30T00:00:00", + "exit_price": 93.3485194106044, + "exit_time": "2022-12-31T00:00:00", + "gross_pnl": 57.760407567292305, + "pnl": 57.760407567292305, + "pnlcomm": 57.760407567292305, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04122370969267, + "entry_time": "2023-01-02T00:00:00", + "exit_price": 92.97807111210727, + "exit_time": "2023-01-03T00:00:00", + "gross_pnl": 93.68474024145996, + "pnl": 93.68474024145996, + "pnlcomm": 93.68474024145996, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82297627909733, + "entry_time": "2023-01-05T00:00:00", + "exit_price": 92.88908258807695, + "exit_time": "2023-01-06T00:00:00", + "gross_pnl": 6.6106308979613, + "pnl": 6.6106308979613, + "pnlcomm": 6.6106308979613, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.02494822567455, + "entry_time": "2023-01-08T00:00:00", + "exit_price": 92.52813633390632, + "exit_time": "2023-01-09T00:00:00", + "gross_pnl": -49.68118917682318, + "pnl": -49.68118917682318, + "pnlcomm": -49.68118917682318, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77607586946252, + "entry_time": "2023-01-11T00:00:00", + "exit_price": 92.84906975105618, + "exit_time": "2023-01-12T00:00:00", + "gross_pnl": 7.29938815936606, + "pnl": 7.29938815936606, + "pnlcomm": 7.29938815936606, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10682536410768, + "entry_time": "2023-01-14T00:00:00", + "exit_price": 92.60098332710814, + "exit_time": "2023-01-15T00:00:00", + "gross_pnl": -50.58420369995389, + "pnl": -50.58420369995389, + "pnlcomm": -50.58420369995389, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16477240647923, + "entry_time": "2023-01-17T00:00:00", + "exit_price": 93.64464350405021, + "exit_time": "2023-01-18T00:00:00", + "gross_pnl": 47.98710975709781, + "pnl": 47.98710975709781, + "pnlcomm": 47.98710975709781, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.34853961981467, + "entry_time": "2023-01-20T00:00:00", + "exit_price": 92.90164291858915, + "exit_time": "2023-01-21T00:00:00", + "gross_pnl": 55.31032987744737, + "pnl": 55.31032987744737, + "pnlcomm": 55.31032987744737, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52920571661875, + "entry_time": "2023-01-23T00:00:00", + "exit_price": 92.96718442791747, + "exit_time": "2023-01-24T00:00:00", + "gross_pnl": -56.20212887012741, + "pnl": -56.20212887012741, + "pnlcomm": -56.20212887012741, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1449985691514, + "entry_time": "2023-01-26T00:00:00", + "exit_price": 93.09214526901171, + "exit_time": "2023-01-27T00:00:00", + "gross_pnl": -105.2853300139688, + "pnl": -105.2853300139688, + "pnlcomm": -105.2853300139688, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08808617199072, + "entry_time": "2023-01-29T00:00:00", + "exit_price": 93.57735843418071, + "exit_time": "2023-01-30T00:00:00", + "gross_pnl": -51.0727737810015, + "pnl": -51.0727737810015, + "pnlcomm": -51.0727737810015, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.03374091329061, + "entry_time": "2023-02-01T00:00:00", + "exit_price": 92.67153521214688, + "exit_time": "2023-02-02T00:00:00", + "gross_pnl": -136.22057011437363, + "pnl": -136.22057011437363, + "pnlcomm": -136.22057011437363, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90721494360177, + "entry_time": "2023-02-04T00:00:00", + "exit_price": 92.94800270723887, + "exit_time": "2023-02-05T00:00:00", + "gross_pnl": 4.078776363709835, + "pnl": 4.078776363709835, + "pnlcomm": 4.078776363709835, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77341143396697, + "entry_time": "2023-02-07T00:00:00", + "exit_price": 93.16810608211969, + "exit_time": "2023-02-08T00:00:00", + "gross_pnl": -60.530535184727796, + "pnl": -60.530535184727796, + "pnlcomm": -60.530535184727796, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1295561924666, + "entry_time": "2023-02-10T00:00:00", + "exit_price": 93.6109897663897, + "exit_time": "2023-02-11T00:00:00", + "gross_pnl": 48.14335739230984, + "pnl": 48.14335739230984, + "pnlcomm": 48.14335739230984, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09160273927314, + "entry_time": "2023-02-13T00:00:00", + "exit_price": 93.33166346007059, + "exit_time": "2023-02-14T00:00:00", + "gross_pnl": -75.99392792025554, + "pnl": -75.99392792025554, + "pnlcomm": -75.99392792025554, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53620789150742, + "entry_time": "2023-02-16T00:00:00", + "exit_price": 94.21568894504843, + "exit_time": "2023-02-17T00:00:00", + "gross_pnl": -32.051894645898926, + "pnl": -32.051894645898926, + "pnlcomm": -32.051894645898926, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93343913761625, + "entry_time": "2023-02-19T00:00:00", + "exit_price": 94.02299067534886, + "exit_time": "2023-02-20T00:00:00", + "gross_pnl": 8.95515377326177, + "pnl": 8.95515377326177, + "pnlcomm": 8.95515377326177, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18544500815403, + "entry_time": "2023-02-22T00:00:00", + "exit_price": 93.98907937476646, + "exit_time": "2023-02-23T00:00:00", + "gross_pnl": -19.636563338757185, + "pnl": -19.636563338757185, + "pnlcomm": -19.636563338757185, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45348785433026, + "entry_time": "2023-02-25T00:00:00", + "exit_price": 95.02085687929099, + "exit_time": "2023-02-26T00:00:00", + "gross_pnl": 56.73690249607262, + "pnl": 56.73690249607262, + "pnlcomm": 56.73690249607262, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84830391916218, + "entry_time": "2023-02-28T00:00:00", + "exit_price": 94.43699045607909, + "exit_time": "2023-03-01T00:00:00", + "gross_pnl": -41.13134630830899, + "pnl": -41.13134630830899, + "pnlcomm": -41.13134630830899, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.95759166912264, + "entry_time": "2023-03-03T00:00:00", + "exit_price": 93.47551491598016, + "exit_time": "2023-03-04T00:00:00", + "gross_pnl": -48.20767531424792, + "pnl": -48.20767531424792, + "pnlcomm": -48.20767531424792, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66498305754212, + "entry_time": "2023-03-06T00:00:00", + "exit_price": 93.36643618283398, + "exit_time": "2023-03-07T00:00:00", + "gross_pnl": -29.8546874708137, + "pnl": -29.8546874708137, + "pnlcomm": -29.8546874708137, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3496449568648, + "entry_time": "2023-03-09T00:00:00", + "exit_price": 93.06229907806569, + "exit_time": "2023-03-10T00:00:00", + "gross_pnl": -28.734587879910123, + "pnl": -28.734587879910123, + "pnlcomm": -28.734587879910123, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93784310790696, + "entry_time": "2023-03-12T00:00:00", + "exit_price": 92.96780942003683, + "exit_time": "2023-03-13T00:00:00", + "gross_pnl": -97.00336878701279, + "pnl": -97.00336878701279, + "pnlcomm": -97.00336878701279, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88445131540618, + "entry_time": "2023-03-15T00:00:00", + "exit_price": 94.08186481058257, + "exit_time": "2023-03-16T00:00:00", + "gross_pnl": 19.74134951763915, + "pnl": 19.74134951763915, + "pnlcomm": 19.74134951763915, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20796655389181, + "entry_time": "2023-03-18T00:00:00", + "exit_price": 91.9654081254928, + "exit_time": "2023-03-19T00:00:00", + "gross_pnl": -24.255842839900765, + "pnl": -24.255842839900765, + "pnlcomm": -24.255842839900765, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49393791749024, + "entry_time": "2023-03-21T00:00:00", + "exit_price": 92.05007592523164, + "exit_time": "2023-03-22T00:00:00", + "gross_pnl": -44.38619922586042, + "pnl": -44.38619922586042, + "pnlcomm": -44.38619922586042, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.84518996211608, + "entry_time": "2023-03-24T00:00:00", + "exit_price": 92.32190345568543, + "exit_time": "2023-03-25T00:00:00", + "gross_pnl": 47.67134935693491, + "pnl": 47.67134935693491, + "pnlcomm": 47.67134935693491, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32827178627502, + "entry_time": "2023-03-27T00:00:00", + "exit_price": 93.26562867244172, + "exit_time": "2023-03-28T00:00:00", + "gross_pnl": -6.264311383330323, + "pnl": -6.264311383330323, + "pnlcomm": -6.264311383330323, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9489490131078, + "entry_time": "2023-03-30T00:00:00", + "exit_price": 93.54756230484855, + "exit_time": "2023-03-31T00:00:00", + "gross_pnl": 59.86132917407474, + "pnl": 59.86132917407474, + "pnlcomm": 59.86132917407474, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52695826109522, + "entry_time": "2023-04-02T00:00:00", + "exit_price": 93.16120912048845, + "exit_time": "2023-04-03T00:00:00", + "gross_pnl": -36.57491406067663, + "pnl": -36.57491406067663, + "pnlcomm": -36.57491406067663, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73109278013733, + "entry_time": "2023-04-05T00:00:00", + "exit_price": 92.12967158946792, + "exit_time": "2023-04-06T00:00:00", + "gross_pnl": -60.14211906694129, + "pnl": -60.14211906694129, + "pnlcomm": -60.14211906694129, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66144197243285, + "entry_time": "2023-04-08T00:00:00", + "exit_price": 92.35105870140517, + "exit_time": "2023-04-09T00:00:00", + "gross_pnl": -31.038327102768903, + "pnl": -31.038327102768903, + "pnlcomm": -31.038327102768903, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32497954050243, + "entry_time": "2023-04-11T00:00:00", + "exit_price": 92.404028525945, + "exit_time": "2023-04-12T00:00:00", + "gross_pnl": -92.09510145574313, + "pnl": -92.09510145574313, + "pnlcomm": -92.09510145574313, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5596224194739, + "entry_time": "2023-04-14T00:00:00", + "exit_price": 93.06373732644884, + "exit_time": "2023-04-15T00:00:00", + "gross_pnl": 50.4114906974948, + "pnl": 50.4114906974948, + "pnlcomm": 50.4114906974948, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82924854494931, + "entry_time": "2023-04-17T00:00:00", + "exit_price": 92.63616550173667, + "exit_time": "2023-04-18T00:00:00", + "gross_pnl": -19.308304321263847, + "pnl": -19.308304321263847, + "pnlcomm": -19.308304321263847, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.79933273190036, + "entry_time": "2023-04-20T00:00:00", + "exit_price": 92.95120755426662, + "exit_time": "2023-04-21T00:00:00", + "gross_pnl": 15.187482236625272, + "pnl": 15.187482236625272, + "pnlcomm": 15.187482236625272, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56403816854014, + "entry_time": "2023-04-23T00:00:00", + "exit_price": 92.35426808914588, + "exit_time": "2023-04-24T00:00:00", + "gross_pnl": -20.977007939426073, + "pnl": -20.977007939426073, + "pnlcomm": -20.977007939426073, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35865607168631, + "entry_time": "2023-04-26T00:00:00", + "exit_price": 92.90482034285156, + "exit_time": "2023-04-27T00:00:00", + "gross_pnl": -45.3835728834747, + "pnl": -45.3835728834747, + "pnlcomm": -45.3835728834747, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9985787957225, + "entry_time": "2023-04-29T00:00:00", + "exit_price": 92.8768940380532, + "exit_time": "2023-04-30T00:00:00", + "gross_pnl": -12.168475766929987, + "pnl": -12.168475766929987, + "pnlcomm": -12.168475766929987, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86502942650776, + "entry_time": "2023-05-02T00:00:00", + "exit_price": 92.82867955654159, + "exit_time": "2023-05-03T00:00:00", + "gross_pnl": -3.6349869966173287, + "pnl": -3.6349869966173287, + "pnlcomm": -3.6349869966173287, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06669061925808, + "entry_time": "2023-05-05T00:00:00", + "exit_price": 93.05805100493505, + "exit_time": "2023-05-06T00:00:00", + "gross_pnl": -0.8639614323030287, + "pnl": -0.8639614323030287, + "pnlcomm": -0.8639614323030287, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19478081630376, + "entry_time": "2023-05-08T00:00:00", + "exit_price": 92.4726753044577, + "exit_time": "2023-05-09T00:00:00", + "gross_pnl": -72.21055118460669, + "pnl": -72.21055118460669, + "pnlcomm": -72.21055118460669, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8774192059464, + "entry_time": "2023-05-11T00:00:00", + "exit_price": 93.47630925649874, + "exit_time": "2023-05-12T00:00:00", + "gross_pnl": 159.88900505523418, + "pnl": 159.88900505523418, + "pnlcomm": 159.88900505523418, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67940992744533, + "entry_time": "2023-05-14T00:00:00", + "exit_price": 93.83387030747774, + "exit_time": "2023-05-15T00:00:00", + "gross_pnl": 115.4460380032404, + "pnl": 115.4460380032404, + "pnlcomm": 115.4460380032404, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77541066961662, + "entry_time": "2023-05-17T00:00:00", + "exit_price": 93.21806909335821, + "exit_time": "2023-05-18T00:00:00", + "gross_pnl": 44.26584237415909, + "pnl": 44.26584237415909, + "pnlcomm": 44.26584237415909, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2116719393634, + "entry_time": "2023-05-20T00:00:00", + "exit_price": 93.63189068076446, + "exit_time": "2023-05-21T00:00:00", + "gross_pnl": 42.02187414010581, + "pnl": 42.02187414010581, + "pnlcomm": 42.02187414010581, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.31676028980675, + "entry_time": "2023-05-23T00:00:00", + "exit_price": 93.96917376263126, + "exit_time": "2023-05-24T00:00:00", + "gross_pnl": 65.24134728245059, + "pnl": 65.24134728245059, + "pnlcomm": 65.24134728245059, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.3332407570871, + "entry_time": "2023-05-26T00:00:00", + "exit_price": 94.63597205774145, + "exit_time": "2023-05-27T00:00:00", + "gross_pnl": 30.273130065435794, + "pnl": 30.273130065435794, + "pnlcomm": 30.273130065435794, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00130198273088, + "entry_time": "2023-05-29T00:00:00", + "exit_price": 94.05926832590498, + "exit_time": "2023-05-30T00:00:00", + "gross_pnl": 5.79663431741011, + "pnl": 5.79663431741011, + "pnlcomm": 5.79663431741011, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76190103073331, + "entry_time": "2023-06-01T00:00:00", + "exit_price": 94.24963627943364, + "exit_time": "2023-06-02T00:00:00", + "gross_pnl": 148.7735248700332, + "pnl": 148.7735248700332, + "pnlcomm": 148.7735248700332, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.73904226779082, + "entry_time": "2023-06-04T00:00:00", + "exit_price": 94.53198582108524, + "exit_time": "2023-06-05T00:00:00", + "gross_pnl": -20.705644670557888, + "pnl": -20.705644670557888, + "pnlcomm": -20.705644670557888, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29391446442064, + "entry_time": "2023-06-07T00:00:00", + "exit_price": 94.60323551607766, + "exit_time": "2023-06-08T00:00:00", + "gross_pnl": 30.93210516570224, + "pnl": 30.93210516570224, + "pnlcomm": 30.93210516570224, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.17535379161295, + "entry_time": "2023-06-10T00:00:00", + "exit_price": 94.95745054254392, + "exit_time": "2023-06-11T00:00:00", + "gross_pnl": 78.20967509309753, + "pnl": 78.20967509309753, + "pnlcomm": 78.20967509309753, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65432843266518, + "entry_time": "2023-06-13T00:00:00", + "exit_price": 94.33856790601594, + "exit_time": "2023-06-14T00:00:00", + "gross_pnl": -31.576052664924248, + "pnl": -31.576052664924248, + "pnlcomm": -31.576052664924248, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.36956060356385, + "entry_time": "2023-06-16T00:00:00", + "exit_price": 95.2507487739047, + "exit_time": "2023-06-17T00:00:00", + "gross_pnl": 88.11881703408488, + "pnl": 88.11881703408488, + "pnlcomm": 88.11881703408488, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9809276691774, + "entry_time": "2023-06-19T00:00:00", + "exit_price": 94.16338627425559, + "exit_time": "2023-06-20T00:00:00", + "gross_pnl": -81.75413949218182, + "pnl": -81.75413949218182, + "pnlcomm": -81.75413949218182, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95283790294347, + "entry_time": "2023-06-22T00:00:00", + "exit_price": 94.37363985497257, + "exit_time": "2023-06-23T00:00:00", + "gross_pnl": -57.919804797090535, + "pnl": -57.919804797090535, + "pnlcomm": -57.919804797090535, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.41734797456819, + "entry_time": "2023-06-25T00:00:00", + "exit_price": 94.46879833485087, + "exit_time": "2023-06-26T00:00:00", + "gross_pnl": 5.145036028268635, + "pnl": 5.145036028268635, + "pnlcomm": 5.145036028268635, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89779171625213, + "entry_time": "2023-06-28T00:00:00", + "exit_price": 94.56566914846213, + "exit_time": "2023-06-29T00:00:00", + "gross_pnl": 66.78774322100054, + "pnl": 66.78774322100054, + "pnlcomm": 66.78774322100054, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.12295330761386, + "entry_time": "2023-07-01T00:00:00", + "exit_price": 94.47229523041987, + "exit_time": "2023-07-02T00:00:00", + "gross_pnl": 34.934192280601906, + "pnl": 34.934192280601906, + "pnlcomm": 34.934192280601906, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01642931045994, + "entry_time": "2023-07-04T00:00:00", + "exit_price": 94.97899403484826, + "exit_time": "2023-07-05T00:00:00", + "gross_pnl": 96.25647243883151, + "pnl": 96.25647243883151, + "pnlcomm": 96.25647243883151, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29040521639678, + "entry_time": "2023-07-07T00:00:00", + "exit_price": 94.62958711128005, + "exit_time": "2023-07-08T00:00:00", + "gross_pnl": -66.08181051167321, + "pnl": -66.08181051167321, + "pnlcomm": -66.08181051167321, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94114223449, + "entry_time": "2023-07-10T00:00:00", + "exit_price": 94.38592136937638, + "exit_time": "2023-07-11T00:00:00", + "gross_pnl": -55.522086511362545, + "pnl": -55.522086511362545, + "pnlcomm": -55.522086511362545, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.493222435549, + "entry_time": "2023-07-13T00:00:00", + "exit_price": 94.3474523152517, + "exit_time": "2023-07-14T00:00:00", + "gross_pnl": -14.577012029729985, + "pnl": -14.577012029729985, + "pnlcomm": -14.577012029729985, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.84805377401344, + "entry_time": "2023-07-16T00:00:00", + "exit_price": 93.24313248176318, + "exit_time": "2023-07-17T00:00:00", + "gross_pnl": -60.49212922502534, + "pnl": -60.49212922502534, + "pnlcomm": -60.49212922502534, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23716867785055, + "entry_time": "2023-07-19T00:00:00", + "exit_price": 94.3344550507391, + "exit_time": "2023-07-20T00:00:00", + "gross_pnl": 109.72863728885471, + "pnl": 109.72863728885471, + "pnlcomm": 109.72863728885471, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.25058017257405, + "entry_time": "2023-07-22T00:00:00", + "exit_price": 94.26148603669161, + "exit_time": "2023-07-23T00:00:00", + "gross_pnl": 1.0905864117560782, + "pnl": 1.0905864117560782, + "pnlcomm": 1.0905864117560782, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.78124566715695, + "entry_time": "2023-07-25T00:00:00", + "exit_price": 93.30392352510412, + "exit_time": "2023-07-26T00:00:00", + "gross_pnl": -147.73221420528273, + "pnl": -147.73221420528273, + "pnlcomm": -147.73221420528273, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05471403229689, + "entry_time": "2023-07-28T00:00:00", + "exit_price": 93.26889976544973, + "exit_time": "2023-07-29T00:00:00", + "gross_pnl": -78.58142668471544, + "pnl": -78.58142668471544, + "pnlcomm": -78.58142668471544, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.97149252732743, + "entry_time": "2023-07-31T00:00:00", + "exit_price": 92.49652862514738, + "exit_time": "2023-08-01T00:00:00", + "gross_pnl": -147.49639021800505, + "pnl": -147.49639021800505, + "pnlcomm": -147.49639021800505, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49761686858754, + "entry_time": "2023-08-03T00:00:00", + "exit_price": 93.96133483843103, + "exit_time": "2023-08-04T00:00:00", + "gross_pnl": 46.371796984348634, + "pnl": 46.371796984348634, + "pnlcomm": 46.371796984348634, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60373115569557, + "entry_time": "2023-08-06T00:00:00", + "exit_price": 94.43278823558683, + "exit_time": "2023-08-07T00:00:00", + "gross_pnl": 82.90570798912569, + "pnl": 82.90570798912569, + "pnlcomm": 82.90570798912569, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.216186422251, + "entry_time": "2023-08-09T00:00:00", + "exit_price": 93.22790913521419, + "exit_time": "2023-08-10T00:00:00", + "gross_pnl": -98.82772870368086, + "pnl": -98.82772870368086, + "pnlcomm": -98.82772870368086, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53921057943961, + "entry_time": "2023-08-12T00:00:00", + "exit_price": 93.3857390941578, + "exit_time": "2023-08-13T00:00:00", + "gross_pnl": -115.34714852818126, + "pnl": -115.34714852818126, + "pnlcomm": -115.34714852818126, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.03374081752091, + "entry_time": "2023-08-15T00:00:00", + "exit_price": 94.39823678210567, + "exit_time": "2023-08-16T00:00:00", + "gross_pnl": 136.4495964584762, + "pnl": 136.4495964584762, + "pnlcomm": 136.4495964584762, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08940418013472, + "entry_time": "2023-08-18T00:00:00", + "exit_price": 92.65920217896303, + "exit_time": "2023-08-19T00:00:00", + "gross_pnl": -143.02020011716934, + "pnl": -143.02020011716934, + "pnlcomm": -143.02020011716934, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39853539402684, + "entry_time": "2023-08-21T00:00:00", + "exit_price": 93.65048655775455, + "exit_time": "2023-08-22T00:00:00", + "gross_pnl": 25.195116372771054, + "pnl": 25.195116372771054, + "pnlcomm": 25.195116372771054, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.79873760769597, + "entry_time": "2023-08-24T00:00:00", + "exit_price": 93.68828575617101, + "exit_time": "2023-08-25T00:00:00", + "gross_pnl": 88.95481484750434, + "pnl": 88.95481484750434, + "pnlcomm": 88.95481484750434, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87251964203307, + "entry_time": "2023-08-27T00:00:00", + "exit_price": 93.5300255114375, + "exit_time": "2023-08-28T00:00:00", + "gross_pnl": -34.249413059556844, + "pnl": -34.249413059556844, + "pnlcomm": -34.249413059556844, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79086592344467, + "entry_time": "2023-08-30T00:00:00", + "exit_price": 92.57270931229704, + "exit_time": "2023-08-31T00:00:00", + "gross_pnl": -121.81566111476343, + "pnl": -121.81566111476343, + "pnlcomm": -121.81566111476343, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88859692291733, + "entry_time": "2023-09-02T00:00:00", + "exit_price": 93.80271734344691, + "exit_time": "2023-09-03T00:00:00", + "gross_pnl": -8.587957947041502, + "pnl": -8.587957947041502, + "pnlcomm": -8.587957947041502, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04073002158317, + "entry_time": "2023-09-05T00:00:00", + "exit_price": 94.46828834544144, + "exit_time": "2023-09-06T00:00:00", + "gross_pnl": 142.7558323858264, + "pnl": 142.7558323858264, + "pnlcomm": 142.7558323858264, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23692924750449, + "entry_time": "2023-09-08T00:00:00", + "exit_price": 94.43771978777833, + "exit_time": "2023-09-09T00:00:00", + "gross_pnl": 20.079054027384302, + "pnl": 20.079054027384302, + "pnlcomm": 20.079054027384302, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09517649815284, + "entry_time": "2023-09-11T00:00:00", + "exit_price": 94.97835234626153, + "exit_time": "2023-09-12T00:00:00", + "gross_pnl": 88.31758481086922, + "pnl": 88.31758481086922, + "pnlcomm": 88.31758481086922, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79133291522645, + "entry_time": "2023-09-14T00:00:00", + "exit_price": 94.02945945000636, + "exit_time": "2023-09-15T00:00:00", + "gross_pnl": -76.18734652200914, + "pnl": -76.18734652200914, + "pnlcomm": -76.18734652200914, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45235296621496, + "entry_time": "2023-09-17T00:00:00", + "exit_price": 94.63061442838703, + "exit_time": "2023-09-18T00:00:00", + "gross_pnl": 17.826146217207395, + "pnl": 17.826146217207395, + "pnlcomm": 17.826146217207395, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1729530420449, + "entry_time": "2023-09-20T00:00:00", + "exit_price": 93.58327824763774, + "exit_time": "2023-09-21T00:00:00", + "gross_pnl": -58.96747944071592, + "pnl": -58.96747944071592, + "pnlcomm": -58.96747944071592, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.536291527272, + "entry_time": "2023-09-23T00:00:00", + "exit_price": 93.30651397849368, + "exit_time": "2023-09-24T00:00:00", + "gross_pnl": -22.977754877831558, + "pnl": -22.977754877831558, + "pnlcomm": -22.977754877831558, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69842586893596, + "entry_time": "2023-09-26T00:00:00", + "exit_price": 93.16248763742118, + "exit_time": "2023-09-27T00:00:00", + "gross_pnl": -53.59382315147769, + "pnl": -53.59382315147769, + "pnlcomm": -53.59382315147769, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49605102540508, + "entry_time": "2023-09-29T00:00:00", + "exit_price": 94.25313944944546, + "exit_time": "2023-09-30T00:00:00", + "gross_pnl": 75.70884240403757, + "pnl": 75.70884240403757, + "pnlcomm": 75.70884240403757, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8421663218519, + "entry_time": "2023-10-02T00:00:00", + "exit_price": 92.97561455613513, + "exit_time": "2023-10-03T00:00:00", + "gross_pnl": 13.344823428322172, + "pnl": 13.344823428322172, + "pnlcomm": 13.344823428322172, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.01878568439928, + "entry_time": "2023-10-05T00:00:00", + "exit_price": 92.7731623418128, + "exit_time": "2023-10-06T00:00:00", + "gross_pnl": -24.562334258646956, + "pnl": -24.562334258646956, + "pnlcomm": -24.562334258646956, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3031103300392, + "entry_time": "2023-10-08T00:00:00", + "exit_price": 92.82895908639827, + "exit_time": "2023-10-09T00:00:00", + "gross_pnl": -47.41512436409323, + "pnl": -47.41512436409323, + "pnlcomm": -47.41512436409323, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.34460637435383, + "entry_time": "2023-10-11T00:00:00", + "exit_price": 92.32181327562058, + "exit_time": "2023-10-12T00:00:00", + "gross_pnl": -2.2793098733245643, + "pnl": -2.2793098733245643, + "pnlcomm": -2.2793098733245643, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.5260793564055, + "entry_time": "2023-10-14T00:00:00", + "exit_price": 92.2357948297768, + "exit_time": "2023-10-15T00:00:00", + "gross_pnl": 70.97154733712898, + "pnl": 70.97154733712898, + "pnlcomm": 70.97154733712898, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68746434551585, + "entry_time": "2023-10-17T00:00:00", + "exit_price": 91.58592175261929, + "exit_time": "2023-10-18T00:00:00", + "gross_pnl": -10.154259289656409, + "pnl": -10.154259289656409, + "pnlcomm": -10.154259289656409, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.46697080069039, + "entry_time": "2023-10-20T00:00:00", + "exit_price": 91.654447961068, + "exit_time": "2023-10-21T00:00:00", + "gross_pnl": 18.74771603776111, + "pnl": 18.74771603776111, + "pnlcomm": 18.74771603776111, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3612670935331, + "entry_time": "2023-10-23T00:00:00", + "exit_price": 91.01031054901587, + "exit_time": "2023-10-24T00:00:00", + "gross_pnl": -135.09565445172314, + "pnl": -135.09565445172314, + "pnlcomm": -135.09565445172314, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.37919304454006, + "entry_time": "2023-10-26T00:00:00", + "exit_price": 91.41169786096938, + "exit_time": "2023-10-27T00:00:00", + "gross_pnl": -96.74951835706764, + "pnl": -96.74951835706764, + "pnlcomm": -96.74951835706764, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.29381617044329, + "entry_time": "2023-10-29T00:00:00", + "exit_price": 90.70386499802939, + "exit_time": "2023-10-30T00:00:00", + "gross_pnl": -58.99511724139046, + "pnl": -58.99511724139046, + "pnlcomm": -58.99511724139046, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.42981226133158, + "entry_time": "2023-11-01T00:00:00", + "exit_price": 91.13311787546733, + "exit_time": "2023-11-02T00:00:00", + "gross_pnl": -29.669438586424235, + "pnl": -29.669438586424235, + "pnlcomm": -29.669438586424235, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.41698336938477, + "entry_time": "2023-11-04T00:00:00", + "exit_price": 91.39366908316057, + "exit_time": "2023-11-05T00:00:00", + "gross_pnl": -2.331428622419196, + "pnl": -2.331428622419196, + "pnlcomm": -2.331428622419196, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89356698837386, + "entry_time": "2023-11-07T00:00:00", + "exit_price": 91.60226357609555, + "exit_time": "2023-11-08T00:00:00", + "gross_pnl": -29.130341227831025, + "pnl": -29.130341227831025, + "pnlcomm": -29.130341227831025, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.41574363121151, + "entry_time": "2023-11-10T00:00:00", + "exit_price": 91.77307124686526, + "exit_time": "2023-11-11T00:00:00", + "gross_pnl": -64.26723843462554, + "pnl": -64.26723843462554, + "pnlcomm": -64.26723843462554, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32527272706531, + "entry_time": "2023-11-13T00:00:00", + "exit_price": 94.02617500869306, + "exit_time": "2023-11-14T00:00:00", + "gross_pnl": 170.0902281627748, + "pnl": 170.0902281627748, + "pnlcomm": 170.0902281627748, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9453398724905, + "entry_time": "2023-11-16T00:00:00", + "exit_price": 92.0185892574846, + "exit_time": "2023-11-17T00:00:00", + "gross_pnl": -92.67506150059006, + "pnl": -92.67506150059006, + "pnlcomm": -92.67506150059006, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.30963127571127, + "entry_time": "2023-11-19T00:00:00", + "exit_price": 92.25489319248068, + "exit_time": "2023-11-20T00:00:00", + "gross_pnl": -5.473808323058904, + "pnl": -5.473808323058904, + "pnlcomm": -5.473808323058904, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74391567498766, + "entry_time": "2023-11-22T00:00:00", + "exit_price": 93.20889480054281, + "exit_time": "2023-11-23T00:00:00", + "gross_pnl": 46.49791255551463, + "pnl": 46.49791255551463, + "pnlcomm": 46.49791255551463, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11263111652507, + "entry_time": "2023-11-25T00:00:00", + "exit_price": 93.10139698703692, + "exit_time": "2023-11-26T00:00:00", + "gross_pnl": -101.12341294881446, + "pnl": -101.12341294881446, + "pnlcomm": -101.12341294881446, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71015543952899, + "entry_time": "2023-11-28T00:00:00", + "exit_price": 92.47583632063913, + "exit_time": "2023-11-29T00:00:00", + "gross_pnl": -123.43191188898572, + "pnl": -123.43191188898572, + "pnlcomm": -123.43191188898572, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75986386635343, + "entry_time": "2023-12-01T00:00:00", + "exit_price": 94.27037620813209, + "exit_time": "2023-12-02T00:00:00", + "gross_pnl": 151.05123417786643, + "pnl": 151.05123417786643, + "pnlcomm": 151.05123417786643, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44774661355898, + "entry_time": "2023-12-04T00:00:00", + "exit_price": 93.99875783176927, + "exit_time": "2023-12-05T00:00:00", + "gross_pnl": 55.10112182102915, + "pnl": 55.10112182102915, + "pnlcomm": 55.10112182102915, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.58344310898, + "entry_time": "2023-12-07T00:00:00", + "exit_price": 94.14439051922356, + "exit_time": "2023-12-08T00:00:00", + "gross_pnl": 56.0947410243557, + "pnl": 56.0947410243557, + "pnlcomm": 56.0947410243557, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.54039819515215, + "entry_time": "2023-12-10T00:00:00", + "exit_price": 92.9236778577475, + "exit_time": "2023-12-11T00:00:00", + "gross_pnl": 38.32796625953563, + "pnl": 38.32796625953563, + "pnlcomm": 38.32796625953563, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05584126819757, + "entry_time": "2023-12-13T00:00:00", + "exit_price": 93.35601781114134, + "exit_time": "2023-12-14T00:00:00", + "gross_pnl": 130.0176542943774, + "pnl": 130.0176542943774, + "pnlcomm": 130.0176542943774, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81351651597147, + "entry_time": "2023-12-16T00:00:00", + "exit_price": 92.84701543791368, + "exit_time": "2023-12-17T00:00:00", + "gross_pnl": 3.349892194221127, + "pnl": 3.349892194221127, + "pnlcomm": 3.349892194221127, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.72332949821384, + "entry_time": "2023-12-19T00:00:00", + "exit_price": 92.51107159043487, + "exit_time": "2023-12-20T00:00:00", + "gross_pnl": -21.225790777897657, + "pnl": -21.225790777897657, + "pnlcomm": -21.225790777897657, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91369044105626, + "entry_time": "2023-12-22T00:00:00", + "exit_price": 93.12129104458734, + "exit_time": "2023-12-23T00:00:00", + "gross_pnl": -79.23993964689231, + "pnl": -79.23993964689231, + "pnlcomm": -79.23993964689231, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.14884637460801, + "entry_time": "2023-12-25T00:00:00", + "exit_price": 92.89417488264915, + "exit_time": "2023-12-26T00:00:00", + "gross_pnl": 74.53285080411405, + "pnl": 74.53285080411405, + "pnlcomm": 74.53285080411405, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12845985022912, + "entry_time": "2023-12-28T00:00:00", + "exit_price": 93.6597993052993, + "exit_time": "2023-12-29T00:00:00", + "gross_pnl": 53.133945507018154, + "pnl": 53.133945507018154, + "pnlcomm": 53.133945507018154, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96178874818798, + "entry_time": "2023-12-31T00:00:00", + "exit_price": 94.4511703887473, + "exit_time": "2024-01-01T00:00:00", + "gross_pnl": 48.938164055931566, + "pnl": 48.938164055931566, + "pnlcomm": 48.938164055931566, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.89229345893365, + "entry_time": "2024-01-03T00:00:00", + "exit_price": 94.58860576042824, + "exit_time": "2024-01-04T00:00:00", + "gross_pnl": -30.368769850541355, + "pnl": -30.368769850541355, + "pnlcomm": -30.368769850541355, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.04178116383622, + "entry_time": "2024-01-06T00:00:00", + "exit_price": 94.4578576609693, + "exit_time": "2024-01-07T00:00:00", + "gross_pnl": -58.39235028669236, + "pnl": -58.39235028669236, + "pnlcomm": -58.39235028669236, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.86053478009173, + "entry_time": "2024-01-09T00:00:00", + "exit_price": 94.76430023458303, + "exit_time": "2024-01-10T00:00:00", + "gross_pnl": -9.623454550869326, + "pnl": -9.623454550869326, + "pnlcomm": -9.623454550869326, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8053175522895, + "entry_time": "2024-01-12T00:00:00", + "exit_price": 94.40836408730765, + "exit_time": "2024-01-13T00:00:00", + "gross_pnl": -39.69534649818485, + "pnl": -39.69534649818485, + "pnlcomm": -39.69534649818485, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.85612524977265, + "entry_time": "2024-01-15T00:00:00", + "exit_price": 94.40863693697362, + "exit_time": "2024-01-16T00:00:00", + "gross_pnl": -44.74883127990239, + "pnl": -44.74883127990239, + "pnlcomm": -44.74883127990239, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.09196518919535, + "entry_time": "2024-01-18T00:00:00", + "exit_price": 94.91994528712154, + "exit_time": "2024-01-19T00:00:00", + "gross_pnl": -17.201990207381357, + "pnl": -17.201990207381357, + "pnlcomm": -17.201990207381357, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.45747729845408, + "entry_time": "2024-01-21T00:00:00", + "exit_price": 95.40486331313025, + "exit_time": "2024-01-22T00:00:00", + "gross_pnl": -5.261398532383055, + "pnl": -5.261398532383055, + "pnlcomm": -5.261398532383055, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8856295626394, + "entry_time": "2024-01-24T00:00:00", + "exit_price": 95.41673292493975, + "exit_time": "2024-01-25T00:00:00", + "gross_pnl": 53.11033623003567, + "pnl": 53.11033623003567, + "pnlcomm": 53.11033623003567, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.30115153676562, + "entry_time": "2024-01-27T00:00:00", + "exit_price": 94.50993042362319, + "exit_time": "2024-01-28T00:00:00", + "gross_pnl": -79.12211131424272, + "pnl": -79.12211131424272, + "pnlcomm": -79.12211131424272, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8443544450889, + "entry_time": "2024-01-30T00:00:00", + "exit_price": 94.58646684173618, + "exit_time": "2024-01-31T00:00:00", + "gross_pnl": -25.788760335271377, + "pnl": -25.788760335271377, + "pnlcomm": -25.788760335271377, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.51863942815191, + "entry_time": "2024-02-02T00:00:00", + "exit_price": 95.02582579018504, + "exit_time": "2024-02-03T00:00:00", + "gross_pnl": -49.28136379668757, + "pnl": -49.28136379668757, + "pnlcomm": -49.28136379668757, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.64624335712315, + "entry_time": "2024-02-05T00:00:00", + "exit_price": 95.62478266594604, + "exit_time": "2024-02-06T00:00:00", + "gross_pnl": -2.1460691177111357, + "pnl": -2.1460691177111357, + "pnlcomm": -2.1460691177111357, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.97351592845854, + "entry_time": "2024-02-08T00:00:00", + "exit_price": 96.2565162152012, + "exit_time": "2024-02-09T00:00:00", + "gross_pnl": 128.3000286742663, + "pnl": 128.3000286742663, + "pnlcomm": 128.3000286742663, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.32379857764127, + "entry_time": "2024-02-11T00:00:00", + "exit_price": 93.96151236382953, + "exit_time": "2024-02-12T00:00:00", + "gross_pnl": -36.228621381174264, + "pnl": -36.228621381174264, + "pnlcomm": -36.228621381174264, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38409820559012, + "entry_time": "2024-02-14T00:00:00", + "exit_price": 94.76791246698865, + "exit_time": "2024-02-15T00:00:00", + "gross_pnl": 38.38142613985269, + "pnl": 38.38142613985269, + "pnlcomm": 38.38142613985269, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.15204268625024, + "entry_time": "2024-02-17T00:00:00", + "exit_price": 94.14536275879573, + "exit_time": "2024-02-18T00:00:00", + "gross_pnl": -100.66799274545133, + "pnl": -100.66799274545133, + "pnlcomm": -100.66799274545133, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92555424660308, + "entry_time": "2024-02-20T00:00:00", + "exit_price": 95.28378367357755, + "exit_time": "2024-02-21T00:00:00", + "gross_pnl": 35.82294269744608, + "pnl": 35.82294269744608, + "pnlcomm": 35.82294269744608, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6447277617356, + "entry_time": "2024-02-23T00:00:00", + "exit_price": 93.94359099606793, + "exit_time": "2024-02-24T00:00:00", + "gross_pnl": -70.11367656676697, + "pnl": -70.11367656676697, + "pnlcomm": -70.11367656676697, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6316942698782, + "entry_time": "2024-02-26T00:00:00", + "exit_price": 93.61709548381037, + "exit_time": "2024-02-27T00:00:00", + "gross_pnl": -101.45987860678218, + "pnl": -101.45987860678218, + "pnlcomm": -101.45987860678218, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99406223655019, + "entry_time": "2024-02-29T00:00:00", + "exit_price": 93.51586581649707, + "exit_time": "2024-03-01T00:00:00", + "gross_pnl": 52.180357994687654, + "pnl": 52.180357994687654, + "pnlcomm": 52.180357994687654, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88355978598187, + "entry_time": "2024-03-03T00:00:00", + "exit_price": 93.59210068726338, + "exit_time": "2024-03-04T00:00:00", + "gross_pnl": 70.85409012815092, + "pnl": 70.85409012815092, + "pnlcomm": 70.85409012815092, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.20766791171343, + "entry_time": "2024-03-06T00:00:00", + "exit_price": 93.03526629028748, + "exit_time": "2024-03-07T00:00:00", + "gross_pnl": -17.240162142594784, + "pnl": -17.240162142594784, + "pnlcomm": -17.240162142594784, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73917319444821, + "entry_time": "2024-03-09T00:00:00", + "exit_price": 93.21019311262798, + "exit_time": "2024-03-10T00:00:00", + "gross_pnl": -52.89800818202366, + "pnl": -52.89800818202366, + "pnlcomm": -52.89800818202366, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87224010683994, + "entry_time": "2024-03-12T00:00:00", + "exit_price": 93.42438731231145, + "exit_time": "2024-03-13T00:00:00", + "gross_pnl": -44.78527945284867, + "pnl": -44.78527945284867, + "pnlcomm": -44.78527945284867, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32218202085551, + "entry_time": "2024-03-15T00:00:00", + "exit_price": 92.84840341954816, + "exit_time": "2024-03-16T00:00:00", + "gross_pnl": -47.37786013073446, + "pnl": -47.37786013073446, + "pnlcomm": -47.37786013073446, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74542752078266, + "entry_time": "2024-03-18T00:00:00", + "exit_price": 93.97099698374726, + "exit_time": "2024-03-19T00:00:00", + "gross_pnl": 22.556946296460012, + "pnl": 22.556946296460012, + "pnlcomm": 22.556946296460012, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5673298293271, + "entry_time": "2024-03-21T00:00:00", + "exit_price": 90.9938401219299, + "exit_time": "2024-03-22T00:00:00", + "gross_pnl": -157.34897073971865, + "pnl": -157.34897073971865, + "pnlcomm": -157.34897073971865, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89305134977978, + "entry_time": "2024-03-24T00:00:00", + "exit_price": 92.62217998545916, + "exit_time": "2024-03-25T00:00:00", + "gross_pnl": -27.087136432062664, + "pnl": -27.087136432062664, + "pnlcomm": -27.087136432062664, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36509094658045, + "entry_time": "2024-03-27T00:00:00", + "exit_price": 92.88634389481254, + "exit_time": "2024-03-28T00:00:00", + "gross_pnl": 52.12529482320889, + "pnl": 52.12529482320889, + "pnlcomm": 52.12529482320889, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09706919037085, + "entry_time": "2024-03-30T00:00:00", + "exit_price": 92.26411816919232, + "exit_time": "2024-03-31T00:00:00", + "gross_pnl": -83.29510211785305, + "pnl": -83.29510211785305, + "pnlcomm": -83.29510211785305, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87466770876311, + "entry_time": "2024-04-02T00:00:00", + "exit_price": 92.60479889553623, + "exit_time": "2024-04-03T00:00:00", + "gross_pnl": -26.98688132268785, + "pnl": -26.98688132268785, + "pnlcomm": -26.98688132268785, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20308651861096, + "entry_time": "2024-04-05T00:00:00", + "exit_price": 92.03254850546956, + "exit_time": "2024-04-06T00:00:00", + "gross_pnl": -17.053801314139605, + "pnl": -17.053801314139605, + "pnlcomm": -17.053801314139605, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.38853458659054, + "entry_time": "2024-04-08T00:00:00", + "exit_price": 92.15112623454131, + "exit_time": "2024-04-09T00:00:00", + "gross_pnl": -23.740835204922917, + "pnl": -23.740835204922917, + "pnlcomm": -23.740835204922917, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96842409215192, + "entry_time": "2024-04-11T00:00:00", + "exit_price": 91.88812859002927, + "exit_time": "2024-04-12T00:00:00", + "gross_pnl": -8.029550212265235, + "pnl": -8.029550212265235, + "pnlcomm": -8.029550212265235, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24664780939709, + "entry_time": "2024-04-14T00:00:00", + "exit_price": 92.55850895917358, + "exit_time": "2024-04-15T00:00:00", + "gross_pnl": 31.186114977649027, + "pnl": 31.186114977649027, + "pnlcomm": 31.186114977649027, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87161322114831, + "entry_time": "2024-04-17T00:00:00", + "exit_price": 92.00535793552656, + "exit_time": "2024-04-18T00:00:00", + "gross_pnl": -86.62552856217474, + "pnl": -86.62552856217474, + "pnlcomm": -86.62552856217474, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.44802861400582, + "entry_time": "2024-04-20T00:00:00", + "exit_price": 93.06090359266081, + "exit_time": "2024-04-21T00:00:00", + "gross_pnl": 61.28749786549861, + "pnl": 61.28749786549861, + "pnlcomm": 61.28749786549861, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86729712174954, + "entry_time": "2024-04-23T00:00:00", + "exit_price": 91.52050959132679, + "exit_time": "2024-04-24T00:00:00", + "gross_pnl": -234.6787530422759, + "pnl": -234.6787530422759, + "pnlcomm": -234.6787530422759, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.61545833641875, + "entry_time": "2024-04-26T00:00:00", + "exit_price": 93.11576558511285, + "exit_time": "2024-04-27T00:00:00", + "gross_pnl": 50.03072486940994, + "pnl": 50.03072486940994, + "pnlcomm": 50.03072486940994, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.83965947403613, + "entry_time": "2024-04-29T00:00:00", + "exit_price": 92.12256163749144, + "exit_time": "2024-04-30T00:00:00", + "gross_pnl": -71.70978365446814, + "pnl": -71.70978365446814, + "pnlcomm": -71.70978365446814, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01797419460767, + "entry_time": "2024-05-02T00:00:00", + "exit_price": 93.19504665832812, + "exit_time": "2024-05-03T00:00:00", + "gross_pnl": 117.70724637204495, + "pnl": 117.70724637204495, + "pnlcomm": 117.70724637204495, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.52501223027797, + "entry_time": "2024-05-05T00:00:00", + "exit_price": 93.70543373709387, + "exit_time": "2024-05-06T00:00:00", + "gross_pnl": -81.95784931840961, + "pnl": -81.95784931840961, + "pnlcomm": -81.95784931840961, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.76145907090127, + "entry_time": "2024-05-08T00:00:00", + "exit_price": 93.99231970762736, + "exit_time": "2024-05-09T00:00:00", + "gross_pnl": 23.086063672609214, + "pnl": 23.086063672609214, + "pnlcomm": 23.086063672609214, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.72601264375818, + "entry_time": "2024-05-11T00:00:00", + "exit_price": 94.17294252688178, + "exit_time": "2024-05-12T00:00:00", + "gross_pnl": 144.69298831236017, + "pnl": 144.69298831236017, + "pnlcomm": 144.69298831236017, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66991995260973, + "entry_time": "2024-05-14T00:00:00", + "exit_price": 93.29227941579406, + "exit_time": "2024-05-15T00:00:00", + "gross_pnl": -37.76405368156759, + "pnl": -37.76405368156759, + "pnlcomm": -37.76405368156759, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05260425345361, + "entry_time": "2024-05-17T00:00:00", + "exit_price": 93.08641894302396, + "exit_time": "2024-05-18T00:00:00", + "gross_pnl": 3.3814689570348833, + "pnl": 3.3814689570348833, + "pnlcomm": 3.3814689570348833, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89786622090341, + "entry_time": "2024-05-20T00:00:00", + "exit_price": 93.19281076082636, + "exit_time": "2024-05-21T00:00:00", + "gross_pnl": 29.494453992295178, + "pnl": 29.494453992295178, + "pnlcomm": 29.494453992295178, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00268172437694, + "entry_time": "2024-05-23T00:00:00", + "exit_price": 93.8031782169886, + "exit_time": "2024-05-24T00:00:00", + "gross_pnl": 80.04964926116571, + "pnl": 80.04964926116571, + "pnlcomm": 80.04964926116571, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30303744020942, + "entry_time": "2024-05-26T00:00:00", + "exit_price": 93.96047444085842, + "exit_time": "2024-05-27T00:00:00", + "gross_pnl": -34.25629993510029, + "pnl": -34.25629993510029, + "pnlcomm": -34.25629993510029, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53102238294964, + "entry_time": "2024-05-29T00:00:00", + "exit_price": 93.55135190498416, + "exit_time": "2024-05-30T00:00:00", + "gross_pnl": 2.0329522034515435, + "pnl": 2.0329522034515435, + "pnlcomm": 2.0329522034515435, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73320965755093, + "entry_time": "2024-06-01T00:00:00", + "exit_price": 93.83108861382613, + "exit_time": "2024-06-02T00:00:00", + "gross_pnl": 9.78789562751956, + "pnl": 9.78789562751956, + "pnlcomm": 9.78789562751956, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66116571648418, + "entry_time": "2024-06-04T00:00:00", + "exit_price": 93.37760682748707, + "exit_time": "2024-06-05T00:00:00", + "gross_pnl": 71.64411110028936, + "pnl": 71.64411110028936, + "pnlcomm": 71.64411110028936, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73832896665387, + "entry_time": "2024-06-07T00:00:00", + "exit_price": 93.55125645985115, + "exit_time": "2024-06-08T00:00:00", + "gross_pnl": -18.707250680272125, + "pnl": -18.707250680272125, + "pnlcomm": -18.707250680272125, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05801072220544, + "entry_time": "2024-06-10T00:00:00", + "exit_price": 93.19615016955767, + "exit_time": "2024-06-11T00:00:00", + "gross_pnl": -86.18605526477694, + "pnl": -86.18605526477694, + "pnlcomm": -86.18605526477694, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71612053106102, + "entry_time": "2024-06-13T00:00:00", + "exit_price": 92.35363412291727, + "exit_time": "2024-06-14T00:00:00", + "gross_pnl": -36.24864081437522, + "pnl": -36.24864081437522, + "pnlcomm": -36.24864081437522, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89683728827593, + "entry_time": "2024-06-16T00:00:00", + "exit_price": 93.45394449656699, + "exit_time": "2024-06-17T00:00:00", + "gross_pnl": 55.71072082910575, + "pnl": 55.71072082910575, + "pnlcomm": 55.71072082910575, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64711251538864, + "entry_time": "2024-06-19T00:00:00", + "exit_price": 94.20425342905766, + "exit_time": "2024-06-20T00:00:00", + "gross_pnl": 55.71409136690164, + "pnl": 55.71409136690164, + "pnlcomm": 55.71409136690164, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27286775878677, + "entry_time": "2024-06-22T00:00:00", + "exit_price": 93.11098684044114, + "exit_time": "2024-06-23T00:00:00", + "gross_pnl": -16.188091834563068, + "pnl": -16.188091834563068, + "pnlcomm": -16.188091834563068, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82344576152076, + "entry_time": "2024-06-25T00:00:00", + "exit_price": 93.85991046136218, + "exit_time": "2024-06-26T00:00:00", + "gross_pnl": 3.6464699841417314, + "pnl": 3.6464699841417314, + "pnlcomm": 3.6464699841417314, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76944869834962, + "entry_time": "2024-06-28T00:00:00", + "exit_price": 94.49443525385506, + "exit_time": "2024-06-29T00:00:00", + "gross_pnl": 172.49865555054384, + "pnl": 172.49865555054384, + "pnlcomm": 172.49865555054384, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26714007172913, + "entry_time": "2024-07-01T00:00:00", + "exit_price": 93.55312747617486, + "exit_time": "2024-07-02T00:00:00", + "gross_pnl": -71.40125955542658, + "pnl": -71.40125955542658, + "pnlcomm": -71.40125955542658, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21338289364272, + "entry_time": "2024-07-04T00:00:00", + "exit_price": 93.50082066300278, + "exit_time": "2024-07-05T00:00:00", + "gross_pnl": -71.25622306399322, + "pnl": -71.25622306399322, + "pnlcomm": -71.25622306399322, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2831851440446, + "entry_time": "2024-07-07T00:00:00", + "exit_price": 92.64838687037759, + "exit_time": "2024-07-08T00:00:00", + "gross_pnl": -63.47982736670019, + "pnl": -63.47982736670019, + "pnlcomm": -63.47982736670019, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7216517557643, + "entry_time": "2024-07-10T00:00:00", + "exit_price": 92.97199380174195, + "exit_time": "2024-07-11T00:00:00", + "gross_pnl": -74.96579540223536, + "pnl": -74.96579540223536, + "pnlcomm": -74.96579540223536, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55110234448432, + "entry_time": "2024-07-13T00:00:00", + "exit_price": 92.47254018419862, + "exit_time": "2024-07-14T00:00:00", + "gross_pnl": -107.85621602856992, + "pnl": -107.85621602856992, + "pnlcomm": -107.85621602856992, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.35333984916059, + "entry_time": "2024-07-16T00:00:00", + "exit_price": 92.55290357280875, + "exit_time": "2024-07-17T00:00:00", + "gross_pnl": 19.956372364815422, + "pnl": 19.956372364815422, + "pnlcomm": 19.956372364815422, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.92761668682888, + "entry_time": "2024-07-19T00:00:00", + "exit_price": 92.52405415324874, + "exit_time": "2024-07-20T00:00:00", + "gross_pnl": 59.64374664198573, + "pnl": 59.64374664198573, + "pnlcomm": 59.64374664198573, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01759216619796, + "entry_time": "2024-07-22T00:00:00", + "exit_price": 91.9301791723341, + "exit_time": "2024-07-23T00:00:00", + "gross_pnl": -8.741299386385037, + "pnl": -8.741299386385037, + "pnlcomm": -8.741299386385037, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.98789247555584, + "entry_time": "2024-07-25T00:00:00", + "exit_price": 92.13492749804534, + "exit_time": "2024-07-26T00:00:00", + "gross_pnl": 14.703502248950429, + "pnl": 14.703502248950429, + "pnlcomm": 14.703502248950429, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.88900920001714, + "entry_time": "2024-07-28T00:00:00", + "exit_price": 91.63316803265334, + "exit_time": "2024-07-29T00:00:00", + "gross_pnl": -25.58411673637977, + "pnl": -25.58411673637977, + "pnlcomm": -25.58411673637977, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.85577813730865, + "entry_time": "2024-07-31T00:00:00", + "exit_price": 92.25060393364089, + "exit_time": "2024-08-01T00:00:00", + "gross_pnl": 39.48257963322419, + "pnl": 39.48257963322419, + "pnlcomm": 39.48257963322419, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37992029678232, + "entry_time": "2024-08-03T00:00:00", + "exit_price": 91.2161626045396, + "exit_time": "2024-08-04T00:00:00", + "gross_pnl": -16.375769224271153, + "pnl": -16.375769224271153, + "pnlcomm": -16.375769224271153, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.94097148564506, + "entry_time": "2024-08-06T00:00:00", + "exit_price": 91.61411385344917, + "exit_time": "2024-08-07T00:00:00", + "gross_pnl": -32.6857632195896, + "pnl": -32.6857632195896, + "pnlcomm": -32.6857632195896, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.26633312852945, + "entry_time": "2024-08-09T00:00:00", + "exit_price": 92.57486927906898, + "exit_time": "2024-08-10T00:00:00", + "gross_pnl": 30.85361505395241, + "pnl": 30.85361505395241, + "pnlcomm": 30.85361505395241, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25460128509323, + "entry_time": "2024-08-12T00:00:00", + "exit_price": 92.93806274853755, + "exit_time": "2024-08-13T00:00:00", + "gross_pnl": -31.653853655568298, + "pnl": -31.653853655568298, + "pnlcomm": -31.653853655568298, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88821464003595, + "entry_time": "2024-08-15T00:00:00", + "exit_price": 92.53437593350753, + "exit_time": "2024-08-16T00:00:00", + "gross_pnl": -35.38387065284212, + "pnl": -35.38387065284212, + "pnlcomm": -35.38387065284212, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.55582558991509, + "entry_time": "2024-08-18T00:00:00", + "exit_price": 92.57746904834741, + "exit_time": "2024-08-19T00:00:00", + "gross_pnl": 2.1643458432322404, + "pnl": 2.1643458432322404, + "pnlcomm": 2.1643458432322404, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35186779566517, + "entry_time": "2024-08-21T00:00:00", + "exit_price": 93.8222066824917, + "exit_time": "2024-08-22T00:00:00", + "gross_pnl": 47.0338886826525, + "pnl": 47.0338886826525, + "pnlcomm": 47.0338886826525, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33239215677628, + "entry_time": "2024-08-24T00:00:00", + "exit_price": 92.65684927729922, + "exit_time": "2024-08-25T00:00:00", + "gross_pnl": -67.55428794770637, + "pnl": -67.55428794770637, + "pnlcomm": -67.55428794770637, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07995330778445, + "entry_time": "2024-08-27T00:00:00", + "exit_price": 93.14274907856505, + "exit_time": "2024-08-28T00:00:00", + "gross_pnl": 6.279577078059617, + "pnl": 6.279577078059617, + "pnlcomm": 6.279577078059617, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.31638915313648, + "entry_time": "2024-08-30T00:00:00", + "exit_price": 92.80125655346451, + "exit_time": "2024-08-31T00:00:00", + "gross_pnl": -151.5132599671972, + "pnl": -151.5132599671972, + "pnlcomm": -151.5132599671972, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86908900365832, + "entry_time": "2024-09-02T00:00:00", + "exit_price": 92.43258549076677, + "exit_time": "2024-09-03T00:00:00", + "gross_pnl": -43.6503512891548, + "pnl": -43.6503512891548, + "pnlcomm": -43.6503512891548, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.7418385386059, + "entry_time": "2024-09-05T00:00:00", + "exit_price": 93.04661736537737, + "exit_time": "2024-09-06T00:00:00", + "gross_pnl": 30.477882677146795, + "pnl": 30.477882677146795, + "pnlcomm": 30.477882677146795, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.18409149189988, + "entry_time": "2024-09-08T00:00:00", + "exit_price": 92.27288236124933, + "exit_time": "2024-09-09T00:00:00", + "gross_pnl": 108.87908693494524, + "pnl": 108.87908693494524, + "pnlcomm": 108.87908693494524, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66757472286285, + "entry_time": "2024-09-11T00:00:00", + "exit_price": 91.66108329653197, + "exit_time": "2024-09-12T00:00:00", + "gross_pnl": -100.64914263308822, + "pnl": -100.64914263308822, + "pnlcomm": -100.64914263308822, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0113429588981, + "entry_time": "2024-09-14T00:00:00", + "exit_price": 92.01542580767834, + "exit_time": "2024-09-15T00:00:00", + "gross_pnl": 100.40828487802429, + "pnl": 100.40828487802429, + "pnlcomm": 100.40828487802429, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87145951112797, + "entry_time": "2024-09-17T00:00:00", + "exit_price": 91.58043482842866, + "exit_time": "2024-09-18T00:00:00", + "gross_pnl": 70.89753173006983, + "pnl": 70.89753173006983, + "pnlcomm": 70.89753173006983, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28456359684716, + "entry_time": "2024-09-20T00:00:00", + "exit_price": 91.42689177563531, + "exit_time": "2024-09-21T00:00:00", + "gross_pnl": 114.23281787881479, + "pnl": 114.23281787881479, + "pnlcomm": 114.23281787881479, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.10394740945229, + "entry_time": "2024-09-23T00:00:00", + "exit_price": 91.5888902773369, + "exit_time": "2024-09-24T00:00:00", + "gross_pnl": 148.49428678846124, + "pnl": 148.49428678846124, + "pnlcomm": 148.49428678846124, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05233318851361, + "entry_time": "2024-09-26T00:00:00", + "exit_price": 91.20379964517136, + "exit_time": "2024-09-27T00:00:00", + "gross_pnl": 15.146645665774372, + "pnl": 15.146645665774372, + "pnlcomm": 15.146645665774372, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93054848304011, + "entry_time": "2024-09-29T00:00:00", + "exit_price": 91.4470753529935, + "exit_time": "2024-09-30T00:00:00", + "gross_pnl": 51.652686995338115, + "pnl": 51.652686995338115, + "pnlcomm": 51.652686995338115, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55093725008568, + "entry_time": "2024-10-02T00:00:00", + "exit_price": 90.1771270171211, + "exit_time": "2024-10-03T00:00:00", + "gross_pnl": -137.3810232964587, + "pnl": -137.3810232964587, + "pnlcomm": -137.3810232964587, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.51951955539236, + "entry_time": "2024-10-05T00:00:00", + "exit_price": 90.35054775405881, + "exit_time": "2024-10-06T00:00:00", + "gross_pnl": -16.897180133355505, + "pnl": -16.897180133355505, + "pnlcomm": -16.897180133355505, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20200706252784, + "entry_time": "2024-10-08T00:00:00", + "exit_price": 91.07198645570766, + "exit_time": "2024-10-09T00:00:00", + "gross_pnl": -13.002060682018168, + "pnl": -13.002060682018168, + "pnlcomm": -13.002060682018168, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.13850851279538, + "entry_time": "2024-10-11T00:00:00", + "exit_price": 90.2608758916971, + "exit_time": "2024-10-12T00:00:00", + "gross_pnl": -87.76326210982859, + "pnl": -87.76326210982859, + "pnlcomm": -87.76326210982859, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93035699558081, + "entry_time": "2024-10-14T00:00:00", + "exit_price": 90.52157669994283, + "exit_time": "2024-10-15T00:00:00", + "gross_pnl": -40.87802956379818, + "pnl": -40.87802956379818, + "pnlcomm": -40.87802956379818, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49395863364698, + "entry_time": "2024-10-17T00:00:00", + "exit_price": 89.86316250689507, + "exit_time": "2024-10-18T00:00:00", + "gross_pnl": -63.079612675191754, + "pnl": -63.079612675191754, + "pnlcomm": -63.079612675191754, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.18352844268802, + "entry_time": "2024-10-20T00:00:00", + "exit_price": 88.93546496698286, + "exit_time": "2024-10-21T00:00:00", + "gross_pnl": -124.80634757051519, + "pnl": -124.80634757051519, + "pnlcomm": -124.80634757051519, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.8113095296125, + "entry_time": "2024-10-23T00:00:00", + "exit_price": 89.54696410392557, + "exit_time": "2024-10-24T00:00:00", + "gross_pnl": -26.43454256869262, + "pnl": -26.43454256869262, + "pnlcomm": -26.43454256869262, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.0801204143829, + "entry_time": "2024-10-26T00:00:00", + "exit_price": 89.23016998477505, + "exit_time": "2024-10-27T00:00:00", + "gross_pnl": 15.004957039214162, + "pnl": 15.004957039214162, + "pnlcomm": 15.004957039214162, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.84774198158706, + "entry_time": "2024-10-29T00:00:00", + "exit_price": 89.88558944915762, + "exit_time": "2024-10-30T00:00:00", + "gross_pnl": 3.784746757055757, + "pnl": 3.784746757055757, + "pnlcomm": 3.784746757055757, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.52000332438061, + "entry_time": "2024-11-01T00:00:00", + "exit_price": 88.86871340352687, + "exit_time": "2024-11-02T00:00:00", + "gross_pnl": 34.87100791462581, + "pnl": 34.87100791462581, + "pnlcomm": 34.87100791462581, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.58373696827199, + "entry_time": "2024-11-04T00:00:00", + "exit_price": 88.82208371804109, + "exit_time": "2024-11-05T00:00:00", + "gross_pnl": -76.1653250230907, + "pnl": -76.1653250230907, + "pnlcomm": -76.1653250230907, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32832910147937, + "entry_time": "2024-11-07T00:00:00", + "exit_price": 89.06529443738525, + "exit_time": "2024-11-08T00:00:00", + "gross_pnl": -26.303466409412124, + "pnl": -26.303466409412124, + "pnlcomm": -26.303466409412124, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45977666376373, + "entry_time": "2024-11-10T00:00:00", + "exit_price": 89.24686599676619, + "exit_time": "2024-11-11T00:00:00", + "gross_pnl": -121.29106669975442, + "pnl": -121.29106669975442, + "pnlcomm": -121.29106669975442, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.21043430906948, + "entry_time": "2024-11-13T00:00:00", + "exit_price": 88.4518561142622, + "exit_time": "2024-11-14T00:00:00", + "gross_pnl": -75.8578194807285, + "pnl": -75.8578194807285, + "pnlcomm": -75.8578194807285, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.80819601768098, + "entry_time": "2024-11-16T00:00:00", + "exit_price": 88.9586155221746, + "exit_time": "2024-11-17T00:00:00", + "gross_pnl": 15.041950449361252, + "pnl": 15.041950449361252, + "pnlcomm": 15.041950449361252, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.14254378792333, + "entry_time": "2024-11-19T00:00:00", + "exit_price": 88.6718045936633, + "exit_time": "2024-11-20T00:00:00", + "gross_pnl": -47.073919426003386, + "pnl": -47.073919426003386, + "pnlcomm": -47.073919426003386, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.3689677842857, + "entry_time": "2024-11-22T00:00:00", + "exit_price": 88.87620295869029, + "exit_time": "2024-11-23T00:00:00", + "gross_pnl": -49.276482559541535, + "pnl": -49.276482559541535, + "pnlcomm": -49.276482559541535, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.06997514477665, + "entry_time": "2024-11-25T00:00:00", + "exit_price": 88.79230048470953, + "exit_time": "2024-11-26T00:00:00", + "gross_pnl": -27.767466006712027, + "pnl": -27.767466006712027, + "pnlcomm": -27.767466006712027, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.69842658289039, + "entry_time": "2024-11-28T00:00:00", + "exit_price": 88.84366945841847, + "exit_time": "2024-11-29T00:00:00", + "gross_pnl": -85.47571244719165, + "pnl": -85.47571244719165, + "pnlcomm": -85.47571244719165, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.75521347785289, + "entry_time": "2024-12-01T00:00:00", + "exit_price": 89.14459057740478, + "exit_time": "2024-12-02T00:00:00", + "gross_pnl": -61.06229004481065, + "pnl": -61.06229004481065, + "pnlcomm": -61.06229004481065, + "size": 100 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.78540826994568, + "entry_time": "2024-12-04T00:00:00", + "exit_price": 89.0389294134589, + "exit_time": "2024-12-05T00:00:00", + "gross_pnl": 25.35211435132254, + "pnl": 25.35211435132254, + "pnlcomm": 25.35211435132254, + "size": 100 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.11917253451473, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.54841534502786, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.03201587878578, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.94550278474797, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.67183298908238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.86549713479145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.19160897741419, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.48697641782272, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.74505140134526, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.43249701182592, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.36317339817481, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.3184784020995, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.59194698786014, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.21300773889088, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.93323693635863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.01041702546699, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.12882215455511, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.82503838919212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.20974209562837, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.28418162139361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.91262465479313, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.47079432451613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.41396612142576, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.74208634353057, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.96112016066533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.14757933275934, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.33794797010773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.95774776632322, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.39809150990904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.29624163714647, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.98044425919083, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.71415014911958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.68703409584347, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.19660477578049, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.09913803201934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.13975001075532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.7525000464393, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.67014960303162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.16172259245428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.99277550738104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.726000665382, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.27597137389321, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.96674656359579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.01407453019127, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.01883446140224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.33686580554885, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.61379453469056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.44418682978016, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.1261570487614, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.90367229199478, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.48715448535594, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.53898885220806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.13695584567007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.74920846022493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.28346179234327, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.39446913633991, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.38048314487808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.86853857797571, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.78335766752544, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.08258048792489, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.04409706752067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.00584315640894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17754603801194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.91386750387461, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.07278397148802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.84957817071898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.66685696016805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.29703959359377, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.16284479663989, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.59827392536462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.02427769637677, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.02034152325665, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.10227360972624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.55074957264794, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.4752285310497, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.78482968977629, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.64550269913406, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.75829920829567, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.28405624956508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.40750734980367, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.9736108084372, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.11719582995507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.4244273841596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.46803368609852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.65390080108091, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.55529329412784, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.84475344760442, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 101.34547532849058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.83286932713185, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.1414110724743, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.70880723169135, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.37107171120154, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17212988349165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.88968353827181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.17974473578754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.64495810760246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86042757757674, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.42922022261914, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.67123710700702, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.1262468099545, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.99803204217791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.0746490327229, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.68852164950059, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.90683245619206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.69867095887889, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.58028409299915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.78930171959787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.44349309161046, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.63928948741085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.8801021064717, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.88804895153031, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.9129584357738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.35911188288489, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.55107978610341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.24566283787111, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.50854335078685, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.85972377687798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.94180161552265, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.42256786175979, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.39260868907034, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.47598985042309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.2217481384577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.43771261461686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.25556396259081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.27520136851216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.22895283520214, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.84721164221584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.21690016032666, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.98012439288168, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.42241300564716, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5234973647714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.84780174120549, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.78357735159078, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.5180376571157, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.07885735340791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.46287786089891, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.7806750796624, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.99007562374577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.3160405598432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.69515591162462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.9307950005457, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.49497584845733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.05277773908539, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.63017059410102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.95560584181007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.85704345214471, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.34581983849665, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.55148937480453, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.83406196186097, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.25669377064881, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.51637945271536, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.57103396676897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.43830185841739, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.4155507445711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.92267680402585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.75883349843212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.974264479532, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.70988332181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.21365266173218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.08294324004585, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.11928874045202, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.31180164071337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.00054275724281, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.65255133629894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.96503242935937, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.79138811772025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.47378044689604, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.31284487928606, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.73200506980342, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.3363427106496, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.56611574901736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.13272204200155, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.89963627791985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.38755792776327, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.35474381234252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.97868642263799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.11962753041762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.25728100943367, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.076645155786, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.1361736846976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.95761891143941, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.38251520181134, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.58405172820402, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.1825648349693, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.31778631274507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.92748490697555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.11485299409067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.46828746700024, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.7892083341232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.2850707768965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.61528686513479, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.16045065160826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98923853245553, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.78083136801966, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98736762370623, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.41242668783207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.7821059253462, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.01676230346942, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.90986422948514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.85698353324744, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.72982041802001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.60761748093444, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.0385605171193, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.09198940082088, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.21597248424331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.490691270523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.2706953210234, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.23704650718707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.30522444084696, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.82731858826378, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.91407429365688, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.5460351903365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.93028933684711, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.0553633238757, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.47484452500944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.10094020807114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.01428360585088, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.38292648890776, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.48513559668872, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.27497370614257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.14886606297294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.29611163730506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.23350982317787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.79948982072462, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.98472225444857, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.71079305814114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.3396263042363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.98172498582129, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.42795373397291, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.6321305493393, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.76479352938595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.48958247666039, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.73111789636548, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.61885876679554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.85401562603096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.49175141105385, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.84289871423181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.99377199128872, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.76186428614056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.48850513355184, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.12395315196963, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.53863571252707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.6026762767146, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.09752132137899, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.49274636123849, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.82226372897985, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.79148532437996, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.11483711173116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.80033950220172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.63729064888537, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.11575917668634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.28032546622858, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.53344904132359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.29557459823668, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.01730754421833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.07935604760307, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.79620422510413, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.24797305894252, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.19373825703377, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.40514794332339, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.55648566288775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.55716667120137, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.91494018138198, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.48501201892987, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.90008526748946, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.83721845974864, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.26504549069784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.06840340797214, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.26053581327312, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.42454996605802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.94825682250637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.05109746301979, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.1969266603545, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.27193710609464, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.97039812035842, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.34802647272141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.07904244701469, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.79316819026657, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.5721771606179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.6253449835299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.88599336671724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9167314813735, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.23555143341264, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.69172330670986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.40326355089037, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.32320287324674, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.32022315669315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.22613575397045, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.08195298394907, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.5883765126535, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6323490375275, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.0747399163529, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.55723413541229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.78282068603487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.66145085922012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.46346097050873, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.00404625454874, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.66092881844988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.49919123199935, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.97621398907071, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.41257974165285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.05124864668421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.01899188310071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.2559389154428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.12609495739093, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.25576346468043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.47050530514431, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72410136704386, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.19884636287922, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.86432033375576, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.34050558738045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.10587138419956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.72930751574246, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2563942182136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.59980860135867, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.54277270362402, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.92591784638046, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.14258894906092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11423308566697, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.03147452036931, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.97245173381131, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.49318704896336, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.68468709145579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.32003795658395, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26674166444458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26630934814936, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.4153331981033, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.36350758058099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.16332285120929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.34043899579565, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.74219820454567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.55413171456674, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.58180279933771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02408626223293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87657341045227, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.55590567361484, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.08074161986468, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.80457382221171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8131686939551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.25793142134573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.95253144170447, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.14743781912107, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8783564574023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.9764387193147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.94516537050167, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89603764932446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.63800292429943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.24337208101042, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.59556244009269, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28446378378608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13025499622808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.23383791902404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3328854638381, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96067846320523, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.94965457520627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.16625059748041, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.8269642033066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.81310669049036, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2555442210953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.45622372930102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.83947343135847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.43135259957857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.53295655650527, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78816229160894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.9413213129086, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.40648296911729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.30279435197399, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.65263067129818, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.8239628759463, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.7795218814571, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.36068460994301, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.47451059527033, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.09791235411565, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64232209133355, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.9960341944844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.86057544771678, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.03722443992689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.02540027670304, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.23831571579666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61642884685872, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9587336040414, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78520963834742, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.12207131713245, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.030634236321, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2580641252632, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57471719502651, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.16033087447512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64298714231596, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75555986268627, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29534460790408, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8204301569652, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.34161824742394, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.61753779742976, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.15624068230731, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.25917455813928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5936848786624, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.98045633035186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.98797939638727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35827005631805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.69155799194061, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68091309416992, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.70456318827733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16469231313611, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8799099382491, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11566093967609, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.80161139315015, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.15377445359951, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.15715297991916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86962603101973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.72926386277882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1579385275225, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.74116822603294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.31971390482752, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.20782644697857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01885490875779, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42230012835577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.99288411883724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.082184046767, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.85101362331126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98564664788431, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86959357102904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20013868958425, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84924924581607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.31289310035527, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.30858201402589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.99373607498532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.18572768435918, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.33439114940059, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.07429869254726, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.04790943044297, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.64069907229371, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26235855896988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.50379403067527, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.43691170957882, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.37005197510278, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.27057437223934, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.09337235241868, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.71128565229746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.02883456195461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.80490335979458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.9287597961482, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.17470692964342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.2493152678643, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.60050033989026, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09469925407369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3111349289259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.18816369089684, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.42938460793316, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.41602741852829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.42310978968692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.50953693273829, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33123427861662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.96020937715257, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.53068640749544, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5609164087555, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89910933295498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.4272707886787, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.19572149206287, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68137345397398, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.48011498833463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.73481537380023, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.9817766831428, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.62422399002075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.25402747101043, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.78794113614683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.51565520344022, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.81994141877884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.73569183010366, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.89304084668578, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.94563028017612, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.70380536433252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.18321579529317, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75634960957339, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.99346542277752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07784715364147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82473368702337, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.80939097372557, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.56855092683492, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.22637736311736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.04989016451177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06688407845617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11481000895263, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.27282277875311, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.10549027383173, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.02590143870165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.0111357952797, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.36789726372409, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.16759918928896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.02364437811006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.64247835816664, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.20232839714718, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.51418676739564, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.81320041849361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.27166607324205, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.2545983932022, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.97497228207648, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.67780842750179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.45906966920411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.76345480442126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.43197465037622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3600604543369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.44350843545416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.39757672508603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.85230151275863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.81407145534195, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01128875382821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.67591197573066, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.51279666702179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.98461279621962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.18776220832692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.68365711276127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52965334263803, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.97018528191016, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.1704075246973, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.4092834971355, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.80397108470675, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.7224658447326, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.15638220769824, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.66063113797075, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.93674170823937, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.02426166276656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2868521233569, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.06798590582005, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.35136606041436, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.99746534424483, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.56303029535638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.0942536160811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.42070005109457, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.41089068186189, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.18677881527823, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43901544778934, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.5260369404649, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.01177208564718, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.36159823018748, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.8208251198108, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.28071492977152, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.9250036260453, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.6150063093046, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.61363931969464, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.38004154259693, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.96467806287603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.70041523761671, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.62074541364396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.95651159207543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05267669381955, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.69416855510607, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.8695133244266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.61012799594212, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.05464751490084, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.46681240023963, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.63067407291008, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.96046847840074, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.56273021751427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.14638715063298, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.75859326793318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.97823499949781, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.15637756363428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.71453147899727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.00941330347686, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.97249110306038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.44900384555615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.26380626108603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.9389490074607, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.91676356991597, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.13685393625028, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92025914672816, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.9636459548143, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.9470309766908, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.23464868145118, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.16095300836626, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.86371979002092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1658806519524, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.80999909964301, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.3916052906719, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.79830122498419, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.92464426243117, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.74084404129732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.77591195761288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.129082151163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.29443539538282, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.49821093674116, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.52895961614624, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.50773769923417, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.20586243304412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.1593251595947, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.8652392547076, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.88148378297518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.54298539634833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.97268456538903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.62712854780935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.74146887774299, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.42853595632805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.84848168731004, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.83668379255865, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.47241973433749, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.89842730786603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.82455441317694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.16986826544031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.1811588929617, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.09911654611165, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.55257557802233, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.6008717295654, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.68671023186488, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.96517472835333, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.05260562521785, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.08006582461334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.79432064186736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.41108821991375, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87347025830266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.20564533828777, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.30309517181773, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1406611037728, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.24392591685461, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.10896639776044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43429707485602, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.99823744300166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.51160983247296, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.15695774047701, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.25313076740179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.3503914171167, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.47393608345517, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.98751697992218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.0545116492653, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01799823084976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05081241841744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.31407916672543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.80885265421585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.15205975168703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.47241880815605, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.54172600484964, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.8976774720573, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58791087448299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.02271267015783, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.10459083951521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24414870008319, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.69109127617371, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.65306278042236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.39816620647916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1810606061523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.49470462633181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01504374556126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.67904663244455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.74908045175502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.28081352108578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.72430502818085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.91000509633356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0266388958905, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06932306108122, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2669116718157, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.31911690207038, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.01378736632232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.69057272581715, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86605080021333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.54829275642138, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.92761316198515, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.07281692163534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.2809228591007, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.11130793179962, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.78210365621943, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.99114272050637, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26603620619441, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.26895473010688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.88756691851471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.90535085923925, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.86627784439669, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.27678234231546, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21120724189035, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.62182381785365, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.70089986040492, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.98061841891752, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.63730668221625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.21809213108293, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.62513446883317, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.0550792423482, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71116560219859, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.70112878957045, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.22008595203475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.26583380518775, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84031644841893, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.76253265375746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.36921450181964, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38751561741323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.7594276079707, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20505090808615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01993010545006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.25253006691226, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.9292129294191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.45831791808807, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.01874761761506, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.70179579177142, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.45782648578765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.9654506293958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.69543160906309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.23626703373414, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.23730582460071, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.58630669240723, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.24411442253736, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.80412345904836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.33266826608637, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.08584208568091, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.20511704388718, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.73586252939168, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6229802242446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66558700926207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.74677062129318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.54017463980657, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.730138438308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.49572076787184, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.77203615539878, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.91635203682458, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.91294155802173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.85493736088272, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.07037492573126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.35918129576551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.21752684184962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.82182795562746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.91554181329224, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.2637454877203, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.42377971468683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.9956096009709, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.95024629295155, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.02384747382928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.73848563922941, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78634727970504, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.46503843997183, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.75198886376967, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.39876122857235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.11567284541557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.77091533493147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3485194106044, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.04122370969267, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97807111210727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.82297627909733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.88908258807695, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.02494822567454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52813633390632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.77607586946252, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84906975105618, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.10682536410768, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60098332710814, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.16477240647922, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.64464350405021, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.34853961981467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.90164291858915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.52920571661875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96718442791747, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1449985691514, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.09214526901171, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08808617199072, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.57735843418071, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.03374091329063, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.67153521214688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.90721494360177, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.94800270723887, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.77341143396697, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.16810608211969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.1295561924666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6109897663897, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09160273927316, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.33166346007059, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.53620789150742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.21568894504843, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93343913761625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02299067534886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.18544500815403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.98907937476646, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.45348785433026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.02085687929099, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.84830391916218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.43699045607909, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.95759166912262, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.47551491598016, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.66498305754212, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.36643618283398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.3496449568648, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06229907806569, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.93784310790696, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.96780942003683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88445131540618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.08186481058257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.20796655389181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9654081254928, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.49393791749024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05007592523164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.84518996211608, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.32190345568543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32827178627502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26562867244172, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9489490131078, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.54756230484855, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.52695826109523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.16120912048845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.73109278013733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.12967158946792, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66144197243285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35105870140517, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32497954050243, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.404028525945, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5596224194739, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06373732644884, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.82924854494932, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.63616550173667, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.79933273190036, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.95120755426662, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.56403816854014, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35426808914588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35865607168631, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.90482034285156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.9985787957225, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.8768940380532, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86502942650776, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82867955654159, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.06669061925808, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.05805100493505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.19478081630376, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.4726753044577, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.87741920594638, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.47630925649874, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.67940992744533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83387030747774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.77541066961662, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.21806909335821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2116719393634, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.63189068076446, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.31676028980675, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96917376263126, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.3332407570871, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.63597205774145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.00130198273087, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.05926832590498, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.76190103073331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.24963627943364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.73904226779082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.53198582108524, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.29391446442062, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.60323551607766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.17535379161295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.95745054254392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.65432843266518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.33856790601594, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.36956060356385, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.2507487739047, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.98092766917739, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.16338627425559, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.95283790294347, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.37363985497257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.41734797456819, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.46879833485087, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.89779171625212, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.56566914846213, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.12295330761387, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.47229523041987, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.01642931045993, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.97899403484826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.29040521639678, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.62958711128005, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.94114223449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.38592136937638, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.493222435549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3474523152517, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.84805377401344, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.24313248176318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.23716867785055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.3344550507391, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.25058017257405, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.26148603669161, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.78124566715694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.30392352510412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.05471403229689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.26889976544973, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.97149252732743, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.49652862514738, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.49761686858754, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96133483843103, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.60373115569557, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.43278823558683, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.216186422251, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.22790913521419, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.5392105794396, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.3857390941578, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.0337408175209, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.39823678210567, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.08940418013472, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.65920217896303, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.39853539402684, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.65048655775455, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.79873760769597, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.68828575617101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87251964203307, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.5300255114375, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.79086592344467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57270931229704, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88859692291733, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.80271734344691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.04073002158317, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.46828834544144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.23692924750448, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.43771978777833, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.09517649815284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.97835234626153, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.79133291522645, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02945945000636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.45235296621496, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.63061442838703, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.1729530420449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.58327824763774, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.53629152727201, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.30651397849368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.69842586893596, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.16248763742118, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.49605102540508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.25313944944546, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.8421663218519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97561455613513, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.01878568439928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.7731623418128, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.3031103300392, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.82895908639827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.34460637435383, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.32181327562058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.52607935640549, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.2357948297768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.68746434551585, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58592175261929, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.4669708006904, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.654447961068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.3612670935331, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.01031054901587, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.37919304454006, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.41169786096938, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.29381617044329, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.70386499802939, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.42981226133158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.13311787546733, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.41698336938475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.39366908316057, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.89356698837386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.60226357609555, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.41574363121151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.77307124686526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.32527272706531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.02617500869306, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.94533987249052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.0185892574846, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.30963127571127, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.25489319248068, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74391567498765, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.20889480054281, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.11263111652507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.10139698703692, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.71015543952899, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.47583632063913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.75986386635343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.27037620813209, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.44774661355898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.99875783176927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.58344310898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.14439051922356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.54039819515216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.9236778577475, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.05584126819757, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.35601781114134, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.81351651597147, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84701543791368, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.72332949821384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.51107159043487, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.91369044105626, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.12129104458734, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.14884637460803, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.89417488264915, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.12845985022912, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.6597993052993, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.96178874818798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.4511703887473, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.89229345893365, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.58860576042824, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.04178116383622, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.4578576609693, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.86053478009173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.76430023458303, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.8053175522895, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.40836408730765, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.85612524977265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.40863693697362, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.09196518919534, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.91994528712154, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.4574772984541, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.40486331313025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.8856295626394, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.41673292493975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.3011515367656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.50993042362319, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.8443544450889, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.58646684173618, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.51863942815191, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.02582579018504, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.64624335712315, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.62478266594604, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.97351592845855, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.2565162152012, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.32379857764126, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96151236382953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.38409820559012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.76791246698865, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.15204268625024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.14536275879573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.92555424660308, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.28378367357755, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.6447277617356, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.94359099606793, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.63169426987818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.61709548381037, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.99406223655019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.51586581649707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.88355978598187, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.59210068726338, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.20766791171343, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.03526629028748, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73917319444821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.21019311262798, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87224010683995, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.42438731231145, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.32218202085551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84840341954816, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.74542752078266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.97099698374726, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5673298293271, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.9938401219299, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.89305134977978, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.62217998545916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.36509094658045, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.88634389481254, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.09706919037085, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.26411816919232, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.87466770876313, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.60479889553623, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.20308651861096, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.03254850546956, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.38853458659054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.15112623454131, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.96842409215192, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.88812859002927, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.24664780939709, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.55850895917358, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.87161322114831, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.00535793552656, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.4480286140058, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.06090359266081, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.86729712174954, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.52050959132679, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.61545833641877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11576558511285, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.83965947403613, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.12256163749144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01797419460767, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19504665832812, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.52501223027797, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.70543373709387, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.76145907090128, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.99231970762736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.72601264375818, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.17294252688178, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.66991995260973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.29227941579406, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.05260425345361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.08641894302396, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.89786622090341, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19281076082636, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.00268172437694, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8031782169886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.30303744020942, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.96047444085842, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.53102238294964, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55135190498416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73320965755092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.83108861382613, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66116571648418, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.37760682748707, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.73832896665387, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55125645985115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.05801072220544, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.19615016955767, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.71612053106102, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.35363412291727, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.89683728827593, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.45394449656699, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.64711251538863, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.20425342905766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.27286775878677, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.11098684044114, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.82344576152076, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.85991046136218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.76944869834962, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.49443525385506, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.26714007172914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.55312747617486, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.21338289364272, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.50082066300278, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.2831851440446, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.64838687037759, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.7216517557643, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.97199380174195, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.55110234448432, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.47254018419862, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.35333984916058, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.55290357280875, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.92761668682888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.52405415324874, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.01759216619796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.9301791723341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.98789247555584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.13492749804534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.88900920001714, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.63316803265334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.85577813730865, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.25060393364089, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.37992029678232, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.2161626045396, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.94097148564505, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.61411385344917, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.26633312852945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57486927906898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.25460128509323, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.93806274853755, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.88821464003595, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.53437593350753, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.5558255899151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.57746904834741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35186779566517, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.8222066824917, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.33239215677628, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.65684927729922, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.07995330778445, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.14274907856505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.31638915313647, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.80125655346451, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.86908900365832, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.43258549076677, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.74183853860589, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.04661736537737, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.18409149189986, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.27288236124933, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.66757472286284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.66108329653197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.0113429588981, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.01542580767834, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87145951112795, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58043482842866, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.28456359684716, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.42689177563531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.10394740945229, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.5888902773369, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.05233318851363, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.20379964517136, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.93054848304011, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.4470753529935, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.55093725008568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.1771270171211, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.51951955539236, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.35054775405881, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.20200706252784, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.07198645570766, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.13850851279538, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.2608758916971, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.93035699558081, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.52157669994283, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.49395863364698, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.86316250689507, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.18352844268802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.93546496698286, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.8113095296125, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.54696410392557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.08012041438292, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.23016998477505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.84774198158706, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.88558944915762, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.52000332438061, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.86871340352687, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.58373696827199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.82208371804109, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.32832910147938, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.06529443738525, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.45977666376373, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.24686599676619, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.21043430906948, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.4518561142622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.80819601768098, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.9586155221746, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.14254378792333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.6718045936633, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.3689677842857, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.87620295869029, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.06997514477666, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.79230048470953, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.69842658289039, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.84366945841847, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.75521347785288, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.14459057740478, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.78540826994568, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.0389294134589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-05T00:00:00" + } + ], + "final_value": 98797.57980296039, + "framework": "ml4t.backtest", + "num_trades": 600, + "total_pnl": -1202.4201970396098, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.11917253451473, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 99.54841534502786, + "exit_reason": "signal", + "exit_time": "2020-01-04T00:00:00", + "pnl": -157.0757189486867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.03201587878578, + "entry_time": "2020-01-06T00:00:00", + "exit_price": 99.94550278474797, + "exit_reason": "signal", + "exit_time": "2020-01-07T00:00:00", + "pnl": -8.651309403781852, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.67183298908238, + "entry_time": "2020-01-09T00:00:00", + "exit_price": 99.86549713479145, + "exit_reason": "signal", + "exit_time": "2020-01-10T00:00:00", + "pnl": 19.36641457090809, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.19160897741419, + "entry_time": "2020-01-12T00:00:00", + "exit_price": 100.48697641782272, + "exit_reason": "signal", + "exit_time": "2020-01-13T00:00:00", + "pnl": 29.536744040851772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.74505140134526, + "entry_time": "2020-01-15T00:00:00", + "exit_price": 99.43249701182592, + "exit_reason": "signal", + "exit_time": "2020-01-16T00:00:00", + "pnl": -31.255438951935503, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.36317339817481, + "entry_time": "2020-01-18T00:00:00", + "exit_price": 100.3184784020995, + "exit_reason": "signal", + "exit_time": "2020-01-19T00:00:00", + "pnl": 95.53050039246955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.59194698786014, + "entry_time": "2020-01-21T00:00:00", + "exit_price": 99.21300773889088, + "exit_reason": "signal", + "exit_time": "2020-01-22T00:00:00", + "pnl": -37.893924896925455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.93323693635863, + "entry_time": "2020-01-24T00:00:00", + "exit_price": 101.01041702546699, + "exit_reason": "signal", + "exit_time": "2020-01-25T00:00:00", + "pnl": 107.71800891083694, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.12882215455511, + "entry_time": "2020-01-27T00:00:00", + "exit_price": 98.82503838919212, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -130.37837653629867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.20974209562837, + "entry_time": "2020-01-30T00:00:00", + "exit_price": 99.28418162139361, + "exit_reason": "signal", + "exit_time": "2020-01-31T00:00:00", + "pnl": 7.44395257652468, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.91262465479313, + "entry_time": "2020-02-02T00:00:00", + "exit_price": 98.47079432451613, + "exit_reason": "signal", + "exit_time": "2020-02-03T00:00:00", + "pnl": -144.1830330276989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.41396612142576, + "entry_time": "2020-02-05T00:00:00", + "exit_price": 99.74208634353057, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 132.8120222104808, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96112016066533, + "entry_time": "2020-02-08T00:00:00", + "exit_price": 99.14757933275934, + "exit_reason": "signal", + "exit_time": "2020-02-09T00:00:00", + "pnl": 18.645917209401887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.33794797010773, + "entry_time": "2020-02-11T00:00:00", + "exit_price": 98.95774776632322, + "exit_reason": "signal", + "exit_time": "2020-02-12T00:00:00", + "pnl": -38.02002037845159, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.39809150990904, + "entry_time": "2020-02-14T00:00:00", + "exit_price": 99.29624163714647, + "exit_reason": "signal", + "exit_time": "2020-02-15T00:00:00", + "pnl": -10.184987276257743, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.98044425919083, + "entry_time": "2020-02-17T00:00:00", + "exit_price": 98.71415014911958, + "exit_reason": "signal", + "exit_time": "2020-02-18T00:00:00", + "pnl": -26.629411007124872, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68703409584347, + "entry_time": "2020-02-20T00:00:00", + "exit_price": 99.19660477578049, + "exit_reason": "signal", + "exit_time": "2020-02-21T00:00:00", + "pnl": 50.95706799370237, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.09913803201934, + "entry_time": "2020-02-23T00:00:00", + "exit_price": 99.13975001075532, + "exit_reason": "signal", + "exit_time": "2020-02-24T00:00:00", + "pnl": -95.93880212640215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7525000464393, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 98.67014960303162, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -8.235044340766763, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.16172259245428, + "entry_time": "2020-02-29T00:00:00", + "exit_price": 99.99277550738104, + "exit_reason": "signal", + "exit_time": "2020-03-01T00:00:00", + "pnl": 83.10529149267677, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.726000665382, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 99.27597137389321, + "exit_reason": "signal", + "exit_time": "2020-03-04T00:00:00", + "pnl": 54.99707085112095, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.96674656359579, + "entry_time": "2020-03-06T00:00:00", + "exit_price": 99.01407453019127, + "exit_reason": "signal", + "exit_time": "2020-03-07T00:00:00", + "pnl": -95.2672033404524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.01883446140224, + "entry_time": "2020-03-09T00:00:00", + "exit_price": 99.33686580554885, + "exit_reason": "signal", + "exit_time": "2020-03-10T00:00:00", + "pnl": 31.803134414662054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.61379453469056, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 99.44418682978016, + "exit_reason": "signal", + "exit_time": "2020-03-13T00:00:00", + "pnl": -16.96077049103951, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.1261570487614, + "entry_time": "2020-03-15T00:00:00", + "exit_price": 98.90367229199478, + "exit_reason": "signal", + "exit_time": "2020-03-16T00:00:00", + "pnl": 77.75152432333743, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.48715448535594, + "entry_time": "2020-03-18T00:00:00", + "exit_price": 98.53898885220806, + "exit_reason": "signal", + "exit_time": "2020-03-19T00:00:00", + "pnl": -94.81656331478916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.13695584567007, + "entry_time": "2020-03-21T00:00:00", + "exit_price": 98.74920846022493, + "exit_reason": "signal", + "exit_time": "2020-03-22T00:00:00", + "pnl": -138.77473854451455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.28346179234327, + "entry_time": "2020-03-24T00:00:00", + "exit_price": 99.39446913633991, + "exit_reason": "signal", + "exit_time": "2020-03-25T00:00:00", + "pnl": 11.100734399662542, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.38048314487808, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 98.86853857797571, + "exit_reason": "signal", + "exit_time": "2020-03-28T00:00:00", + "pnl": -51.19445669023844, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.78335766752544, + "entry_time": "2020-03-30T00:00:00", + "exit_price": 100.08258048792489, + "exit_reason": "signal", + "exit_time": "2020-03-31T00:00:00", + "pnl": 29.922282039944548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.04409706752067, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 100.00584315640894, + "exit_reason": "signal", + "exit_time": "2020-04-03T00:00:00", + "pnl": -3.825391111173303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17754603801194, + "entry_time": "2020-04-05T00:00:00", + "exit_price": 99.91386750387461, + "exit_reason": "signal", + "exit_time": "2020-04-06T00:00:00", + "pnl": 73.63214658626748, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.07278397148802, + "entry_time": "2020-04-08T00:00:00", + "exit_price": 99.84957817071898, + "exit_reason": "signal", + "exit_time": "2020-04-09T00:00:00", + "pnl": -122.32058007690466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.66685696016805, + "entry_time": "2020-04-11T00:00:00", + "exit_price": 100.29703959359377, + "exit_reason": "signal", + "exit_time": "2020-04-12T00:00:00", + "pnl": 63.01826334257203, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.16284479663989, + "entry_time": "2020-04-14T00:00:00", + "exit_price": 99.59827392536462, + "exit_reason": "signal", + "exit_time": "2020-04-15T00:00:00", + "pnl": -56.45708712752639, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.02427769637677, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 100.02034152325665, + "exit_reason": "signal", + "exit_time": "2020-04-18T00:00:00", + "pnl": -0.39361731201279326, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.10227360972624, + "entry_time": "2020-04-20T00:00:00", + "exit_price": 99.55074957264794, + "exit_reason": "signal", + "exit_time": "2020-04-21T00:00:00", + "pnl": -55.15240370782885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4752285310497, + "entry_time": "2020-04-23T00:00:00", + "exit_price": 100.78482968977629, + "exit_reason": "signal", + "exit_time": "2020-04-24T00:00:00", + "pnl": 30.960115872660026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.64550269913406, + "entry_time": "2020-04-26T00:00:00", + "exit_price": 100.75829920829567, + "exit_reason": "signal", + "exit_time": "2020-04-27T00:00:00", + "pnl": 11.2796509161617, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.28405624956508, + "entry_time": "2020-04-29T00:00:00", + "exit_price": 100.40750734980367, + "exit_reason": "signal", + "exit_time": "2020-04-30T00:00:00", + "pnl": 12.345110023859888, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.9736108084372, + "entry_time": "2020-05-02T00:00:00", + "exit_price": 99.11719582995507, + "exit_reason": "signal", + "exit_time": "2020-05-03T00:00:00", + "pnl": -185.64149784821348, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4244273841596, + "entry_time": "2020-05-05T00:00:00", + "exit_price": 100.46803368609852, + "exit_reason": "signal", + "exit_time": "2020-05-06T00:00:00", + "pnl": 4.360630193890756, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.65390080108091, + "entry_time": "2020-05-08T00:00:00", + "exit_price": 101.55529329412784, + "exit_reason": "signal", + "exit_time": "2020-05-09T00:00:00", + "pnl": 90.1392493046933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.84475344760442, + "entry_time": "2020-05-11T00:00:00", + "exit_price": 101.34547532849058, + "exit_reason": "signal", + "exit_time": "2020-05-12T00:00:00", + "pnl": 50.0721880886158, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.83286932713185, + "entry_time": "2020-05-14T00:00:00", + "exit_price": 100.1414110724743, + "exit_reason": "signal", + "exit_time": "2020-05-15T00:00:00", + "pnl": -69.14582546575548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.70880723169135, + "entry_time": "2020-05-17T00:00:00", + "exit_price": 100.37107171120154, + "exit_reason": "signal", + "exit_time": "2020-05-18T00:00:00", + "pnl": -33.77355204898231, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17212988349165, + "entry_time": "2020-05-20T00:00:00", + "exit_price": 100.88968353827181, + "exit_reason": "signal", + "exit_time": "2020-05-21T00:00:00", + "pnl": 171.75536547801676, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.17974473578754, + "entry_time": "2020-05-23T00:00:00", + "exit_price": 99.64495810760246, + "exit_reason": "signal", + "exit_time": "2020-05-24T00:00:00", + "pnl": 46.521337181493436, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86042757757674, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 99.42922022261914, + "exit_reason": "signal", + "exit_time": "2020-05-27T00:00:00", + "pnl": 56.87926450423947, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.67123710700702, + "entry_time": "2020-05-29T00:00:00", + "exit_price": 99.1262468099545, + "exit_reason": "signal", + "exit_time": "2020-05-30T00:00:00", + "pnl": 45.500970294748186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.99803204217791, + "entry_time": "2020-06-01T00:00:00", + "exit_price": 98.0746490327229, + "exit_reason": "signal", + "exit_time": "2020-06-02T00:00:00", + "pnl": 7.661699054498968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68852164950059, + "entry_time": "2020-06-04T00:00:00", + "exit_price": 98.90683245619206, + "exit_reason": "signal", + "exit_time": "2020-06-05T00:00:00", + "pnl": 21.831080669147923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.69867095887889, + "entry_time": "2020-06-07T00:00:00", + "exit_price": 98.58028409299915, + "exit_reason": "signal", + "exit_time": "2020-06-08T00:00:00", + "pnl": -11.838686587974735, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.78930171959787, + "entry_time": "2020-06-10T00:00:00", + "exit_price": 99.44349309161046, + "exit_reason": "signal", + "exit_time": "2020-06-11T00:00:00", + "pnl": 65.41913720125922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.63928948741085, + "entry_time": "2020-06-13T00:00:00", + "exit_price": 99.8801021064717, + "exit_reason": "signal", + "exit_time": "2020-06-14T00:00:00", + "pnl": 24.081261906085274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.88804895153031, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 98.9129584357738, + "exit_reason": "signal", + "exit_time": "2020-06-17T00:00:00", + "pnl": 2.4909484243489715, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.35911188288489, + "entry_time": "2020-06-19T00:00:00", + "exit_price": 99.55107978610341, + "exit_reason": "signal", + "exit_time": "2020-06-20T00:00:00", + "pnl": 19.19679032185377, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.24566283787111, + "entry_time": "2020-06-22T00:00:00", + "exit_price": 99.50854335078685, + "exit_reason": "signal", + "exit_time": "2020-06-23T00:00:00", + "pnl": 26.288051291574448, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.85972377687798, + "entry_time": "2020-06-25T00:00:00", + "exit_price": 98.94180161552265, + "exit_reason": "signal", + "exit_time": "2020-06-26T00:00:00", + "pnl": 8.207783864467274, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.42256786175979, + "entry_time": "2020-06-28T00:00:00", + "exit_price": 98.39260868907034, + "exit_reason": "signal", + "exit_time": "2020-06-29T00:00:00", + "pnl": -2.9959172689432307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47598985042309, + "entry_time": "2020-07-01T00:00:00", + "exit_price": 98.2217481384577, + "exit_reason": "signal", + "exit_time": "2020-07-02T00:00:00", + "pnl": -25.424171196538737, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.43771261461686, + "entry_time": "2020-07-04T00:00:00", + "exit_price": 99.25556396259081, + "exit_reason": "signal", + "exit_time": "2020-07-05T00:00:00", + "pnl": -18.214865202604415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.27520136851216, + "entry_time": "2020-07-07T00:00:00", + "exit_price": 99.22895283520214, + "exit_reason": "signal", + "exit_time": "2020-07-08T00:00:00", + "pnl": -4.62485333100085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84721164221584, + "entry_time": "2020-07-10T00:00:00", + "exit_price": 98.21690016032666, + "exit_reason": "signal", + "exit_time": "2020-07-11T00:00:00", + "pnl": -63.03114818891845, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.98012439288168, + "entry_time": "2020-07-13T00:00:00", + "exit_price": 98.42241300564716, + "exit_reason": "signal", + "exit_time": "2020-07-14T00:00:00", + "pnl": -55.77113872345217, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5234973647714, + "entry_time": "2020-07-16T00:00:00", + "exit_price": 98.84780174120549, + "exit_reason": "signal", + "exit_time": "2020-07-17T00:00:00", + "pnl": -67.56956235658981, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.78357735159078, + "entry_time": "2020-07-19T00:00:00", + "exit_price": 98.5180376571157, + "exit_reason": "signal", + "exit_time": "2020-07-20T00:00:00", + "pnl": -26.55396944750828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07885735340791, + "entry_time": "2020-07-22T00:00:00", + "exit_price": 98.46287786089891, + "exit_reason": "signal", + "exit_time": "2020-07-23T00:00:00", + "pnl": 38.402050749100454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7806750796624, + "entry_time": "2020-07-25T00:00:00", + "exit_price": 98.99007562374577, + "exit_reason": "signal", + "exit_time": "2020-07-26T00:00:00", + "pnl": 20.940054408336437, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.3160405598432, + "entry_time": "2020-07-28T00:00:00", + "exit_price": 97.69515591162462, + "exit_reason": "signal", + "exit_time": "2020-07-29T00:00:00", + "pnl": -62.088464821858, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.9307950005457, + "entry_time": "2020-07-31T00:00:00", + "exit_price": 97.49497584845733, + "exit_reason": "signal", + "exit_time": "2020-08-01T00:00:00", + "pnl": -43.58191520883702, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.05277773908539, + "entry_time": "2020-08-03T00:00:00", + "exit_price": 97.63017059410102, + "exit_reason": "signal", + "exit_time": "2020-08-04T00:00:00", + "pnl": -42.260714498435846, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.95560584181007, + "entry_time": "2020-08-06T00:00:00", + "exit_price": 97.85704345214471, + "exit_reason": "signal", + "exit_time": "2020-08-07T00:00:00", + "pnl": -109.85623896653487, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.34581983849665, + "entry_time": "2020-08-09T00:00:00", + "exit_price": 98.55148937480453, + "exit_reason": "signal", + "exit_time": "2020-08-10T00:00:00", + "pnl": 120.5669536307887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.83406196186097, + "entry_time": "2020-08-12T00:00:00", + "exit_price": 97.25669377064881, + "exit_reason": "signal", + "exit_time": "2020-08-13T00:00:00", + "pnl": -57.736819121215376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.51637945271536, + "entry_time": "2020-08-15T00:00:00", + "exit_price": 97.57103396676897, + "exit_reason": "signal", + "exit_time": "2020-08-16T00:00:00", + "pnl": 5.465451405361819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43830185841739, + "entry_time": "2020-08-18T00:00:00", + "exit_price": 98.4155507445711, + "exit_reason": "signal", + "exit_time": "2020-08-19T00:00:00", + "pnl": -2.2751113846297812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.92267680402585, + "entry_time": "2020-08-21T00:00:00", + "exit_price": 98.75883349843212, + "exit_reason": "signal", + "exit_time": "2020-08-22T00:00:00", + "pnl": 83.61566944062724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.974264479532, + "entry_time": "2020-08-24T00:00:00", + "exit_price": 99.70988332181, + "exit_reason": "signal", + "exit_time": "2020-08-25T00:00:00", + "pnl": 173.56188422779996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21365266173218, + "entry_time": "2020-08-27T00:00:00", + "exit_price": 98.08294324004585, + "exit_reason": "signal", + "exit_time": "2020-08-28T00:00:00", + "pnl": -113.07094216863334, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11928874045202, + "entry_time": "2020-08-30T00:00:00", + "exit_price": 98.31180164071337, + "exit_reason": "signal", + "exit_time": "2020-08-31T00:00:00", + "pnl": 19.251290026133574, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.00054275724281, + "entry_time": "2020-09-02T00:00:00", + "exit_price": 98.65255133629894, + "exit_reason": "signal", + "exit_time": "2020-09-03T00:00:00", + "pnl": 65.20085790561279, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.96503242935937, + "entry_time": "2020-09-05T00:00:00", + "exit_price": 98.79138811772025, + "exit_reason": "signal", + "exit_time": "2020-09-06T00:00:00", + "pnl": -17.364431163910922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.47378044689604, + "entry_time": "2020-09-08T00:00:00", + "exit_price": 98.31284487928606, + "exit_reason": "signal", + "exit_time": "2020-09-09T00:00:00", + "pnl": -116.09355676099767, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.73200506980342, + "entry_time": "2020-09-11T00:00:00", + "exit_price": 98.3363427106496, + "exit_reason": "signal", + "exit_time": "2020-09-12T00:00:00", + "pnl": 60.433764084618815, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.56611574901736, + "entry_time": "2020-09-14T00:00:00", + "exit_price": 98.13272204200155, + "exit_reason": "signal", + "exit_time": "2020-09-15T00:00:00", + "pnl": -43.339370701580265, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.89963627791985, + "entry_time": "2020-09-17T00:00:00", + "exit_price": 98.38755792776327, + "exit_reason": "signal", + "exit_time": "2020-09-18T00:00:00", + "pnl": 148.79216498434107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.35474381234252, + "entry_time": "2020-09-20T00:00:00", + "exit_price": 98.97868642263799, + "exit_reason": "signal", + "exit_time": "2020-09-21T00:00:00", + "pnl": 62.394261029547124, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.11962753041762, + "entry_time": "2020-09-23T00:00:00", + "exit_price": 99.25728100943367, + "exit_reason": "signal", + "exit_time": "2020-09-24T00:00:00", + "pnl": 13.7653479016044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.076645155786, + "entry_time": "2020-09-26T00:00:00", + "exit_price": 99.1361736846976, + "exit_reason": "signal", + "exit_time": "2020-09-27T00:00:00", + "pnl": 5.952852891159637, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.95761891143941, + "entry_time": "2020-09-29T00:00:00", + "exit_price": 99.38251520181134, + "exit_reason": "signal", + "exit_time": "2020-09-30T00:00:00", + "pnl": 42.48962903719439, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.58405172820402, + "entry_time": "2020-10-02T00:00:00", + "exit_price": 100.1825648349693, + "exit_reason": "signal", + "exit_time": "2020-10-03T00:00:00", + "pnl": 59.851310676529465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31778631274507, + "entry_time": "2020-10-05T00:00:00", + "exit_price": 98.92748490697555, + "exit_reason": "signal", + "exit_time": "2020-10-06T00:00:00", + "pnl": -39.03014057695145, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11485299409067, + "entry_time": "2020-10-08T00:00:00", + "exit_price": 97.46828746700024, + "exit_reason": "signal", + "exit_time": "2020-10-09T00:00:00", + "pnl": -64.65655270904244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.7892083341232, + "entry_time": "2020-10-11T00:00:00", + "exit_price": 99.2850707768965, + "exit_reason": "signal", + "exit_time": "2020-10-12T00:00:00", + "pnl": 149.58624427733048, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.61528686513479, + "entry_time": "2020-10-14T00:00:00", + "exit_price": 98.16045065160826, + "exit_reason": "signal", + "exit_time": "2020-10-15T00:00:00", + "pnl": 54.516378647347665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98923853245553, + "entry_time": "2020-10-17T00:00:00", + "exit_price": 97.78083136801966, + "exit_reason": "signal", + "exit_time": "2020-10-18T00:00:00", + "pnl": -20.840716443586643, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98736762370623, + "entry_time": "2020-10-20T00:00:00", + "exit_price": 98.41242668783207, + "exit_reason": "signal", + "exit_time": "2020-10-21T00:00:00", + "pnl": 42.5059064125835, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.7821059253462, + "entry_time": "2020-10-23T00:00:00", + "exit_price": 98.01676230346942, + "exit_reason": "signal", + "exit_time": "2020-10-24T00:00:00", + "pnl": -76.5343621876782, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.90986422948514, + "entry_time": "2020-10-26T00:00:00", + "exit_price": 98.85698353324744, + "exit_reason": "signal", + "exit_time": "2020-10-27T00:00:00", + "pnl": -5.288069623769843, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.72982041802001, + "entry_time": "2020-10-29T00:00:00", + "exit_price": 98.60761748093444, + "exit_reason": "signal", + "exit_time": "2020-10-30T00:00:00", + "pnl": -12.22029370855671, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.0385605171193, + "entry_time": "2020-11-01T00:00:00", + "exit_price": 99.09198940082088, + "exit_reason": "signal", + "exit_time": "2020-11-02T00:00:00", + "pnl": 5.342888370158107, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21597248424331, + "entry_time": "2020-11-04T00:00:00", + "exit_price": 98.490691270523, + "exit_reason": "signal", + "exit_time": "2020-11-05T00:00:00", + "pnl": -72.52812137203, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.2706953210234, + "entry_time": "2020-11-07T00:00:00", + "exit_price": 98.23704650718707, + "exit_reason": "signal", + "exit_time": "2020-11-08T00:00:00", + "pnl": -3.364881383631655, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.30522444084696, + "entry_time": "2020-11-10T00:00:00", + "exit_price": 97.82731858826378, + "exit_reason": "signal", + "exit_time": "2020-11-11T00:00:00", + "pnl": 52.20941474168103, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.91407429365688, + "entry_time": "2020-11-13T00:00:00", + "exit_price": 98.5460351903365, + "exit_reason": "signal", + "exit_time": "2020-11-14T00:00:00", + "pnl": -36.80391033203887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.93028933684711, + "entry_time": "2020-11-16T00:00:00", + "exit_price": 99.0553633238757, + "exit_reason": "signal", + "exit_time": "2020-11-17T00:00:00", + "pnl": 12.507398702859064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47484452500944, + "entry_time": "2020-11-19T00:00:00", + "exit_price": 98.10094020807114, + "exit_reason": "signal", + "exit_time": "2020-11-20T00:00:00", + "pnl": -37.39043169383149, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.01428360585088, + "entry_time": "2020-11-22T00:00:00", + "exit_price": 97.38292648890776, + "exit_reason": "signal", + "exit_time": "2020-11-23T00:00:00", + "pnl": -163.13571169431088, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.48513559668872, + "entry_time": "2020-11-25T00:00:00", + "exit_price": 97.27497370614257, + "exit_reason": "signal", + "exit_time": "2020-11-26T00:00:00", + "pnl": -121.0161890546151, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.14886606297294, + "entry_time": "2020-11-28T00:00:00", + "exit_price": 98.29611163730506, + "exit_reason": "signal", + "exit_time": "2020-11-29T00:00:00", + "pnl": 14.724557433211885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.23350982317787, + "entry_time": "2020-12-01T00:00:00", + "exit_price": 97.79948982072462, + "exit_reason": "signal", + "exit_time": "2020-12-02T00:00:00", + "pnl": 56.597999754674674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.98472225444857, + "entry_time": "2020-12-04T00:00:00", + "exit_price": 97.71079305814114, + "exit_reason": "signal", + "exit_time": "2020-12-05T00:00:00", + "pnl": -27.392919630743563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.3396263042363, + "entry_time": "2020-12-07T00:00:00", + "exit_price": 97.98172498582129, + "exit_reason": "signal", + "exit_time": "2020-12-08T00:00:00", + "pnl": -35.790131841500624, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.42795373397291, + "entry_time": "2020-12-10T00:00:00", + "exit_price": 96.6321305493393, + "exit_reason": "signal", + "exit_time": "2020-12-11T00:00:00", + "pnl": -79.58231846336275, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.76479352938595, + "entry_time": "2020-12-13T00:00:00", + "exit_price": 98.48958247666039, + "exit_reason": "signal", + "exit_time": "2020-12-14T00:00:00", + "pnl": 172.47889472744282, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.73111789636548, + "entry_time": "2020-12-16T00:00:00", + "exit_price": 97.61885876679554, + "exit_reason": "signal", + "exit_time": "2020-12-17T00:00:00", + "pnl": 88.77408704300797, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.85401562603096, + "entry_time": "2020-12-19T00:00:00", + "exit_price": 96.49175141105385, + "exit_reason": "signal", + "exit_time": "2020-12-20T00:00:00", + "pnl": -136.22642149771127, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.84289871423181, + "entry_time": "2020-12-22T00:00:00", + "exit_price": 96.99377199128872, + "exit_reason": "signal", + "exit_time": "2020-12-23T00:00:00", + "pnl": -84.91267229430923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.76186428614056, + "entry_time": "2020-12-25T00:00:00", + "exit_price": 96.48850513355184, + "exit_reason": "signal", + "exit_time": "2020-12-26T00:00:00", + "pnl": -27.335915258872774, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.12395315196963, + "entry_time": "2020-12-28T00:00:00", + "exit_price": 97.53863571252707, + "exit_reason": "signal", + "exit_time": "2020-12-29T00:00:00", + "pnl": 41.46825605574304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.6026762767146, + "entry_time": "2020-12-31T00:00:00", + "exit_price": 97.09752132137899, + "exit_reason": "signal", + "exit_time": "2021-01-01T00:00:00", + "pnl": -50.51549553356199, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.49274636123849, + "entry_time": "2021-01-03T00:00:00", + "exit_price": 96.82226372897985, + "exit_reason": "signal", + "exit_time": "2021-01-04T00:00:00", + "pnl": -67.0482632258645, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.79148532437996, + "entry_time": "2021-01-06T00:00:00", + "exit_price": 97.11483711173116, + "exit_reason": "signal", + "exit_time": "2021-01-07T00:00:00", + "pnl": 32.33517873512028, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.80033950220172, + "entry_time": "2021-01-09T00:00:00", + "exit_price": 96.63729064888537, + "exit_reason": "signal", + "exit_time": "2021-01-10T00:00:00", + "pnl": 83.69511466836593, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.11575917668634, + "entry_time": "2021-01-12T00:00:00", + "exit_price": 96.28032546622858, + "exit_reason": "signal", + "exit_time": "2021-01-13T00:00:00", + "pnl": 16.45662895422356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.53344904132359, + "entry_time": "2021-01-15T00:00:00", + "exit_price": 97.29557459823668, + "exit_reason": "signal", + "exit_time": "2021-01-16T00:00:00", + "pnl": 76.21255569131063, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.01730754421833, + "entry_time": "2021-01-18T00:00:00", + "exit_price": 96.07935604760307, + "exit_reason": "signal", + "exit_time": "2021-01-19T00:00:00", + "pnl": 6.204850338473989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.79620422510413, + "entry_time": "2021-01-21T00:00:00", + "exit_price": 95.24797305894252, + "exit_reason": "signal", + "exit_time": "2021-01-22T00:00:00", + "pnl": -54.823116616162224, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.19373825703377, + "entry_time": "2021-01-24T00:00:00", + "exit_price": 95.40514794332339, + "exit_reason": "signal", + "exit_time": "2021-01-25T00:00:00", + "pnl": 21.140968628962582, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.55648566288775, + "entry_time": "2021-01-27T00:00:00", + "exit_price": 96.55716667120137, + "exit_reason": "signal", + "exit_time": "2021-01-28T00:00:00", + "pnl": 100.06810083136224, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.91494018138198, + "entry_time": "2021-01-30T00:00:00", + "exit_price": 95.48501201892987, + "exit_reason": "signal", + "exit_time": "2021-01-31T00:00:00", + "pnl": 57.00718375478937, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.90008526748946, + "entry_time": "2021-02-02T00:00:00", + "exit_price": 95.83721845974864, + "exit_reason": "signal", + "exit_time": "2021-02-03T00:00:00", + "pnl": -6.2866807740829245, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.26504549069784, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 96.06840340797214, + "exit_reason": "signal", + "exit_time": "2021-02-06T00:00:00", + "pnl": 80.33579172742975, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.26053581327312, + "entry_time": "2021-02-08T00:00:00", + "exit_price": 95.42454996605802, + "exit_reason": "signal", + "exit_time": "2021-02-09T00:00:00", + "pnl": 16.401415278489367, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94825682250637, + "entry_time": "2021-02-11T00:00:00", + "exit_price": 95.05109746301979, + "exit_reason": "signal", + "exit_time": "2021-02-12T00:00:00", + "pnl": 10.284064051340465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.1969266603545, + "entry_time": "2021-02-14T00:00:00", + "exit_price": 96.27193710609464, + "exit_reason": "signal", + "exit_time": "2021-02-15T00:00:00", + "pnl": 7.5010445740135765, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.97039812035842, + "entry_time": "2021-02-17T00:00:00", + "exit_price": 96.34802647272141, + "exit_reason": "signal", + "exit_time": "2021-02-18T00:00:00", + "pnl": -62.237164763701, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.07904244701469, + "entry_time": "2021-02-20T00:00:00", + "exit_price": 96.79316819026657, + "exit_reason": "signal", + "exit_time": "2021-02-21T00:00:00", + "pnl": -28.58742567481204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.5721771606179, + "entry_time": "2021-02-23T00:00:00", + "exit_price": 95.6253449835299, + "exit_reason": "signal", + "exit_time": "2021-02-24T00:00:00", + "pnl": 5.31678229120007, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88599336671724, + "entry_time": "2021-02-26T00:00:00", + "exit_price": 93.9167314813735, + "exit_reason": "signal", + "exit_time": "2021-02-27T00:00:00", + "pnl": -96.92618853437489, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23555143341264, + "entry_time": "2021-03-01T00:00:00", + "exit_price": 94.69172330670986, + "exit_reason": "signal", + "exit_time": "2021-03-02T00:00:00", + "pnl": -54.38281267027742, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.40326355089037, + "entry_time": "2021-03-04T00:00:00", + "exit_price": 94.32320287324674, + "exit_reason": "signal", + "exit_time": "2021-03-05T00:00:00", + "pnl": -8.006067764363252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.32022315669315, + "entry_time": "2021-03-07T00:00:00", + "exit_price": 94.22613575397045, + "exit_reason": "signal", + "exit_time": "2021-03-08T00:00:00", + "pnl": -9.408740272268915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.08195298394907, + "entry_time": "2021-03-10T00:00:00", + "exit_price": 94.5883765126535, + "exit_reason": "signal", + "exit_time": "2021-03-11T00:00:00", + "pnl": -49.357647129556426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6323490375275, + "entry_time": "2021-03-13T00:00:00", + "exit_price": 95.0747399163529, + "exit_reason": "signal", + "exit_time": "2021-03-14T00:00:00", + "pnl": 44.239087882539025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.55723413541229, + "entry_time": "2021-03-16T00:00:00", + "exit_price": 94.78282068603487, + "exit_reason": "signal", + "exit_time": "2021-03-17T00:00:00", + "pnl": 22.558655062257458, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66145085922012, + "entry_time": "2021-03-19T00:00:00", + "exit_price": 95.46346097050873, + "exit_reason": "signal", + "exit_time": "2021-03-20T00:00:00", + "pnl": 180.20101112886005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.00404625454874, + "entry_time": "2021-03-22T00:00:00", + "exit_price": 94.66092881844988, + "exit_reason": "signal", + "exit_time": "2021-03-23T00:00:00", + "pnl": -34.311743609885525, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.49919123199935, + "entry_time": "2021-03-25T00:00:00", + "exit_price": 93.97621398907071, + "exit_reason": "signal", + "exit_time": "2021-03-26T00:00:00", + "pnl": -152.29772429286277, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.41257974165285, + "entry_time": "2021-03-28T00:00:00", + "exit_price": 95.05124864668421, + "exit_reason": "signal", + "exit_time": "2021-03-29T00:00:00", + "pnl": 63.866890503137256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01899188310071, + "entry_time": "2021-03-31T00:00:00", + "exit_price": 94.2559389154428, + "exit_reason": "signal", + "exit_time": "2021-04-01T00:00:00", + "pnl": 23.694703234208646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.12609495739093, + "entry_time": "2021-04-03T00:00:00", + "exit_price": 94.25576346468043, + "exit_reason": "signal", + "exit_time": "2021-04-04T00:00:00", + "pnl": 12.966850728949794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.47050530514431, + "entry_time": "2021-04-06T00:00:00", + "exit_price": 93.72410136704386, + "exit_reason": "signal", + "exit_time": "2021-04-07T00:00:00", + "pnl": 25.35960618995523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19884636287922, + "entry_time": "2021-04-09T00:00:00", + "exit_price": 93.86432033375576, + "exit_reason": "signal", + "exit_time": "2021-04-10T00:00:00", + "pnl": 66.54739708765192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.34050558738045, + "entry_time": "2021-04-12T00:00:00", + "exit_price": 94.10587138419956, + "exit_reason": "signal", + "exit_time": "2021-04-13T00:00:00", + "pnl": 76.53657968191146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72930751574246, + "entry_time": "2021-04-15T00:00:00", + "exit_price": 93.2563942182136, + "exit_reason": "signal", + "exit_time": "2021-04-16T00:00:00", + "pnl": -47.29132975288485, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.59980860135867, + "entry_time": "2021-04-18T00:00:00", + "exit_price": 94.54277270362402, + "exit_reason": "signal", + "exit_time": "2021-04-19T00:00:00", + "pnl": 94.29641022653595, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.92591784638046, + "entry_time": "2021-04-21T00:00:00", + "exit_price": 94.14258894906092, + "exit_reason": "signal", + "exit_time": "2021-04-22T00:00:00", + "pnl": 121.6671102680466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11423308566697, + "entry_time": "2021-04-24T00:00:00", + "exit_price": 93.03147452036931, + "exit_reason": "signal", + "exit_time": "2021-04-25T00:00:00", + "pnl": -108.2758565297645, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.97245173381131, + "entry_time": "2021-04-27T00:00:00", + "exit_price": 93.49318704896336, + "exit_reason": "signal", + "exit_time": "2021-04-28T00:00:00", + "pnl": -147.92646848479308, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.68468709145579, + "entry_time": "2021-04-30T00:00:00", + "exit_price": 93.32003795658395, + "exit_reason": "signal", + "exit_time": "2021-05-01T00:00:00", + "pnl": -36.46491348718337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26674166444458, + "entry_time": "2021-05-03T00:00:00", + "exit_price": 94.26630934814936, + "exit_reason": "signal", + "exit_time": "2021-05-04T00:00:00", + "pnl": -0.04323162952096027, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.4153331981033, + "entry_time": "2021-05-06T00:00:00", + "exit_price": 93.36350758058099, + "exit_reason": "signal", + "exit_time": "2021-05-07T00:00:00", + "pnl": -5.182561752229958, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.16332285120929, + "entry_time": "2021-05-09T00:00:00", + "exit_price": 94.34043899579565, + "exit_reason": "signal", + "exit_time": "2021-05-10T00:00:00", + "pnl": 17.711614458636177, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74219820454567, + "entry_time": "2021-05-12T00:00:00", + "exit_price": 94.55413171456674, + "exit_reason": "signal", + "exit_time": "2021-05-13T00:00:00", + "pnl": 81.19335100210628, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.58180279933771, + "entry_time": "2021-05-15T00:00:00", + "exit_price": 94.02408626223293, + "exit_reason": "signal", + "exit_time": "2021-05-16T00:00:00", + "pnl": 44.22834628952114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87657341045227, + "entry_time": "2021-05-18T00:00:00", + "exit_price": 94.55590567361484, + "exit_reason": "signal", + "exit_time": "2021-05-19T00:00:00", + "pnl": 67.93322631625779, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.08074161986468, + "entry_time": "2021-05-21T00:00:00", + "exit_price": 93.80457382221171, + "exit_reason": "signal", + "exit_time": "2021-05-22T00:00:00", + "pnl": 72.38322023470391, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8131686939551, + "entry_time": "2021-05-24T00:00:00", + "exit_price": 93.25793142134573, + "exit_reason": "signal", + "exit_time": "2021-05-25T00:00:00", + "pnl": 44.47627273906255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95253144170447, + "entry_time": "2021-05-27T00:00:00", + "exit_price": 93.14743781912107, + "exit_reason": "signal", + "exit_time": "2021-05-28T00:00:00", + "pnl": 19.490637741659157, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8783564574023, + "entry_time": "2021-05-30T00:00:00", + "exit_price": 92.9764387193147, + "exit_reason": "signal", + "exit_time": "2021-05-31T00:00:00", + "pnl": 9.808226191240465, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94516537050167, + "entry_time": "2021-06-02T00:00:00", + "exit_price": 92.89603764932446, + "exit_reason": "signal", + "exit_time": "2021-06-03T00:00:00", + "pnl": -4.912772117721033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.63800292429943, + "entry_time": "2021-06-05T00:00:00", + "exit_price": 93.24337208101042, + "exit_reason": "signal", + "exit_time": "2021-06-06T00:00:00", + "pnl": 160.53691567109854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.59556244009269, + "entry_time": "2021-06-08T00:00:00", + "exit_price": 91.28446378378608, + "exit_reason": "signal", + "exit_time": "2021-06-09T00:00:00", + "pnl": -31.10986563066035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13025499622808, + "entry_time": "2021-06-11T00:00:00", + "exit_price": 92.23383791902404, + "exit_reason": "signal", + "exit_time": "2021-06-12T00:00:00", + "pnl": -89.64170772040234, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3328854638381, + "entry_time": "2021-06-14T00:00:00", + "exit_price": 92.96067846320523, + "exit_reason": "signal", + "exit_time": "2021-06-15T00:00:00", + "pnl": 62.77929993671205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.94965457520627, + "entry_time": "2021-06-17T00:00:00", + "exit_price": 92.16625059748041, + "exit_reason": "signal", + "exit_time": "2021-06-18T00:00:00", + "pnl": 21.659602227415235, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8269642033066, + "entry_time": "2021-06-20T00:00:00", + "exit_price": 91.81310669049036, + "exit_reason": "signal", + "exit_time": "2021-06-21T00:00:00", + "pnl": -1.3857512816248345, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2555442210953, + "entry_time": "2021-06-23T00:00:00", + "exit_price": 92.45622372930102, + "exit_reason": "signal", + "exit_time": "2021-06-24T00:00:00", + "pnl": 20.06795082057215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.83947343135847, + "entry_time": "2021-06-26T00:00:00", + "exit_price": 92.43135259957857, + "exit_reason": "signal", + "exit_time": "2021-06-27T00:00:00", + "pnl": 59.187916822009356, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.53295655650527, + "entry_time": "2021-06-29T00:00:00", + "exit_price": 91.78816229160894, + "exit_reason": "signal", + "exit_time": "2021-06-30T00:00:00", + "pnl": 25.520573510366376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9413213129086, + "entry_time": "2021-07-02T00:00:00", + "exit_price": 92.40648296911729, + "exit_reason": "signal", + "exit_time": "2021-07-03T00:00:00", + "pnl": 146.5161656208693, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.30279435197399, + "entry_time": "2021-07-05T00:00:00", + "exit_price": 90.65263067129818, + "exit_reason": "signal", + "exit_time": "2021-07-06T00:00:00", + "pnl": -65.01636806758142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8239628759463, + "entry_time": "2021-07-08T00:00:00", + "exit_price": 91.7795218814571, + "exit_reason": "signal", + "exit_time": "2021-07-09T00:00:00", + "pnl": -4.444099448919587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36068460994301, + "entry_time": "2021-07-11T00:00:00", + "exit_price": 91.47451059527033, + "exit_reason": "signal", + "exit_time": "2021-07-12T00:00:00", + "pnl": 11.382598532733027, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.09791235411565, + "entry_time": "2021-07-14T00:00:00", + "exit_price": 91.64232209133355, + "exit_reason": "signal", + "exit_time": "2021-07-15T00:00:00", + "pnl": 54.440973721790215, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.9960341944844, + "entry_time": "2021-07-17T00:00:00", + "exit_price": 90.86057544771678, + "exit_reason": "signal", + "exit_time": "2021-07-18T00:00:00", + "pnl": -13.545874676761741, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.03722443992689, + "entry_time": "2021-07-20T00:00:00", + "exit_price": 91.02540027670304, + "exit_reason": "signal", + "exit_time": "2021-07-21T00:00:00", + "pnl": -101.1824163223846, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23831571579666, + "entry_time": "2021-07-23T00:00:00", + "exit_price": 91.61642884685872, + "exit_reason": "signal", + "exit_time": "2021-07-24T00:00:00", + "pnl": 37.81131310620731, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9587336040414, + "entry_time": "2021-07-26T00:00:00", + "exit_price": 91.78520963834742, + "exit_reason": "signal", + "exit_time": "2021-07-27T00:00:00", + "pnl": -17.35239656939666, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.12207131713245, + "entry_time": "2021-07-29T00:00:00", + "exit_price": 93.030634236321, + "exit_reason": "signal", + "exit_time": "2021-07-30T00:00:00", + "pnl": 90.85629191885528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2580641252632, + "entry_time": "2021-08-01T00:00:00", + "exit_price": 92.57471719502651, + "exit_reason": "signal", + "exit_time": "2021-08-02T00:00:00", + "pnl": 31.665306976330612, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.16033087447512, + "entry_time": "2021-08-04T00:00:00", + "exit_price": 91.64298714231596, + "exit_reason": "signal", + "exit_time": "2021-08-05T00:00:00", + "pnl": -51.734373215917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75555986268627, + "entry_time": "2021-08-07T00:00:00", + "exit_price": 93.29534460790408, + "exit_reason": "signal", + "exit_time": "2021-08-08T00:00:00", + "pnl": 53.9784745217803, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8204301569652, + "entry_time": "2021-08-10T00:00:00", + "exit_price": 93.34161824742394, + "exit_reason": "signal", + "exit_time": "2021-08-11T00:00:00", + "pnl": 52.118809045874514, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.61753779742976, + "entry_time": "2021-08-13T00:00:00", + "exit_price": 94.15624068230731, + "exit_reason": "signal", + "exit_time": "2021-08-14T00:00:00", + "pnl": 53.870288487754806, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.25917455813928, + "entry_time": "2021-08-16T00:00:00", + "exit_price": 93.5936848786624, + "exit_reason": "signal", + "exit_time": "2021-08-17T00:00:00", + "pnl": -66.54896794768683, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.98045633035186, + "entry_time": "2021-08-19T00:00:00", + "exit_price": 93.98797939638727, + "exit_reason": "signal", + "exit_time": "2021-08-20T00:00:00", + "pnl": 100.752306603541, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35827005631805, + "entry_time": "2021-08-22T00:00:00", + "exit_price": 93.69155799194061, + "exit_reason": "signal", + "exit_time": "2021-08-23T00:00:00", + "pnl": 33.32879356225567, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68091309416992, + "entry_time": "2021-08-25T00:00:00", + "exit_price": 92.70456318827733, + "exit_reason": "signal", + "exit_time": "2021-08-26T00:00:00", + "pnl": 2.36500941074155, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16469231313611, + "entry_time": "2021-08-28T00:00:00", + "exit_price": 92.8799099382491, + "exit_reason": "signal", + "exit_time": "2021-08-29T00:00:00", + "pnl": -28.47823748870178, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11566093967609, + "entry_time": "2021-08-31T00:00:00", + "exit_price": 93.80161139315015, + "exit_reason": "signal", + "exit_time": "2021-09-01T00:00:00", + "pnl": -31.404954652593005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.15377445359951, + "entry_time": "2021-09-03T00:00:00", + "exit_price": 94.15715297991916, + "exit_reason": "signal", + "exit_time": "2021-09-04T00:00:00", + "pnl": 100.33785263196478, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86962603101973, + "entry_time": "2021-09-06T00:00:00", + "exit_price": 93.72926386277882, + "exit_reason": "signal", + "exit_time": "2021-09-07T00:00:00", + "pnl": -14.036216824091753, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1579385275225, + "entry_time": "2021-09-09T00:00:00", + "exit_price": 93.74116822603294, + "exit_reason": "signal", + "exit_time": "2021-09-10T00:00:00", + "pnl": -41.67703014895778, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.31971390482752, + "entry_time": "2021-09-12T00:00:00", + "exit_price": 93.20782644697857, + "exit_reason": "signal", + "exit_time": "2021-09-13T00:00:00", + "pnl": -11.188745784895218, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01885490875779, + "entry_time": "2021-09-15T00:00:00", + "exit_price": 94.42230012835577, + "exit_reason": "signal", + "exit_time": "2021-09-16T00:00:00", + "pnl": -59.65547804020207, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.99288411883724, + "entry_time": "2021-09-18T00:00:00", + "exit_price": 94.082184046767, + "exit_reason": "signal", + "exit_time": "2021-09-19T00:00:00", + "pnl": 8.9299927929751, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.85101362331126, + "entry_time": "2021-09-21T00:00:00", + "exit_price": 94.98564664788431, + "exit_reason": "signal", + "exit_time": "2021-09-22T00:00:00", + "pnl": 113.46330245730496, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86959357102904, + "entry_time": "2021-09-24T00:00:00", + "exit_price": 94.20013868958425, + "exit_reason": "signal", + "exit_time": "2021-09-25T00:00:00", + "pnl": 33.05451185552192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84924924581607, + "entry_time": "2021-09-27T00:00:00", + "exit_price": 93.31289310035527, + "exit_reason": "signal", + "exit_time": "2021-09-28T00:00:00", + "pnl": -153.63561454607952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30858201402589, + "entry_time": "2021-09-30T00:00:00", + "exit_price": 93.99373607498532, + "exit_reason": "signal", + "exit_time": "2021-10-01T00:00:00", + "pnl": -31.484593904056965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.18572768435918, + "entry_time": "2021-10-03T00:00:00", + "exit_price": 94.33439114940059, + "exit_reason": "signal", + "exit_time": "2021-10-04T00:00:00", + "pnl": -85.13365349585911, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07429869254726, + "entry_time": "2021-10-06T00:00:00", + "exit_price": 94.04790943044297, + "exit_reason": "signal", + "exit_time": "2021-10-07T00:00:00", + "pnl": -2.6389262104275986, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64069907229371, + "entry_time": "2021-10-09T00:00:00", + "exit_price": 94.26235855896988, + "exit_reason": "signal", + "exit_time": "2021-10-10T00:00:00", + "pnl": 62.16594866761625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.50379403067527, + "entry_time": "2021-10-12T00:00:00", + "exit_price": 94.43691170957882, + "exit_reason": "signal", + "exit_time": "2021-10-13T00:00:00", + "pnl": -6.688232109645469, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37005197510278, + "entry_time": "2021-10-15T00:00:00", + "exit_price": 94.27057437223934, + "exit_reason": "signal", + "exit_time": "2021-10-16T00:00:00", + "pnl": -9.947760286344419, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.09337235241868, + "entry_time": "2021-10-18T00:00:00", + "exit_price": 94.71128565229746, + "exit_reason": "signal", + "exit_time": "2021-10-19T00:00:00", + "pnl": -38.20867001212173, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.02883456195461, + "entry_time": "2021-10-21T00:00:00", + "exit_price": 94.80490335979458, + "exit_reason": "signal", + "exit_time": "2021-10-22T00:00:00", + "pnl": 77.60687978399619, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.9287597961482, + "entry_time": "2021-10-24T00:00:00", + "exit_price": 95.17470692964342, + "exit_reason": "signal", + "exit_time": "2021-10-25T00:00:00", + "pnl": 124.59471334952104, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2493152678643, + "entry_time": "2021-10-27T00:00:00", + "exit_price": 93.60050033989026, + "exit_reason": "signal", + "exit_time": "2021-10-28T00:00:00", + "pnl": -64.88149279740537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09469925407369, + "entry_time": "2021-10-30T00:00:00", + "exit_price": 94.3111349289259, + "exit_reason": "signal", + "exit_time": "2021-10-31T00:00:00", + "pnl": 21.643567485220046, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18816369089684, + "entry_time": "2021-11-02T00:00:00", + "exit_price": 94.42938460793316, + "exit_reason": "signal", + "exit_time": "2021-11-03T00:00:00", + "pnl": 24.122091703631668, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.41602741852829, + "entry_time": "2021-11-05T00:00:00", + "exit_price": 93.42310978968692, + "exit_reason": "signal", + "exit_time": "2021-11-06T00:00:00", + "pnl": 0.7082371158630849, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.50953693273829, + "entry_time": "2021-11-08T00:00:00", + "exit_price": 93.33123427861662, + "exit_reason": "signal", + "exit_time": "2021-11-09T00:00:00", + "pnl": 82.16973458783286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96020937715257, + "entry_time": "2021-11-11T00:00:00", + "exit_price": 93.53068640749544, + "exit_reason": "signal", + "exit_time": "2021-11-12T00:00:00", + "pnl": 57.047703034286315, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5609164087555, + "entry_time": "2021-11-14T00:00:00", + "exit_price": 92.89910933295498, + "exit_reason": "signal", + "exit_time": "2021-11-15T00:00:00", + "pnl": 33.81929241994658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.4272707886787, + "entry_time": "2021-11-17T00:00:00", + "exit_price": 92.19572149206287, + "exit_reason": "signal", + "exit_time": "2021-11-18T00:00:00", + "pnl": -23.154929661581264, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68137345397398, + "entry_time": "2021-11-20T00:00:00", + "exit_price": 92.48011498833463, + "exit_reason": "signal", + "exit_time": "2021-11-21T00:00:00", + "pnl": -20.12584656393483, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73481537380023, + "entry_time": "2021-11-23T00:00:00", + "exit_price": 93.9817766831428, + "exit_reason": "signal", + "exit_time": "2021-11-24T00:00:00", + "pnl": 124.69613093425687, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.62422399002075, + "entry_time": "2021-11-26T00:00:00", + "exit_price": 92.25402747101043, + "exit_reason": "signal", + "exit_time": "2021-11-27T00:00:00", + "pnl": -37.019651901031466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.78794113614683, + "entry_time": "2021-11-29T00:00:00", + "exit_price": 92.51565520344022, + "exit_reason": "signal", + "exit_time": "2021-11-30T00:00:00", + "pnl": -27.228593270659985, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81994141877884, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 91.73569183010366, + "exit_reason": "signal", + "exit_time": "2021-12-03T00:00:00", + "pnl": -8.42495886751749, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89304084668578, + "entry_time": "2021-12-05T00:00:00", + "exit_price": 91.94563028017612, + "exit_reason": "signal", + "exit_time": "2021-12-06T00:00:00", + "pnl": 5.258943349033871, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.70380536433252, + "entry_time": "2021-12-08T00:00:00", + "exit_price": 92.18321579529317, + "exit_reason": "signal", + "exit_time": "2021-12-09T00:00:00", + "pnl": 47.94104309606337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75634960957339, + "entry_time": "2021-12-11T00:00:00", + "exit_price": 92.99346542277752, + "exit_reason": "signal", + "exit_time": "2021-12-12T00:00:00", + "pnl": 23.711581320412733, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07784715364147, + "entry_time": "2021-12-14T00:00:00", + "exit_price": 92.82473368702337, + "exit_reason": "signal", + "exit_time": "2021-12-15T00:00:00", + "pnl": -25.311346661810603, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.80939097372557, + "entry_time": "2021-12-17T00:00:00", + "exit_price": 93.56855092683492, + "exit_reason": "signal", + "exit_time": "2021-12-18T00:00:00", + "pnl": -24.084004689064386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.22637736311736, + "entry_time": "2021-12-20T00:00:00", + "exit_price": 93.04989016451177, + "exit_reason": "signal", + "exit_time": "2021-12-21T00:00:00", + "pnl": -17.64871986056096, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06688407845617, + "entry_time": "2021-12-23T00:00:00", + "exit_price": 93.11481000895263, + "exit_reason": "signal", + "exit_time": "2021-12-24T00:00:00", + "pnl": 4.792593049645802, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27282277875311, + "entry_time": "2021-12-26T00:00:00", + "exit_price": 92.10549027383173, + "exit_reason": "signal", + "exit_time": "2021-12-27T00:00:00", + "pnl": -116.73325049213781, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02590143870165, + "entry_time": "2021-12-29T00:00:00", + "exit_price": 93.0111357952797, + "exit_reason": "signal", + "exit_time": "2021-12-30T00:00:00", + "pnl": 98.52343565780393, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.36789726372409, + "entry_time": "2022-01-01T00:00:00", + "exit_price": 91.16759918928896, + "exit_reason": "signal", + "exit_time": "2022-01-02T00:00:00", + "pnl": -20.029807443512254, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02364437811006, + "entry_time": "2022-01-04T00:00:00", + "exit_price": 91.64247835816664, + "exit_reason": "signal", + "exit_time": "2022-01-05T00:00:00", + "pnl": -38.11660199434118, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20232839714718, + "entry_time": "2022-01-07T00:00:00", + "exit_price": 92.51418676739564, + "exit_reason": "signal", + "exit_time": "2022-01-08T00:00:00", + "pnl": 31.185837024846478, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.81320041849361, + "entry_time": "2022-01-10T00:00:00", + "exit_price": 92.27166607324205, + "exit_reason": "signal", + "exit_time": "2022-01-11T00:00:00", + "pnl": 45.84656547484337, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.2545983932022, + "entry_time": "2022-01-13T00:00:00", + "exit_price": 91.97497228207648, + "exit_reason": "signal", + "exit_time": "2022-01-14T00:00:00", + "pnl": -27.962611112570812, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.67780842750179, + "entry_time": "2022-01-16T00:00:00", + "exit_price": 91.45906966920411, + "exit_reason": "signal", + "exit_time": "2022-01-17T00:00:00", + "pnl": -21.873875829767712, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.76345480442126, + "entry_time": "2022-01-19T00:00:00", + "exit_price": 91.43197465037622, + "exit_reason": "signal", + "exit_time": "2022-01-20T00:00:00", + "pnl": -33.148015404503894, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3600604543369, + "entry_time": "2022-01-22T00:00:00", + "exit_price": 92.44350843545416, + "exit_reason": "signal", + "exit_time": "2022-01-23T00:00:00", + "pnl": 8.34479811172605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.39757672508603, + "entry_time": "2022-01-25T00:00:00", + "exit_price": 91.85230151275863, + "exit_reason": "signal", + "exit_time": "2022-01-26T00:00:00", + "pnl": 45.47247876726033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.81407145534195, + "entry_time": "2022-01-28T00:00:00", + "exit_price": 91.01128875382821, + "exit_reason": "signal", + "exit_time": "2022-01-29T00:00:00", + "pnl": 19.721729848626637, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.67591197573066, + "entry_time": "2022-01-31T00:00:00", + "exit_price": 90.51279666702179, + "exit_reason": "signal", + "exit_time": "2022-02-01T00:00:00", + "pnl": -116.31153087088569, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.98461279621962, + "entry_time": "2022-02-03T00:00:00", + "exit_price": 91.18776220832692, + "exit_reason": "signal", + "exit_time": "2022-02-04T00:00:00", + "pnl": -79.68505878927135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.68365711276127, + "entry_time": "2022-02-06T00:00:00", + "exit_price": 92.52965334263803, + "exit_reason": "signal", + "exit_time": "2022-02-07T00:00:00", + "pnl": -15.400377012323588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.97018528191016, + "entry_time": "2022-02-09T00:00:00", + "exit_price": 92.1704075246973, + "exit_reason": "signal", + "exit_time": "2022-02-10T00:00:00", + "pnl": 20.02222427871311, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.4092834971355, + "entry_time": "2022-02-12T00:00:00", + "exit_price": 91.80397108470675, + "exit_reason": "signal", + "exit_time": "2022-02-13T00:00:00", + "pnl": 39.468758757124306, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.7224658447326, + "entry_time": "2022-02-15T00:00:00", + "exit_price": 91.15638220769824, + "exit_reason": "signal", + "exit_time": "2022-02-16T00:00:00", + "pnl": -56.608363703435316, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.66063113797075, + "entry_time": "2022-02-18T00:00:00", + "exit_price": 91.93674170823937, + "exit_reason": "signal", + "exit_time": "2022-02-19T00:00:00", + "pnl": 27.61105702686109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.02426166276656, + "entry_time": "2022-02-21T00:00:00", + "exit_price": 92.2868521233569, + "exit_reason": "signal", + "exit_time": "2022-02-22T00:00:00", + "pnl": 126.2590460590327, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.06798590582005, + "entry_time": "2022-02-24T00:00:00", + "exit_price": 91.35136606041436, + "exit_reason": "signal", + "exit_time": "2022-02-25T00:00:00", + "pnl": 28.338015459430608, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.99746534424483, + "entry_time": "2022-02-27T00:00:00", + "exit_price": 91.56303029535638, + "exit_reason": "signal", + "exit_time": "2022-02-28T00:00:00", + "pnl": 56.55649511115553, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.0942536160811, + "entry_time": "2022-03-02T00:00:00", + "exit_price": 91.42070005109457, + "exit_reason": "signal", + "exit_time": "2022-03-03T00:00:00", + "pnl": -67.35535649865233, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.41089068186189, + "entry_time": "2022-03-05T00:00:00", + "exit_price": 90.18677881527823, + "exit_reason": "signal", + "exit_time": "2022-03-06T00:00:00", + "pnl": -122.4111866583662, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43901544778934, + "entry_time": "2022-03-08T00:00:00", + "exit_price": 91.5260369404649, + "exit_reason": "signal", + "exit_time": "2022-03-09T00:00:00", + "pnl": 8.702149267555797, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.01177208564718, + "entry_time": "2022-03-11T00:00:00", + "exit_price": 91.36159823018748, + "exit_reason": "signal", + "exit_time": "2022-03-12T00:00:00", + "pnl": 34.982614454031136, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8208251198108, + "entry_time": "2022-03-14T00:00:00", + "exit_price": 91.28071492977152, + "exit_reason": "signal", + "exit_time": "2022-03-15T00:00:00", + "pnl": 45.988980996071405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.9250036260453, + "entry_time": "2022-03-17T00:00:00", + "exit_price": 90.6150063093046, + "exit_reason": "signal", + "exit_time": "2022-03-18T00:00:00", + "pnl": -130.99973167406824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.61363931969464, + "entry_time": "2022-03-20T00:00:00", + "exit_price": 90.38004154259693, + "exit_reason": "signal", + "exit_time": "2022-03-21T00:00:00", + "pnl": -23.35977770977297, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.96467806287603, + "entry_time": "2022-03-23T00:00:00", + "exit_price": 90.70041523761671, + "exit_reason": "signal", + "exit_time": "2022-03-24T00:00:00", + "pnl": -26.426282525932038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.62074541364396, + "entry_time": "2022-03-26T00:00:00", + "exit_price": 90.95651159207543, + "exit_reason": "signal", + "exit_time": "2022-03-27T00:00:00", + "pnl": 33.57661784314587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05267669381955, + "entry_time": "2022-03-29T00:00:00", + "exit_price": 91.69416855510607, + "exit_reason": "signal", + "exit_time": "2022-03-30T00:00:00", + "pnl": 64.14918612865222, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.8695133244266, + "entry_time": "2022-04-01T00:00:00", + "exit_price": 90.61012799594212, + "exit_reason": "signal", + "exit_time": "2022-04-02T00:00:00", + "pnl": -25.93853284844772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.05464751490084, + "entry_time": "2022-04-04T00:00:00", + "exit_price": 90.46681240023963, + "exit_reason": "signal", + "exit_time": "2022-04-05T00:00:00", + "pnl": 41.216488533878874, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.63067407291008, + "entry_time": "2022-04-07T00:00:00", + "exit_price": 89.96046847840074, + "exit_reason": "signal", + "exit_time": "2022-04-08T00:00:00", + "pnl": -67.02055945093343, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.56273021751427, + "entry_time": "2022-04-10T00:00:00", + "exit_price": 90.14638715063298, + "exit_reason": "signal", + "exit_time": "2022-04-11T00:00:00", + "pnl": -41.63430668812907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.75859326793318, + "entry_time": "2022-04-13T00:00:00", + "exit_price": 90.97823499949781, + "exit_reason": "signal", + "exit_time": "2022-04-14T00:00:00", + "pnl": 121.96417315646431, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.15637756363428, + "entry_time": "2022-04-16T00:00:00", + "exit_price": 89.71453147899727, + "exit_reason": "signal", + "exit_time": "2022-04-17T00:00:00", + "pnl": -44.18460846370181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.00941330347686, + "entry_time": "2022-04-19T00:00:00", + "exit_price": 90.97249110306038, + "exit_reason": "signal", + "exit_time": "2022-04-20T00:00:00", + "pnl": 96.3077799583516, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.44900384555615, + "entry_time": "2022-04-22T00:00:00", + "exit_price": 90.26380626108603, + "exit_reason": "signal", + "exit_time": "2022-04-23T00:00:00", + "pnl": -18.519758447011554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.9389490074607, + "entry_time": "2022-04-25T00:00:00", + "exit_price": 90.91676356991597, + "exit_reason": "signal", + "exit_time": "2022-04-26T00:00:00", + "pnl": 97.78145624552599, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.13685393625028, + "entry_time": "2022-04-28T00:00:00", + "exit_price": 90.92025914672816, + "exit_reason": "signal", + "exit_time": "2022-04-29T00:00:00", + "pnl": 78.34052104778675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.9636459548143, + "entry_time": "2022-05-01T00:00:00", + "exit_price": 90.9470309766908, + "exit_reason": "signal", + "exit_time": "2022-05-02T00:00:00", + "pnl": 98.3385021876511, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.23464868145118, + "entry_time": "2022-05-04T00:00:00", + "exit_price": 92.16095300836626, + "exit_reason": "signal", + "exit_time": "2022-05-05T00:00:00", + "pnl": 92.63043269150876, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.86371979002092, + "entry_time": "2022-05-07T00:00:00", + "exit_price": 90.1658806519524, + "exit_reason": "signal", + "exit_time": "2022-05-08T00:00:00", + "pnl": -69.78391380685025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.80999909964301, + "entry_time": "2022-05-10T00:00:00", + "exit_price": 91.3916052906719, + "exit_reason": "signal", + "exit_time": "2022-05-11T00:00:00", + "pnl": 58.16061910288954, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.79830122498419, + "entry_time": "2022-05-13T00:00:00", + "exit_price": 91.92464426243117, + "exit_reason": "signal", + "exit_time": "2022-05-14T00:00:00", + "pnl": 12.634303744698627, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.74084404129732, + "entry_time": "2022-05-16T00:00:00", + "exit_price": 91.77591195761288, + "exit_reason": "signal", + "exit_time": "2022-05-17T00:00:00", + "pnl": 3.5067916315565526, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.129082151163, + "entry_time": "2022-05-19T00:00:00", + "exit_price": 91.29443539538282, + "exit_reason": "signal", + "exit_time": "2022-05-20T00:00:00", + "pnl": 16.535324421982295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.49821093674116, + "entry_time": "2022-05-22T00:00:00", + "exit_price": 90.52895961614624, + "exit_reason": "signal", + "exit_time": "2022-05-23T00:00:00", + "pnl": 103.07486794050783, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.50773769923417, + "entry_time": "2022-05-25T00:00:00", + "exit_price": 90.20586243304412, + "exit_reason": "signal", + "exit_time": "2022-05-26T00:00:00", + "pnl": -30.18752661900544, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.1593251595947, + "entry_time": "2022-05-28T00:00:00", + "exit_price": 90.8652392547076, + "exit_reason": "signal", + "exit_time": "2022-05-29T00:00:00", + "pnl": -29.408590488710615, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.88148378297518, + "entry_time": "2022-05-31T00:00:00", + "exit_price": 90.54298539634833, + "exit_reason": "signal", + "exit_time": "2022-06-01T00:00:00", + "pnl": 66.15016133731478, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.97268456538903, + "entry_time": "2022-06-03T00:00:00", + "exit_price": 91.62712854780935, + "exit_reason": "signal", + "exit_time": "2022-06-04T00:00:00", + "pnl": 65.44439824203255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.74146887774299, + "entry_time": "2022-06-06T00:00:00", + "exit_price": 90.42853595632805, + "exit_reason": "signal", + "exit_time": "2022-06-07T00:00:00", + "pnl": -31.29329214149402, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.84848168731004, + "entry_time": "2022-06-09T00:00:00", + "exit_price": 90.83668379255865, + "exit_reason": "signal", + "exit_time": "2022-06-10T00:00:00", + "pnl": -1.1797894751398417, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.47241973433749, + "entry_time": "2022-06-12T00:00:00", + "exit_price": 89.89842730786603, + "exit_reason": "signal", + "exit_time": "2022-06-13T00:00:00", + "pnl": -57.39924264714682, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.82455441317694, + "entry_time": "2022-06-15T00:00:00", + "exit_price": 90.16986826544031, + "exit_reason": "signal", + "exit_time": "2022-06-16T00:00:00", + "pnl": -65.46861477366292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.1811588929617, + "entry_time": "2022-06-18T00:00:00", + "exit_price": 90.09911654611165, + "exit_reason": "signal", + "exit_time": "2022-06-19T00:00:00", + "pnl": 91.79576531499515, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.55257557802233, + "entry_time": "2022-06-21T00:00:00", + "exit_price": 90.6008717295654, + "exit_reason": "signal", + "exit_time": "2022-06-22T00:00:00", + "pnl": 4.829615154307248, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.68671023186488, + "entry_time": "2022-06-24T00:00:00", + "exit_price": 89.96517472835333, + "exit_reason": "signal", + "exit_time": "2022-06-25T00:00:00", + "pnl": -72.15355035115317, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.05260562521785, + "entry_time": "2022-06-27T00:00:00", + "exit_price": 90.08006582461334, + "exit_reason": "signal", + "exit_time": "2022-06-28T00:00:00", + "pnl": 2.746019939548205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.79432064186736, + "entry_time": "2022-06-30T00:00:00", + "exit_price": 92.41108821991375, + "exit_reason": "signal", + "exit_time": "2022-07-01T00:00:00", + "pnl": 161.67675780463833, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87347025830266, + "entry_time": "2022-07-03T00:00:00", + "exit_price": 91.20564533828777, + "exit_reason": "signal", + "exit_time": "2022-07-04T00:00:00", + "pnl": 33.21750799850997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.30309517181773, + "entry_time": "2022-07-06T00:00:00", + "exit_price": 90.1406611037728, + "exit_reason": "signal", + "exit_time": "2022-07-07T00:00:00", + "pnl": -116.24340680449313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.24392591685461, + "entry_time": "2022-07-09T00:00:00", + "exit_price": 91.10896639776044, + "exit_reason": "signal", + "exit_time": "2022-07-10T00:00:00", + "pnl": 86.50404809058273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43429707485602, + "entry_time": "2022-07-12T00:00:00", + "exit_price": 90.99823744300166, + "exit_reason": "signal", + "exit_time": "2022-07-13T00:00:00", + "pnl": -43.60596318543685, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.51160983247296, + "entry_time": "2022-07-15T00:00:00", + "exit_price": 91.15695774047701, + "exit_reason": "signal", + "exit_time": "2022-07-16T00:00:00", + "pnl": 64.53479080040597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.25313076740179, + "entry_time": "2022-07-18T00:00:00", + "exit_price": 90.3503914171167, + "exit_reason": "signal", + "exit_time": "2022-07-19T00:00:00", + "pnl": -90.27393502850828, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47393608345517, + "entry_time": "2022-07-21T00:00:00", + "exit_price": 89.98751697992218, + "exit_reason": "signal", + "exit_time": "2022-07-22T00:00:00", + "pnl": -148.64191035329895, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.0545116492653, + "entry_time": "2022-07-24T00:00:00", + "exit_price": 91.01799823084976, + "exit_reason": "signal", + "exit_time": "2022-07-25T00:00:00", + "pnl": -103.65134184155431, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05081241841744, + "entry_time": "2022-07-27T00:00:00", + "exit_price": 91.31407916672543, + "exit_reason": "signal", + "exit_time": "2022-07-28T00:00:00", + "pnl": 26.326674830799675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.80885265421585, + "entry_time": "2022-07-30T00:00:00", + "exit_price": 91.15205975168703, + "exit_reason": "signal", + "exit_time": "2022-07-31T00:00:00", + "pnl": 34.32070974711678, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.47241880815605, + "entry_time": "2022-08-02T00:00:00", + "exit_price": 91.54172600484964, + "exit_reason": "signal", + "exit_time": "2022-08-03T00:00:00", + "pnl": 6.93071966935895, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.8976774720573, + "entry_time": "2022-08-05T00:00:00", + "exit_price": 91.58791087448299, + "exit_reason": "signal", + "exit_time": "2022-08-06T00:00:00", + "pnl": -30.976659757430753, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.02271267015783, + "entry_time": "2022-08-08T00:00:00", + "exit_price": 91.10459083951521, + "exit_reason": "signal", + "exit_time": "2022-08-09T00:00:00", + "pnl": -91.81218306426308, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24414870008319, + "entry_time": "2022-08-11T00:00:00", + "exit_price": 92.69109127617371, + "exit_reason": "signal", + "exit_time": "2022-08-12T00:00:00", + "pnl": 44.69425760905142, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.65306278042236, + "entry_time": "2022-08-14T00:00:00", + "exit_price": 92.39816620647916, + "exit_reason": "signal", + "exit_time": "2022-08-15T00:00:00", + "pnl": 74.51034260568122, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1810606061523, + "entry_time": "2022-08-17T00:00:00", + "exit_price": 92.49470462633181, + "exit_reason": "signal", + "exit_time": "2022-08-18T00:00:00", + "pnl": -68.63559798204915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01504374556126, + "entry_time": "2022-08-20T00:00:00", + "exit_price": 92.67904663244455, + "exit_reason": "signal", + "exit_time": "2022-08-21T00:00:00", + "pnl": 66.40028868832997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74908045175502, + "entry_time": "2022-08-23T00:00:00", + "exit_price": 93.28081352108578, + "exit_reason": "signal", + "exit_time": "2022-08-24T00:00:00", + "pnl": -46.826693066923326, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.72430502818085, + "entry_time": "2022-08-26T00:00:00", + "exit_price": 92.91000509633356, + "exit_reason": "signal", + "exit_time": "2022-08-27T00:00:00", + "pnl": -81.42999318472721, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0266388958905, + "entry_time": "2022-08-29T00:00:00", + "exit_price": 93.06932306108122, + "exit_reason": "signal", + "exit_time": "2022-08-30T00:00:00", + "pnl": 4.268416519071252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2669116718157, + "entry_time": "2022-09-01T00:00:00", + "exit_price": 93.31911690207038, + "exit_reason": "signal", + "exit_time": "2022-09-02T00:00:00", + "pnl": 5.220523025467628, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.01378736632232, + "entry_time": "2022-09-04T00:00:00", + "exit_price": 92.69057272581715, + "exit_reason": "signal", + "exit_time": "2022-09-05T00:00:00", + "pnl": -32.321464050517534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86605080021333, + "entry_time": "2022-09-07T00:00:00", + "exit_price": 93.54829275642138, + "exit_reason": "signal", + "exit_time": "2022-09-08T00:00:00", + "pnl": 68.2241956208054, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.92761316198515, + "entry_time": "2022-09-10T00:00:00", + "exit_price": 92.07281692163534, + "exit_reason": "signal", + "exit_time": "2022-09-11T00:00:00", + "pnl": -185.4796240349824, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.2809228591007, + "entry_time": "2022-09-13T00:00:00", + "exit_price": 94.11130793179962, + "exit_reason": "signal", + "exit_time": "2022-09-14T00:00:00", + "pnl": -16.961492730108148, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.78210365621943, + "entry_time": "2022-09-16T00:00:00", + "exit_price": 94.99114272050637, + "exit_reason": "signal", + "exit_time": "2022-09-17T00:00:00", + "pnl": 20.903906428693517, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26603620619441, + "entry_time": "2022-09-19T00:00:00", + "exit_price": 95.26895473010688, + "exit_reason": "signal", + "exit_time": "2022-09-20T00:00:00", + "pnl": 100.29185239124672, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.88756691851471, + "entry_time": "2022-09-22T00:00:00", + "exit_price": 94.90535085923925, + "exit_reason": "signal", + "exit_time": "2022-09-23T00:00:00", + "pnl": 1.7783940724530112, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.86627784439669, + "entry_time": "2022-09-25T00:00:00", + "exit_price": 94.27678234231546, + "exit_reason": "signal", + "exit_time": "2022-09-26T00:00:00", + "pnl": -58.94955020812449, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21120724189035, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 93.62182381785365, + "exit_reason": "signal", + "exit_time": "2022-09-29T00:00:00", + "pnl": -58.938342403669594, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.70089986040492, + "entry_time": "2022-10-01T00:00:00", + "exit_price": 94.98061841891752, + "exit_reason": "signal", + "exit_time": "2022-10-02T00:00:00", + "pnl": 27.971855851259534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.63730668221625, + "entry_time": "2022-10-04T00:00:00", + "exit_price": 95.21809213108293, + "exit_reason": "signal", + "exit_time": "2022-10-05T00:00:00", + "pnl": 58.07854488666817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.62513446883317, + "entry_time": "2022-10-07T00:00:00", + "exit_price": 95.0550792423482, + "exit_reason": "signal", + "exit_time": "2022-10-08T00:00:00", + "pnl": 42.99447735150352, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71116560219859, + "entry_time": "2022-10-10T00:00:00", + "exit_price": 94.70112878957045, + "exit_reason": "signal", + "exit_time": "2022-10-11T00:00:00", + "pnl": 98.99631873718499, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.22008595203475, + "entry_time": "2022-10-13T00:00:00", + "exit_price": 95.26583380518775, + "exit_reason": "signal", + "exit_time": "2022-10-14T00:00:00", + "pnl": 104.57478531530069, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84031644841893, + "entry_time": "2022-10-16T00:00:00", + "exit_price": 94.76253265375746, + "exit_reason": "signal", + "exit_time": "2022-10-17T00:00:00", + "pnl": -7.778379466146362, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.36921450181964, + "entry_time": "2022-10-19T00:00:00", + "exit_price": 94.38751561741323, + "exit_reason": "signal", + "exit_time": "2022-10-20T00:00:00", + "pnl": 101.83011155935856, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.7594276079707, + "entry_time": "2022-10-22T00:00:00", + "exit_price": 94.20505090808615, + "exit_reason": "signal", + "exit_time": "2022-10-23T00:00:00", + "pnl": -55.43766998845422, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01993010545006, + "entry_time": "2022-10-25T00:00:00", + "exit_price": 94.25253006691226, + "exit_reason": "signal", + "exit_time": "2022-10-26T00:00:00", + "pnl": -76.74000385377985, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.9292129294191, + "entry_time": "2022-10-28T00:00:00", + "exit_price": 95.45831791808807, + "exit_reason": "signal", + "exit_time": "2022-10-29T00:00:00", + "pnl": 52.91049886689689, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.01874761761506, + "entry_time": "2022-10-31T00:00:00", + "exit_price": 95.70179579177142, + "exit_reason": "signal", + "exit_time": "2022-11-01T00:00:00", + "pnl": 68.30481741563563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.45782648578765, + "entry_time": "2022-11-03T00:00:00", + "exit_price": 95.9654506293958, + "exit_reason": "signal", + "exit_time": "2022-11-04T00:00:00", + "pnl": -49.237585639184545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.69543160906309, + "entry_time": "2022-11-06T00:00:00", + "exit_price": 96.23626703373414, + "exit_reason": "signal", + "exit_time": "2022-11-07T00:00:00", + "pnl": 54.08354246710405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23730582460071, + "entry_time": "2022-11-09T00:00:00", + "exit_price": 94.58630669240723, + "exit_reason": "signal", + "exit_time": "2022-11-10T00:00:00", + "pnl": -65.09991321934831, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.24411442253736, + "entry_time": "2022-11-12T00:00:00", + "exit_price": 94.80412345904836, + "exit_reason": "signal", + "exit_time": "2022-11-13T00:00:00", + "pnl": -43.99909634890173, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.33266826608637, + "entry_time": "2022-11-15T00:00:00", + "exit_price": 94.08584208568091, + "exit_reason": "signal", + "exit_time": "2022-11-16T00:00:00", + "pnl": -24.682618040546004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20511704388718, + "entry_time": "2022-11-18T00:00:00", + "exit_price": 93.73586252939168, + "exit_reason": "signal", + "exit_time": "2022-11-19T00:00:00", + "pnl": -46.925451449549655, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6229802242446, + "entry_time": "2022-11-21T00:00:00", + "exit_price": 93.66558700926207, + "exit_reason": "signal", + "exit_time": "2022-11-22T00:00:00", + "pnl": -95.73932149825305, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74677062129318, + "entry_time": "2022-11-24T00:00:00", + "exit_price": 93.54017463980657, + "exit_reason": "signal", + "exit_time": "2022-11-25T00:00:00", + "pnl": -20.659598148660734, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.730138438308, + "entry_time": "2022-11-27T00:00:00", + "exit_price": 93.49572076787184, + "exit_reason": "signal", + "exit_time": "2022-11-28T00:00:00", + "pnl": -23.441767043615982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77203615539878, + "entry_time": "2022-11-30T00:00:00", + "exit_price": 92.91635203682458, + "exit_reason": "signal", + "exit_time": "2022-12-01T00:00:00", + "pnl": -85.56841185742087, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91294155802173, + "entry_time": "2022-12-03T00:00:00", + "exit_price": 92.85493736088272, + "exit_reason": "signal", + "exit_time": "2022-12-04T00:00:00", + "pnl": -105.80041971389983, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.07037492573126, + "entry_time": "2022-12-06T00:00:00", + "exit_price": 93.35918129576551, + "exit_reason": "signal", + "exit_time": "2022-12-07T00:00:00", + "pnl": -71.11936299657646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.21752684184962, + "entry_time": "2022-12-09T00:00:00", + "exit_price": 93.82182795562746, + "exit_reason": "signal", + "exit_time": "2022-12-10T00:00:00", + "pnl": 60.43011137778376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91554181329224, + "entry_time": "2022-12-12T00:00:00", + "exit_price": 93.2637454877203, + "exit_reason": "signal", + "exit_time": "2022-12-13T00:00:00", + "pnl": -65.17963255719405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.42377971468683, + "entry_time": "2022-12-15T00:00:00", + "exit_price": 92.9956096009709, + "exit_reason": "signal", + "exit_time": "2022-12-16T00:00:00", + "pnl": -42.81701137159325, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.95024629295155, + "entry_time": "2022-12-18T00:00:00", + "exit_price": 92.02384747382928, + "exit_reason": "signal", + "exit_time": "2022-12-19T00:00:00", + "pnl": -92.63988191222597, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.73848563922941, + "entry_time": "2022-12-21T00:00:00", + "exit_price": 91.78634727970504, + "exit_reason": "signal", + "exit_time": "2022-12-22T00:00:00", + "pnl": 104.78616404756394, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.46503843997183, + "entry_time": "2022-12-24T00:00:00", + "exit_price": 91.75198886376967, + "exit_reason": "signal", + "exit_time": "2022-12-25T00:00:00", + "pnl": 28.695042379784354, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.39876122857235, + "entry_time": "2022-12-27T00:00:00", + "exit_price": 92.11567284541557, + "exit_reason": "signal", + "exit_time": "2022-12-28T00:00:00", + "pnl": -28.30883831567735, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77091533493147, + "entry_time": "2022-12-30T00:00:00", + "exit_price": 93.3485194106044, + "exit_reason": "signal", + "exit_time": "2022-12-31T00:00:00", + "pnl": 57.76040756729344, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.04122370969267, + "entry_time": "2023-01-02T00:00:00", + "exit_price": 92.97807111210727, + "exit_reason": "signal", + "exit_time": "2023-01-03T00:00:00", + "pnl": 93.68474024146053, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82297627909733, + "entry_time": "2023-01-05T00:00:00", + "exit_price": 92.88908258807695, + "exit_reason": "signal", + "exit_time": "2023-01-06T00:00:00", + "pnl": 6.610630897961528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.02494822567454, + "entry_time": "2023-01-08T00:00:00", + "exit_price": 92.52813633390632, + "exit_reason": "signal", + "exit_time": "2023-01-09T00:00:00", + "pnl": -49.681189176822954, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77607586946252, + "entry_time": "2023-01-11T00:00:00", + "exit_price": 92.84906975105618, + "exit_reason": "signal", + "exit_time": "2023-01-12T00:00:00", + "pnl": 7.299388159366572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.10682536410768, + "entry_time": "2023-01-14T00:00:00", + "exit_price": 92.60098332710814, + "exit_reason": "signal", + "exit_time": "2023-01-15T00:00:00", + "pnl": -50.58420369995474, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.16477240647922, + "entry_time": "2023-01-17T00:00:00", + "exit_price": 93.64464350405021, + "exit_reason": "signal", + "exit_time": "2023-01-18T00:00:00", + "pnl": 47.98710975709764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.34853961981467, + "entry_time": "2023-01-20T00:00:00", + "exit_price": 92.90164291858915, + "exit_reason": "signal", + "exit_time": "2023-01-21T00:00:00", + "pnl": 55.31032987744766, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52920571661875, + "entry_time": "2023-01-23T00:00:00", + "exit_price": 92.96718442791747, + "exit_reason": "signal", + "exit_time": "2023-01-24T00:00:00", + "pnl": -56.202128870127126, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1449985691514, + "entry_time": "2023-01-26T00:00:00", + "exit_price": 93.09214526901171, + "exit_reason": "signal", + "exit_time": "2023-01-27T00:00:00", + "pnl": -105.28533001396863, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08808617199072, + "entry_time": "2023-01-29T00:00:00", + "exit_price": 93.57735843418071, + "exit_reason": "signal", + "exit_time": "2023-01-30T00:00:00", + "pnl": -51.07277378100116, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.03374091329063, + "entry_time": "2023-02-01T00:00:00", + "exit_price": 92.67153521214688, + "exit_reason": "signal", + "exit_time": "2023-02-02T00:00:00", + "pnl": -136.2205701143739, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.90721494360177, + "entry_time": "2023-02-04T00:00:00", + "exit_price": 92.94800270723887, + "exit_reason": "signal", + "exit_time": "2023-02-05T00:00:00", + "pnl": 4.078776363709039, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.77341143396697, + "entry_time": "2023-02-07T00:00:00", + "exit_price": 93.16810608211969, + "exit_reason": "signal", + "exit_time": "2023-02-08T00:00:00", + "pnl": -60.53053518472916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.1295561924666, + "entry_time": "2023-02-10T00:00:00", + "exit_price": 93.6109897663897, + "exit_reason": "signal", + "exit_time": "2023-02-11T00:00:00", + "pnl": 48.143357392309554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09160273927316, + "entry_time": "2023-02-13T00:00:00", + "exit_price": 93.33166346007059, + "exit_reason": "signal", + "exit_time": "2023-02-14T00:00:00", + "pnl": -75.99392792025537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.53620789150742, + "entry_time": "2023-02-16T00:00:00", + "exit_price": 94.21568894504843, + "exit_reason": "signal", + "exit_time": "2023-02-17T00:00:00", + "pnl": -32.051894645899665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93343913761625, + "entry_time": "2023-02-19T00:00:00", + "exit_price": 94.02299067534886, + "exit_reason": "signal", + "exit_time": "2023-02-20T00:00:00", + "pnl": 8.955153773262282, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.18544500815403, + "entry_time": "2023-02-22T00:00:00", + "exit_price": 93.98907937476646, + "exit_reason": "signal", + "exit_time": "2023-02-23T00:00:00", + "pnl": -19.636563338757696, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45348785433026, + "entry_time": "2023-02-25T00:00:00", + "exit_price": 95.02085687929099, + "exit_reason": "signal", + "exit_time": "2023-02-26T00:00:00", + "pnl": 56.73690249607171, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.84830391916218, + "entry_time": "2023-02-28T00:00:00", + "exit_price": 94.43699045607909, + "exit_reason": "signal", + "exit_time": "2023-03-01T00:00:00", + "pnl": -41.13134630830791, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.95759166912262, + "entry_time": "2023-03-03T00:00:00", + "exit_price": 93.47551491598016, + "exit_reason": "signal", + "exit_time": "2023-03-04T00:00:00", + "pnl": -48.20767531424826, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66498305754212, + "entry_time": "2023-03-06T00:00:00", + "exit_price": 93.36643618283398, + "exit_reason": "signal", + "exit_time": "2023-03-07T00:00:00", + "pnl": -29.854687470813587, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3496449568648, + "entry_time": "2023-03-09T00:00:00", + "exit_price": 93.06229907806569, + "exit_reason": "signal", + "exit_time": "2023-03-10T00:00:00", + "pnl": -28.734587879909668, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.93784310790696, + "entry_time": "2023-03-12T00:00:00", + "exit_price": 92.96780942003683, + "exit_reason": "signal", + "exit_time": "2023-03-13T00:00:00", + "pnl": -97.00336878701273, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88445131540618, + "entry_time": "2023-03-15T00:00:00", + "exit_price": 94.08186481058257, + "exit_reason": "signal", + "exit_time": "2023-03-16T00:00:00", + "pnl": 19.74134951763881, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20796655389181, + "entry_time": "2023-03-18T00:00:00", + "exit_price": 91.9654081254928, + "exit_reason": "signal", + "exit_time": "2023-03-19T00:00:00", + "pnl": -24.25584283990065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.49393791749024, + "entry_time": "2023-03-21T00:00:00", + "exit_price": 92.05007592523164, + "exit_reason": "signal", + "exit_time": "2023-03-22T00:00:00", + "pnl": -44.386199225860764, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.84518996211608, + "entry_time": "2023-03-24T00:00:00", + "exit_price": 92.32190345568543, + "exit_reason": "signal", + "exit_time": "2023-03-25T00:00:00", + "pnl": 47.671349356935025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32827178627502, + "entry_time": "2023-03-27T00:00:00", + "exit_price": 93.26562867244172, + "exit_reason": "signal", + "exit_time": "2023-03-28T00:00:00", + "pnl": -6.264311383329186, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9489490131078, + "entry_time": "2023-03-30T00:00:00", + "exit_price": 93.54756230484855, + "exit_reason": "signal", + "exit_time": "2023-03-31T00:00:00", + "pnl": 59.861329174074854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.52695826109523, + "entry_time": "2023-04-02T00:00:00", + "exit_price": 93.16120912048845, + "exit_reason": "signal", + "exit_time": "2023-04-03T00:00:00", + "pnl": -36.57491406067675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73109278013733, + "entry_time": "2023-04-05T00:00:00", + "exit_price": 92.12967158946792, + "exit_reason": "signal", + "exit_time": "2023-04-06T00:00:00", + "pnl": -60.14211906694072, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66144197243285, + "entry_time": "2023-04-08T00:00:00", + "exit_price": 92.35105870140517, + "exit_reason": "signal", + "exit_time": "2023-04-09T00:00:00", + "pnl": -31.038327102769472, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32497954050243, + "entry_time": "2023-04-11T00:00:00", + "exit_price": 92.404028525945, + "exit_reason": "signal", + "exit_time": "2023-04-12T00:00:00", + "pnl": -92.09510145574313, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5596224194739, + "entry_time": "2023-04-14T00:00:00", + "exit_price": 93.06373732644884, + "exit_reason": "signal", + "exit_time": "2023-04-15T00:00:00", + "pnl": 50.41149069749554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82924854494932, + "entry_time": "2023-04-17T00:00:00", + "exit_price": 92.63616550173667, + "exit_reason": "signal", + "exit_time": "2023-04-18T00:00:00", + "pnl": -19.308304321264586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.79933273190036, + "entry_time": "2023-04-20T00:00:00", + "exit_price": 92.95120755426662, + "exit_reason": "signal", + "exit_time": "2023-04-21T00:00:00", + "pnl": 15.187482236626238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56403816854014, + "entry_time": "2023-04-23T00:00:00", + "exit_price": 92.35426808914588, + "exit_reason": "signal", + "exit_time": "2023-04-24T00:00:00", + "pnl": -20.977007939425675, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35865607168631, + "entry_time": "2023-04-26T00:00:00", + "exit_price": 92.90482034285156, + "exit_reason": "signal", + "exit_time": "2023-04-27T00:00:00", + "pnl": -45.3835728834747, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.9985787957225, + "entry_time": "2023-04-29T00:00:00", + "exit_price": 92.8768940380532, + "exit_reason": "signal", + "exit_time": "2023-04-30T00:00:00", + "pnl": -12.168475766929987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86502942650776, + "entry_time": "2023-05-02T00:00:00", + "exit_price": 92.82867955654159, + "exit_reason": "signal", + "exit_time": "2023-05-03T00:00:00", + "pnl": -3.634986996616135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06669061925808, + "entry_time": "2023-05-05T00:00:00", + "exit_price": 93.05805100493505, + "exit_reason": "signal", + "exit_time": "2023-05-06T00:00:00", + "pnl": -0.8639614323019487, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.19478081630376, + "entry_time": "2023-05-08T00:00:00", + "exit_price": 92.4726753044577, + "exit_reason": "signal", + "exit_time": "2023-05-09T00:00:00", + "pnl": -72.21055118460572, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.87741920594638, + "entry_time": "2023-05-11T00:00:00", + "exit_price": 93.47630925649874, + "exit_reason": "signal", + "exit_time": "2023-05-12T00:00:00", + "pnl": 159.88900505523452, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.67940992744533, + "entry_time": "2023-05-14T00:00:00", + "exit_price": 93.83387030747774, + "exit_reason": "signal", + "exit_time": "2023-05-15T00:00:00", + "pnl": 115.44603800323966, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.77541066961662, + "entry_time": "2023-05-17T00:00:00", + "exit_price": 93.21806909335821, + "exit_reason": "signal", + "exit_time": "2023-05-18T00:00:00", + "pnl": 44.26584237415955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2116719393634, + "entry_time": "2023-05-20T00:00:00", + "exit_price": 93.63189068076446, + "exit_reason": "signal", + "exit_time": "2023-05-21T00:00:00", + "pnl": 42.021874140105865, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.31676028980675, + "entry_time": "2023-05-23T00:00:00", + "exit_price": 93.96917376263126, + "exit_reason": "signal", + "exit_time": "2023-05-24T00:00:00", + "pnl": 65.24134728245008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.3332407570871, + "entry_time": "2023-05-26T00:00:00", + "exit_price": 94.63597205774145, + "exit_reason": "signal", + "exit_time": "2023-05-27T00:00:00", + "pnl": 30.273130065435907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.00130198273087, + "entry_time": "2023-05-29T00:00:00", + "exit_price": 94.05926832590498, + "exit_reason": "signal", + "exit_time": "2023-05-30T00:00:00", + "pnl": 5.79663431741028, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76190103073331, + "entry_time": "2023-06-01T00:00:00", + "exit_price": 94.24963627943364, + "exit_reason": "signal", + "exit_time": "2023-06-02T00:00:00", + "pnl": 148.77352487003373, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.73904226779082, + "entry_time": "2023-06-04T00:00:00", + "exit_price": 94.53198582108524, + "exit_reason": "signal", + "exit_time": "2023-06-05T00:00:00", + "pnl": -20.705644670559195, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.29391446442062, + "entry_time": "2023-06-07T00:00:00", + "exit_price": 94.60323551607766, + "exit_reason": "signal", + "exit_time": "2023-06-08T00:00:00", + "pnl": 30.932105165702524, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.17535379161295, + "entry_time": "2023-06-10T00:00:00", + "exit_price": 94.95745054254392, + "exit_reason": "signal", + "exit_time": "2023-06-11T00:00:00", + "pnl": 78.20967509309776, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.65432843266518, + "entry_time": "2023-06-13T00:00:00", + "exit_price": 94.33856790601594, + "exit_reason": "signal", + "exit_time": "2023-06-14T00:00:00", + "pnl": -31.576052664924646, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.36956060356385, + "entry_time": "2023-06-16T00:00:00", + "exit_price": 95.2507487739047, + "exit_reason": "signal", + "exit_time": "2023-06-17T00:00:00", + "pnl": 88.11881703408471, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.98092766917739, + "entry_time": "2023-06-19T00:00:00", + "exit_price": 94.16338627425559, + "exit_reason": "signal", + "exit_time": "2023-06-20T00:00:00", + "pnl": -81.75413949218091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.95283790294347, + "entry_time": "2023-06-22T00:00:00", + "exit_price": 94.37363985497257, + "exit_reason": "signal", + "exit_time": "2023-06-23T00:00:00", + "pnl": -57.919804797089455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.41734797456819, + "entry_time": "2023-06-25T00:00:00", + "exit_price": 94.46879833485087, + "exit_reason": "signal", + "exit_time": "2023-06-26T00:00:00", + "pnl": 5.145036028268805, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.89779171625212, + "entry_time": "2023-06-28T00:00:00", + "exit_price": 94.56566914846213, + "exit_reason": "signal", + "exit_time": "2023-06-29T00:00:00", + "pnl": 66.78774322100071, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.12295330761387, + "entry_time": "2023-07-01T00:00:00", + "exit_price": 94.47229523041987, + "exit_reason": "signal", + "exit_time": "2023-07-02T00:00:00", + "pnl": 34.934192280601565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.01642931045993, + "entry_time": "2023-07-04T00:00:00", + "exit_price": 94.97899403484826, + "exit_reason": "signal", + "exit_time": "2023-07-05T00:00:00", + "pnl": 96.25647243883213, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29040521639678, + "entry_time": "2023-07-07T00:00:00", + "exit_price": 94.62958711128005, + "exit_reason": "signal", + "exit_time": "2023-07-08T00:00:00", + "pnl": -66.0818105116723, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94114223449, + "entry_time": "2023-07-10T00:00:00", + "exit_price": 94.38592136937638, + "exit_reason": "signal", + "exit_time": "2023-07-11T00:00:00", + "pnl": -55.52208651136243, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.493222435549, + "entry_time": "2023-07-13T00:00:00", + "exit_price": 94.3474523152517, + "exit_reason": "signal", + "exit_time": "2023-07-14T00:00:00", + "pnl": -14.577012029729303, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.84805377401344, + "entry_time": "2023-07-16T00:00:00", + "exit_price": 93.24313248176318, + "exit_reason": "signal", + "exit_time": "2023-07-17T00:00:00", + "pnl": -60.492129225025565, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23716867785055, + "entry_time": "2023-07-19T00:00:00", + "exit_price": 94.3344550507391, + "exit_reason": "signal", + "exit_time": "2023-07-20T00:00:00", + "pnl": 109.72863728885386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.25058017257405, + "entry_time": "2023-07-22T00:00:00", + "exit_price": 94.26148603669161, + "exit_reason": "signal", + "exit_time": "2023-07-23T00:00:00", + "pnl": 1.090586411755794, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.78124566715694, + "entry_time": "2023-07-25T00:00:00", + "exit_price": 93.30392352510412, + "exit_reason": "signal", + "exit_time": "2023-07-26T00:00:00", + "pnl": -147.7322142052817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05471403229689, + "entry_time": "2023-07-28T00:00:00", + "exit_price": 93.26889976544973, + "exit_reason": "signal", + "exit_time": "2023-07-29T00:00:00", + "pnl": -78.58142668471555, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.97149252732743, + "entry_time": "2023-07-31T00:00:00", + "exit_price": 92.49652862514738, + "exit_reason": "signal", + "exit_time": "2023-08-01T00:00:00", + "pnl": -147.4963902180043, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49761686858754, + "entry_time": "2023-08-03T00:00:00", + "exit_price": 93.96133483843103, + "exit_reason": "signal", + "exit_time": "2023-08-04T00:00:00", + "pnl": 46.3717969843492, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.60373115569557, + "entry_time": "2023-08-06T00:00:00", + "exit_price": 94.43278823558683, + "exit_reason": "signal", + "exit_time": "2023-08-07T00:00:00", + "pnl": 82.90570798912631, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.216186422251, + "entry_time": "2023-08-09T00:00:00", + "exit_price": 93.22790913521419, + "exit_reason": "signal", + "exit_time": "2023-08-10T00:00:00", + "pnl": -98.8277287036799, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.5392105794396, + "entry_time": "2023-08-12T00:00:00", + "exit_price": 93.3857390941578, + "exit_reason": "signal", + "exit_time": "2023-08-13T00:00:00", + "pnl": -115.3471485281807, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.0337408175209, + "entry_time": "2023-08-15T00:00:00", + "exit_price": 94.39823678210567, + "exit_reason": "signal", + "exit_time": "2023-08-16T00:00:00", + "pnl": 136.44959645847666, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.08940418013472, + "entry_time": "2023-08-18T00:00:00", + "exit_price": 92.65920217896303, + "exit_reason": "signal", + "exit_time": "2023-08-19T00:00:00", + "pnl": -143.02020011716922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.39853539402684, + "entry_time": "2023-08-21T00:00:00", + "exit_price": 93.65048655775455, + "exit_reason": "signal", + "exit_time": "2023-08-22T00:00:00", + "pnl": 25.195116372769917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.79873760769597, + "entry_time": "2023-08-24T00:00:00", + "exit_price": 93.68828575617101, + "exit_reason": "signal", + "exit_time": "2023-08-25T00:00:00", + "pnl": 88.95481484750417, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87251964203307, + "entry_time": "2023-08-27T00:00:00", + "exit_price": 93.5300255114375, + "exit_reason": "signal", + "exit_time": "2023-08-28T00:00:00", + "pnl": -34.2494130595569, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.79086592344467, + "entry_time": "2023-08-30T00:00:00", + "exit_price": 92.57270931229704, + "exit_reason": "signal", + "exit_time": "2023-08-31T00:00:00", + "pnl": -121.81566111476423, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88859692291733, + "entry_time": "2023-09-02T00:00:00", + "exit_price": 93.80271734344691, + "exit_reason": "signal", + "exit_time": "2023-09-03T00:00:00", + "pnl": -8.587957947042014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.04073002158317, + "entry_time": "2023-09-05T00:00:00", + "exit_price": 94.46828834544144, + "exit_reason": "signal", + "exit_time": "2023-09-06T00:00:00", + "pnl": 142.75583238582658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23692924750448, + "entry_time": "2023-09-08T00:00:00", + "exit_price": 94.43771978777833, + "exit_reason": "signal", + "exit_time": "2023-09-09T00:00:00", + "pnl": 20.0790540273847, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.09517649815284, + "entry_time": "2023-09-11T00:00:00", + "exit_price": 94.97835234626153, + "exit_reason": "signal", + "exit_time": "2023-09-12T00:00:00", + "pnl": 88.31758481086945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.79133291522645, + "entry_time": "2023-09-14T00:00:00", + "exit_price": 94.02945945000636, + "exit_reason": "signal", + "exit_time": "2023-09-15T00:00:00", + "pnl": -76.18734652200874, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45235296621496, + "entry_time": "2023-09-17T00:00:00", + "exit_price": 94.63061442838703, + "exit_reason": "signal", + "exit_time": "2023-09-18T00:00:00", + "pnl": 17.82614621720677, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.1729530420449, + "entry_time": "2023-09-20T00:00:00", + "exit_price": 93.58327824763774, + "exit_reason": "signal", + "exit_time": "2023-09-21T00:00:00", + "pnl": -58.96747944071649, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53629152727201, + "entry_time": "2023-09-23T00:00:00", + "exit_price": 93.30651397849368, + "exit_reason": "signal", + "exit_time": "2023-09-24T00:00:00", + "pnl": -22.977754877832922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.69842586893596, + "entry_time": "2023-09-26T00:00:00", + "exit_price": 93.16248763742118, + "exit_reason": "signal", + "exit_time": "2023-09-27T00:00:00", + "pnl": -53.59382315147741, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.49605102540508, + "entry_time": "2023-09-29T00:00:00", + "exit_price": 94.25313944944546, + "exit_reason": "signal", + "exit_time": "2023-09-30T00:00:00", + "pnl": 75.70884240403757, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.8421663218519, + "entry_time": "2023-10-02T00:00:00", + "exit_price": 92.97561455613513, + "exit_reason": "signal", + "exit_time": "2023-10-03T00:00:00", + "pnl": 13.344823428322343, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.01878568439928, + "entry_time": "2023-10-05T00:00:00", + "exit_price": 92.7731623418128, + "exit_reason": "signal", + "exit_time": "2023-10-06T00:00:00", + "pnl": -24.562334258647752, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.3031103300392, + "entry_time": "2023-10-08T00:00:00", + "exit_price": 92.82895908639827, + "exit_reason": "signal", + "exit_time": "2023-10-09T00:00:00", + "pnl": -47.41512436409357, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.34460637435383, + "entry_time": "2023-10-11T00:00:00", + "exit_price": 92.32181327562058, + "exit_reason": "signal", + "exit_time": "2023-10-12T00:00:00", + "pnl": -2.2793098733236548, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.52607935640549, + "entry_time": "2023-10-14T00:00:00", + "exit_price": 92.2357948297768, + "exit_reason": "signal", + "exit_time": "2023-10-15T00:00:00", + "pnl": 70.97154733712887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.68746434551585, + "entry_time": "2023-10-17T00:00:00", + "exit_price": 91.58592175261929, + "exit_reason": "signal", + "exit_time": "2023-10-18T00:00:00", + "pnl": -10.154259289656693, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.4669708006904, + "entry_time": "2023-10-20T00:00:00", + "exit_price": 91.654447961068, + "exit_reason": "signal", + "exit_time": "2023-10-21T00:00:00", + "pnl": 18.747716037760256, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.3612670935331, + "entry_time": "2023-10-23T00:00:00", + "exit_price": 91.01031054901587, + "exit_reason": "signal", + "exit_time": "2023-10-24T00:00:00", + "pnl": -135.09565445172302, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.37919304454006, + "entry_time": "2023-10-26T00:00:00", + "exit_price": 91.41169786096938, + "exit_reason": "signal", + "exit_time": "2023-10-27T00:00:00", + "pnl": -96.74951835706815, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.29381617044329, + "entry_time": "2023-10-29T00:00:00", + "exit_price": 90.70386499802939, + "exit_reason": "signal", + "exit_time": "2023-10-30T00:00:00", + "pnl": -58.9951172413912, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.42981226133158, + "entry_time": "2023-11-01T00:00:00", + "exit_price": 91.13311787546733, + "exit_reason": "signal", + "exit_time": "2023-11-02T00:00:00", + "pnl": -29.669438586422984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.41698336938475, + "entry_time": "2023-11-04T00:00:00", + "exit_price": 91.39366908316057, + "exit_reason": "signal", + "exit_time": "2023-11-05T00:00:00", + "pnl": -2.3314286224194802, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.89356698837386, + "entry_time": "2023-11-07T00:00:00", + "exit_price": 91.60226357609555, + "exit_reason": "signal", + "exit_time": "2023-11-08T00:00:00", + "pnl": -29.130341227830286, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.41574363121151, + "entry_time": "2023-11-10T00:00:00", + "exit_price": 91.77307124686526, + "exit_reason": "signal", + "exit_time": "2023-11-11T00:00:00", + "pnl": -64.26723843462605, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.32527272706531, + "entry_time": "2023-11-13T00:00:00", + "exit_price": 94.02617500869306, + "exit_reason": "signal", + "exit_time": "2023-11-14T00:00:00", + "pnl": 170.09022816277502, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94533987249052, + "entry_time": "2023-11-16T00:00:00", + "exit_price": 92.0185892574846, + "exit_reason": "signal", + "exit_time": "2023-11-17T00:00:00", + "pnl": -92.67506150059126, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.30963127571127, + "entry_time": "2023-11-19T00:00:00", + "exit_price": 92.25489319248068, + "exit_reason": "signal", + "exit_time": "2023-11-20T00:00:00", + "pnl": -5.47380832305862, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74391567498765, + "entry_time": "2023-11-22T00:00:00", + "exit_price": 93.20889480054281, + "exit_reason": "signal", + "exit_time": "2023-11-23T00:00:00", + "pnl": 46.49791255551463, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.11263111652507, + "entry_time": "2023-11-25T00:00:00", + "exit_price": 93.10139698703692, + "exit_reason": "signal", + "exit_time": "2023-11-26T00:00:00", + "pnl": -101.1234129488148, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.71015543952899, + "entry_time": "2023-11-28T00:00:00", + "exit_price": 92.47583632063913, + "exit_reason": "signal", + "exit_time": "2023-11-29T00:00:00", + "pnl": -123.43191188898527, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.75986386635343, + "entry_time": "2023-12-01T00:00:00", + "exit_price": 94.27037620813209, + "exit_reason": "signal", + "exit_time": "2023-12-02T00:00:00", + "pnl": 151.05123417786672, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.44774661355898, + "entry_time": "2023-12-04T00:00:00", + "exit_price": 93.99875783176927, + "exit_reason": "signal", + "exit_time": "2023-12-05T00:00:00", + "pnl": 55.101121821029665, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.58344310898, + "entry_time": "2023-12-07T00:00:00", + "exit_price": 94.14439051922356, + "exit_reason": "signal", + "exit_time": "2023-12-08T00:00:00", + "pnl": 56.094741024355244, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.54039819515216, + "entry_time": "2023-12-10T00:00:00", + "exit_price": 92.9236778577475, + "exit_reason": "signal", + "exit_time": "2023-12-11T00:00:00", + "pnl": 38.32796625953415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.05584126819757, + "entry_time": "2023-12-13T00:00:00", + "exit_price": 93.35601781114134, + "exit_reason": "signal", + "exit_time": "2023-12-14T00:00:00", + "pnl": 130.01765429437728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.81351651597147, + "entry_time": "2023-12-16T00:00:00", + "exit_price": 92.84701543791368, + "exit_reason": "signal", + "exit_time": "2023-12-17T00:00:00", + "pnl": 3.3498921942209563, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.72332949821384, + "entry_time": "2023-12-19T00:00:00", + "exit_price": 92.51107159043487, + "exit_reason": "signal", + "exit_time": "2023-12-20T00:00:00", + "pnl": -21.22579077789851, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.91369044105626, + "entry_time": "2023-12-22T00:00:00", + "exit_price": 93.12129104458734, + "exit_reason": "signal", + "exit_time": "2023-12-23T00:00:00", + "pnl": -79.2399396468918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.14884637460803, + "entry_time": "2023-12-25T00:00:00", + "exit_price": 92.89417488264915, + "exit_reason": "signal", + "exit_time": "2023-12-26T00:00:00", + "pnl": 74.53285080411297, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.12845985022912, + "entry_time": "2023-12-28T00:00:00", + "exit_price": 93.6597993052993, + "exit_reason": "signal", + "exit_time": "2023-12-29T00:00:00", + "pnl": 53.133945507017415, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.96178874818798, + "entry_time": "2023-12-31T00:00:00", + "exit_price": 94.4511703887473, + "exit_reason": "signal", + "exit_time": "2024-01-01T00:00:00", + "pnl": 48.93816405593134, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.89229345893365, + "entry_time": "2024-01-03T00:00:00", + "exit_price": 94.58860576042824, + "exit_reason": "signal", + "exit_time": "2024-01-04T00:00:00", + "pnl": -30.368769850541867, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.04178116383622, + "entry_time": "2024-01-06T00:00:00", + "exit_price": 94.4578576609693, + "exit_reason": "signal", + "exit_time": "2024-01-07T00:00:00", + "pnl": -58.39235028669282, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.86053478009173, + "entry_time": "2024-01-09T00:00:00", + "exit_price": 94.76430023458303, + "exit_reason": "signal", + "exit_time": "2024-01-10T00:00:00", + "pnl": -9.62345455087052, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8053175522895, + "entry_time": "2024-01-12T00:00:00", + "exit_price": 94.40836408730765, + "exit_reason": "signal", + "exit_time": "2024-01-13T00:00:00", + "pnl": -39.695346498183426, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.85612524977265, + "entry_time": "2024-01-15T00:00:00", + "exit_price": 94.40863693697362, + "exit_reason": "signal", + "exit_time": "2024-01-16T00:00:00", + "pnl": -44.74883127990324, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.09196518919534, + "entry_time": "2024-01-18T00:00:00", + "exit_price": 94.91994528712154, + "exit_reason": "signal", + "exit_time": "2024-01-19T00:00:00", + "pnl": -17.20199020738073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.4574772984541, + "entry_time": "2024-01-21T00:00:00", + "exit_price": 95.40486331313025, + "exit_reason": "signal", + "exit_time": "2024-01-22T00:00:00", + "pnl": -5.261398532384192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8856295626394, + "entry_time": "2024-01-24T00:00:00", + "exit_price": 95.41673292493975, + "exit_reason": "signal", + "exit_time": "2024-01-25T00:00:00", + "pnl": 53.11033623003641, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.3011515367656, + "entry_time": "2024-01-27T00:00:00", + "exit_price": 94.50993042362319, + "exit_reason": "signal", + "exit_time": "2024-01-28T00:00:00", + "pnl": -79.12211131424192, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.8443544450889, + "entry_time": "2024-01-30T00:00:00", + "exit_price": 94.58646684173618, + "exit_reason": "signal", + "exit_time": "2024-01-31T00:00:00", + "pnl": -25.788760335271945, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.51863942815191, + "entry_time": "2024-02-02T00:00:00", + "exit_price": 95.02582579018504, + "exit_reason": "signal", + "exit_time": "2024-02-03T00:00:00", + "pnl": -49.28136379668649, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.64624335712315, + "entry_time": "2024-02-05T00:00:00", + "exit_price": 95.62478266594604, + "exit_reason": "signal", + "exit_time": "2024-02-06T00:00:00", + "pnl": -2.1460691177107947, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.97351592845855, + "entry_time": "2024-02-08T00:00:00", + "exit_price": 96.2565162152012, + "exit_reason": "signal", + "exit_time": "2024-02-09T00:00:00", + "pnl": 128.3000286742663, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.32379857764126, + "entry_time": "2024-02-11T00:00:00", + "exit_price": 93.96151236382953, + "exit_reason": "signal", + "exit_time": "2024-02-12T00:00:00", + "pnl": -36.22862138117307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.38409820559012, + "entry_time": "2024-02-14T00:00:00", + "exit_price": 94.76791246698865, + "exit_reason": "signal", + "exit_time": "2024-02-15T00:00:00", + "pnl": 38.38142613985292, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.15204268625024, + "entry_time": "2024-02-17T00:00:00", + "exit_price": 94.14536275879573, + "exit_reason": "signal", + "exit_time": "2024-02-18T00:00:00", + "pnl": -100.66799274545156, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.92555424660308, + "entry_time": "2024-02-20T00:00:00", + "exit_price": 95.28378367357755, + "exit_reason": "signal", + "exit_time": "2024-02-21T00:00:00", + "pnl": 35.822942697446706, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.6447277617356, + "entry_time": "2024-02-23T00:00:00", + "exit_price": 93.94359099606793, + "exit_reason": "signal", + "exit_time": "2024-02-24T00:00:00", + "pnl": -70.11367656676703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.63169426987818, + "entry_time": "2024-02-26T00:00:00", + "exit_price": 93.61709548381037, + "exit_reason": "signal", + "exit_time": "2024-02-27T00:00:00", + "pnl": -101.45987860678179, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.99406223655019, + "entry_time": "2024-02-29T00:00:00", + "exit_price": 93.51586581649707, + "exit_reason": "signal", + "exit_time": "2024-03-01T00:00:00", + "pnl": 52.18035799468635, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88355978598187, + "entry_time": "2024-03-03T00:00:00", + "exit_price": 93.59210068726338, + "exit_reason": "signal", + "exit_time": "2024-03-04T00:00:00", + "pnl": 70.85409012815035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.20766791171343, + "entry_time": "2024-03-06T00:00:00", + "exit_price": 93.03526629028748, + "exit_reason": "signal", + "exit_time": "2024-03-07T00:00:00", + "pnl": -17.24016214259609, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73917319444821, + "entry_time": "2024-03-09T00:00:00", + "exit_price": 93.21019311262798, + "exit_reason": "signal", + "exit_time": "2024-03-10T00:00:00", + "pnl": -52.89800818202275, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87224010683995, + "entry_time": "2024-03-12T00:00:00", + "exit_price": 93.42438731231145, + "exit_reason": "signal", + "exit_time": "2024-03-13T00:00:00", + "pnl": -44.78527945284986, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.32218202085551, + "entry_time": "2024-03-15T00:00:00", + "exit_price": 92.84840341954816, + "exit_reason": "signal", + "exit_time": "2024-03-16T00:00:00", + "pnl": -47.377860130734916, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.74542752078266, + "entry_time": "2024-03-18T00:00:00", + "exit_price": 93.97099698374726, + "exit_reason": "signal", + "exit_time": "2024-03-19T00:00:00", + "pnl": 22.55694629646132, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5673298293271, + "entry_time": "2024-03-21T00:00:00", + "exit_price": 90.9938401219299, + "exit_reason": "signal", + "exit_time": "2024-03-22T00:00:00", + "pnl": -157.34897073972024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89305134977978, + "entry_time": "2024-03-24T00:00:00", + "exit_price": 92.62217998545916, + "exit_reason": "signal", + "exit_time": "2024-03-25T00:00:00", + "pnl": -27.087136432062835, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.36509094658045, + "entry_time": "2024-03-27T00:00:00", + "exit_price": 92.88634389481254, + "exit_reason": "signal", + "exit_time": "2024-03-28T00:00:00", + "pnl": 52.125294823208606, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.09706919037085, + "entry_time": "2024-03-30T00:00:00", + "exit_price": 92.26411816919232, + "exit_reason": "signal", + "exit_time": "2024-03-31T00:00:00", + "pnl": -83.29510211785237, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87466770876313, + "entry_time": "2024-04-02T00:00:00", + "exit_price": 92.60479889553623, + "exit_reason": "signal", + "exit_time": "2024-04-03T00:00:00", + "pnl": -26.986881322687623, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.20308651861096, + "entry_time": "2024-04-05T00:00:00", + "exit_price": 92.03254850546956, + "exit_reason": "signal", + "exit_time": "2024-04-06T00:00:00", + "pnl": -17.05380131413949, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.38853458659054, + "entry_time": "2024-04-08T00:00:00", + "exit_price": 92.15112623454131, + "exit_reason": "signal", + "exit_time": "2024-04-09T00:00:00", + "pnl": -23.740835204922405, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96842409215192, + "entry_time": "2024-04-11T00:00:00", + "exit_price": 91.88812859002927, + "exit_reason": "signal", + "exit_time": "2024-04-12T00:00:00", + "pnl": -8.029550212266258, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.24664780939709, + "entry_time": "2024-04-14T00:00:00", + "exit_price": 92.55850895917358, + "exit_reason": "signal", + "exit_time": "2024-04-15T00:00:00", + "pnl": 31.186114977648685, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.87161322114831, + "entry_time": "2024-04-17T00:00:00", + "exit_price": 92.00535793552656, + "exit_reason": "signal", + "exit_time": "2024-04-18T00:00:00", + "pnl": -86.62552856217553, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.4480286140058, + "entry_time": "2024-04-20T00:00:00", + "exit_price": 93.06090359266081, + "exit_reason": "signal", + "exit_time": "2024-04-21T00:00:00", + "pnl": 61.28749786549997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.86729712174954, + "entry_time": "2024-04-23T00:00:00", + "exit_price": 91.52050959132679, + "exit_reason": "signal", + "exit_time": "2024-04-24T00:00:00", + "pnl": -234.67875304227528, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.61545833641877, + "entry_time": "2024-04-26T00:00:00", + "exit_price": 93.11576558511285, + "exit_reason": "signal", + "exit_time": "2024-04-27T00:00:00", + "pnl": 50.03072486940982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.83965947403613, + "entry_time": "2024-04-29T00:00:00", + "exit_price": 92.12256163749144, + "exit_reason": "signal", + "exit_time": "2024-04-30T00:00:00", + "pnl": -71.70978365446899, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01797419460767, + "entry_time": "2024-05-02T00:00:00", + "exit_price": 93.19504665832812, + "exit_reason": "signal", + "exit_time": "2024-05-03T00:00:00", + "pnl": 117.70724637204512, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.52501223027797, + "entry_time": "2024-05-05T00:00:00", + "exit_price": 93.70543373709387, + "exit_reason": "signal", + "exit_time": "2024-05-06T00:00:00", + "pnl": -81.95784931841081, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.76145907090128, + "entry_time": "2024-05-08T00:00:00", + "exit_price": 93.99231970762736, + "exit_reason": "signal", + "exit_time": "2024-05-09T00:00:00", + "pnl": 23.08606367260836, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.72601264375818, + "entry_time": "2024-05-11T00:00:00", + "exit_price": 94.17294252688178, + "exit_reason": "signal", + "exit_time": "2024-05-12T00:00:00", + "pnl": 144.69298831235938, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.66991995260973, + "entry_time": "2024-05-14T00:00:00", + "exit_price": 93.29227941579406, + "exit_reason": "signal", + "exit_time": "2024-05-15T00:00:00", + "pnl": -37.76405368156702, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.05260425345361, + "entry_time": "2024-05-17T00:00:00", + "exit_price": 93.08641894302396, + "exit_reason": "signal", + "exit_time": "2024-05-18T00:00:00", + "pnl": 3.381468957035395, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89786622090341, + "entry_time": "2024-05-20T00:00:00", + "exit_price": 93.19281076082636, + "exit_reason": "signal", + "exit_time": "2024-05-21T00:00:00", + "pnl": 29.49445399229444, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.00268172437694, + "entry_time": "2024-05-23T00:00:00", + "exit_price": 93.8031782169886, + "exit_reason": "signal", + "exit_time": "2024-05-24T00:00:00", + "pnl": 80.04964926116554, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.30303744020942, + "entry_time": "2024-05-26T00:00:00", + "exit_price": 93.96047444085842, + "exit_reason": "signal", + "exit_time": "2024-05-27T00:00:00", + "pnl": -34.2562999351012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.53102238294964, + "entry_time": "2024-05-29T00:00:00", + "exit_price": 93.55135190498416, + "exit_reason": "signal", + "exit_time": "2024-05-30T00:00:00", + "pnl": 2.032952203451714, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73320965755092, + "entry_time": "2024-06-01T00:00:00", + "exit_price": 93.83108861382613, + "exit_reason": "signal", + "exit_time": "2024-06-02T00:00:00", + "pnl": 9.787895627519902, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66116571648418, + "entry_time": "2024-06-04T00:00:00", + "exit_price": 93.37760682748707, + "exit_reason": "signal", + "exit_time": "2024-06-05T00:00:00", + "pnl": 71.64411110028959, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.73832896665387, + "entry_time": "2024-06-07T00:00:00", + "exit_price": 93.55125645985115, + "exit_reason": "signal", + "exit_time": "2024-06-08T00:00:00", + "pnl": -18.70725068027241, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.05801072220544, + "entry_time": "2024-06-10T00:00:00", + "exit_price": 93.19615016955767, + "exit_reason": "signal", + "exit_time": "2024-06-11T00:00:00", + "pnl": -86.18605526477586, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71612053106102, + "entry_time": "2024-06-13T00:00:00", + "exit_price": 92.35363412291727, + "exit_reason": "signal", + "exit_time": "2024-06-14T00:00:00", + "pnl": -36.248640814375904, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.89683728827593, + "entry_time": "2024-06-16T00:00:00", + "exit_price": 93.45394449656699, + "exit_reason": "signal", + "exit_time": "2024-06-17T00:00:00", + "pnl": 55.71072082910541, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.64711251538863, + "entry_time": "2024-06-19T00:00:00", + "exit_price": 94.20425342905766, + "exit_reason": "signal", + "exit_time": "2024-06-20T00:00:00", + "pnl": 55.71409136690272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.27286775878677, + "entry_time": "2024-06-22T00:00:00", + "exit_price": 93.11098684044114, + "exit_reason": "signal", + "exit_time": "2024-06-23T00:00:00", + "pnl": -16.188091834563238, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.82344576152076, + "entry_time": "2024-06-25T00:00:00", + "exit_price": 93.85991046136218, + "exit_reason": "signal", + "exit_time": "2024-06-26T00:00:00", + "pnl": 3.6464699841417314, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76944869834962, + "entry_time": "2024-06-28T00:00:00", + "exit_price": 94.49443525385506, + "exit_reason": "signal", + "exit_time": "2024-06-29T00:00:00", + "pnl": 172.49865555054384, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.26714007172914, + "entry_time": "2024-07-01T00:00:00", + "exit_price": 93.55312747617486, + "exit_reason": "signal", + "exit_time": "2024-07-02T00:00:00", + "pnl": -71.4012595554268, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21338289364272, + "entry_time": "2024-07-04T00:00:00", + "exit_price": 93.50082066300278, + "exit_reason": "signal", + "exit_time": "2024-07-05T00:00:00", + "pnl": -71.25622306399418, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.2831851440446, + "entry_time": "2024-07-07T00:00:00", + "exit_price": 92.64838687037759, + "exit_reason": "signal", + "exit_time": "2024-07-08T00:00:00", + "pnl": -63.47982736670019, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.7216517557643, + "entry_time": "2024-07-10T00:00:00", + "exit_price": 92.97199380174195, + "exit_reason": "signal", + "exit_time": "2024-07-11T00:00:00", + "pnl": -74.96579540223684, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.55110234448432, + "entry_time": "2024-07-13T00:00:00", + "exit_price": 92.47254018419862, + "exit_reason": "signal", + "exit_time": "2024-07-14T00:00:00", + "pnl": -107.85621602856918, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.35333984916058, + "entry_time": "2024-07-16T00:00:00", + "exit_price": 92.55290357280875, + "exit_reason": "signal", + "exit_time": "2024-07-17T00:00:00", + "pnl": 19.956372364815252, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.92761668682888, + "entry_time": "2024-07-19T00:00:00", + "exit_price": 92.52405415324874, + "exit_reason": "signal", + "exit_time": "2024-07-20T00:00:00", + "pnl": 59.64374664198658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.01759216619796, + "entry_time": "2024-07-22T00:00:00", + "exit_price": 91.9301791723341, + "exit_reason": "signal", + "exit_time": "2024-07-23T00:00:00", + "pnl": -8.741299386385435, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.98789247555584, + "entry_time": "2024-07-25T00:00:00", + "exit_price": 92.13492749804534, + "exit_reason": "signal", + "exit_time": "2024-07-26T00:00:00", + "pnl": 14.703502248950826, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.88900920001714, + "entry_time": "2024-07-28T00:00:00", + "exit_price": 91.63316803265334, + "exit_reason": "signal", + "exit_time": "2024-07-29T00:00:00", + "pnl": -25.584116736379656, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.85577813730865, + "entry_time": "2024-07-31T00:00:00", + "exit_price": 92.25060393364089, + "exit_reason": "signal", + "exit_time": "2024-08-01T00:00:00", + "pnl": 39.482579633224304, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.37992029678232, + "entry_time": "2024-08-03T00:00:00", + "exit_price": 91.2161626045396, + "exit_reason": "signal", + "exit_time": "2024-08-04T00:00:00", + "pnl": -16.375769224270698, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.94097148564505, + "entry_time": "2024-08-06T00:00:00", + "exit_price": 91.61411385344917, + "exit_reason": "signal", + "exit_time": "2024-08-07T00:00:00", + "pnl": -32.68576321958972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.26633312852945, + "entry_time": "2024-08-09T00:00:00", + "exit_price": 92.57486927906898, + "exit_reason": "signal", + "exit_time": "2024-08-10T00:00:00", + "pnl": 30.853615053951216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.25460128509323, + "entry_time": "2024-08-12T00:00:00", + "exit_price": 92.93806274853755, + "exit_reason": "signal", + "exit_time": "2024-08-13T00:00:00", + "pnl": -31.653853655569037, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.88821464003595, + "entry_time": "2024-08-15T00:00:00", + "exit_price": 92.53437593350753, + "exit_reason": "signal", + "exit_time": "2024-08-16T00:00:00", + "pnl": -35.38387065284223, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.5558255899151, + "entry_time": "2024-08-18T00:00:00", + "exit_price": 92.57746904834741, + "exit_reason": "signal", + "exit_time": "2024-08-19T00:00:00", + "pnl": 2.1643458432317857, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35186779566517, + "entry_time": "2024-08-21T00:00:00", + "exit_price": 93.8222066824917, + "exit_reason": "signal", + "exit_time": "2024-08-22T00:00:00", + "pnl": 47.033888682653924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.33239215677628, + "entry_time": "2024-08-24T00:00:00", + "exit_price": 92.65684927729922, + "exit_reason": "signal", + "exit_time": "2024-08-25T00:00:00", + "pnl": -67.55428794770523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.07995330778445, + "entry_time": "2024-08-27T00:00:00", + "exit_price": 93.14274907856505, + "exit_reason": "signal", + "exit_time": "2024-08-28T00:00:00", + "pnl": 6.279577078059447, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.31638915313647, + "entry_time": "2024-08-30T00:00:00", + "exit_price": 92.80125655346451, + "exit_reason": "signal", + "exit_time": "2024-08-31T00:00:00", + "pnl": -151.51325996719606, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.86908900365832, + "entry_time": "2024-09-02T00:00:00", + "exit_price": 92.43258549076677, + "exit_reason": "signal", + "exit_time": "2024-09-03T00:00:00", + "pnl": -43.65035128915588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.74183853860589, + "entry_time": "2024-09-05T00:00:00", + "exit_price": 93.04661736537737, + "exit_reason": "signal", + "exit_time": "2024-09-06T00:00:00", + "pnl": 30.477882677147136, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.18409149189986, + "entry_time": "2024-09-08T00:00:00", + "exit_price": 92.27288236124933, + "exit_reason": "signal", + "exit_time": "2024-09-09T00:00:00", + "pnl": 108.87908693494501, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.66757472286284, + "entry_time": "2024-09-11T00:00:00", + "exit_price": 91.66108329653197, + "exit_reason": "signal", + "exit_time": "2024-09-12T00:00:00", + "pnl": -100.64914263308674, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.0113429588981, + "entry_time": "2024-09-14T00:00:00", + "exit_price": 92.01542580767834, + "exit_reason": "signal", + "exit_time": "2024-09-15T00:00:00", + "pnl": 100.40828487802537, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87145951112795, + "entry_time": "2024-09-17T00:00:00", + "exit_price": 91.58043482842866, + "exit_reason": "signal", + "exit_time": "2024-09-18T00:00:00", + "pnl": 70.89753173007011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.28456359684716, + "entry_time": "2024-09-20T00:00:00", + "exit_price": 91.42689177563531, + "exit_reason": "signal", + "exit_time": "2024-09-21T00:00:00", + "pnl": 114.23281787881388, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.10394740945229, + "entry_time": "2024-09-23T00:00:00", + "exit_price": 91.5888902773369, + "exit_reason": "signal", + "exit_time": "2024-09-24T00:00:00", + "pnl": 148.49428678846198, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.05233318851363, + "entry_time": "2024-09-26T00:00:00", + "exit_price": 91.20379964517136, + "exit_reason": "signal", + "exit_time": "2024-09-27T00:00:00", + "pnl": 15.146645665774486, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93054848304011, + "entry_time": "2024-09-29T00:00:00", + "exit_price": 91.4470753529935, + "exit_reason": "signal", + "exit_time": "2024-09-30T00:00:00", + "pnl": 51.65268699533772, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.55093725008568, + "entry_time": "2024-10-02T00:00:00", + "exit_price": 90.1771270171211, + "exit_reason": "signal", + "exit_time": "2024-10-03T00:00:00", + "pnl": -137.3810232964588, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.51951955539236, + "entry_time": "2024-10-05T00:00:00", + "exit_price": 90.35054775405881, + "exit_reason": "signal", + "exit_time": "2024-10-06T00:00:00", + "pnl": -16.897180133355505, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.20200706252784, + "entry_time": "2024-10-08T00:00:00", + "exit_price": 91.07198645570766, + "exit_reason": "signal", + "exit_time": "2024-10-09T00:00:00", + "pnl": -13.002060682018055, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.13850851279538, + "entry_time": "2024-10-11T00:00:00", + "exit_price": 90.2608758916971, + "exit_reason": "signal", + "exit_time": "2024-10-12T00:00:00", + "pnl": -87.76326210982734, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.93035699558081, + "entry_time": "2024-10-14T00:00:00", + "exit_price": 90.52157669994283, + "exit_reason": "signal", + "exit_time": "2024-10-15T00:00:00", + "pnl": -40.8780295637971, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.49395863364698, + "entry_time": "2024-10-17T00:00:00", + "exit_price": 89.86316250689507, + "exit_reason": "signal", + "exit_time": "2024-10-18T00:00:00", + "pnl": -63.07961267519204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.18352844268802, + "entry_time": "2024-10-20T00:00:00", + "exit_price": 88.93546496698286, + "exit_reason": "signal", + "exit_time": "2024-10-21T00:00:00", + "pnl": -124.80634757051484, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.8113095296125, + "entry_time": "2024-10-23T00:00:00", + "exit_price": 89.54696410392557, + "exit_reason": "signal", + "exit_time": "2024-10-24T00:00:00", + "pnl": -26.43454256869336, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.08012041438292, + "entry_time": "2024-10-26T00:00:00", + "exit_price": 89.23016998477505, + "exit_reason": "signal", + "exit_time": "2024-10-27T00:00:00", + "pnl": 15.004957039212968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.84774198158706, + "entry_time": "2024-10-29T00:00:00", + "exit_price": 89.88558944915762, + "exit_reason": "signal", + "exit_time": "2024-10-30T00:00:00", + "pnl": 3.7847467570554727, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.52000332438061, + "entry_time": "2024-11-01T00:00:00", + "exit_price": 88.86871340352687, + "exit_reason": "signal", + "exit_time": "2024-11-02T00:00:00", + "pnl": 34.87100791462581, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.58373696827199, + "entry_time": "2024-11-04T00:00:00", + "exit_price": 88.82208371804109, + "exit_reason": "signal", + "exit_time": "2024-11-05T00:00:00", + "pnl": -76.16532502309019, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.32832910147938, + "entry_time": "2024-11-07T00:00:00", + "exit_price": 89.06529443738525, + "exit_reason": "signal", + "exit_time": "2024-11-08T00:00:00", + "pnl": -26.303466409412067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.45977666376373, + "entry_time": "2024-11-10T00:00:00", + "exit_price": 89.24686599676619, + "exit_reason": "signal", + "exit_time": "2024-11-11T00:00:00", + "pnl": -121.29106669975408, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.21043430906948, + "entry_time": "2024-11-13T00:00:00", + "exit_price": 88.4518561142622, + "exit_reason": "signal", + "exit_time": "2024-11-14T00:00:00", + "pnl": -75.85781948072872, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.80819601768098, + "entry_time": "2024-11-16T00:00:00", + "exit_price": 88.9586155221746, + "exit_reason": "signal", + "exit_time": "2024-11-17T00:00:00", + "pnl": 15.041950449362048, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.14254378792333, + "entry_time": "2024-11-19T00:00:00", + "exit_price": 88.6718045936633, + "exit_reason": "signal", + "exit_time": "2024-11-20T00:00:00", + "pnl": -47.07391942600407, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.3689677842857, + "entry_time": "2024-11-22T00:00:00", + "exit_price": 88.87620295869029, + "exit_reason": "signal", + "exit_time": "2024-11-23T00:00:00", + "pnl": -49.27648255954227, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.06997514477666, + "entry_time": "2024-11-25T00:00:00", + "exit_price": 88.79230048470953, + "exit_reason": "signal", + "exit_time": "2024-11-26T00:00:00", + "pnl": -27.76746600671322, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.69842658289039, + "entry_time": "2024-11-28T00:00:00", + "exit_price": 88.84366945841847, + "exit_reason": "signal", + "exit_time": "2024-11-29T00:00:00", + "pnl": -85.47571244719074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.75521347785288, + "entry_time": "2024-12-01T00:00:00", + "exit_price": 89.14459057740478, + "exit_reason": "signal", + "exit_time": "2024-12-02T00:00:00", + "pnl": -61.06229004481065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.78540826994568, + "entry_time": "2024-12-04T00:00:00", + "exit_price": 89.0389294134589, + "exit_reason": "signal", + "exit_time": "2024-12-05T00:00:00", + "pnl": 25.352114351322598, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.backtrader", + "path": "validation/frameworks/backtrader.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "unavailable", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "risk_rules": "framework_adapter" + }, + "digests": { + "adapter": "9d3ee2845f1a37b484d9040c5237d7e0ba8974b0536b216305b3a2dd14fe8976", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d0e0852cea9e321d72793f0f7fd7479d70d67ea3b367cbab817e4e3067af4e32" + }, + "framework_target": { + "actual_version": "1.9.78.123", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "version": "1.9.78.123" + }, + "input_digest": "dd491bc06ca31652f04962d8927c33330abf1b3bedaf108f9d9b222834fb9c4b", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 1800, + "entry_signals": 600, + "exit_signals": 600, + "framework_closed_trades": 600, + "framework_fills": 1200, + "framework_intents": 1200, + "framework_orders": null, + "ml4t_closed_trades": 600, + "ml4t_fills": 1200, + "ml4t_intents": 1200, + "ml4t_orders": null + } + }, + "release_blocking": false, + "required": true, + "scenario_id": "17", + "scenario_name": "High Event Count", + "status": "pass" + }, + { + "comparison": { + "checks": [ + { + "actual": 5, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 5, + "message": "Zipline=5, ML4T=5, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99708.90000000002, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99708.90000000002, + "message": "Zipline=$99,708.9000000000, ML4T=$99,708.9000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -291.0999999999767, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": -291.0999999999767, + "message": "Zipline=$-291.1000000000, ML4T=$-291.1000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.566, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 805.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.806, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -548.1000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.181, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -387.2999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.712, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 342.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.836, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -504.0000000000009, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.566, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 805.8000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.806, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -548.1000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.181, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -387.30000000000047, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.712, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 342.4999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.836, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -504.0000000000006, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "01" + }, + "detail": null, + "duration_seconds": 2.7036192659288645, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "final_value": 99708.90000000002, + "framework": "Zipline", + "num_trades": 5, + "total_pnl": -291.0999999999767, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.566, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 805.8000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.806, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -548.1000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.181, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -387.30000000000047, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.712, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 342.4999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.836, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -504.0000000000006, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 99708.90000000002, + "framework": "ml4t.backtest", + "num_trades": 5, + "total_pnl": -291.0999999999767, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.566, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 805.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.806, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -548.1000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.181, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -387.2999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.712, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 342.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.836, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -504.0000000000009, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "none", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d34babef0534a871f927ab6553a49d7b7e35a03283516b1741835d49381d2e0d" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "d4db92ee3483537d94893b614a21dcffdd4896daceb1d31cddd8e6343384e690", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 69, + "entry_signals": 7, + "exit_signals": 8, + "framework_closed_trades": 5, + "framework_fills": 10, + "framework_intents": 15, + "framework_orders": null, + "ml4t_closed_trades": 5, + "ml4t_fills": 10, + "ml4t_intents": 15, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "01", @@ -474,8 +248392,763 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 5, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 5, + "message": "Zipline=5, ML4T=5, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99708.90000000002, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99708.90000000002, + "message": "Zipline=$99,708.9000000000, ML4T=$99,708.9000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -291.0999999999767, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": -291.0999999999767, + "message": "Zipline=$-291.1000000000, ML4T=$-291.1000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.566, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 805.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.806, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -548.1000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.181, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -387.2999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.712, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 342.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.836, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -504.0000000000009, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.566, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 805.8000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.806, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -548.1000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.181, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -387.30000000000047, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.712, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 342.4999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.836, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -504.0000000000006, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "02" + }, "detail": null, + "duration_seconds": 2.135877769207582, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "final_value": 99708.90000000002, + "framework": "Zipline", + "num_trades": 5, + "total_pnl": -291.0999999999767, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.566, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 805.8000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.806, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -548.1000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.181, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -387.30000000000047, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.712, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 342.4999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.836, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -504.0000000000006, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 99708.90000000002, + "framework": "ml4t.backtest", + "num_trades": 5, + "total_pnl": -291.0999999999767, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.566, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 805.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.806, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -548.1000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.181, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -387.2999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.712, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 342.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.836, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -504.0000000000009, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "none", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "be4345288348f6a276f38cb4a364261003c925cddc5d9423b667fb82c34cff1b", + "scenario": "7db3751b770b7369c40f6b31fc757e7949b07dd5b56430e7226dc8db7d444e38" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "d4db92ee3483537d94893b614a21dcffdd4896daceb1d31cddd8e6343384e690", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 69, + "entry_signals": 7, + "exit_signals": 8, + "framework_closed_trades": 5, + "framework_fills": 10, + "framework_intents": 15, + "framework_orders": null, + "ml4t_closed_trades": 5, + "ml4t_fills": 10, + "ml4t_intents": 15, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "02", @@ -483,8 +249156,321 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Zipline=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99400.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99400.0, + "message": "Zipline=$99,400.0000000000, ML4T=$99,400.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -600.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": -600.0, + "message": "Zipline=$-600.0000000000, ML4T=$-600.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 93.5, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 93.5, + "message": "Zipline=$93.5000000000, ML4T=$93.5000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "exit_price", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 93.5, + "exit_reason": "stop_loss", + "exit_time": "2020-01-08T00:00:00", + "pnl": -600.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 93.5, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": -600.0, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 93.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "03" + }, "detail": null, + "duration_seconds": 3.6171961941290647, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 93.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 99.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + } + ], + "final_value": 99400.0, + "framework": "Zipline", + "num_trades": 1, + "total_pnl": -600.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 93.5, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": -600.0, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 93.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "stop_loss", + "price": 93.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + } + ], + "final_value": 99400.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -600.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 93.5, + "exit_reason": "stop_loss", + "exit_time": "2020-01-08T00:00:00", + "pnl": -600.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "28b180f9c05b5422cd2c453999768d0d8b12915b1cf2946fa4b7d912f7ced322", + "scenario": "ad7292cedc685fa6c10032a0574f3e5da89b81dbb0f3a312cc2f5d83f5b454a1" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "c35f1e258ae4d0cd8eed9125a530bea473632a5bb3f4558583c0818700906e96", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 13, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "03", @@ -492,8 +249478,321 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Zipline=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 101100.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 101100.0, + "message": "Zipline=$101,100.0000000000, ML4T=$101,100.0000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1100.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": 1100.0, + "message": "Zipline=$1,100.0000000000, ML4T=$1,100.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 111.5, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 111.5, + "message": "Zipline=$111.5000000000, ML4T=$111.5000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "exit_price", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 111.5, + "exit_reason": "take_profit", + "exit_time": "2020-01-09T00:00:00", + "pnl": 1100.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 111.5, + "exit_time": "2020-01-09T21:00:00+00:00", + "pnl": 1100.0, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 111.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 111.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T21:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "04" + }, "detail": null, + "duration_seconds": 2.403656671056524, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 111.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 111.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T21:00:00+00:00" + } + ], + "final_value": 101100.0, + "framework": "Zipline", + "num_trades": 1, + "total_pnl": 1100.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 111.5, + "exit_time": "2020-01-09T21:00:00+00:00", + "pnl": 1100.0, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "exit_price": 111.5 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.5, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 111.5, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-09T00:00:00" + } + ], + "final_value": 101100.0, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": 1100.0, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.5, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 111.5, + "exit_reason": "take_profit", + "exit_time": "2020-01-09T00:00:00", + "pnl": 1100.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "28b180f9c05b5422cd2c453999768d0d8b12915b1cf2946fa4b7d912f7ced322", + "scenario": "2dea68c3a9472e95c15e7238928919fe01b4e63bfd3a14a5a9666ea89b86cc41" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "9f43427f7ad70fc963aeec58cf8867b5646e88bd608ec489964f802a2c98a57d", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 13, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "04", @@ -501,8 +249800,777 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 5, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 5, + "message": "Zipline=5, ML4T=5, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99619.18869999998, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 4.3655745685100555e-11, + "expected": 99619.18870000003, + "message": "Zipline=$99,619.1887000000, ML4T=$99,619.1887000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -380.81130000001576, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 4.3655745685100555e-11, + "expected": -380.8112999999721, + "message": "Zipline=$-380.8113000000, ML4T=$-380.8113000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 89.7113, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.4210854715202004e-14, + "expected": 89.71130000000001, + "message": "Zipline=$89.7113000000, ML4T=$89.7113000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_commission", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 20.9074, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.566, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 784.892600000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.509300000000003, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.806, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -566.6093000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.8235, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.181, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -404.1234999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.7999, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.712, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 325.7001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.6712, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.836, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -520.6712000000009, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 20.907400000000003, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.566, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 784.8926000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.509300000000003, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.806, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -566.6093000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.823500000000003, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.181, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -404.1235000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.799900000000004, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.712, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 325.70009999999974, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.6712, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.836, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -520.6712000000007, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 10.050799999999999, + "exit_reason": "", + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.8566, + "exit_reason": "signal", + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.5287, + "exit_reason": "", + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.9806, + "exit_reason": "signal", + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.6054, + "exit_reason": "", + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.2181, + "exit_reason": "signal", + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.228700000000002, + "exit_reason": "", + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.571200000000001, + "exit_reason": "signal", + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.5876, + "exit_reason": "", + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.083599999999999, + "exit_reason": "signal", + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 10.0508, + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 10.8566, + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 9.5287, + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.980599999999999, + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.605400000000001, + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.2181, + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.228700000000002, + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.571200000000001, + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.5876, + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.0836, + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "05" + }, "detail": null, + "duration_seconds": 2.3504011258482933, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 89.71130000000001 + }, + "fills": [ + { + "asset": "TEST", + "commission": 10.0508, + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 10.8566, + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 9.5287, + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.980599999999999, + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.605400000000001, + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.2181, + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.228700000000002, + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.571200000000001, + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.5876, + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 8.0836, + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "final_value": 99619.18870000003, + "framework": "Zipline", + "num_trades": 5, + "total_pnl": -380.8112999999721, + "trades": [ + { + "asset": "TEST", + "commission": 20.907400000000003, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.566, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 784.8926000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.509300000000003, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.806, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -566.6093000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.823500000000003, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.181, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -404.1235000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.799900000000004, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.712, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 325.70009999999974, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.6712, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.836, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -520.6712000000007, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 89.7113 + }, + "fills": [ + { + "asset": "TEST", + "commission": 10.050799999999999, + "exit_reason": "", + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 10.8566, + "exit_reason": "signal", + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 9.5287, + "exit_reason": "", + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.9806, + "exit_reason": "signal", + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.6054, + "exit_reason": "", + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.2181, + "exit_reason": "signal", + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.228700000000002, + "exit_reason": "", + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.571200000000001, + "exit_reason": "signal", + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.5876, + "exit_reason": "", + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 8.083599999999999, + "exit_reason": "signal", + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 99619.18869999998, + "framework": "ml4t.backtest", + "num_trades": 5, + "total_pnl": -380.81130000001576, + "trades": [ + { + "asset": "TEST", + "commission": 20.9074, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.566, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 784.892600000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 18.509300000000003, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.806, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -566.6093000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.8235, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.181, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -404.1234999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.7999, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.712, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 325.7001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 16.6712, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.836, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -520.6712000000009, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "none", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "93f5ba4a70377e12f472819a04fbceabb1a44df86108f5feed401a8499bd7b88" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "d4db92ee3483537d94893b614a21dcffdd4896daceb1d31cddd8e6343384e690", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 69, + "entry_signals": 7, + "exit_signals": 8, + "framework_closed_trades": 5, + "framework_fills": 10, + "framework_intents": 15, + "framework_orders": null, + "ml4t_closed_trades": 5, + "ml4t_fills": 10, + "ml4t_intents": 15, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "05", @@ -510,8 +250578,777 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 5, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 5, + "message": "Zipline=5, ML4T=5, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99703.90000000002, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99703.90000000002, + "message": "Zipline=$99,703.9000000000, ML4T=$99,703.9000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -296.0999999999767, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": -296.0999999999767, + "message": "Zipline=$-296.1000000000, ML4T=$-296.1000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": 5.0, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 5.0, + "message": "Zipline=$5.0000000000, ML4T=$5.0000000000 (exact_diff=$0.0000000000; diagnostic_limit=$0.01)", + "name": "total_commission", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.566, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 804.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.806, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -549.1000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.181, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -388.2999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.712, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 341.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.836, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -505.0000000000009, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.566, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 804.8000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.806, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -549.1000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.181, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -388.30000000000047, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.712, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 341.4999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.836, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -505.0000000000006, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.5, + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "06" + }, "detail": null, + "duration_seconds": 2.277756383875385, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 5.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.5, + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "final_value": 99703.90000000002, + "framework": "Zipline", + "num_trades": 5, + "total_pnl": -296.0999999999767, + "trades": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.566, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 804.8000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.806, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -549.1000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.181, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -388.30000000000047, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.712, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 341.4999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.836, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -505.0000000000006, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": { + "total_commission": 5.0 + }, + "fills": [ + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 100.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 108.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 95.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 89.806, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 86.054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 82.181, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 82.287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 85.712, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "", + "price": 85.876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.5, + "exit_reason": "signal", + "price": 80.836, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 99703.90000000002, + "framework": "ml4t.backtest", + "num_trades": 5, + "total_pnl": -296.0999999999767, + "trades": [ + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 100.508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.566, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 804.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 95.287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.806, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -549.1000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 86.054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.181, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -388.2999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 82.287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.712, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 341.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 1.0, + "direction": "Long", + "entry_price": 85.876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.836, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -505.0000000000009, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "none", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "523af2137e8233ef65d03ffb841e91525f65f7c3057b3111e86aedbf0a973fb7" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "d4db92ee3483537d94893b614a21dcffdd4896daceb1d31cddd8e6343384e690", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 69, + "entry_signals": 7, + "exit_signals": 8, + "framework_closed_trades": 5, + "framework_fills": 10, + "framework_intents": 15, + "framework_orders": null, + "ml4t_closed_trades": 5, + "ml4t_fills": 10, + "ml4t_intents": 15, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "06", @@ -519,8 +251356,763 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 5, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 5, + "message": "Zipline=5, ML4T=5, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99698.90000000002, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99698.90000000002, + "message": "Zipline=$99,698.9000000000, ML4T=$99,698.9000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -301.0999999999767, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": -301.0999999999767, + "message": "Zipline=$-301.1000000000, ML4T=$-301.1000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.518, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.556, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 803.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29700000000001, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.79599999999999, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -550.1000000000022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.06400000000001, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.17099999999999, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -389.3000000000029, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.29700000000001, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.702, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 340.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.88600000000001, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.826, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -506.0000000000009, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.518, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.556, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 803.7999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29700000000001, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.79599999999999, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -550.100000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.06400000000001, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.17099999999999, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -389.3000000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.29700000000001, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.702, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 340.4999999999987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.88600000000001, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.826, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -506.00000000000165, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.29700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.79599999999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.06400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.17099999999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.29700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.702, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.88600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.29700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.79599999999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.06400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.17099999999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.29700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.702, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.88600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "07" + }, "detail": null, + "duration_seconds": 2.1697013170924038, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.29700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.79599999999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.06400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.17099999999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.29700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.702, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.88600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "final_value": 99698.90000000002, + "framework": "Zipline", + "num_trades": 5, + "total_pnl": -301.0999999999767, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.518, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.556, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 803.7999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29700000000001, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.79599999999999, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -550.100000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.06400000000001, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.17099999999999, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -389.3000000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.29700000000001, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.702, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 340.4999999999987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.88600000000001, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.826, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -506.00000000000165, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.518, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.29700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.79599999999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.06400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.17099999999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.29700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.702, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.88600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.826, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 99698.90000000002, + "framework": "ml4t.backtest", + "num_trades": 5, + "total_pnl": -301.0999999999767, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.518, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.556, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 803.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.29700000000001, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.79599999999999, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -550.1000000000022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.06400000000001, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.17099999999999, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -389.3000000000029, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.29700000000001, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.702, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 340.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.88600000000001, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.826, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -506.0000000000009, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "none", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "0eee68a74bb2c999c23582d129c81e91ad51b48af637e051507f8a40979c2871" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "d4db92ee3483537d94893b614a21dcffdd4896daceb1d31cddd8e6343384e690", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 69, + "entry_signals": 7, + "exit_signals": 8, + "framework_closed_trades": 5, + "framework_fills": 10, + "framework_intents": 15, + "framework_orders": null, + "ml4t_closed_trades": 5, + "ml4t_fills": 10, + "ml4t_intents": 15, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "07", @@ -528,8 +252120,763 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 5, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 5, + "message": "Zipline=5, ML4T=5, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99619.1887, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99619.1887, + "message": "Zipline=$99,619.1887000000, ML4T=$99,619.1887000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -380.8113000000012, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": -380.8113000000012, + "message": "Zipline=$-380.8113000000, ML4T=$-380.8113000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.608508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.457434, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 784.892600000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.382287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.716194, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -566.6093000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.140054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.09881899999999, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -404.1235000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.369287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.626288, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 325.7001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.961876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.755164, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -520.6712000000016, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.608508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.457434, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 784.8926000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.382287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.716194, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -566.6093000000003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.140054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.09881899999999, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -404.12350000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.369287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.626288, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 325.70010000000025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.961876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.755164, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -520.671200000001, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.608508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.457434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.382287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.716194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.140054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.09881899999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.369287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.626288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.961876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.755164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.608508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.457434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.382287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.716194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.140054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.09881899999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.369287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.626288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.961876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.755164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "08" + }, "detail": null, + "duration_seconds": 2.1856515100225806, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.608508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.457434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.382287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.716194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.140054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.09881899999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.369287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.626288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.961876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.755164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T20:00:00+00:00" + } + ], + "final_value": 99619.1887, + "framework": "Zipline", + "num_trades": 5, + "total_pnl": -380.8113000000012, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.608508, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.457434, + "exit_time": "2020-01-08T21:00:00+00:00", + "pnl": 784.8926000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.382287, + "entry_time": "2020-01-23T21:00:00+00:00", + "exit_price": 89.716194, + "exit_time": "2020-01-28T21:00:00+00:00", + "pnl": -566.6093000000003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.140054, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 82.09881899999999, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -404.12350000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.369287, + "entry_time": "2020-03-03T21:00:00+00:00", + "exit_price": 85.626288, + "exit_time": "2020-03-18T20:00:00+00:00", + "pnl": 325.70010000000025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.961876, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 80.755164, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": -520.671200000001, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.608508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 108.457434, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.382287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.716194, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.140054, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 82.09881899999999, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.369287, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.626288, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 85.961876, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 80.755164, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-07T00:00:00" + } + ], + "final_value": 99619.1887, + "framework": "ml4t.backtest", + "num_trades": 5, + "total_pnl": -380.8113000000012, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.608508, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.457434, + "exit_reason": "signal", + "exit_time": "2020-01-08T00:00:00", + "pnl": 784.892600000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.382287, + "entry_time": "2020-01-23T00:00:00", + "exit_price": 89.716194, + "exit_reason": "signal", + "exit_time": "2020-01-28T00:00:00", + "pnl": -566.6093000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.140054, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 82.09881899999999, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -404.1235000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 82.369287, + "entry_time": "2020-03-03T00:00:00", + "exit_price": 85.626288, + "exit_reason": "signal", + "exit_time": "2020-03-18T00:00:00", + "pnl": 325.7001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 85.961876, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 80.755164, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": -520.6712000000016, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "none", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d2d36326d5a7ec88f577088205574b8a9f6dab9661ed6813d190c138c4c8208f" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "d4db92ee3483537d94893b614a21dcffdd4896daceb1d31cddd8e6343384e690", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 69, + "entry_signals": 7, + "exit_signals": 8, + "framework_closed_trades": 5, + "framework_fills": 10, + "framework_intents": 15, + "framework_orders": null, + "ml4t_closed_trades": 5, + "ml4t_fills": 10, + "ml4t_intents": 15, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "08", @@ -537,8 +252884,421 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 2, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 2, + "message": "Zipline=2, ML4T=2, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99742.19999999998, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.4551915228366852e-11, + "expected": 99742.2, + "message": "Zipline=$99,742.2000000000, ML4T=$99,742.2000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -257.80000000001746, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 1.4551915228366852e-11, + "expected": -257.8000000000029, + "message": "Zipline=$-257.8000000000, ML4T=$-257.8000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.711, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 101.207, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-04T00:00:00", + "pnl": 49.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 95.356, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-05T00:00:00", + "pnl": -307.40000000000146, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.711, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 101.20700000000001, + "exit_time": "2020-02-04T21:00:00+00:00", + "pnl": 49.60000000000093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 95.35600000000001, + "exit_time": "2020-03-05T21:00:00+00:00", + "pnl": -307.3999999999998, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.711, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 101.207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.43, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 95.356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-05T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.711, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.20700000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.35600000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-05T21:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "09" + }, "detail": null, + "duration_seconds": 2.099665637128055, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.711, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.20700000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.43, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.35600000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-05T21:00:00+00:00" + } + ], + "final_value": 99742.2, + "framework": "Zipline", + "num_trades": 2, + "total_pnl": -257.8000000000029, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.711, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 101.20700000000001, + "exit_time": "2020-02-04T21:00:00+00:00", + "pnl": 49.60000000000093, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 95.35600000000001, + "exit_time": "2020-03-05T21:00:00+00:00", + "pnl": -307.3999999999998, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.711, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 101.207, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.43, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 95.356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-05T00:00:00" + } + ], + "final_value": 99742.19999999998, + "framework": "ml4t.backtest", + "num_trades": 2, + "total_pnl": -257.80000000001746, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.711, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 101.207, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-04T00:00:00", + "pnl": 49.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.43, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 95.356, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-05T00:00:00", + "pnl": -307.40000000000146, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "d7768c1dbc7e300243ff0eac676d628b4af4e347896a67b1623a5f0aa6c053a3", + "scenario": "80d8dea99e845ad7f708cc42fb94f66feababcf8b6814e3096300af1f4b709c2" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "de6e2060eccdf8f068669911169eb7a3d28af0622a7a840f637acb82db930a7e", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 69, + "entry_signals": 2, + "exit_signals": 0, + "framework_closed_trades": 2, + "framework_fills": 4, + "framework_intents": 2, + "framework_orders": null, + "ml4t_closed_trades": 2, + "ml4t_fills": 4, + "ml4t_intents": 2, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "09", @@ -546,8 +253306,13 @@ "status": "pass" }, { + "comparison": null, "detail": "Scenario explicitly excludes this framework", + "duration_seconds": 3.6640558391809464e-06, "framework": "zipline", + "framework_result": null, + "ml4t_result": null, + "provenance": null, "release_blocking": false, "required": false, "scenario_id": "10", @@ -555,8 +253320,763 @@ "status": "unsupported" }, { + "comparison": { + "checks": [ + { + "actual": 5, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 5, + "message": "Zipline=5, ML4T=5, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 1001679.7, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 1001679.7, + "message": "Zipline=$1,001,679.7000000000, ML4T=$1,001,679.7000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1679.6999999999534, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": 1679.6999999999534, + "message": "Zipline=$1,679.7000000000, ML4T=$1,679.7000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 107.718, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 93.4, + "exit_reason": "signal", + "exit_time": "2020-01-21T00:00:00", + "pnl": 1431.800000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 90.27, + "entry_time": "2020-01-28T00:00:00", + "exit_price": 88.764, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": 150.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 82.921, + "entry_time": "2020-03-30T00:00:00", + "exit_price": 81.413, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": 150.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.179, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 79.574, + "exit_reason": "signal", + "exit_time": "2020-06-08T00:00:00", + "pnl": 60.50000000000091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 84.478, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 85.618, + "exit_reason": "signal", + "exit_time": "2020-06-26T00:00:00", + "pnl": -114.0, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 107.718, + "entry_time": "2020-01-08T21:00:00+00:00", + "exit_price": 93.4, + "exit_time": "2020-01-21T21:00:00+00:00", + "pnl": 1431.7999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 90.27, + "entry_time": "2020-01-28T21:00:00+00:00", + "exit_price": 88.764, + "exit_time": "2020-02-07T21:00:00+00:00", + "pnl": 150.60000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 82.921, + "entry_time": "2020-03-30T20:00:00+00:00", + "exit_price": 81.413, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": 150.80000000000098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.179, + "entry_time": "2020-04-17T20:00:00+00:00", + "exit_price": 79.574, + "exit_time": "2020-06-08T20:00:00+00:00", + "pnl": 60.5000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 84.47800000000001, + "entry_time": "2020-06-16T20:00:00+00:00", + "exit_price": 85.618, + "exit_time": "2020-06-26T20:00:00+00:00", + "pnl": -113.99999999999864, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.718, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.27, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.764, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.413, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 84.478, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-26T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 107.718, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.27, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.764, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.413, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 84.47800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-26T20:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "11" + }, "detail": null, + "duration_seconds": 2.155129101825878, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 107.718, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.27, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.764, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 82.921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 81.413, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 80.179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 79.574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 84.47800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 85.618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-26T20:00:00+00:00" + } + ], + "final_value": 1001679.7, + "framework": "Zipline", + "num_trades": 5, + "total_pnl": 1679.6999999999534, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 107.718, + "entry_time": "2020-01-08T21:00:00+00:00", + "exit_price": 93.4, + "exit_time": "2020-01-21T21:00:00+00:00", + "pnl": 1431.7999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 90.27, + "entry_time": "2020-01-28T21:00:00+00:00", + "exit_price": 88.764, + "exit_time": "2020-02-07T21:00:00+00:00", + "pnl": 150.60000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 82.921, + "entry_time": "2020-03-30T20:00:00+00:00", + "exit_price": 81.413, + "exit_time": "2020-04-07T20:00:00+00:00", + "pnl": 150.80000000000098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.179, + "entry_time": "2020-04-17T20:00:00+00:00", + "exit_price": 79.574, + "exit_time": "2020-06-08T20:00:00+00:00", + "pnl": 60.5000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 84.47800000000001, + "entry_time": "2020-06-16T20:00:00+00:00", + "exit_price": 85.618, + "exit_time": "2020-06-26T20:00:00+00:00", + "pnl": -113.99999999999864, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 107.718, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.27, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.764, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 82.921, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 81.413, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 80.179, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 79.574, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 84.478, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 85.618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-26T00:00:00" + } + ], + "final_value": 1001679.7, + "framework": "ml4t.backtest", + "num_trades": 5, + "total_pnl": 1679.6999999999534, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 107.718, + "entry_time": "2020-01-08T00:00:00", + "exit_price": 93.4, + "exit_reason": "signal", + "exit_time": "2020-01-21T00:00:00", + "pnl": 1431.800000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 90.27, + "entry_time": "2020-01-28T00:00:00", + "exit_price": 88.764, + "exit_reason": "signal", + "exit_time": "2020-02-07T00:00:00", + "pnl": 150.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 82.921, + "entry_time": "2020-03-30T00:00:00", + "exit_price": 81.413, + "exit_reason": "signal", + "exit_time": "2020-04-07T00:00:00", + "pnl": 150.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 80.179, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 79.574, + "exit_reason": "signal", + "exit_time": "2020-06-08T00:00:00", + "pnl": 60.50000000000091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 84.478, + "entry_time": "2020-06-16T00:00:00", + "exit_price": 85.618, + "exit_reason": "signal", + "exit_time": "2020-06-26T00:00:00", + "pnl": -114.0, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "none", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "be4345288348f6a276f38cb4a364261003c925cddc5d9423b667fb82c34cff1b", + "scenario": "88c5993243d7dfa17cc8ed4d7979639e4846f1a3d5a9f1b62007e934bd9f73b5" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "517a65764277b104abf7848a9875d5f09febfddffb82d8fd9318f724ff1aaa86", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 137, + "entry_signals": 7, + "exit_signals": 8, + "framework_closed_trades": 5, + "framework_fills": 10, + "framework_intents": 15, + "framework_orders": null, + "ml4t_closed_trades": 5, + "ml4t_fills": 10, + "ml4t_intents": 15, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "11", @@ -564,8 +254084,421 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 2, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 2, + "message": "Zipline=2, ML4T=2, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 1001259.3, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 1001259.3, + "message": "Zipline=$1,001,259.3000000000, ML4T=$1,001,259.3000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 1259.3000000000466, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": 1259.3000000000466, + "message": "Zipline=$1,259.3000000000, ML4T=$1,259.3000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 99.714, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 88.805, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-04T00:00:00", + "pnl": 1090.8999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 86.2, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 84.516, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-05T00:00:00", + "pnl": 168.39999999999964, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 99.714, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 88.805, + "exit_time": "2020-02-04T21:00:00+00:00", + "pnl": 1090.8999999999992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 86.2, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 84.516, + "exit_time": "2020-03-05T21:00:00+00:00", + "pnl": 168.39999999999975, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 88.805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.2, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 84.516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 99.714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.2, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 84.516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T21:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "12" + }, "detail": null, + "duration_seconds": 2.3570257059764117, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 99.714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.2, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 84.516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T21:00:00+00:00" + } + ], + "final_value": 1001259.3, + "framework": "Zipline", + "num_trades": 2, + "total_pnl": 1259.3000000000466, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 99.714, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 88.805, + "exit_time": "2020-02-04T21:00:00+00:00", + "pnl": 1090.8999999999992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 86.2, + "entry_time": "2020-02-12T21:00:00+00:00", + "exit_price": 84.516, + "exit_time": "2020-03-05T21:00:00+00:00", + "pnl": 168.39999999999975, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 88.805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.2, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 84.516, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-05T00:00:00" + } + ], + "final_value": 1001259.3, + "framework": "ml4t.backtest", + "num_trades": 2, + "total_pnl": 1259.3000000000466, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 99.714, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 88.805, + "exit_reason": "trailing_stop", + "exit_time": "2020-02-04T00:00:00", + "pnl": 1090.8999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Short", + "entry_price": 86.2, + "entry_time": "2020-02-12T00:00:00", + "exit_price": 84.516, + "exit_reason": "trailing_stop", + "exit_time": "2020-03-05T00:00:00", + "pnl": 168.39999999999964, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "1959f1b057e8b49dd44d9c7d7252eb2d9b40d1d7e035752ca4794fd596d502fd", + "scenario": "51166032bf2c4582113ae77995f8db134af72ee7ccdca2dfa4b989fc48295e33" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "b211286d7dde78c905f246c3d56fb3c84b7f7de3c5f4a124c6b33680c37aa37d", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 69, + "entry_signals": 2, + "exit_signals": 0, + "framework_closed_trades": 2, + "framework_fills": 4, + "framework_intents": 2, + "framework_orders": null, + "ml4t_closed_trades": 2, + "ml4t_fills": 4, + "ml4t_intents": 2, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "12", @@ -573,8 +254506,307 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Zipline=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 100803.1, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 100803.1, + "message": "Zipline=$100,803.1000000000, ML4T=$100,803.1000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 803.1000000000058, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": 803.1000000000058, + "message": "Zipline=$803.1000000000, ML4T=$803.1000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.431, + "exit_reason": "take_profit", + "exit_time": "2020-01-14T00:00:00", + "pnl": 803.1000000000004, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.431, + "exit_time": "2020-01-14T21:00:00+00:00", + "pnl": 803.0999999999992, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 108.431, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-14T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.431, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-14T21:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "13" + }, "detail": null, + "duration_seconds": 2.314784521004185, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 108.431, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-14T21:00:00+00:00" + } + ], + "final_value": 100803.1, + "framework": "Zipline", + "num_trades": 1, + "total_pnl": 803.1000000000058, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 108.431, + "exit_time": "2020-01-14T21:00:00+00:00", + "pnl": 803.0999999999992, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.4, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "take_profit", + "price": 108.431, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-14T00:00:00" + } + ], + "final_value": 100803.1, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": 803.1000000000058, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.4, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 108.431, + "exit_reason": "take_profit", + "exit_time": "2020-01-14T00:00:00", + "pnl": 803.1000000000004, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "d7768c1dbc7e300243ff0eac676d628b4af4e347896a67b1623a5f0aa6c053a3", + "scenario": "b39049d150f6fc2c71a16c642dc255e53e92c4840e949226036d175bccc4e1b0" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "79590cf03ef0f3e90985c032e8f555ecdf9add3fc21908924a49e7d706b5f041", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 34, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "13", @@ -582,8 +254814,307 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Zipline=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99899.7, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99899.7, + "message": "Zipline=$99,899.7000000000, ML4T=$99,899.7000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -100.30000000000291, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 0.0, + "expected": -100.30000000000291, + "message": "Zipline=$-100.3000000000, ML4T=$-100.3000000000 (exact_diff=$0.0000000000; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 99.297, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-14T00:00:00", + "pnl": -100.30000000000109, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 99.297, + "exit_time": "2020-01-14T21:00:00+00:00", + "pnl": -100.30000000000001, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.3, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 99.297, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-14T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.297, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-14T21:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "14" + }, "detail": null, + "duration_seconds": 2.0954640838317573, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.3, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.297, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-14T21:00:00+00:00" + } + ], + "final_value": 99899.7, + "framework": "Zipline", + "num_trades": 1, + "total_pnl": -100.30000000000291, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 99.297, + "exit_time": "2020-01-14T21:00:00+00:00", + "pnl": -100.30000000000001, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.3, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 99.297, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-14T00:00:00" + } + ], + "final_value": 99899.7, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -100.30000000000291, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.3, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 99.297, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-14T00:00:00", + "pnl": -100.30000000000109, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "d7768c1dbc7e300243ff0eac676d628b4af4e347896a67b1623a5f0aa6c053a3", + "scenario": "875c440f742f71bb0793ff5c4c6a1a0080b961930e6d2a24493cfa3e4c1d80b5" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "939287c002cf7b640b21c5859335249e1db1400c7d94dd37f62a7f078ba31fad", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 34, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "14", @@ -591,8 +255122,307 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 1, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 1, + "message": "Zipline=1, ML4T=1, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 99737.3, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 0.0, + "expected": 99737.3, + "message": "Zipline=$99,737.3000000000, ML4T=$99,737.3000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": -262.6999999999971, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 10.0, + "difference": 0.0, + "expected": -262.6999999999971, + "message": "Zipline=$-262.7000000000, ML4T=$-262.7000000000 (exact_diff=$0.0000000000; diagnostic_limit=$10.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.7, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 94.073, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-07T00:00:00", + "pnl": -262.7000000000007, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.7, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 94.07300000000001, + "exit_time": "2020-01-07T21:00:00+00:00", + "pnl": -262.69999999999953, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.7, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 94.073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T21:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "15" + }, "detail": null, + "duration_seconds": 2.0427074190229177, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 96.7, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.07300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T21:00:00+00:00" + } + ], + "final_value": 99737.3, + "framework": "Zipline", + "num_trades": 1, + "total_pnl": -262.6999999999971, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.7, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 94.07300000000001, + "exit_time": "2020-01-07T21:00:00+00:00", + "pnl": -262.69999999999953, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.7, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 94.073, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-07T00:00:00" + } + ], + "final_value": 99737.3, + "framework": "ml4t.backtest", + "num_trades": 1, + "total_pnl": -262.6999999999971, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.7, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 94.073, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-07T00:00:00", + "pnl": -262.7000000000007, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "d7768c1dbc7e300243ff0eac676d628b4af4e347896a67b1623a5f0aa6c053a3", + "scenario": "fccddcd3455a97b6ce7c416cc2b41672c9d79511da75211739c16c90e940c969" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "935e7e58b70b2ff5c2181016ceae955c9aa4986a9e1d7653b63043d3be82a524", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 34, + "entry_signals": 1, + "exit_signals": 0, + "framework_closed_trades": 1, + "framework_fills": 2, + "framework_intents": 1, + "framework_orders": null, + "ml4t_closed_trades": 1, + "ml4t_fills": 2, + "ml4t_intents": 1, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "15", @@ -600,17 +255430,39384 @@ "status": "pass" }, { + "comparison": { + "checks": [ + { + "actual": 5, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 5, + "message": "Zipline=5, ML4T=5, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 98495.5, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.1, + "difference": 0.0, + "expected": 98495.5, + "message": "Zipline=$98,495.5000000000, ML4T=$98,495.5000000000 (exact_diff=$0.0000000000, 0.0000000000%; diagnostic_limit=0.1%)", + "name": "final_value", + "passed": true + }, + { + "actual": -1504.5, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 50.0, + "difference": 0.0, + "expected": -1504.5, + "message": "Zipline=$-1,504.5000000000, ML4T=$-1,504.5000000000 (exact_diff=$0.0000000000; diagnostic_limit=$50.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.888, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 100.505, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-22T00:00:00", + "pnl": -38.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 68.043, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 86.048, + "exit_reason": "trailing_stop", + "exit_time": "2020-09-22T00:00:00", + "pnl": 1800.4999999999982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 150.151, + "entry_time": "2021-02-08T00:00:00", + "exit_price": 139.858, + "exit_reason": "trailing_stop", + "exit_time": "2021-02-16T00:00:00", + "pnl": -1029.2999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 227.821, + "entry_time": "2021-12-03T00:00:00", + "exit_price": 199.696, + "exit_reason": "trailing_stop", + "exit_time": "2021-12-07T00:00:00", + "pnl": -2812.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.98, + "entry_time": "2022-09-29T00:00:00", + "exit_price": 92.731, + "exit_reason": "trailing_stop", + "exit_time": "2022-10-10T00:00:00", + "pnl": 575.0999999999985, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.888, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 100.505, + "exit_time": "2020-01-22T21:00:00+00:00", + "pnl": -38.30000000000098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 68.043, + "entry_time": "2020-07-21T20:00:00+00:00", + "exit_price": 86.048, + "exit_time": "2020-09-22T20:00:00+00:00", + "pnl": 1800.4999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 150.151, + "entry_time": "2021-02-08T21:00:00+00:00", + "exit_price": 139.858, + "exit_time": "2021-02-16T21:00:00+00:00", + "pnl": -1029.3000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 227.821, + "entry_time": "2021-12-03T21:00:00+00:00", + "exit_price": 199.696, + "exit_time": "2021-12-07T21:00:00+00:00", + "pnl": -2812.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.98, + "entry_time": "2022-09-29T20:00:00+00:00", + "exit_price": 92.73100000000001, + "exit_time": "2022-10-10T20:00:00+00:00", + "pnl": 575.1000000000005, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 100.505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 68.043, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 86.048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 150.151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 139.858, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 227.821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 199.696, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.98, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 92.731, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 68.043, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 150.151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 139.858, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 227.821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 199.696, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.98, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73100000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T20:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "16" + }, "detail": null, + "duration_seconds": 2.5611570989713073, "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 100.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 68.043, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 150.151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 139.858, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 227.821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 199.696, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 86.98, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73100000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T20:00:00+00:00" + } + ], + "final_value": 98495.5, + "framework": "Zipline", + "num_trades": 5, + "total_pnl": -1504.5, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.888, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 100.505, + "exit_time": "2020-01-22T21:00:00+00:00", + "pnl": -38.30000000000098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 68.043, + "entry_time": "2020-07-21T20:00:00+00:00", + "exit_price": 86.048, + "exit_time": "2020-09-22T20:00:00+00:00", + "pnl": 1800.4999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 150.151, + "entry_time": "2021-02-08T21:00:00+00:00", + "exit_price": 139.858, + "exit_time": "2021-02-16T21:00:00+00:00", + "pnl": -1029.3000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 227.821, + "entry_time": "2021-12-03T21:00:00+00:00", + "exit_price": 199.696, + "exit_time": "2021-12-07T21:00:00+00:00", + "pnl": -2812.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.98, + "entry_time": "2022-09-29T20:00:00+00:00", + "exit_price": 92.73100000000001, + "exit_time": "2022-10-10T20:00:00+00:00", + "pnl": 575.1000000000005, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 100.505, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 68.043, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 86.048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 150.151, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 139.858, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 227.821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 199.696, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 86.98, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "trailing_stop", + "price": 92.731, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + } + ], + "final_value": 98495.5, + "framework": "ml4t.backtest", + "num_trades": 5, + "total_pnl": -1504.5, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.888, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 100.505, + "exit_reason": "trailing_stop", + "exit_time": "2020-01-22T00:00:00", + "pnl": -38.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 68.043, + "entry_time": "2020-07-21T00:00:00", + "exit_price": 86.048, + "exit_reason": "trailing_stop", + "exit_time": "2020-09-22T00:00:00", + "pnl": 1800.4999999999982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 150.151, + "entry_time": "2021-02-08T00:00:00", + "exit_price": 139.858, + "exit_reason": "trailing_stop", + "exit_time": "2021-02-16T00:00:00", + "pnl": -1029.2999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 227.821, + "entry_time": "2021-12-03T00:00:00", + "exit_price": 199.696, + "exit_reason": "trailing_stop", + "exit_time": "2021-12-07T00:00:00", + "pnl": -2812.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 86.98, + "entry_time": "2022-09-29T00:00:00", + "exit_price": 92.731, + "exit_reason": "trailing_stop", + "exit_time": "2022-10-10T00:00:00", + "pnl": 575.0999999999985, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "d7768c1dbc7e300243ff0eac676d628b4af4e347896a67b1623a5f0aa6c053a3", + "scenario": "0198df8bd89459f57967743d1f22954c5d08e535d28d96d9ab83461ca73d02b9" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "fc4132bd3907c4367265ff478960830680f88ab7df440ad0ec317ff5136c039c", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 1034, + "entry_signals": 5, + "exit_signals": 0, + "framework_closed_trades": 5, + "framework_fills": 10, + "framework_intents": 5, + "framework_orders": null, + "ml4t_closed_trades": 5, + "ml4t_fills": 10, + "ml4t_intents": 5, + "ml4t_orders": null + } + }, "release_blocking": false, "required": true, "scenario_id": "16", - "scenario_name": "Stress Test", + "scenario_name": "Regime Path Coverage", + "status": "pass" + }, + { + "comparison": { + "checks": [ + { + "actual": 337, + "canonical_quantum": "1", + "diagnostic_limit": 0, + "difference": 0, + "expected": 337, + "message": "Zipline=337, ML4T=337, exact_diff=0; diagnostic_limit=0", + "name": "trade_count", + "passed": true + }, + { + "actual": 100811.00000000025, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 0.01, + "difference": 1.0186340659856796e-10, + "expected": 100811.00000000015, + "message": "Zipline=$100,811.0000000001, ML4T=$100,811.0000000002 (exact_diff=$0.0000000001, 0.0000000000%; diagnostic_limit=0.01%)", + "name": "final_value", + "passed": true + }, + { + "actual": 811.0000000002474, + "canonical_quantum": "0.00000001", + "diagnostic_limit": 5.0, + "difference": 1.0186340659856796e-10, + "expected": 811.0000000001455, + "message": "Zipline=$811.0000000001, ML4T=$811.0000000002 (exact_diff=$0.0000000001; diagnostic_limit=$5.0)", + "name": "total_pnl", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.119, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 100.032, + "exit_reason": "signal", + "exit_time": "2020-01-06T00:00:00", + "pnl": -108.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.672, + "entry_time": "2020-01-09T00:00:00", + "exit_price": 99.865, + "exit_reason": "signal", + "exit_time": "2020-01-10T00:00:00", + "pnl": 19.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.745, + "entry_time": "2020-01-15T00:00:00", + "exit_price": 99.432, + "exit_reason": "signal", + "exit_time": "2020-01-16T00:00:00", + "pnl": -31.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.592, + "entry_time": "2020-01-21T00:00:00", + "exit_price": 99.213, + "exit_reason": "signal", + "exit_time": "2020-01-22T00:00:00", + "pnl": -37.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.933, + "entry_time": "2020-01-24T00:00:00", + "exit_price": 100.129, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": 19.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21, + "entry_time": "2020-01-30T00:00:00", + "exit_price": 99.284, + "exit_reason": "signal", + "exit_time": "2020-01-31T00:00:00", + "pnl": 7.400000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.414, + "entry_time": "2020-02-05T00:00:00", + "exit_price": 99.742, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 132.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.153, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 98.958, + "exit_reason": "signal", + "exit_time": "2020-02-12T00:00:00", + "pnl": -19.50000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.398, + "entry_time": "2020-02-14T00:00:00", + "exit_price": 98.714, + "exit_reason": "signal", + "exit_time": "2020-02-18T00:00:00", + "pnl": -68.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.687, + "entry_time": "2020-02-20T00:00:00", + "exit_price": 99.197, + "exit_reason": "signal", + "exit_time": "2020-02-21T00:00:00", + "pnl": 51.00000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.753, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 98.67, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -8.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.944, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.276, + "exit_reason": "signal", + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.967, + "entry_time": "2020-03-06T00:00:00", + "exit_price": 99.019, + "exit_reason": "signal", + "exit_time": "2020-03-09T00:00:00", + "pnl": -94.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.614, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 99.444, + "exit_reason": "signal", + "exit_time": "2020-03-13T00:00:00", + "pnl": -17.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.487, + "entry_time": "2020-03-18T00:00:00", + "exit_price": 98.539, + "exit_reason": "signal", + "exit_time": "2020-03-19T00:00:00", + "pnl": -94.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.361, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.394, + "exit_reason": "signal", + "exit_time": "2020-03-25T00:00:00", + "pnl": 103.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.38, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 99.783, + "exit_reason": "signal", + "exit_time": "2020-03-30T00:00:00", + "pnl": 40.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.044, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 100.006, + "exit_reason": "signal", + "exit_time": "2020-04-03T00:00:00", + "pnl": -3.7999999999992724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.073, + "entry_time": "2020-04-08T00:00:00", + "exit_price": 99.85, + "exit_reason": "signal", + "exit_time": "2020-04-09T00:00:00", + "pnl": -122.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.163, + "entry_time": "2020-04-14T00:00:00", + "exit_price": 99.598, + "exit_reason": "signal", + "exit_time": "2020-04-15T00:00:00", + "pnl": -56.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.024, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 100.102, + "exit_reason": "signal", + "exit_time": "2020-04-20T00:00:00", + "pnl": 7.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.475, + "entry_time": "2020-04-23T00:00:00", + "exit_price": 100.785, + "exit_reason": "signal", + "exit_time": "2020-04-24T00:00:00", + "pnl": 31.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.284, + "entry_time": "2020-04-29T00:00:00", + "exit_price": 100.408, + "exit_reason": "signal", + "exit_time": "2020-04-30T00:00:00", + "pnl": 12.399999999997817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.529, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.468, + "exit_reason": "signal", + "exit_time": "2020-05-06T00:00:00", + "pnl": -6.099999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.654, + "entry_time": "2020-05-08T00:00:00", + "exit_price": 100.845, + "exit_reason": "signal", + "exit_time": "2020-05-11T00:00:00", + "pnl": 19.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.833, + "entry_time": "2020-05-14T00:00:00", + "exit_price": 100.141, + "exit_reason": "signal", + "exit_time": "2020-05-15T00:00:00", + "pnl": -69.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.172, + "entry_time": "2020-05-20T00:00:00", + "exit_price": 100.89, + "exit_reason": "signal", + "exit_time": "2020-05-21T00:00:00", + "pnl": 171.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 99.429, + "exit_reason": "signal", + "exit_time": "2020-05-27T00:00:00", + "pnl": 56.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.671, + "entry_time": "2020-05-29T00:00:00", + "exit_price": 97.998, + "exit_reason": "signal", + "exit_time": "2020-06-01T00:00:00", + "pnl": -67.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.689, + "entry_time": "2020-06-04T00:00:00", + "exit_price": 98.907, + "exit_reason": "signal", + "exit_time": "2020-06-05T00:00:00", + "pnl": 21.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.789, + "entry_time": "2020-06-10T00:00:00", + "exit_price": 99.443, + "exit_reason": "signal", + "exit_time": "2020-06-11T00:00:00", + "pnl": 65.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 98.913, + "exit_reason": "signal", + "exit_time": "2020-06-17T00:00:00", + "pnl": -39.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.359, + "entry_time": "2020-06-19T00:00:00", + "exit_price": 99.246, + "exit_reason": "signal", + "exit_time": "2020-06-22T00:00:00", + "pnl": -11.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86, + "entry_time": "2020-06-25T00:00:00", + "exit_price": 98.942, + "exit_reason": "signal", + "exit_time": "2020-06-26T00:00:00", + "pnl": 8.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.476, + "entry_time": "2020-07-01T00:00:00", + "exit_price": 98.222, + "exit_reason": "signal", + "exit_time": "2020-07-02T00:00:00", + "pnl": -25.400000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.275, + "entry_time": "2020-07-07T00:00:00", + "exit_price": 99.229, + "exit_reason": "signal", + "exit_time": "2020-07-08T00:00:00", + "pnl": -4.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.847, + "entry_time": "2020-07-10T00:00:00", + "exit_price": 98.98, + "exit_reason": "signal", + "exit_time": "2020-07-13T00:00:00", + "pnl": 13.300000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.523, + "entry_time": "2020-07-16T00:00:00", + "exit_price": 98.848, + "exit_reason": "signal", + "exit_time": "2020-07-17T00:00:00", + "pnl": -67.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.079, + "entry_time": "2020-07-22T00:00:00", + "exit_price": 98.463, + "exit_reason": "signal", + "exit_time": "2020-07-23T00:00:00", + "pnl": 38.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.336, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 97.695, + "exit_reason": "signal", + "exit_time": "2020-07-29T00:00:00", + "pnl": -164.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.931, + "entry_time": "2020-07-31T00:00:00", + "exit_price": 98.053, + "exit_reason": "signal", + "exit_time": "2020-08-03T00:00:00", + "pnl": 12.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.956, + "entry_time": "2020-08-06T00:00:00", + "exit_price": 97.857, + "exit_reason": "signal", + "exit_time": "2020-08-07T00:00:00", + "pnl": -109.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.834, + "entry_time": "2020-08-12T00:00:00", + "exit_price": 97.257, + "exit_reason": "signal", + "exit_time": "2020-08-13T00:00:00", + "pnl": -57.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.416, + "exit_reason": "signal", + "exit_time": "2020-08-19T00:00:00", + "pnl": 25.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.923, + "entry_time": "2020-08-21T00:00:00", + "exit_price": 97.974, + "exit_reason": "signal", + "exit_time": "2020-08-24T00:00:00", + "pnl": 5.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.214, + "entry_time": "2020-08-27T00:00:00", + "exit_price": 98.083, + "exit_reason": "signal", + "exit_time": "2020-08-28T00:00:00", + "pnl": -113.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.001, + "entry_time": "2020-09-02T00:00:00", + "exit_price": 98.653, + "exit_reason": "signal", + "exit_time": "2020-09-03T00:00:00", + "pnl": 65.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.474, + "entry_time": "2020-09-08T00:00:00", + "exit_price": 98.313, + "exit_reason": "signal", + "exit_time": "2020-09-09T00:00:00", + "pnl": -116.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.732, + "entry_time": "2020-09-11T00:00:00", + "exit_price": 98.566, + "exit_reason": "signal", + "exit_time": "2020-09-14T00:00:00", + "pnl": 83.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.9, + "entry_time": "2020-09-17T00:00:00", + "exit_price": 98.388, + "exit_reason": "signal", + "exit_time": "2020-09-18T00:00:00", + "pnl": 148.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.12, + "entry_time": "2020-09-23T00:00:00", + "exit_price": 99.257, + "exit_reason": "signal", + "exit_time": "2020-09-24T00:00:00", + "pnl": 13.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.713, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.383, + "exit_reason": "signal", + "exit_time": "2020-09-30T00:00:00", + "pnl": 67.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.584, + "entry_time": "2020-10-02T00:00:00", + "exit_price": 99.318, + "exit_reason": "signal", + "exit_time": "2020-10-05T00:00:00", + "pnl": -26.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.115, + "entry_time": "2020-10-08T00:00:00", + "exit_price": 97.468, + "exit_reason": "signal", + "exit_time": "2020-10-09T00:00:00", + "pnl": -64.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.615, + "entry_time": "2020-10-14T00:00:00", + "exit_price": 98.16, + "exit_reason": "signal", + "exit_time": "2020-10-15T00:00:00", + "pnl": 54.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.362, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.412, + "exit_reason": "signal", + "exit_time": "2020-10-21T00:00:00", + "pnl": 105.00000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.782, + "entry_time": "2020-10-23T00:00:00", + "exit_price": 98.91, + "exit_reason": "signal", + "exit_time": "2020-10-26T00:00:00", + "pnl": 12.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.73, + "entry_time": "2020-10-29T00:00:00", + "exit_price": 98.608, + "exit_reason": "signal", + "exit_time": "2020-10-30T00:00:00", + "pnl": -12.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.216, + "entry_time": "2020-11-04T00:00:00", + "exit_price": 98.491, + "exit_reason": "signal", + "exit_time": "2020-11-05T00:00:00", + "pnl": -72.49999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.95, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 97.827, + "exit_reason": "signal", + "exit_time": "2020-11-11T00:00:00", + "pnl": -12.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.914, + "entry_time": "2020-11-13T00:00:00", + "exit_price": 98.93, + "exit_reason": "signal", + "exit_time": "2020-11-16T00:00:00", + "pnl": 1.6000000000003638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.475, + "entry_time": "2020-11-19T00:00:00", + "exit_price": 98.101, + "exit_reason": "signal", + "exit_time": "2020-11-20T00:00:00", + "pnl": -37.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.485, + "entry_time": "2020-11-25T00:00:00", + "exit_price": 98.641, + "exit_reason": "signal", + "exit_time": "2020-11-27T00:00:00", + "pnl": 15.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.76, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.799, + "exit_reason": "signal", + "exit_time": "2020-12-02T00:00:00", + "pnl": 3.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.985, + "entry_time": "2020-12-04T00:00:00", + "exit_price": 98.34, + "exit_reason": "signal", + "exit_time": "2020-12-07T00:00:00", + "pnl": 35.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.428, + "entry_time": "2020-12-10T00:00:00", + "exit_price": 96.632, + "exit_reason": "signal", + "exit_time": "2020-12-11T00:00:00", + "pnl": -79.59999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.731, + "entry_time": "2020-12-16T00:00:00", + "exit_price": 97.619, + "exit_reason": "signal", + "exit_time": "2020-12-17T00:00:00", + "pnl": 88.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.386, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 96.994, + "exit_reason": "signal", + "exit_time": "2020-12-23T00:00:00", + "pnl": -139.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.124, + "entry_time": "2020-12-28T00:00:00", + "exit_price": 97.539, + "exit_reason": "signal", + "exit_time": "2020-12-29T00:00:00", + "pnl": 41.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.603, + "entry_time": "2020-12-31T00:00:00", + "exit_price": 96.822, + "exit_reason": "signal", + "exit_time": "2021-01-04T00:00:00", + "pnl": -78.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.791, + "entry_time": "2021-01-06T00:00:00", + "exit_price": 97.115, + "exit_reason": "signal", + "exit_time": "2021-01-07T00:00:00", + "pnl": 32.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.811, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.28, + "exit_reason": "signal", + "exit_time": "2021-01-13T00:00:00", + "pnl": -53.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.533, + "entry_time": "2021-01-15T00:00:00", + "exit_price": 96.079, + "exit_reason": "signal", + "exit_time": "2021-01-19T00:00:00", + "pnl": -45.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.796, + "entry_time": "2021-01-21T00:00:00", + "exit_price": 95.248, + "exit_reason": "signal", + "exit_time": "2021-01-22T00:00:00", + "pnl": -54.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.556, + "entry_time": "2021-01-27T00:00:00", + "exit_price": 96.557, + "exit_reason": "signal", + "exit_time": "2021-01-28T00:00:00", + "pnl": 100.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.251, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.837, + "exit_reason": "signal", + "exit_time": "2021-02-03T00:00:00", + "pnl": -41.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.265, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 95.261, + "exit_reason": "signal", + "exit_time": "2021-02-08T00:00:00", + "pnl": -0.3999999999996362, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.948, + "entry_time": "2021-02-11T00:00:00", + "exit_price": 95.051, + "exit_reason": "signal", + "exit_time": "2021-02-12T00:00:00", + "pnl": 10.300000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.97, + "entry_time": "2021-02-17T00:00:00", + "exit_price": 96.348, + "exit_reason": "signal", + "exit_time": "2021-02-18T00:00:00", + "pnl": -62.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.318, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.625, + "exit_reason": "signal", + "exit_time": "2021-02-24T00:00:00", + "pnl": -69.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.886, + "entry_time": "2021-02-26T00:00:00", + "exit_price": 95.236, + "exit_reason": "signal", + "exit_time": "2021-03-01T00:00:00", + "pnl": 35.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.403, + "entry_time": "2021-03-04T00:00:00", + "exit_price": 94.323, + "exit_reason": "signal", + "exit_time": "2021-03-05T00:00:00", + "pnl": -8.000000000001819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.082, + "entry_time": "2021-03-10T00:00:00", + "exit_price": 94.588, + "exit_reason": "signal", + "exit_time": "2021-03-11T00:00:00", + "pnl": -49.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.802, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.783, + "exit_reason": "signal", + "exit_time": "2021-03-17T00:00:00", + "pnl": -1.9000000000014552, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.661, + "entry_time": "2021-03-19T00:00:00", + "exit_price": 95.004, + "exit_reason": "signal", + "exit_time": "2021-03-22T00:00:00", + "pnl": 134.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.499, + "entry_time": "2021-03-25T00:00:00", + "exit_price": 93.976, + "exit_reason": "signal", + "exit_time": "2021-03-26T00:00:00", + "pnl": -152.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.019, + "entry_time": "2021-03-31T00:00:00", + "exit_price": 94.256, + "exit_reason": "signal", + "exit_time": "2021-04-01T00:00:00", + "pnl": 23.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.471, + "entry_time": "2021-04-06T00:00:00", + "exit_price": 93.724, + "exit_reason": "signal", + "exit_time": "2021-04-07T00:00:00", + "pnl": 25.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.199, + "entry_time": "2021-04-09T00:00:00", + "exit_price": 93.341, + "exit_reason": "signal", + "exit_time": "2021-04-12T00:00:00", + "pnl": 14.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.729, + "entry_time": "2021-04-15T00:00:00", + "exit_price": 93.256, + "exit_reason": "signal", + "exit_time": "2021-04-16T00:00:00", + "pnl": -47.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.926, + "entry_time": "2021-04-21T00:00:00", + "exit_price": 94.143, + "exit_reason": "signal", + "exit_time": "2021-04-22T00:00:00", + "pnl": 121.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.774, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.493, + "exit_reason": "signal", + "exit_time": "2021-04-28T00:00:00", + "pnl": -28.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.685, + "entry_time": "2021-04-30T00:00:00", + "exit_price": 94.267, + "exit_reason": "signal", + "exit_time": "2021-05-03T00:00:00", + "pnl": 58.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.415, + "entry_time": "2021-05-06T00:00:00", + "exit_price": 93.364, + "exit_reason": "signal", + "exit_time": "2021-05-07T00:00:00", + "pnl": -5.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.742, + "entry_time": "2021-05-12T00:00:00", + "exit_price": 94.554, + "exit_reason": "signal", + "exit_time": "2021-05-13T00:00:00", + "pnl": 81.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.502, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 94.556, + "exit_reason": "signal", + "exit_time": "2021-05-19T00:00:00", + "pnl": 105.40000000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.081, + "entry_time": "2021-05-21T00:00:00", + "exit_price": 92.813, + "exit_reason": "signal", + "exit_time": "2021-05-24T00:00:00", + "pnl": -26.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.953, + "entry_time": "2021-05-27T00:00:00", + "exit_price": 93.147, + "exit_reason": "signal", + "exit_time": "2021-05-28T00:00:00", + "pnl": 19.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.945, + "entry_time": "2021-06-02T00:00:00", + "exit_price": 92.896, + "exit_reason": "signal", + "exit_time": "2021-06-03T00:00:00", + "pnl": -4.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.577, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.284, + "exit_reason": "signal", + "exit_time": "2021-06-09T00:00:00", + "pnl": -129.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13, + "entry_time": "2021-06-11T00:00:00", + "exit_price": 92.333, + "exit_reason": "signal", + "exit_time": "2021-06-14T00:00:00", + "pnl": -79.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.95, + "entry_time": "2021-06-17T00:00:00", + "exit_price": 92.166, + "exit_reason": "signal", + "exit_time": "2021-06-18T00:00:00", + "pnl": 21.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.256, + "entry_time": "2021-06-23T00:00:00", + "exit_price": 92.456, + "exit_reason": "signal", + "exit_time": "2021-06-24T00:00:00", + "pnl": 20.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.731, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.788, + "exit_reason": "signal", + "exit_time": "2021-06-30T00:00:00", + "pnl": 5.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.941, + "entry_time": "2021-07-02T00:00:00", + "exit_price": 90.653, + "exit_reason": "signal", + "exit_time": "2021-07-06T00:00:00", + "pnl": -28.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.824, + "entry_time": "2021-07-08T00:00:00", + "exit_price": 91.78, + "exit_reason": "signal", + "exit_time": "2021-07-09T00:00:00", + "pnl": -4.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.098, + "entry_time": "2021-07-14T00:00:00", + "exit_price": 91.642, + "exit_reason": "signal", + "exit_time": "2021-07-15T00:00:00", + "pnl": 54.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.333, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.025, + "exit_reason": "signal", + "exit_time": "2021-07-21T00:00:00", + "pnl": -30.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.238, + "entry_time": "2021-07-23T00:00:00", + "exit_price": 91.959, + "exit_reason": "signal", + "exit_time": "2021-07-26T00:00:00", + "pnl": 72.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.122, + "entry_time": "2021-07-29T00:00:00", + "exit_price": 93.031, + "exit_reason": "signal", + "exit_time": "2021-07-30T00:00:00", + "pnl": 90.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.16, + "entry_time": "2021-08-04T00:00:00", + "exit_price": 91.643, + "exit_reason": "signal", + "exit_time": "2021-08-05T00:00:00", + "pnl": -51.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.188, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 93.342, + "exit_reason": "signal", + "exit_time": "2021-08-11T00:00:00", + "pnl": 15.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.618, + "entry_time": "2021-08-13T00:00:00", + "exit_price": 94.259, + "exit_reason": "signal", + "exit_time": "2021-08-16T00:00:00", + "pnl": 64.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.98, + "entry_time": "2021-08-19T00:00:00", + "exit_price": 93.988, + "exit_reason": "signal", + "exit_time": "2021-08-20T00:00:00", + "pnl": 100.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.681, + "entry_time": "2021-08-25T00:00:00", + "exit_price": 92.705, + "exit_reason": "signal", + "exit_time": "2021-08-26T00:00:00", + "pnl": 2.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.361, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.802, + "exit_reason": "signal", + "exit_time": "2021-09-01T00:00:00", + "pnl": 144.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.154, + "entry_time": "2021-09-03T00:00:00", + "exit_price": 93.729, + "exit_reason": "signal", + "exit_time": "2021-09-07T00:00:00", + "pnl": 57.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.158, + "entry_time": "2021-09-09T00:00:00", + "exit_price": 93.741, + "exit_reason": "signal", + "exit_time": "2021-09-10T00:00:00", + "pnl": -41.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.019, + "entry_time": "2021-09-15T00:00:00", + "exit_price": 94.422, + "exit_reason": "signal", + "exit_time": "2021-09-16T00:00:00", + "pnl": -59.70000000000255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.354, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 94.986, + "exit_reason": "signal", + "exit_time": "2021-09-22T00:00:00", + "pnl": 63.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87, + "entry_time": "2021-09-24T00:00:00", + "exit_price": 94.849, + "exit_reason": "signal", + "exit_time": "2021-09-27T00:00:00", + "pnl": 97.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.309, + "entry_time": "2021-09-30T00:00:00", + "exit_price": 93.994, + "exit_reason": "signal", + "exit_time": "2021-10-01T00:00:00", + "pnl": -31.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.074, + "entry_time": "2021-10-06T00:00:00", + "exit_price": 94.048, + "exit_reason": "signal", + "exit_time": "2021-10-07T00:00:00", + "pnl": -2.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.849, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.437, + "exit_reason": "signal", + "exit_time": "2021-10-13T00:00:00", + "pnl": 58.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37, + "entry_time": "2021-10-15T00:00:00", + "exit_price": 95.093, + "exit_reason": "signal", + "exit_time": "2021-10-18T00:00:00", + "pnl": 72.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.029, + "entry_time": "2021-10-21T00:00:00", + "exit_price": 94.805, + "exit_reason": "signal", + "exit_time": "2021-10-22T00:00:00", + "pnl": 77.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.249, + "entry_time": "2021-10-27T00:00:00", + "exit_price": 93.601, + "exit_reason": "signal", + "exit_time": "2021-10-28T00:00:00", + "pnl": -64.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.241, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 94.429, + "exit_reason": "signal", + "exit_time": "2021-11-03T00:00:00", + "pnl": 118.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.416, + "entry_time": "2021-11-05T00:00:00", + "exit_price": 92.51, + "exit_reason": "signal", + "exit_time": "2021-11-08T00:00:00", + "pnl": -90.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96, + "entry_time": "2021-11-11T00:00:00", + "exit_price": 93.531, + "exit_reason": "signal", + "exit_time": "2021-11-12T00:00:00", + "pnl": 57.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.427, + "entry_time": "2021-11-17T00:00:00", + "exit_price": 92.196, + "exit_reason": "signal", + "exit_time": "2021-11-18T00:00:00", + "pnl": -23.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 93.982, + "exit_reason": "signal", + "exit_time": "2021-11-24T00:00:00", + "pnl": 146.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 91.736, + "exit_reason": "signal", + "exit_time": "2021-12-03T00:00:00", + "pnl": -8.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.704, + "entry_time": "2021-12-08T00:00:00", + "exit_price": 92.183, + "exit_reason": "signal", + "exit_time": "2021-12-09T00:00:00", + "pnl": 47.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.131, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.825, + "exit_reason": "signal", + "exit_time": "2021-12-15T00:00:00", + "pnl": 69.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.809, + "entry_time": "2021-12-17T00:00:00", + "exit_price": 93.226, + "exit_reason": "signal", + "exit_time": "2021-12-20T00:00:00", + "pnl": -58.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.067, + "entry_time": "2021-12-23T00:00:00", + "exit_price": 92.105, + "exit_reason": "signal", + "exit_time": "2021-12-27T00:00:00", + "pnl": -96.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.026, + "entry_time": "2021-12-29T00:00:00", + "exit_price": 93.011, + "exit_reason": "signal", + "exit_time": "2021-12-30T00:00:00", + "pnl": 98.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.067, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.642, + "exit_reason": "signal", + "exit_time": "2022-01-05T00:00:00", + "pnl": -42.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.202, + "entry_time": "2022-01-07T00:00:00", + "exit_price": 91.813, + "exit_reason": "signal", + "exit_time": "2022-01-10T00:00:00", + "pnl": -38.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.255, + "entry_time": "2022-01-13T00:00:00", + "exit_price": 91.975, + "exit_reason": "signal", + "exit_time": "2022-01-14T00:00:00", + "pnl": -28.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.763, + "entry_time": "2022-01-19T00:00:00", + "exit_price": 91.432, + "exit_reason": "signal", + "exit_time": "2022-01-20T00:00:00", + "pnl": -33.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.966, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.852, + "exit_reason": "signal", + "exit_time": "2022-01-26T00:00:00", + "pnl": -11.399999999997817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.814, + "entry_time": "2022-01-28T00:00:00", + "exit_price": 91.676, + "exit_reason": "signal", + "exit_time": "2022-01-31T00:00:00", + "pnl": 86.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.985, + "entry_time": "2022-02-03T00:00:00", + "exit_price": 91.188, + "exit_reason": "signal", + "exit_time": "2022-02-04T00:00:00", + "pnl": -79.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.97, + "entry_time": "2022-02-09T00:00:00", + "exit_price": 92.17, + "exit_reason": "signal", + "exit_time": "2022-02-10T00:00:00", + "pnl": 20.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.507, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.156, + "exit_reason": "signal", + "exit_time": "2022-02-16T00:00:00", + "pnl": -35.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.661, + "entry_time": "2022-02-18T00:00:00", + "exit_price": 92.287, + "exit_reason": "signal", + "exit_time": "2022-02-22T00:00:00", + "pnl": 62.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.068, + "entry_time": "2022-02-24T00:00:00", + "exit_price": 91.351, + "exit_reason": "signal", + "exit_time": "2022-02-25T00:00:00", + "pnl": 28.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.094, + "entry_time": "2022-03-02T00:00:00", + "exit_price": 91.421, + "exit_reason": "signal", + "exit_time": "2022-03-03T00:00:00", + "pnl": -67.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.013, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.526, + "exit_reason": "signal", + "exit_time": "2022-03-09T00:00:00", + "pnl": -48.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.012, + "entry_time": "2022-03-11T00:00:00", + "exit_price": 90.821, + "exit_reason": "signal", + "exit_time": "2022-03-14T00:00:00", + "pnl": -19.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.925, + "entry_time": "2022-03-17T00:00:00", + "exit_price": 90.615, + "exit_reason": "signal", + "exit_time": "2022-03-18T00:00:00", + "pnl": -131.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.965, + "entry_time": "2022-03-23T00:00:00", + "exit_price": 90.7, + "exit_reason": "signal", + "exit_time": "2022-03-24T00:00:00", + "pnl": -26.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.683, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.694, + "exit_reason": "signal", + "exit_time": "2022-03-30T00:00:00", + "pnl": 101.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87, + "entry_time": "2022-04-01T00:00:00", + "exit_price": 90.055, + "exit_reason": "signal", + "exit_time": "2022-04-04T00:00:00", + "pnl": -81.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.631, + "entry_time": "2022-04-07T00:00:00", + "exit_price": 89.96, + "exit_reason": "signal", + "exit_time": "2022-04-08T00:00:00", + "pnl": -67.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.759, + "entry_time": "2022-04-13T00:00:00", + "exit_price": 90.978, + "exit_reason": "signal", + "exit_time": "2022-04-14T00:00:00", + "pnl": 121.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.009, + "entry_time": "2022-04-19T00:00:00", + "exit_price": 90.972, + "exit_reason": "signal", + "exit_time": "2022-04-20T00:00:00", + "pnl": 96.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.449, + "entry_time": "2022-04-22T00:00:00", + "exit_price": 89.939, + "exit_reason": "signal", + "exit_time": "2022-04-25T00:00:00", + "pnl": -51.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.137, + "entry_time": "2022-04-28T00:00:00", + "exit_price": 90.92, + "exit_reason": "signal", + "exit_time": "2022-04-29T00:00:00", + "pnl": 78.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.235, + "entry_time": "2022-05-04T00:00:00", + "exit_price": 92.161, + "exit_reason": "signal", + "exit_time": "2022-05-05T00:00:00", + "pnl": 92.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.242, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.392, + "exit_reason": "signal", + "exit_time": "2022-05-11T00:00:00", + "pnl": 114.99999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.798, + "entry_time": "2022-05-13T00:00:00", + "exit_price": 91.741, + "exit_reason": "signal", + "exit_time": "2022-05-16T00:00:00", + "pnl": -5.699999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.129, + "entry_time": "2022-05-19T00:00:00", + "exit_price": 91.294, + "exit_reason": "signal", + "exit_time": "2022-05-20T00:00:00", + "pnl": 16.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.508, + "entry_time": "2022-05-25T00:00:00", + "exit_price": 90.206, + "exit_reason": "signal", + "exit_time": "2022-05-26T00:00:00", + "pnl": -30.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.881, + "entry_time": "2022-05-31T00:00:00", + "exit_price": 90.543, + "exit_reason": "signal", + "exit_time": "2022-06-01T00:00:00", + "pnl": 66.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.973, + "entry_time": "2022-06-03T00:00:00", + "exit_price": 90.741, + "exit_reason": "signal", + "exit_time": "2022-06-06T00:00:00", + "pnl": -23.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.848, + "entry_time": "2022-06-09T00:00:00", + "exit_price": 90.837, + "exit_reason": "signal", + "exit_time": "2022-06-10T00:00:00", + "pnl": -1.0999999999985448, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.825, + "entry_time": "2022-06-15T00:00:00", + "exit_price": 90.17, + "exit_reason": "signal", + "exit_time": "2022-06-16T00:00:00", + "pnl": -65.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.553, + "entry_time": "2022-06-21T00:00:00", + "exit_price": 90.601, + "exit_reason": "signal", + "exit_time": "2022-06-22T00:00:00", + "pnl": 4.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.687, + "entry_time": "2022-06-24T00:00:00", + "exit_price": 90.053, + "exit_reason": "signal", + "exit_time": "2022-06-27T00:00:00", + "pnl": -63.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.794, + "entry_time": "2022-06-30T00:00:00", + "exit_price": 92.411, + "exit_reason": "signal", + "exit_time": "2022-07-01T00:00:00", + "pnl": 161.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.303, + "entry_time": "2022-07-06T00:00:00", + "exit_price": 90.141, + "exit_reason": "signal", + "exit_time": "2022-07-07T00:00:00", + "pnl": -116.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.156, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 90.998, + "exit_reason": "signal", + "exit_time": "2022-07-13T00:00:00", + "pnl": -15.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.512, + "entry_time": "2022-07-15T00:00:00", + "exit_price": 91.253, + "exit_reason": "signal", + "exit_time": "2022-07-18T00:00:00", + "pnl": 74.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.474, + "entry_time": "2022-07-21T00:00:00", + "exit_price": 89.988, + "exit_reason": "signal", + "exit_time": "2022-07-22T00:00:00", + "pnl": -148.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.051, + "entry_time": "2022-07-27T00:00:00", + "exit_price": 91.314, + "exit_reason": "signal", + "exit_time": "2022-07-28T00:00:00", + "pnl": 26.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.376, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.542, + "exit_reason": "signal", + "exit_time": "2022-08-03T00:00:00", + "pnl": 16.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.898, + "entry_time": "2022-08-05T00:00:00", + "exit_price": 92.023, + "exit_reason": "signal", + "exit_time": "2022-08-08T00:00:00", + "pnl": 12.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.244, + "entry_time": "2022-08-11T00:00:00", + "exit_price": 92.691, + "exit_reason": "signal", + "exit_time": "2022-08-12T00:00:00", + "pnl": 44.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.181, + "entry_time": "2022-08-17T00:00:00", + "exit_price": 92.495, + "exit_reason": "signal", + "exit_time": "2022-08-18T00:00:00", + "pnl": -68.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.024, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.281, + "exit_reason": "signal", + "exit_time": "2022-08-24T00:00:00", + "pnl": 25.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.724, + "entry_time": "2022-08-26T00:00:00", + "exit_price": 93.027, + "exit_reason": "signal", + "exit_time": "2022-08-29T00:00:00", + "pnl": -69.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.267, + "entry_time": "2022-09-01T00:00:00", + "exit_price": 93.319, + "exit_reason": "signal", + "exit_time": "2022-09-02T00:00:00", + "pnl": 5.200000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.866, + "entry_time": "2022-09-07T00:00:00", + "exit_price": 93.548, + "exit_reason": "signal", + "exit_time": "2022-09-08T00:00:00", + "pnl": 68.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.821, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 94.111, + "exit_reason": "signal", + "exit_time": "2022-09-14T00:00:00", + "pnl": 29.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.782, + "entry_time": "2022-09-16T00:00:00", + "exit_price": 94.266, + "exit_reason": "signal", + "exit_time": "2022-09-19T00:00:00", + "pnl": -51.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.888, + "entry_time": "2022-09-22T00:00:00", + "exit_price": 94.905, + "exit_reason": "signal", + "exit_time": "2022-09-23T00:00:00", + "pnl": 1.6999999999989086, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.211, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 93.622, + "exit_reason": "signal", + "exit_time": "2022-09-29T00:00:00", + "pnl": -58.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.289, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 95.218, + "exit_reason": "signal", + "exit_time": "2022-10-05T00:00:00", + "pnl": -7.099999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.625, + "entry_time": "2022-10-07T00:00:00", + "exit_price": 93.711, + "exit_reason": "signal", + "exit_time": "2022-10-10T00:00:00", + "pnl": -91.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.22, + "entry_time": "2022-10-13T00:00:00", + "exit_price": 95.266, + "exit_reason": "signal", + "exit_time": "2022-10-14T00:00:00", + "pnl": 104.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.369, + "entry_time": "2022-10-19T00:00:00", + "exit_price": 94.388, + "exit_reason": "signal", + "exit_time": "2022-10-20T00:00:00", + "pnl": 101.90000000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.034, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.253, + "exit_reason": "signal", + "exit_time": "2022-10-26T00:00:00", + "pnl": 21.899999999997817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.929, + "entry_time": "2022-10-28T00:00:00", + "exit_price": 95.019, + "exit_reason": "signal", + "exit_time": "2022-10-31T00:00:00", + "pnl": 9.000000000001819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.458, + "entry_time": "2022-11-03T00:00:00", + "exit_price": 95.965, + "exit_reason": "signal", + "exit_time": "2022-11-04T00:00:00", + "pnl": -49.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.237, + "entry_time": "2022-11-09T00:00:00", + "exit_price": 94.586, + "exit_reason": "signal", + "exit_time": "2022-11-10T00:00:00", + "pnl": -65.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.712, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.086, + "exit_reason": "signal", + "exit_time": "2022-11-16T00:00:00", + "pnl": 37.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.205, + "entry_time": "2022-11-18T00:00:00", + "exit_price": 94.623, + "exit_reason": "signal", + "exit_time": "2022-11-21T00:00:00", + "pnl": 41.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54, + "entry_time": "2022-11-25T00:00:00", + "exit_price": 92.916, + "exit_reason": "signal", + "exit_time": "2022-12-01T00:00:00", + "pnl": -62.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.256, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.359, + "exit_reason": "signal", + "exit_time": "2022-12-07T00:00:00", + "pnl": 10.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.218, + "entry_time": "2022-12-09T00:00:00", + "exit_price": 93.916, + "exit_reason": "signal", + "exit_time": "2022-12-12T00:00:00", + "pnl": 69.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.424, + "entry_time": "2022-12-15T00:00:00", + "exit_price": 92.996, + "exit_reason": "signal", + "exit_time": "2022-12-16T00:00:00", + "pnl": -42.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.738, + "entry_time": "2022-12-21T00:00:00", + "exit_price": 91.786, + "exit_reason": "signal", + "exit_time": "2022-12-22T00:00:00", + "pnl": 104.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.399, + "entry_time": "2022-12-27T00:00:00", + "exit_price": 92.116, + "exit_reason": "signal", + "exit_time": "2022-12-28T00:00:00", + "pnl": -28.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.771, + "entry_time": "2022-12-30T00:00:00", + "exit_price": 92.978, + "exit_reason": "signal", + "exit_time": "2023-01-03T00:00:00", + "pnl": 20.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.823, + "entry_time": "2023-01-05T00:00:00", + "exit_price": 92.889, + "exit_reason": "signal", + "exit_time": "2023-01-06T00:00:00", + "pnl": 6.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.776, + "entry_time": "2023-01-11T00:00:00", + "exit_price": 92.849, + "exit_reason": "signal", + "exit_time": "2023-01-12T00:00:00", + "pnl": 7.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.165, + "entry_time": "2023-01-17T00:00:00", + "exit_price": 93.645, + "exit_reason": "signal", + "exit_time": "2023-01-18T00:00:00", + "pnl": 48.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.349, + "entry_time": "2023-01-20T00:00:00", + "exit_price": 93.529, + "exit_reason": "signal", + "exit_time": "2023-01-23T00:00:00", + "pnl": 118.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.145, + "entry_time": "2023-01-26T00:00:00", + "exit_price": 93.092, + "exit_reason": "signal", + "exit_time": "2023-01-27T00:00:00", + "pnl": -105.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.034, + "entry_time": "2023-02-01T00:00:00", + "exit_price": 92.672, + "exit_reason": "signal", + "exit_time": "2023-02-02T00:00:00", + "pnl": -136.20000000000255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.253, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.168, + "exit_reason": "signal", + "exit_time": "2023-02-08T00:00:00", + "pnl": -8.499999999998181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13, + "entry_time": "2023-02-10T00:00:00", + "exit_price": 94.092, + "exit_reason": "signal", + "exit_time": "2023-02-13T00:00:00", + "pnl": 96.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.536, + "entry_time": "2023-02-16T00:00:00", + "exit_price": 94.216, + "exit_reason": "signal", + "exit_time": "2023-02-17T00:00:00", + "pnl": -32.00000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.185, + "entry_time": "2023-02-22T00:00:00", + "exit_price": 93.989, + "exit_reason": "signal", + "exit_time": "2023-02-23T00:00:00", + "pnl": -19.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.454, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.437, + "exit_reason": "signal", + "exit_time": "2023-03-01T00:00:00", + "pnl": -1.7000000000007276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.958, + "entry_time": "2023-03-03T00:00:00", + "exit_price": 93.665, + "exit_reason": "signal", + "exit_time": "2023-03-06T00:00:00", + "pnl": -29.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35, + "entry_time": "2023-03-09T00:00:00", + "exit_price": 93.062, + "exit_reason": "signal", + "exit_time": "2023-03-10T00:00:00", + "pnl": -28.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.884, + "entry_time": "2023-03-15T00:00:00", + "exit_price": 94.082, + "exit_reason": "signal", + "exit_time": "2023-03-16T00:00:00", + "pnl": 19.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.295, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.05, + "exit_reason": "signal", + "exit_time": "2023-03-22T00:00:00", + "pnl": -24.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.845, + "entry_time": "2023-03-24T00:00:00", + "exit_price": 93.328, + "exit_reason": "signal", + "exit_time": "2023-03-27T00:00:00", + "pnl": 148.3000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.949, + "entry_time": "2023-03-30T00:00:00", + "exit_price": 93.548, + "exit_reason": "signal", + "exit_time": "2023-03-31T00:00:00", + "pnl": 59.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.731, + "entry_time": "2023-04-05T00:00:00", + "exit_price": 92.13, + "exit_reason": "signal", + "exit_time": "2023-04-06T00:00:00", + "pnl": -60.099999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.325, + "entry_time": "2023-04-11T00:00:00", + "exit_price": 92.404, + "exit_reason": "signal", + "exit_time": "2023-04-12T00:00:00", + "pnl": -92.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56, + "entry_time": "2023-04-14T00:00:00", + "exit_price": 92.829, + "exit_reason": "signal", + "exit_time": "2023-04-17T00:00:00", + "pnl": 26.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.799, + "entry_time": "2023-04-20T00:00:00", + "exit_price": 92.951, + "exit_reason": "signal", + "exit_time": "2023-04-21T00:00:00", + "pnl": 15.19999999999709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.359, + "entry_time": "2023-04-26T00:00:00", + "exit_price": 92.905, + "exit_reason": "signal", + "exit_time": "2023-04-27T00:00:00", + "pnl": -45.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.681, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 92.829, + "exit_reason": "signal", + "exit_time": "2023-05-03T00:00:00", + "pnl": 14.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.067, + "entry_time": "2023-05-05T00:00:00", + "exit_price": 93.195, + "exit_reason": "signal", + "exit_time": "2023-05-08T00:00:00", + "pnl": 12.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.877, + "entry_time": "2023-05-11T00:00:00", + "exit_price": 93.476, + "exit_reason": "signal", + "exit_time": "2023-05-12T00:00:00", + "pnl": 159.90000000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.775, + "entry_time": "2023-05-17T00:00:00", + "exit_price": 93.218, + "exit_reason": "signal", + "exit_time": "2023-05-18T00:00:00", + "pnl": 44.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.969, + "exit_reason": "signal", + "exit_time": "2023-05-24T00:00:00", + "pnl": 8.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.333, + "entry_time": "2023-05-26T00:00:00", + "exit_price": 94.059, + "exit_reason": "signal", + "exit_time": "2023-05-30T00:00:00", + "pnl": -27.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.762, + "entry_time": "2023-06-01T00:00:00", + "exit_price": 94.25, + "exit_reason": "signal", + "exit_time": "2023-06-02T00:00:00", + "pnl": 148.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.294, + "entry_time": "2023-06-07T00:00:00", + "exit_price": 94.603, + "exit_reason": "signal", + "exit_time": "2023-06-08T00:00:00", + "pnl": 30.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.427, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.339, + "exit_reason": "signal", + "exit_time": "2023-06-14T00:00:00", + "pnl": -8.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37, + "entry_time": "2023-06-16T00:00:00", + "exit_price": 94.163, + "exit_reason": "signal", + "exit_time": "2023-06-20T00:00:00", + "pnl": -20.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.953, + "entry_time": "2023-06-22T00:00:00", + "exit_price": 94.374, + "exit_reason": "signal", + "exit_time": "2023-06-23T00:00:00", + "pnl": -57.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.898, + "entry_time": "2023-06-28T00:00:00", + "exit_price": 94.566, + "exit_reason": "signal", + "exit_time": "2023-06-29T00:00:00", + "pnl": 66.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.277, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.941, + "exit_reason": "signal", + "exit_time": "2023-07-10T00:00:00", + "pnl": 66.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.493, + "entry_time": "2023-07-13T00:00:00", + "exit_price": 94.347, + "exit_reason": "signal", + "exit_time": "2023-07-14T00:00:00", + "pnl": -14.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.237, + "entry_time": "2023-07-19T00:00:00", + "exit_price": 94.334, + "exit_reason": "signal", + "exit_time": "2023-07-20T00:00:00", + "pnl": 109.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.531, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.304, + "exit_reason": "signal", + "exit_time": "2023-07-26T00:00:00", + "pnl": -22.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.055, + "entry_time": "2023-07-28T00:00:00", + "exit_price": 93.971, + "exit_reason": "signal", + "exit_time": "2023-07-31T00:00:00", + "pnl": -8.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.498, + "entry_time": "2023-08-03T00:00:00", + "exit_price": 93.961, + "exit_reason": "signal", + "exit_time": "2023-08-04T00:00:00", + "pnl": 46.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.216, + "entry_time": "2023-08-09T00:00:00", + "exit_price": 93.228, + "exit_reason": "signal", + "exit_time": "2023-08-10T00:00:00", + "pnl": -98.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.656, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 94.398, + "exit_reason": "signal", + "exit_time": "2023-08-16T00:00:00", + "pnl": 174.1999999999989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.089, + "entry_time": "2023-08-18T00:00:00", + "exit_price": 93.399, + "exit_reason": "signal", + "exit_time": "2023-08-21T00:00:00", + "pnl": -69.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.799, + "entry_time": "2023-08-24T00:00:00", + "exit_price": 93.688, + "exit_reason": "signal", + "exit_time": "2023-08-25T00:00:00", + "pnl": 88.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.791, + "entry_time": "2023-08-30T00:00:00", + "exit_price": 92.573, + "exit_reason": "signal", + "exit_time": "2023-08-31T00:00:00", + "pnl": -121.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.041, + "entry_time": "2023-09-05T00:00:00", + "exit_price": 94.468, + "exit_reason": "signal", + "exit_time": "2023-09-06T00:00:00", + "pnl": 142.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.237, + "entry_time": "2023-09-08T00:00:00", + "exit_price": 94.095, + "exit_reason": "signal", + "exit_time": "2023-09-11T00:00:00", + "pnl": -14.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.791, + "entry_time": "2023-09-14T00:00:00", + "exit_price": 94.029, + "exit_reason": "signal", + "exit_time": "2023-09-15T00:00:00", + "pnl": -76.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.173, + "entry_time": "2023-09-20T00:00:00", + "exit_price": 93.583, + "exit_reason": "signal", + "exit_time": "2023-09-21T00:00:00", + "pnl": -59.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.115, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.162, + "exit_reason": "signal", + "exit_time": "2023-09-27T00:00:00", + "pnl": -95.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.496, + "entry_time": "2023-09-29T00:00:00", + "exit_price": 92.842, + "exit_reason": "signal", + "exit_time": "2023-10-02T00:00:00", + "pnl": -65.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.019, + "entry_time": "2023-10-05T00:00:00", + "exit_price": 92.773, + "exit_reason": "signal", + "exit_time": "2023-10-06T00:00:00", + "pnl": -24.600000000002183, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.345, + "entry_time": "2023-10-11T00:00:00", + "exit_price": 92.322, + "exit_reason": "signal", + "exit_time": "2023-10-12T00:00:00", + "pnl": -2.2999999999992724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.994, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.586, + "exit_reason": "signal", + "exit_time": "2023-10-18T00:00:00", + "pnl": -40.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.467, + "entry_time": "2023-10-20T00:00:00", + "exit_price": 92.361, + "exit_reason": "signal", + "exit_time": "2023-10-23T00:00:00", + "pnl": 89.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.379, + "entry_time": "2023-10-26T00:00:00", + "exit_price": 91.412, + "exit_reason": "signal", + "exit_time": "2023-10-27T00:00:00", + "pnl": -96.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43, + "entry_time": "2023-11-01T00:00:00", + "exit_price": 91.133, + "exit_reason": "signal", + "exit_time": "2023-11-02T00:00:00", + "pnl": -29.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.967, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.602, + "exit_reason": "signal", + "exit_time": "2023-11-08T00:00:00", + "pnl": 63.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.416, + "entry_time": "2023-11-10T00:00:00", + "exit_price": 92.325, + "exit_reason": "signal", + "exit_time": "2023-11-13T00:00:00", + "pnl": -9.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.945, + "entry_time": "2023-11-16T00:00:00", + "exit_price": 92.019, + "exit_reason": "signal", + "exit_time": "2023-11-17T00:00:00", + "pnl": -92.59999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.744, + "entry_time": "2023-11-22T00:00:00", + "exit_price": 93.688, + "exit_reason": "signal", + "exit_time": "2023-11-24T00:00:00", + "pnl": 94.40000000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.139, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 92.476, + "exit_reason": "signal", + "exit_time": "2023-11-29T00:00:00", + "pnl": -166.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76, + "entry_time": "2023-12-01T00:00:00", + "exit_price": 93.448, + "exit_reason": "signal", + "exit_time": "2023-12-04T00:00:00", + "pnl": 68.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.583, + "entry_time": "2023-12-07T00:00:00", + "exit_price": 94.144, + "exit_reason": "signal", + "exit_time": "2023-12-08T00:00:00", + "pnl": 56.10000000000218, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.056, + "entry_time": "2023-12-13T00:00:00", + "exit_price": 93.356, + "exit_reason": "signal", + "exit_time": "2023-12-14T00:00:00", + "pnl": 129.99999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.194, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 92.511, + "exit_reason": "signal", + "exit_time": "2023-12-20T00:00:00", + "pnl": 31.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.914, + "entry_time": "2023-12-22T00:00:00", + "exit_price": 92.894, + "exit_reason": "signal", + "exit_time": "2023-12-26T00:00:00", + "pnl": -101.99999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.128, + "entry_time": "2023-12-28T00:00:00", + "exit_price": 93.66, + "exit_reason": "signal", + "exit_time": "2023-12-29T00:00:00", + "pnl": 53.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.892, + "entry_time": "2024-01-03T00:00:00", + "exit_price": 94.589, + "exit_reason": "signal", + "exit_time": "2024-01-04T00:00:00", + "pnl": -30.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.077, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.764, + "exit_reason": "signal", + "exit_time": "2024-01-10T00:00:00", + "pnl": -31.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.805, + "entry_time": "2024-01-12T00:00:00", + "exit_price": 94.409, + "exit_reason": "signal", + "exit_time": "2024-01-16T00:00:00", + "pnl": -39.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.092, + "entry_time": "2024-01-18T00:00:00", + "exit_price": 94.92, + "exit_reason": "signal", + "exit_time": "2024-01-19T00:00:00", + "pnl": -17.200000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.886, + "entry_time": "2024-01-24T00:00:00", + "exit_price": 95.417, + "exit_reason": "signal", + "exit_time": "2024-01-25T00:00:00", + "pnl": 53.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.117, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.586, + "exit_reason": "signal", + "exit_time": "2024-01-31T00:00:00", + "pnl": 46.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.519, + "entry_time": "2024-02-02T00:00:00", + "exit_price": 95.646, + "exit_reason": "signal", + "exit_time": "2024-02-05T00:00:00", + "pnl": 12.699999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.974, + "entry_time": "2024-02-08T00:00:00", + "exit_price": 96.257, + "exit_reason": "signal", + "exit_time": "2024-02-09T00:00:00", + "pnl": 128.3000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.384, + "entry_time": "2024-02-14T00:00:00", + "exit_price": 94.768, + "exit_reason": "signal", + "exit_time": "2024-02-15T00:00:00", + "pnl": 38.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.926, + "entry_time": "2024-02-20T00:00:00", + "exit_price": 95.284, + "exit_reason": "signal", + "exit_time": "2024-02-21T00:00:00", + "pnl": 35.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.645, + "entry_time": "2024-02-23T00:00:00", + "exit_price": 94.632, + "exit_reason": "signal", + "exit_time": "2024-02-26T00:00:00", + "pnl": -1.2999999999992724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.994, + "entry_time": "2024-02-29T00:00:00", + "exit_price": 93.516, + "exit_reason": "signal", + "exit_time": "2024-03-01T00:00:00", + "pnl": 52.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.208, + "entry_time": "2024-03-06T00:00:00", + "exit_price": 93.035, + "exit_reason": "signal", + "exit_time": "2024-03-07T00:00:00", + "pnl": -17.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.579, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.424, + "exit_reason": "signal", + "exit_time": "2024-03-13T00:00:00", + "pnl": -15.499999999998181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.322, + "entry_time": "2024-03-15T00:00:00", + "exit_price": 93.745, + "exit_reason": "signal", + "exit_time": "2024-03-18T00:00:00", + "pnl": 42.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.567, + "entry_time": "2024-03-21T00:00:00", + "exit_price": 90.994, + "exit_reason": "signal", + "exit_time": "2024-03-22T00:00:00", + "pnl": -157.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.365, + "entry_time": "2024-03-27T00:00:00", + "exit_price": 92.886, + "exit_reason": "signal", + "exit_time": "2024-03-28T00:00:00", + "pnl": 52.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.875, + "entry_time": "2024-04-02T00:00:00", + "exit_price": 92.605, + "exit_reason": "signal", + "exit_time": "2024-04-03T00:00:00", + "pnl": -27.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.203, + "entry_time": "2024-04-05T00:00:00", + "exit_price": 92.389, + "exit_reason": "signal", + "exit_time": "2024-04-08T00:00:00", + "pnl": 18.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.968, + "entry_time": "2024-04-11T00:00:00", + "exit_price": 91.888, + "exit_reason": "signal", + "exit_time": "2024-04-12T00:00:00", + "pnl": -8.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.872, + "entry_time": "2024-04-17T00:00:00", + "exit_price": 92.005, + "exit_reason": "signal", + "exit_time": "2024-04-18T00:00:00", + "pnl": -86.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.847, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 91.521, + "exit_reason": "signal", + "exit_time": "2024-04-24T00:00:00", + "pnl": -132.59999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.615, + "entry_time": "2024-04-26T00:00:00", + "exit_price": 92.84, + "exit_reason": "signal", + "exit_time": "2024-04-29T00:00:00", + "pnl": 22.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.018, + "entry_time": "2024-05-02T00:00:00", + "exit_price": 93.195, + "exit_reason": "signal", + "exit_time": "2024-05-03T00:00:00", + "pnl": 117.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.761, + "entry_time": "2024-05-08T00:00:00", + "exit_price": 93.992, + "exit_reason": "signal", + "exit_time": "2024-05-09T00:00:00", + "pnl": 23.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.186, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.292, + "exit_reason": "signal", + "exit_time": "2024-05-15T00:00:00", + "pnl": 10.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.053, + "entry_time": "2024-05-17T00:00:00", + "exit_price": 92.898, + "exit_reason": "signal", + "exit_time": "2024-05-20T00:00:00", + "pnl": -15.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.003, + "entry_time": "2024-05-23T00:00:00", + "exit_price": 93.803, + "exit_reason": "signal", + "exit_time": "2024-05-24T00:00:00", + "pnl": 80.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.531, + "entry_time": "2024-05-29T00:00:00", + "exit_price": 93.551, + "exit_reason": "signal", + "exit_time": "2024-05-30T00:00:00", + "pnl": 2.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.921, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.378, + "exit_reason": "signal", + "exit_time": "2024-06-05T00:00:00", + "pnl": -54.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.738, + "entry_time": "2024-06-07T00:00:00", + "exit_price": 94.058, + "exit_reason": "signal", + "exit_time": "2024-06-10T00:00:00", + "pnl": 32.00000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.716, + "entry_time": "2024-06-13T00:00:00", + "exit_price": 92.354, + "exit_reason": "signal", + "exit_time": "2024-06-14T00:00:00", + "pnl": -36.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.204, + "entry_time": "2024-06-20T00:00:00", + "exit_price": 93.86, + "exit_reason": "signal", + "exit_time": "2024-06-26T00:00:00", + "pnl": -34.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.769, + "entry_time": "2024-06-28T00:00:00", + "exit_price": 94.267, + "exit_reason": "signal", + "exit_time": "2024-07-01T00:00:00", + "pnl": 149.79999999999745, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.501, + "entry_time": "2024-07-05T00:00:00", + "exit_price": 92.972, + "exit_reason": "signal", + "exit_time": "2024-07-11T00:00:00", + "pnl": -52.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.501, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.553, + "exit_reason": "signal", + "exit_time": "2024-07-17T00:00:00", + "pnl": 5.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.928, + "entry_time": "2024-07-19T00:00:00", + "exit_price": 92.018, + "exit_reason": "signal", + "exit_time": "2024-07-22T00:00:00", + "pnl": 9.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.988, + "entry_time": "2024-07-25T00:00:00", + "exit_price": 92.135, + "exit_reason": "signal", + "exit_time": "2024-07-26T00:00:00", + "pnl": 14.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.856, + "entry_time": "2024-07-31T00:00:00", + "exit_price": 92.251, + "exit_reason": "signal", + "exit_time": "2024-08-01T00:00:00", + "pnl": 39.50000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.903, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.614, + "exit_reason": "signal", + "exit_time": "2024-08-07T00:00:00", + "pnl": -28.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.266, + "entry_time": "2024-08-09T00:00:00", + "exit_price": 93.255, + "exit_reason": "signal", + "exit_time": "2024-08-12T00:00:00", + "pnl": 98.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.888, + "entry_time": "2024-08-15T00:00:00", + "exit_price": 92.534, + "exit_reason": "signal", + "exit_time": "2024-08-16T00:00:00", + "pnl": -35.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.352, + "entry_time": "2024-08-21T00:00:00", + "exit_price": 93.822, + "exit_reason": "signal", + "exit_time": "2024-08-22T00:00:00", + "pnl": 47.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.013, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.143, + "exit_reason": "signal", + "exit_time": "2024-08-28T00:00:00", + "pnl": 112.99999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.316, + "entry_time": "2024-08-30T00:00:00", + "exit_price": 92.433, + "exit_reason": "signal", + "exit_time": "2024-09-03T00:00:00", + "pnl": -188.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.742, + "entry_time": "2024-09-05T00:00:00", + "exit_price": 93.047, + "exit_reason": "signal", + "exit_time": "2024-09-06T00:00:00", + "pnl": 30.49999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.668, + "entry_time": "2024-09-11T00:00:00", + "exit_price": 91.661, + "exit_reason": "signal", + "exit_time": "2024-09-12T00:00:00", + "pnl": -100.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.179, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.58, + "exit_reason": "signal", + "exit_time": "2024-09-18T00:00:00", + "pnl": 40.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.285, + "entry_time": "2024-09-20T00:00:00", + "exit_price": 90.104, + "exit_reason": "signal", + "exit_time": "2024-09-23T00:00:00", + "pnl": -18.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.052, + "entry_time": "2024-09-26T00:00:00", + "exit_price": 91.204, + "exit_reason": "signal", + "exit_time": "2024-09-27T00:00:00", + "pnl": 15.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.551, + "entry_time": "2024-10-02T00:00:00", + "exit_price": 90.177, + "exit_reason": "signal", + "exit_time": "2024-10-03T00:00:00", + "pnl": -137.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 91.072, + "exit_reason": "signal", + "exit_time": "2024-10-09T00:00:00", + "pnl": 24.200000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.139, + "entry_time": "2024-10-11T00:00:00", + "exit_price": 90.93, + "exit_reason": "signal", + "exit_time": "2024-10-14T00:00:00", + "pnl": -20.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.494, + "entry_time": "2024-10-17T00:00:00", + "exit_price": 89.863, + "exit_reason": "signal", + "exit_time": "2024-10-18T00:00:00", + "pnl": -63.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.811, + "entry_time": "2024-10-23T00:00:00", + "exit_price": 89.547, + "exit_reason": "signal", + "exit_time": "2024-10-24T00:00:00", + "pnl": -26.400000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.856, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.886, + "exit_reason": "signal", + "exit_time": "2024-10-30T00:00:00", + "pnl": 3.000000000001819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.52, + "entry_time": "2024-11-01T00:00:00", + "exit_price": 89.584, + "exit_reason": "signal", + "exit_time": "2024-11-04T00:00:00", + "pnl": 106.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.328, + "entry_time": "2024-11-07T00:00:00", + "exit_price": 89.065, + "exit_reason": "signal", + "exit_time": "2024-11-08T00:00:00", + "pnl": -26.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.21, + "entry_time": "2024-11-13T00:00:00", + "exit_price": 88.452, + "exit_reason": "signal", + "exit_time": "2024-11-14T00:00:00", + "pnl": -75.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.859, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.672, + "exit_reason": "signal", + "exit_time": "2024-11-20T00:00:00", + "pnl": 81.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.369, + "entry_time": "2024-11-22T00:00:00", + "exit_price": 89.07, + "exit_reason": "signal", + "exit_time": "2024-11-25T00:00:00", + "pnl": -29.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.844, + "entry_time": "2024-11-29T00:00:00", + "exit_price": 89.039, + "exit_reason": "signal", + "exit_time": "2024-12-05T00:00:00", + "pnl": 19.5, + "size": 100.0 + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.119, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 100.032, + "exit_time": "2020-01-06T21:00:00+00:00", + "pnl": -108.70000000000033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.672, + "entry_time": "2020-01-09T21:00:00+00:00", + "exit_price": 99.86500000000001, + "exit_time": "2020-01-10T21:00:00+00:00", + "pnl": 19.300000000001205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.745, + "entry_time": "2020-01-15T21:00:00+00:00", + "exit_price": 99.432, + "exit_time": "2020-01-16T21:00:00+00:00", + "pnl": -31.30000000000024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.592, + "entry_time": "2020-01-21T21:00:00+00:00", + "exit_price": 99.21300000000001, + "exit_time": "2020-01-22T21:00:00+00:00", + "pnl": -37.89999999999907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.933, + "entry_time": "2020-01-24T21:00:00+00:00", + "exit_price": 100.129, + "exit_time": "2020-01-27T21:00:00+00:00", + "pnl": 19.599999999999795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21000000000001, + "entry_time": "2020-01-30T21:00:00+00:00", + "exit_price": 99.284, + "exit_time": "2020-01-31T21:00:00+00:00", + "pnl": 7.399999999999807, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.414, + "entry_time": "2020-02-05T21:00:00+00:00", + "exit_price": 99.742, + "exit_time": "2020-02-06T21:00:00+00:00", + "pnl": 132.8000000000003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.153, + "entry_time": "2020-02-10T21:00:00+00:00", + "exit_price": 98.958, + "exit_time": "2020-02-12T21:00:00+00:00", + "pnl": -19.50000000000074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.398, + "entry_time": "2020-02-14T21:00:00+00:00", + "exit_price": 98.714, + "exit_time": "2020-02-18T21:00:00+00:00", + "pnl": -68.39999999999975, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.687, + "entry_time": "2020-02-20T21:00:00+00:00", + "exit_price": 99.197, + "exit_time": "2020-02-21T21:00:00+00:00", + "pnl": 51.00000000000051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.753, + "entry_time": "2020-02-26T21:00:00+00:00", + "exit_price": 98.67, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -8.29999999999984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.944, + "entry_time": "2020-03-02T21:00:00+00:00", + "exit_price": 99.276, + "exit_time": "2020-03-04T21:00:00+00:00", + "pnl": -66.80000000000064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.967, + "entry_time": "2020-03-06T21:00:00+00:00", + "exit_price": 99.019, + "exit_time": "2020-03-09T20:00:00+00:00", + "pnl": -94.79999999999933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.614, + "entry_time": "2020-03-12T20:00:00+00:00", + "exit_price": 99.444, + "exit_time": "2020-03-13T20:00:00+00:00", + "pnl": -17.00000000000017, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.48700000000001, + "entry_time": "2020-03-18T20:00:00+00:00", + "exit_price": 98.539, + "exit_time": "2020-03-19T20:00:00+00:00", + "pnl": -94.80000000000075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.361, + "entry_time": "2020-03-23T20:00:00+00:00", + "exit_price": 99.394, + "exit_time": "2020-03-25T20:00:00+00:00", + "pnl": 103.30000000000013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.38, + "entry_time": "2020-03-27T20:00:00+00:00", + "exit_price": 99.783, + "exit_time": "2020-03-30T20:00:00+00:00", + "pnl": 40.30000000000058, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.044, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 100.006, + "exit_time": "2020-04-03T20:00:00+00:00", + "pnl": -3.7999999999996703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.07300000000001, + "entry_time": "2020-04-08T20:00:00+00:00", + "exit_price": 99.85000000000001, + "exit_time": "2020-04-09T20:00:00+00:00", + "pnl": -122.2999999999999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.163, + "entry_time": "2020-04-14T20:00:00+00:00", + "exit_price": 99.598, + "exit_time": "2020-04-15T20:00:00+00:00", + "pnl": -56.49999999999977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.024, + "entry_time": "2020-04-17T20:00:00+00:00", + "exit_price": 100.102, + "exit_time": "2020-04-20T20:00:00+00:00", + "pnl": 7.800000000000296, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.47500000000001, + "entry_time": "2020-04-23T20:00:00+00:00", + "exit_price": 100.785, + "exit_time": "2020-04-24T20:00:00+00:00", + "pnl": 30.999999999998806, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.284, + "entry_time": "2020-04-29T20:00:00+00:00", + "exit_price": 100.408, + "exit_time": "2020-04-30T20:00:00+00:00", + "pnl": 12.399999999999523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.529, + "entry_time": "2020-05-04T20:00:00+00:00", + "exit_price": 100.468, + "exit_time": "2020-05-06T20:00:00+00:00", + "pnl": -6.099999999999284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.654, + "entry_time": "2020-05-08T20:00:00+00:00", + "exit_price": 100.845, + "exit_time": "2020-05-11T20:00:00+00:00", + "pnl": 19.10000000000025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.833, + "entry_time": "2020-05-14T20:00:00+00:00", + "exit_price": 100.141, + "exit_time": "2020-05-15T20:00:00+00:00", + "pnl": -69.1999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.172, + "entry_time": "2020-05-20T20:00:00+00:00", + "exit_price": 100.89, + "exit_time": "2020-05-21T20:00:00+00:00", + "pnl": 171.80000000000035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86, + "entry_time": "2020-05-26T20:00:00+00:00", + "exit_price": 99.429, + "exit_time": "2020-05-27T20:00:00+00:00", + "pnl": 56.90000000000026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.671, + "entry_time": "2020-05-29T20:00:00+00:00", + "exit_price": 97.998, + "exit_time": "2020-06-01T20:00:00+00:00", + "pnl": -67.30000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68900000000001, + "entry_time": "2020-06-04T20:00:00+00:00", + "exit_price": 98.907, + "exit_time": "2020-06-05T20:00:00+00:00", + "pnl": 21.79999999999893, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.789, + "entry_time": "2020-06-10T20:00:00+00:00", + "exit_price": 99.443, + "exit_time": "2020-06-11T20:00:00+00:00", + "pnl": 65.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31, + "entry_time": "2020-06-15T20:00:00+00:00", + "exit_price": 98.913, + "exit_time": "2020-06-17T20:00:00+00:00", + "pnl": -39.70000000000056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.35900000000001, + "entry_time": "2020-06-19T20:00:00+00:00", + "exit_price": 99.246, + "exit_time": "2020-06-22T20:00:00+00:00", + "pnl": -11.300000000001376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86, + "entry_time": "2020-06-25T20:00:00+00:00", + "exit_price": 98.94200000000001, + "exit_time": "2020-06-26T20:00:00+00:00", + "pnl": 8.200000000000784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.476, + "entry_time": "2020-07-01T20:00:00+00:00", + "exit_price": 98.22200000000001, + "exit_time": "2020-07-02T20:00:00+00:00", + "pnl": -25.399999999999068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.275, + "entry_time": "2020-07-07T20:00:00+00:00", + "exit_price": 99.229, + "exit_time": "2020-07-08T20:00:00+00:00", + "pnl": -4.600000000000648, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84700000000001, + "entry_time": "2020-07-10T20:00:00+00:00", + "exit_price": 98.98, + "exit_time": "2020-07-13T20:00:00+00:00", + "pnl": 13.299999999999557, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.523, + "entry_time": "2020-07-16T20:00:00+00:00", + "exit_price": 98.848, + "exit_time": "2020-07-17T20:00:00+00:00", + "pnl": -67.49999999999972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07900000000001, + "entry_time": "2020-07-22T20:00:00+00:00", + "exit_price": 98.46300000000001, + "exit_time": "2020-07-23T20:00:00+00:00", + "pnl": 38.400000000000034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.336, + "entry_time": "2020-07-27T20:00:00+00:00", + "exit_price": 97.69500000000001, + "exit_time": "2020-07-29T20:00:00+00:00", + "pnl": -164.0999999999991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.931, + "entry_time": "2020-07-31T20:00:00+00:00", + "exit_price": 98.053, + "exit_time": "2020-08-03T20:00:00+00:00", + "pnl": 12.199999999999989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.956, + "entry_time": "2020-08-06T20:00:00+00:00", + "exit_price": 97.857, + "exit_time": "2020-08-07T20:00:00+00:00", + "pnl": -109.90000000000038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.834, + "entry_time": "2020-08-12T20:00:00+00:00", + "exit_price": 97.257, + "exit_time": "2020-08-13T20:00:00+00:00", + "pnl": -57.69999999999982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16, + "entry_time": "2020-08-17T20:00:00+00:00", + "exit_price": 98.416, + "exit_time": "2020-08-19T20:00:00+00:00", + "pnl": 25.600000000000023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.923, + "entry_time": "2020-08-21T20:00:00+00:00", + "exit_price": 97.974, + "exit_time": "2020-08-24T20:00:00+00:00", + "pnl": 5.100000000000193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.214, + "entry_time": "2020-08-27T20:00:00+00:00", + "exit_price": 98.083, + "exit_time": "2020-08-28T20:00:00+00:00", + "pnl": -113.10000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.001, + "entry_time": "2020-09-02T20:00:00+00:00", + "exit_price": 98.653, + "exit_time": "2020-09-03T20:00:00+00:00", + "pnl": 65.2000000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.474, + "entry_time": "2020-09-08T20:00:00+00:00", + "exit_price": 98.313, + "exit_time": "2020-09-09T20:00:00+00:00", + "pnl": -116.10000000000014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.732, + "entry_time": "2020-09-11T20:00:00+00:00", + "exit_price": 98.566, + "exit_time": "2020-09-14T20:00:00+00:00", + "pnl": 83.40000000000032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.9, + "entry_time": "2020-09-17T20:00:00+00:00", + "exit_price": 98.388, + "exit_time": "2020-09-18T20:00:00+00:00", + "pnl": 148.79999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.12, + "entry_time": "2020-09-23T20:00:00+00:00", + "exit_price": 99.257, + "exit_time": "2020-09-24T20:00:00+00:00", + "pnl": 13.700000000000045, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.71300000000001, + "entry_time": "2020-09-28T20:00:00+00:00", + "exit_price": 99.383, + "exit_time": "2020-09-30T20:00:00+00:00", + "pnl": 66.99999999999875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.584, + "entry_time": "2020-10-02T20:00:00+00:00", + "exit_price": 99.318, + "exit_time": "2020-10-05T20:00:00+00:00", + "pnl": -26.600000000000534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11500000000001, + "entry_time": "2020-10-08T20:00:00+00:00", + "exit_price": 97.468, + "exit_time": "2020-10-09T20:00:00+00:00", + "pnl": -64.70000000000056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.61500000000001, + "entry_time": "2020-10-14T20:00:00+00:00", + "exit_price": 98.16, + "exit_time": "2020-10-15T20:00:00+00:00", + "pnl": 54.49999999999875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.36200000000001, + "entry_time": "2020-10-19T20:00:00+00:00", + "exit_price": 98.412, + "exit_time": "2020-10-21T20:00:00+00:00", + "pnl": 104.99999999999972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.782, + "entry_time": "2020-10-23T20:00:00+00:00", + "exit_price": 98.91, + "exit_time": "2020-10-26T20:00:00+00:00", + "pnl": 12.800000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.73, + "entry_time": "2020-10-29T20:00:00+00:00", + "exit_price": 98.608, + "exit_time": "2020-10-30T20:00:00+00:00", + "pnl": -12.199999999999989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21600000000001, + "entry_time": "2020-11-04T21:00:00+00:00", + "exit_price": 98.491, + "exit_time": "2020-11-05T21:00:00+00:00", + "pnl": -72.50000000000085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.95, + "entry_time": "2020-11-09T21:00:00+00:00", + "exit_price": 97.827, + "exit_time": "2020-11-11T21:00:00+00:00", + "pnl": -12.300000000000466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.914, + "entry_time": "2020-11-13T21:00:00+00:00", + "exit_price": 98.93, + "exit_time": "2020-11-16T21:00:00+00:00", + "pnl": 1.6000000000005343, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47500000000001, + "entry_time": "2020-11-19T21:00:00+00:00", + "exit_price": 98.101, + "exit_time": "2020-11-20T21:00:00+00:00", + "pnl": -37.400000000000944, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.485, + "entry_time": "2020-11-25T21:00:00+00:00", + "exit_price": 98.641, + "exit_time": "2020-11-27T18:00:00+00:00", + "pnl": 15.600000000000591, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.76, + "entry_time": "2020-11-30T21:00:00+00:00", + "exit_price": 97.799, + "exit_time": "2020-12-02T21:00:00+00:00", + "pnl": 3.900000000000148, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.985, + "entry_time": "2020-12-04T21:00:00+00:00", + "exit_price": 98.34, + "exit_time": "2020-12-07T21:00:00+00:00", + "pnl": 35.5000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.428, + "entry_time": "2020-12-10T21:00:00+00:00", + "exit_price": 96.632, + "exit_time": "2020-12-11T21:00:00+00:00", + "pnl": -79.59999999999923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.73100000000001, + "entry_time": "2020-12-16T21:00:00+00:00", + "exit_price": 97.619, + "exit_time": "2020-12-17T21:00:00+00:00", + "pnl": 88.7999999999991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.386, + "entry_time": "2020-12-21T21:00:00+00:00", + "exit_price": 96.994, + "exit_time": "2020-12-23T21:00:00+00:00", + "pnl": -139.1999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.124, + "entry_time": "2020-12-28T21:00:00+00:00", + "exit_price": 97.539, + "exit_time": "2020-12-29T21:00:00+00:00", + "pnl": 41.500000000000625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.60300000000001, + "entry_time": "2020-12-31T21:00:00+00:00", + "exit_price": 96.822, + "exit_time": "2021-01-04T21:00:00+00:00", + "pnl": -78.10000000000059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.791, + "entry_time": "2021-01-06T21:00:00+00:00", + "exit_price": 97.11500000000001, + "exit_time": "2021-01-07T21:00:00+00:00", + "pnl": 32.40000000000123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.811, + "entry_time": "2021-01-11T21:00:00+00:00", + "exit_price": 96.28, + "exit_time": "2021-01-13T21:00:00+00:00", + "pnl": -53.10000000000059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.533, + "entry_time": "2021-01-15T21:00:00+00:00", + "exit_price": 96.07900000000001, + "exit_time": "2021-01-19T21:00:00+00:00", + "pnl": -45.39999999999935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.796, + "entry_time": "2021-01-21T21:00:00+00:00", + "exit_price": 95.248, + "exit_time": "2021-01-22T21:00:00+00:00", + "pnl": -54.80000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.556, + "entry_time": "2021-01-27T21:00:00+00:00", + "exit_price": 96.557, + "exit_time": "2021-01-28T21:00:00+00:00", + "pnl": 100.10000000000048, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.251, + "entry_time": "2021-02-01T21:00:00+00:00", + "exit_price": 95.837, + "exit_time": "2021-02-03T21:00:00+00:00", + "pnl": -41.40000000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.265, + "entry_time": "2021-02-05T21:00:00+00:00", + "exit_price": 95.261, + "exit_time": "2021-02-08T21:00:00+00:00", + "pnl": -0.40000000000048885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94800000000001, + "entry_time": "2021-02-11T21:00:00+00:00", + "exit_price": 95.051, + "exit_time": "2021-02-12T21:00:00+00:00", + "pnl": 10.299999999999443, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.97, + "entry_time": "2021-02-17T21:00:00+00:00", + "exit_price": 96.348, + "exit_time": "2021-02-18T21:00:00+00:00", + "pnl": -62.19999999999999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.318, + "entry_time": "2021-02-22T21:00:00+00:00", + "exit_price": 95.625, + "exit_time": "2021-02-24T21:00:00+00:00", + "pnl": -69.29999999999978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.886, + "entry_time": "2021-02-26T21:00:00+00:00", + "exit_price": 95.236, + "exit_time": "2021-03-01T21:00:00+00:00", + "pnl": 35.00000000000085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.403, + "entry_time": "2021-03-04T21:00:00+00:00", + "exit_price": 94.32300000000001, + "exit_time": "2021-03-05T21:00:00+00:00", + "pnl": -7.9999999999998295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.08200000000001, + "entry_time": "2021-03-10T21:00:00+00:00", + "exit_price": 94.58800000000001, + "exit_time": "2021-03-11T21:00:00+00:00", + "pnl": -49.39999999999998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.802, + "entry_time": "2021-03-15T20:00:00+00:00", + "exit_price": 94.783, + "exit_time": "2021-03-17T20:00:00+00:00", + "pnl": -1.9000000000005457, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.661, + "entry_time": "2021-03-19T20:00:00+00:00", + "exit_price": 95.004, + "exit_time": "2021-03-22T20:00:00+00:00", + "pnl": 134.30000000000035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.499, + "entry_time": "2021-03-25T20:00:00+00:00", + "exit_price": 93.976, + "exit_time": "2021-03-26T20:00:00+00:00", + "pnl": -152.2999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.019, + "entry_time": "2021-03-31T20:00:00+00:00", + "exit_price": 94.256, + "exit_time": "2021-04-01T20:00:00+00:00", + "pnl": 23.699999999999477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.471, + "entry_time": "2021-04-06T20:00:00+00:00", + "exit_price": 93.724, + "exit_time": "2021-04-07T20:00:00+00:00", + "pnl": 25.30000000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.199, + "entry_time": "2021-04-09T20:00:00+00:00", + "exit_price": 93.34100000000001, + "exit_time": "2021-04-12T20:00:00+00:00", + "pnl": 14.200000000001012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.729, + "entry_time": "2021-04-15T20:00:00+00:00", + "exit_price": 93.256, + "exit_time": "2021-04-16T20:00:00+00:00", + "pnl": -47.2999999999999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.926, + "entry_time": "2021-04-21T20:00:00+00:00", + "exit_price": 94.143, + "exit_time": "2021-04-22T20:00:00+00:00", + "pnl": 121.69999999999987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.774, + "entry_time": "2021-04-26T20:00:00+00:00", + "exit_price": 93.493, + "exit_time": "2021-04-28T20:00:00+00:00", + "pnl": -28.10000000000059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.685, + "entry_time": "2021-04-30T20:00:00+00:00", + "exit_price": 94.267, + "exit_time": "2021-05-03T20:00:00+00:00", + "pnl": 58.19999999999936, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.415, + "entry_time": "2021-05-06T20:00:00+00:00", + "exit_price": 93.364, + "exit_time": "2021-05-07T20:00:00+00:00", + "pnl": -5.100000000000193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.742, + "entry_time": "2021-05-12T20:00:00+00:00", + "exit_price": 94.554, + "exit_time": "2021-05-13T20:00:00+00:00", + "pnl": 81.19999999999976, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.502, + "entry_time": "2021-05-17T20:00:00+00:00", + "exit_price": 94.556, + "exit_time": "2021-05-19T20:00:00+00:00", + "pnl": 105.4000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.081, + "entry_time": "2021-05-21T20:00:00+00:00", + "exit_price": 92.813, + "exit_time": "2021-05-24T20:00:00+00:00", + "pnl": -26.800000000000068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.953, + "entry_time": "2021-05-27T20:00:00+00:00", + "exit_price": 93.147, + "exit_time": "2021-05-28T20:00:00+00:00", + "pnl": 19.40000000000026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94500000000001, + "entry_time": "2021-06-02T20:00:00+00:00", + "exit_price": 92.896, + "exit_time": "2021-06-03T20:00:00+00:00", + "pnl": -4.900000000000659, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.577, + "entry_time": "2021-06-07T20:00:00+00:00", + "exit_price": 91.284, + "exit_time": "2021-06-09T20:00:00+00:00", + "pnl": -129.29999999999922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13, + "entry_time": "2021-06-11T20:00:00+00:00", + "exit_price": 92.333, + "exit_time": "2021-06-14T20:00:00+00:00", + "pnl": -79.6999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.95, + "entry_time": "2021-06-17T20:00:00+00:00", + "exit_price": 92.166, + "exit_time": "2021-06-18T20:00:00+00:00", + "pnl": 21.599999999999397, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.256, + "entry_time": "2021-06-23T20:00:00+00:00", + "exit_price": 92.456, + "exit_time": "2021-06-24T20:00:00+00:00", + "pnl": 20.000000000000284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73100000000001, + "entry_time": "2021-06-28T20:00:00+00:00", + "exit_price": 91.788, + "exit_time": "2021-06-30T20:00:00+00:00", + "pnl": 5.699999999998795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.941, + "entry_time": "2021-07-02T20:00:00+00:00", + "exit_price": 90.653, + "exit_time": "2021-07-06T20:00:00+00:00", + "pnl": -28.79999999999967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.824, + "entry_time": "2021-07-08T20:00:00+00:00", + "exit_price": 91.78, + "exit_time": "2021-07-09T20:00:00+00:00", + "pnl": -4.399999999999693, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.098, + "entry_time": "2021-07-14T20:00:00+00:00", + "exit_price": 91.642, + "exit_time": "2021-07-15T20:00:00+00:00", + "pnl": 54.39999999999969, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.333, + "entry_time": "2021-07-19T20:00:00+00:00", + "exit_price": 91.025, + "exit_time": "2021-07-21T20:00:00+00:00", + "pnl": -30.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.238, + "entry_time": "2021-07-23T20:00:00+00:00", + "exit_price": 91.959, + "exit_time": "2021-07-26T20:00:00+00:00", + "pnl": 72.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.122, + "entry_time": "2021-07-29T20:00:00+00:00", + "exit_price": 93.031, + "exit_time": "2021-07-30T20:00:00+00:00", + "pnl": 90.9000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.16, + "entry_time": "2021-08-04T20:00:00+00:00", + "exit_price": 91.643, + "exit_time": "2021-08-05T20:00:00+00:00", + "pnl": -51.69999999999959, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.188, + "entry_time": "2021-08-09T20:00:00+00:00", + "exit_price": 93.342, + "exit_time": "2021-08-11T20:00:00+00:00", + "pnl": 15.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.618, + "entry_time": "2021-08-13T20:00:00+00:00", + "exit_price": 94.259, + "exit_time": "2021-08-16T20:00:00+00:00", + "pnl": 64.10000000000053, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.98, + "entry_time": "2021-08-19T20:00:00+00:00", + "exit_price": 93.988, + "exit_time": "2021-08-20T20:00:00+00:00", + "pnl": 100.79999999999956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.681, + "entry_time": "2021-08-25T20:00:00+00:00", + "exit_price": 92.705, + "exit_time": "2021-08-26T20:00:00+00:00", + "pnl": 2.400000000000091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.361, + "entry_time": "2021-08-30T20:00:00+00:00", + "exit_price": 93.802, + "exit_time": "2021-09-01T20:00:00+00:00", + "pnl": 144.10000000000025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.154, + "entry_time": "2021-09-03T20:00:00+00:00", + "exit_price": 93.729, + "exit_time": "2021-09-07T20:00:00+00:00", + "pnl": 57.500000000000284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.158, + "entry_time": "2021-09-09T20:00:00+00:00", + "exit_price": 93.741, + "exit_time": "2021-09-10T20:00:00+00:00", + "pnl": -41.70000000000016, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.019, + "entry_time": "2021-09-15T20:00:00+00:00", + "exit_price": 94.422, + "exit_time": "2021-09-16T20:00:00+00:00", + "pnl": -59.70000000000084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.354, + "entry_time": "2021-09-20T20:00:00+00:00", + "exit_price": 94.986, + "exit_time": "2021-09-22T20:00:00+00:00", + "pnl": 63.2000000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87, + "entry_time": "2021-09-24T20:00:00+00:00", + "exit_price": 94.849, + "exit_time": "2021-09-27T20:00:00+00:00", + "pnl": 97.89999999999992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.309, + "entry_time": "2021-09-30T20:00:00+00:00", + "exit_price": 93.994, + "exit_time": "2021-10-01T20:00:00+00:00", + "pnl": -31.499999999999773, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.074, + "entry_time": "2021-10-06T20:00:00+00:00", + "exit_price": 94.048, + "exit_time": "2021-10-07T20:00:00+00:00", + "pnl": -2.599999999999625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.849, + "entry_time": "2021-10-11T20:00:00+00:00", + "exit_price": 94.437, + "exit_time": "2021-10-13T20:00:00+00:00", + "pnl": 58.799999999999386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37, + "entry_time": "2021-10-15T20:00:00+00:00", + "exit_price": 95.093, + "exit_time": "2021-10-18T20:00:00+00:00", + "pnl": 72.2999999999999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.029, + "entry_time": "2021-10-21T20:00:00+00:00", + "exit_price": 94.805, + "exit_time": "2021-10-22T20:00:00+00:00", + "pnl": 77.60000000000105, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.249, + "entry_time": "2021-10-27T20:00:00+00:00", + "exit_price": 93.601, + "exit_time": "2021-10-28T20:00:00+00:00", + "pnl": -64.79999999999961, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.241, + "entry_time": "2021-11-01T20:00:00+00:00", + "exit_price": 94.429, + "exit_time": "2021-11-03T20:00:00+00:00", + "pnl": 118.80000000000024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.416, + "entry_time": "2021-11-05T20:00:00+00:00", + "exit_price": 92.51, + "exit_time": "2021-11-08T21:00:00+00:00", + "pnl": -90.59999999999917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96000000000001, + "entry_time": "2021-11-11T21:00:00+00:00", + "exit_price": 93.531, + "exit_time": "2021-11-12T21:00:00+00:00", + "pnl": 57.099999999999795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.427, + "entry_time": "2021-11-17T21:00:00+00:00", + "exit_price": 92.196, + "exit_time": "2021-11-18T21:00:00+00:00", + "pnl": -23.100000000000875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52, + "entry_time": "2021-11-22T21:00:00+00:00", + "exit_price": 93.982, + "exit_time": "2021-11-24T21:00:00+00:00", + "pnl": 146.20000000000033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82000000000001, + "entry_time": "2021-12-02T21:00:00+00:00", + "exit_price": 91.736, + "exit_time": "2021-12-03T21:00:00+00:00", + "pnl": -8.400000000000318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.70400000000001, + "entry_time": "2021-12-08T21:00:00+00:00", + "exit_price": 92.183, + "exit_time": "2021-12-09T21:00:00+00:00", + "pnl": 47.89999999999992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.131, + "entry_time": "2021-12-13T21:00:00+00:00", + "exit_price": 92.825, + "exit_time": "2021-12-15T21:00:00+00:00", + "pnl": 69.40000000000026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.809, + "entry_time": "2021-12-17T21:00:00+00:00", + "exit_price": 93.226, + "exit_time": "2021-12-20T21:00:00+00:00", + "pnl": -58.29999999999984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06700000000001, + "entry_time": "2021-12-23T21:00:00+00:00", + "exit_price": 92.105, + "exit_time": "2021-12-27T21:00:00+00:00", + "pnl": -96.20000000000033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.026, + "entry_time": "2021-12-29T21:00:00+00:00", + "exit_price": 93.011, + "exit_time": "2021-12-30T21:00:00+00:00", + "pnl": 98.49999999999994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.06700000000001, + "entry_time": "2022-01-03T21:00:00+00:00", + "exit_price": 91.642, + "exit_time": "2022-01-05T21:00:00+00:00", + "pnl": -42.50000000000114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.202, + "entry_time": "2022-01-07T21:00:00+00:00", + "exit_price": 91.813, + "exit_time": "2022-01-10T21:00:00+00:00", + "pnl": -38.89999999999958, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.255, + "entry_time": "2022-01-13T21:00:00+00:00", + "exit_price": 91.97500000000001, + "exit_time": "2022-01-14T21:00:00+00:00", + "pnl": -27.999999999998693, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.763, + "entry_time": "2022-01-19T21:00:00+00:00", + "exit_price": 91.432, + "exit_time": "2022-01-20T21:00:00+00:00", + "pnl": -33.10000000000031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96600000000001, + "entry_time": "2022-01-24T21:00:00+00:00", + "exit_price": 91.852, + "exit_time": "2022-01-26T21:00:00+00:00", + "pnl": -11.400000000000432, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.81400000000001, + "entry_time": "2022-01-28T21:00:00+00:00", + "exit_price": 91.676, + "exit_time": "2022-01-31T21:00:00+00:00", + "pnl": 86.19999999999948, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.985, + "entry_time": "2022-02-03T21:00:00+00:00", + "exit_price": 91.188, + "exit_time": "2022-02-04T21:00:00+00:00", + "pnl": -79.6999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.97, + "entry_time": "2022-02-09T21:00:00+00:00", + "exit_price": 92.17, + "exit_time": "2022-02-10T21:00:00+00:00", + "pnl": 20.000000000000284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.507, + "entry_time": "2022-02-14T21:00:00+00:00", + "exit_price": 91.156, + "exit_time": "2022-02-16T21:00:00+00:00", + "pnl": -35.09999999999991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.661, + "entry_time": "2022-02-18T21:00:00+00:00", + "exit_price": 92.287, + "exit_time": "2022-02-22T21:00:00+00:00", + "pnl": 62.60000000000048, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.068, + "entry_time": "2022-02-24T21:00:00+00:00", + "exit_price": 91.351, + "exit_time": "2022-02-25T21:00:00+00:00", + "pnl": 28.300000000000125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09400000000001, + "entry_time": "2022-03-02T21:00:00+00:00", + "exit_price": 91.421, + "exit_time": "2022-03-03T21:00:00+00:00", + "pnl": -67.30000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.013, + "entry_time": "2022-03-07T21:00:00+00:00", + "exit_price": 91.526, + "exit_time": "2022-03-09T21:00:00+00:00", + "pnl": -48.7000000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.012, + "entry_time": "2022-03-11T21:00:00+00:00", + "exit_price": 90.821, + "exit_time": "2022-03-14T20:00:00+00:00", + "pnl": -19.10000000000025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.925, + "entry_time": "2022-03-17T20:00:00+00:00", + "exit_price": 90.615, + "exit_time": "2022-03-18T20:00:00+00:00", + "pnl": -131.00000000000023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.965, + "entry_time": "2022-03-23T20:00:00+00:00", + "exit_price": 90.7, + "exit_time": "2022-03-24T20:00:00+00:00", + "pnl": -26.500000000000057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.683, + "entry_time": "2022-03-28T20:00:00+00:00", + "exit_price": 91.694, + "exit_time": "2022-03-30T20:00:00+00:00", + "pnl": 101.09999999999957, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87, + "entry_time": "2022-04-01T20:00:00+00:00", + "exit_price": 90.055, + "exit_time": "2022-04-04T20:00:00+00:00", + "pnl": -81.49999999999977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.631, + "entry_time": "2022-04-07T20:00:00+00:00", + "exit_price": 89.96000000000001, + "exit_time": "2022-04-08T20:00:00+00:00", + "pnl": -67.09999999999923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.759, + "entry_time": "2022-04-13T20:00:00+00:00", + "exit_price": 90.97800000000001, + "exit_time": "2022-04-14T20:00:00+00:00", + "pnl": 121.90000000000083, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.009, + "entry_time": "2022-04-19T20:00:00+00:00", + "exit_price": 90.97200000000001, + "exit_time": "2022-04-20T20:00:00+00:00", + "pnl": 96.30000000000081, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.449, + "entry_time": "2022-04-22T20:00:00+00:00", + "exit_price": 89.93900000000001, + "exit_time": "2022-04-25T20:00:00+00:00", + "pnl": -50.99999999999909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.137, + "entry_time": "2022-04-28T20:00:00+00:00", + "exit_price": 90.92, + "exit_time": "2022-04-29T20:00:00+00:00", + "pnl": 78.30000000000013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.235, + "entry_time": "2022-05-04T20:00:00+00:00", + "exit_price": 92.161, + "exit_time": "2022-05-05T20:00:00+00:00", + "pnl": 92.6000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.242, + "entry_time": "2022-05-09T20:00:00+00:00", + "exit_price": 91.392, + "exit_time": "2022-05-11T20:00:00+00:00", + "pnl": 114.99999999999915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.798, + "entry_time": "2022-05-13T20:00:00+00:00", + "exit_price": 91.741, + "exit_time": "2022-05-16T20:00:00+00:00", + "pnl": -5.700000000000216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.129, + "entry_time": "2022-05-19T20:00:00+00:00", + "exit_price": 91.294, + "exit_time": "2022-05-20T20:00:00+00:00", + "pnl": 16.499999999999204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.508, + "entry_time": "2022-05-25T20:00:00+00:00", + "exit_price": 90.206, + "exit_time": "2022-05-26T20:00:00+00:00", + "pnl": -30.19999999999925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.881, + "entry_time": "2022-05-31T20:00:00+00:00", + "exit_price": 90.543, + "exit_time": "2022-06-01T20:00:00+00:00", + "pnl": 66.20000000000061, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.973, + "entry_time": "2022-06-03T20:00:00+00:00", + "exit_price": 90.741, + "exit_time": "2022-06-06T20:00:00+00:00", + "pnl": -23.199999999999932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.848, + "entry_time": "2022-06-09T20:00:00+00:00", + "exit_price": 90.837, + "exit_time": "2022-06-10T20:00:00+00:00", + "pnl": -1.099999999999568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.825, + "entry_time": "2022-06-15T20:00:00+00:00", + "exit_price": 90.17, + "exit_time": "2022-06-16T20:00:00+00:00", + "pnl": -65.50000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.553, + "entry_time": "2022-06-21T20:00:00+00:00", + "exit_price": 90.601, + "exit_time": "2022-06-22T20:00:00+00:00", + "pnl": 4.800000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.687, + "entry_time": "2022-06-24T20:00:00+00:00", + "exit_price": 90.053, + "exit_time": "2022-06-27T20:00:00+00:00", + "pnl": -63.400000000000034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.794, + "entry_time": "2022-06-30T20:00:00+00:00", + "exit_price": 92.411, + "exit_time": "2022-07-01T20:00:00+00:00", + "pnl": 161.70000000000044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.303, + "entry_time": "2022-07-06T20:00:00+00:00", + "exit_price": 90.141, + "exit_time": "2022-07-07T20:00:00+00:00", + "pnl": -116.19999999999919, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.156, + "entry_time": "2022-07-11T20:00:00+00:00", + "exit_price": 90.998, + "exit_time": "2022-07-13T20:00:00+00:00", + "pnl": -15.800000000000125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.512, + "entry_time": "2022-07-15T20:00:00+00:00", + "exit_price": 91.253, + "exit_time": "2022-07-18T20:00:00+00:00", + "pnl": 74.09999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.474, + "entry_time": "2022-07-21T20:00:00+00:00", + "exit_price": 89.988, + "exit_time": "2022-07-22T20:00:00+00:00", + "pnl": -148.60000000000042, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.051, + "entry_time": "2022-07-27T20:00:00+00:00", + "exit_price": 91.31400000000001, + "exit_time": "2022-07-28T20:00:00+00:00", + "pnl": 26.300000000000523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.376, + "entry_time": "2022-08-01T20:00:00+00:00", + "exit_price": 91.542, + "exit_time": "2022-08-03T20:00:00+00:00", + "pnl": 16.59999999999968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.898, + "entry_time": "2022-08-05T20:00:00+00:00", + "exit_price": 92.023, + "exit_time": "2022-08-08T20:00:00+00:00", + "pnl": 12.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.244, + "entry_time": "2022-08-11T20:00:00+00:00", + "exit_price": 92.691, + "exit_time": "2022-08-12T20:00:00+00:00", + "pnl": 44.70000000000027, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.181, + "entry_time": "2022-08-17T20:00:00+00:00", + "exit_price": 92.495, + "exit_time": "2022-08-18T20:00:00+00:00", + "pnl": -68.59999999999928, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.024, + "entry_time": "2022-08-22T20:00:00+00:00", + "exit_price": 93.281, + "exit_time": "2022-08-24T20:00:00+00:00", + "pnl": 25.7000000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.724, + "entry_time": "2022-08-26T20:00:00+00:00", + "exit_price": 93.027, + "exit_time": "2022-08-29T20:00:00+00:00", + "pnl": -69.70000000000027, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.267, + "entry_time": "2022-09-01T20:00:00+00:00", + "exit_price": 93.319, + "exit_time": "2022-09-02T20:00:00+00:00", + "pnl": 5.200000000000671, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.866, + "entry_time": "2022-09-07T20:00:00+00:00", + "exit_price": 93.548, + "exit_time": "2022-09-08T20:00:00+00:00", + "pnl": 68.20000000000022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.821, + "entry_time": "2022-09-12T20:00:00+00:00", + "exit_price": 94.111, + "exit_time": "2022-09-14T20:00:00+00:00", + "pnl": 29.000000000000625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.782, + "entry_time": "2022-09-16T20:00:00+00:00", + "exit_price": 94.266, + "exit_time": "2022-09-19T20:00:00+00:00", + "pnl": -51.59999999999911, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.888, + "entry_time": "2022-09-22T20:00:00+00:00", + "exit_price": 94.905, + "exit_time": "2022-09-23T20:00:00+00:00", + "pnl": 1.6999999999995907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.211, + "entry_time": "2022-09-28T20:00:00+00:00", + "exit_price": 93.622, + "exit_time": "2022-09-29T20:00:00+00:00", + "pnl": -58.899999999999864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.289, + "entry_time": "2022-10-03T20:00:00+00:00", + "exit_price": 95.218, + "exit_time": "2022-10-05T20:00:00+00:00", + "pnl": -7.099999999999795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.625, + "entry_time": "2022-10-07T20:00:00+00:00", + "exit_price": 93.711, + "exit_time": "2022-10-10T20:00:00+00:00", + "pnl": -91.40000000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.22, + "entry_time": "2022-10-13T20:00:00+00:00", + "exit_price": 95.266, + "exit_time": "2022-10-14T20:00:00+00:00", + "pnl": 104.60000000000065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.369, + "entry_time": "2022-10-19T20:00:00+00:00", + "exit_price": 94.388, + "exit_time": "2022-10-20T20:00:00+00:00", + "pnl": 101.90000000000055, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.034, + "entry_time": "2022-10-24T20:00:00+00:00", + "exit_price": 94.253, + "exit_time": "2022-10-26T20:00:00+00:00", + "pnl": 21.89999999999941, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.929, + "entry_time": "2022-10-28T20:00:00+00:00", + "exit_price": 95.019, + "exit_time": "2022-10-31T20:00:00+00:00", + "pnl": 9.000000000000341, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.458, + "entry_time": "2022-11-03T20:00:00+00:00", + "exit_price": 95.965, + "exit_time": "2022-11-04T20:00:00+00:00", + "pnl": -49.2999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23700000000001, + "entry_time": "2022-11-09T21:00:00+00:00", + "exit_price": 94.586, + "exit_time": "2022-11-10T21:00:00+00:00", + "pnl": -65.10000000000105, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.712, + "entry_time": "2022-11-14T21:00:00+00:00", + "exit_price": 94.086, + "exit_time": "2022-11-16T21:00:00+00:00", + "pnl": 37.39999999999952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.205, + "entry_time": "2022-11-18T21:00:00+00:00", + "exit_price": 94.623, + "exit_time": "2022-11-21T21:00:00+00:00", + "pnl": 41.80000000000064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54, + "entry_time": "2022-11-25T18:00:00+00:00", + "exit_price": 92.916, + "exit_time": "2022-12-01T21:00:00+00:00", + "pnl": -62.400000000000944, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.256, + "entry_time": "2022-12-05T21:00:00+00:00", + "exit_price": 93.35900000000001, + "exit_time": "2022-12-07T21:00:00+00:00", + "pnl": 10.300000000000864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.218, + "entry_time": "2022-12-09T21:00:00+00:00", + "exit_price": 93.916, + "exit_time": "2022-12-12T21:00:00+00:00", + "pnl": 69.79999999999933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.424, + "entry_time": "2022-12-15T21:00:00+00:00", + "exit_price": 92.996, + "exit_time": "2022-12-16T21:00:00+00:00", + "pnl": -42.80000000000115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.738, + "entry_time": "2022-12-21T21:00:00+00:00", + "exit_price": 91.786, + "exit_time": "2022-12-22T21:00:00+00:00", + "pnl": 104.80000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.399, + "entry_time": "2022-12-27T21:00:00+00:00", + "exit_price": 92.116, + "exit_time": "2022-12-28T21:00:00+00:00", + "pnl": -28.300000000000125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.771, + "entry_time": "2022-12-30T21:00:00+00:00", + "exit_price": 92.97800000000001, + "exit_time": "2023-01-03T21:00:00+00:00", + "pnl": 20.700000000000784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82300000000001, + "entry_time": "2023-01-05T21:00:00+00:00", + "exit_price": 92.889, + "exit_time": "2023-01-06T21:00:00+00:00", + "pnl": 6.599999999998829, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.776, + "entry_time": "2023-01-11T21:00:00+00:00", + "exit_price": 92.849, + "exit_time": "2023-01-12T21:00:00+00:00", + "pnl": 7.30000000000075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.165, + "entry_time": "2023-01-17T21:00:00+00:00", + "exit_price": 93.645, + "exit_time": "2023-01-18T21:00:00+00:00", + "pnl": 47.99999999999898, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.349, + "entry_time": "2023-01-20T21:00:00+00:00", + "exit_price": 93.529, + "exit_time": "2023-01-23T21:00:00+00:00", + "pnl": 117.99999999999926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.145, + "entry_time": "2023-01-26T21:00:00+00:00", + "exit_price": 93.092, + "exit_time": "2023-01-27T21:00:00+00:00", + "pnl": -105.29999999999973, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.034, + "entry_time": "2023-02-01T21:00:00+00:00", + "exit_price": 92.672, + "exit_time": "2023-02-02T21:00:00+00:00", + "pnl": -136.2000000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.253, + "entry_time": "2023-02-06T21:00:00+00:00", + "exit_price": 93.168, + "exit_time": "2023-02-08T21:00:00+00:00", + "pnl": -8.499999999999375, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13, + "entry_time": "2023-02-10T21:00:00+00:00", + "exit_price": 94.092, + "exit_time": "2023-02-13T21:00:00+00:00", + "pnl": 96.20000000000033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.536, + "entry_time": "2023-02-16T21:00:00+00:00", + "exit_price": 94.21600000000001, + "exit_time": "2023-02-17T21:00:00+00:00", + "pnl": -31.999999999999318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.185, + "entry_time": "2023-02-22T21:00:00+00:00", + "exit_price": 93.989, + "exit_time": "2023-02-23T21:00:00+00:00", + "pnl": -19.599999999999795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45400000000001, + "entry_time": "2023-02-27T21:00:00+00:00", + "exit_price": 94.437, + "exit_time": "2023-03-01T21:00:00+00:00", + "pnl": -1.7000000000010118, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.958, + "entry_time": "2023-03-03T21:00:00+00:00", + "exit_price": 93.665, + "exit_time": "2023-03-06T21:00:00+00:00", + "pnl": -29.299999999999216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35000000000001, + "entry_time": "2023-03-09T21:00:00+00:00", + "exit_price": 93.062, + "exit_time": "2023-03-10T21:00:00+00:00", + "pnl": -28.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.884, + "entry_time": "2023-03-15T20:00:00+00:00", + "exit_price": 94.08200000000001, + "exit_time": "2023-03-16T20:00:00+00:00", + "pnl": 19.80000000000075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.295, + "entry_time": "2023-03-20T20:00:00+00:00", + "exit_price": 92.05, + "exit_time": "2023-03-22T20:00:00+00:00", + "pnl": -24.500000000000455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.845, + "entry_time": "2023-03-24T20:00:00+00:00", + "exit_price": 93.328, + "exit_time": "2023-03-27T20:00:00+00:00", + "pnl": 148.3000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.949, + "entry_time": "2023-03-30T20:00:00+00:00", + "exit_price": 93.548, + "exit_time": "2023-03-31T20:00:00+00:00", + "pnl": 59.900000000000375, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73100000000001, + "entry_time": "2023-04-05T20:00:00+00:00", + "exit_price": 92.13, + "exit_time": "2023-04-06T20:00:00+00:00", + "pnl": -60.10000000000133, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.325, + "entry_time": "2023-04-11T20:00:00+00:00", + "exit_price": 92.404, + "exit_time": "2023-04-12T20:00:00+00:00", + "pnl": -92.10000000000065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56, + "entry_time": "2023-04-14T20:00:00+00:00", + "exit_price": 92.82900000000001, + "exit_time": "2023-04-17T20:00:00+00:00", + "pnl": 26.900000000000546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.799, + "entry_time": "2023-04-20T20:00:00+00:00", + "exit_price": 92.95100000000001, + "exit_time": "2023-04-21T20:00:00+00:00", + "pnl": 15.200000000000102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35900000000001, + "entry_time": "2023-04-26T20:00:00+00:00", + "exit_price": 92.905, + "exit_time": "2023-04-27T20:00:00+00:00", + "pnl": -45.40000000000077, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.681, + "entry_time": "2023-05-01T20:00:00+00:00", + "exit_price": 92.82900000000001, + "exit_time": "2023-05-03T20:00:00+00:00", + "pnl": 14.800000000001035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06700000000001, + "entry_time": "2023-05-05T20:00:00+00:00", + "exit_price": 93.19500000000001, + "exit_time": "2023-05-08T20:00:00+00:00", + "pnl": 12.800000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.877, + "entry_time": "2023-05-11T20:00:00+00:00", + "exit_price": 93.476, + "exit_time": "2023-05-12T20:00:00+00:00", + "pnl": 159.90000000000038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.775, + "entry_time": "2023-05-17T20:00:00+00:00", + "exit_price": 93.218, + "exit_time": "2023-05-18T20:00:00+00:00", + "pnl": 44.299999999999784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88, + "entry_time": "2023-05-22T20:00:00+00:00", + "exit_price": 93.96900000000001, + "exit_time": "2023-05-24T20:00:00+00:00", + "pnl": 8.900000000001285, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.333, + "entry_time": "2023-05-26T20:00:00+00:00", + "exit_price": 94.059, + "exit_time": "2023-05-30T20:00:00+00:00", + "pnl": -27.40000000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.762, + "entry_time": "2023-06-01T20:00:00+00:00", + "exit_price": 94.25, + "exit_time": "2023-06-02T20:00:00+00:00", + "pnl": 148.79999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.294, + "entry_time": "2023-06-07T20:00:00+00:00", + "exit_price": 94.60300000000001, + "exit_time": "2023-06-08T20:00:00+00:00", + "pnl": 30.90000000000117, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.427, + "entry_time": "2023-06-12T20:00:00+00:00", + "exit_price": 94.339, + "exit_time": "2023-06-14T20:00:00+00:00", + "pnl": -8.800000000000807, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37, + "entry_time": "2023-06-16T20:00:00+00:00", + "exit_price": 94.163, + "exit_time": "2023-06-20T20:00:00+00:00", + "pnl": -20.700000000000784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.953, + "entry_time": "2023-06-22T20:00:00+00:00", + "exit_price": 94.374, + "exit_time": "2023-06-23T20:00:00+00:00", + "pnl": -57.90000000000077, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.898, + "entry_time": "2023-06-28T20:00:00+00:00", + "exit_price": 94.566, + "exit_time": "2023-06-29T20:00:00+00:00", + "pnl": 66.80000000000064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.277, + "entry_time": "2023-07-03T17:00:00+00:00", + "exit_price": 94.941, + "exit_time": "2023-07-10T20:00:00+00:00", + "pnl": 66.40000000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.493, + "entry_time": "2023-07-13T20:00:00+00:00", + "exit_price": 94.34700000000001, + "exit_time": "2023-07-14T20:00:00+00:00", + "pnl": -14.599999999998658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23700000000001, + "entry_time": "2023-07-19T20:00:00+00:00", + "exit_price": 94.334, + "exit_time": "2023-07-20T20:00:00+00:00", + "pnl": 109.69999999999942, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.531, + "entry_time": "2023-07-24T20:00:00+00:00", + "exit_price": 93.304, + "exit_time": "2023-07-26T20:00:00+00:00", + "pnl": -22.700000000000387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.055, + "entry_time": "2023-07-28T20:00:00+00:00", + "exit_price": 93.971, + "exit_time": "2023-07-31T20:00:00+00:00", + "pnl": -8.400000000000318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.498, + "entry_time": "2023-08-03T20:00:00+00:00", + "exit_price": 93.961, + "exit_time": "2023-08-04T20:00:00+00:00", + "pnl": 46.299999999999386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21600000000001, + "entry_time": "2023-08-09T20:00:00+00:00", + "exit_price": 93.22800000000001, + "exit_time": "2023-08-10T20:00:00+00:00", + "pnl": -98.79999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.656, + "entry_time": "2023-08-14T20:00:00+00:00", + "exit_price": 94.398, + "exit_time": "2023-08-16T20:00:00+00:00", + "pnl": 174.19999999999902, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.089, + "entry_time": "2023-08-18T20:00:00+00:00", + "exit_price": 93.399, + "exit_time": "2023-08-21T20:00:00+00:00", + "pnl": -68.99999999999977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.799, + "entry_time": "2023-08-24T20:00:00+00:00", + "exit_price": 93.688, + "exit_time": "2023-08-25T20:00:00+00:00", + "pnl": 88.89999999999958, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.791, + "entry_time": "2023-08-30T20:00:00+00:00", + "exit_price": 92.57300000000001, + "exit_time": "2023-08-31T20:00:00+00:00", + "pnl": -121.79999999999893, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.041, + "entry_time": "2023-09-05T20:00:00+00:00", + "exit_price": 94.468, + "exit_time": "2023-09-06T20:00:00+00:00", + "pnl": 142.70000000000067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23700000000001, + "entry_time": "2023-09-08T20:00:00+00:00", + "exit_price": 94.095, + "exit_time": "2023-09-11T20:00:00+00:00", + "pnl": -14.200000000001012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.791, + "entry_time": "2023-09-14T20:00:00+00:00", + "exit_price": 94.029, + "exit_time": "2023-09-15T20:00:00+00:00", + "pnl": -76.20000000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.173, + "entry_time": "2023-09-20T20:00:00+00:00", + "exit_price": 93.583, + "exit_time": "2023-09-21T20:00:00+00:00", + "pnl": -59.00000000000034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.115, + "entry_time": "2023-09-25T20:00:00+00:00", + "exit_price": 93.162, + "exit_time": "2023-09-27T20:00:00+00:00", + "pnl": -95.29999999999887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.496, + "entry_time": "2023-09-29T20:00:00+00:00", + "exit_price": 92.842, + "exit_time": "2023-10-02T20:00:00+00:00", + "pnl": -65.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.019, + "entry_time": "2023-10-05T20:00:00+00:00", + "exit_price": 92.773, + "exit_time": "2023-10-06T20:00:00+00:00", + "pnl": -24.600000000000932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.345, + "entry_time": "2023-10-11T20:00:00+00:00", + "exit_price": 92.322, + "exit_time": "2023-10-12T20:00:00+00:00", + "pnl": -2.2999999999996135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.994, + "entry_time": "2023-10-16T20:00:00+00:00", + "exit_price": 91.586, + "exit_time": "2023-10-18T20:00:00+00:00", + "pnl": -40.800000000000125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.467, + "entry_time": "2023-10-20T20:00:00+00:00", + "exit_price": 92.361, + "exit_time": "2023-10-23T20:00:00+00:00", + "pnl": 89.40000000000055, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.379, + "entry_time": "2023-10-26T20:00:00+00:00", + "exit_price": 91.412, + "exit_time": "2023-10-27T20:00:00+00:00", + "pnl": -96.69999999999987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43, + "entry_time": "2023-11-01T20:00:00+00:00", + "exit_price": 91.133, + "exit_time": "2023-11-02T20:00:00+00:00", + "pnl": -29.700000000001125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.967, + "entry_time": "2023-11-06T21:00:00+00:00", + "exit_price": 91.602, + "exit_time": "2023-11-08T21:00:00+00:00", + "pnl": 63.50000000000051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.416, + "entry_time": "2023-11-10T21:00:00+00:00", + "exit_price": 92.325, + "exit_time": "2023-11-13T21:00:00+00:00", + "pnl": -9.099999999999397, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94500000000001, + "entry_time": "2023-11-16T21:00:00+00:00", + "exit_price": 92.019, + "exit_time": "2023-11-17T21:00:00+00:00", + "pnl": -92.6000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.744, + "entry_time": "2023-11-22T21:00:00+00:00", + "exit_price": 93.688, + "exit_time": "2023-11-24T18:00:00+00:00", + "pnl": 94.40000000000026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.139, + "entry_time": "2023-11-27T21:00:00+00:00", + "exit_price": 92.476, + "exit_time": "2023-11-29T21:00:00+00:00", + "pnl": -166.29999999999967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76, + "entry_time": "2023-12-01T21:00:00+00:00", + "exit_price": 93.44800000000001, + "exit_time": "2023-12-04T21:00:00+00:00", + "pnl": 68.80000000000024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.583, + "entry_time": "2023-12-07T21:00:00+00:00", + "exit_price": 94.144, + "exit_time": "2023-12-08T21:00:00+00:00", + "pnl": 56.100000000000705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.056, + "entry_time": "2023-12-13T21:00:00+00:00", + "exit_price": 93.35600000000001, + "exit_time": "2023-12-14T21:00:00+00:00", + "pnl": 130.00000000000114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.194, + "entry_time": "2023-12-18T21:00:00+00:00", + "exit_price": 92.511, + "exit_time": "2023-12-20T21:00:00+00:00", + "pnl": 31.699999999999307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.914, + "entry_time": "2023-12-22T21:00:00+00:00", + "exit_price": 92.894, + "exit_time": "2023-12-26T21:00:00+00:00", + "pnl": -101.9999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.128, + "entry_time": "2023-12-28T21:00:00+00:00", + "exit_price": 93.66, + "exit_time": "2023-12-29T21:00:00+00:00", + "pnl": 53.19999999999965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.892, + "entry_time": "2024-01-03T21:00:00+00:00", + "exit_price": 94.589, + "exit_time": "2024-01-04T21:00:00+00:00", + "pnl": -30.299999999999727, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.077, + "entry_time": "2024-01-08T21:00:00+00:00", + "exit_price": 94.764, + "exit_time": "2024-01-10T21:00:00+00:00", + "pnl": -31.30000000000024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.805, + "entry_time": "2024-01-12T21:00:00+00:00", + "exit_price": 94.409, + "exit_time": "2024-01-16T21:00:00+00:00", + "pnl": -39.60000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.092, + "entry_time": "2024-01-18T21:00:00+00:00", + "exit_price": 94.92, + "exit_time": "2024-01-19T21:00:00+00:00", + "pnl": -17.199999999999704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.886, + "entry_time": "2024-01-24T21:00:00+00:00", + "exit_price": 95.417, + "exit_time": "2024-01-25T21:00:00+00:00", + "pnl": 53.10000000000059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.117, + "entry_time": "2024-01-29T21:00:00+00:00", + "exit_price": 94.586, + "exit_time": "2024-01-31T21:00:00+00:00", + "pnl": 46.89999999999941, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.519, + "entry_time": "2024-02-02T21:00:00+00:00", + "exit_price": 95.646, + "exit_time": "2024-02-05T21:00:00+00:00", + "pnl": 12.699999999999534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.974, + "entry_time": "2024-02-08T21:00:00+00:00", + "exit_price": 96.257, + "exit_time": "2024-02-09T21:00:00+00:00", + "pnl": 128.30000000000013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.384, + "entry_time": "2024-02-14T21:00:00+00:00", + "exit_price": 94.768, + "exit_time": "2024-02-15T21:00:00+00:00", + "pnl": 38.400000000000034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.926, + "entry_time": "2024-02-20T21:00:00+00:00", + "exit_price": 95.284, + "exit_time": "2024-02-21T21:00:00+00:00", + "pnl": 35.80000000000041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.645, + "entry_time": "2024-02-23T21:00:00+00:00", + "exit_price": 94.632, + "exit_time": "2024-02-26T21:00:00+00:00", + "pnl": -1.2999999999991019, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.994, + "entry_time": "2024-02-29T21:00:00+00:00", + "exit_price": 93.516, + "exit_time": "2024-03-01T21:00:00+00:00", + "pnl": 52.20000000000056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.208, + "entry_time": "2024-03-06T21:00:00+00:00", + "exit_price": 93.035, + "exit_time": "2024-03-07T21:00:00+00:00", + "pnl": -17.300000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57900000000001, + "entry_time": "2024-03-11T20:00:00+00:00", + "exit_price": 93.424, + "exit_time": "2024-03-13T20:00:00+00:00", + "pnl": -15.500000000000114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.322, + "entry_time": "2024-03-15T20:00:00+00:00", + "exit_price": 93.745, + "exit_time": "2024-03-18T20:00:00+00:00", + "pnl": 42.30000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56700000000001, + "entry_time": "2024-03-21T20:00:00+00:00", + "exit_price": 90.994, + "exit_time": "2024-03-22T20:00:00+00:00", + "pnl": -157.30000000000075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.365, + "entry_time": "2024-03-27T20:00:00+00:00", + "exit_price": 92.886, + "exit_time": "2024-03-28T20:00:00+00:00", + "pnl": 52.10000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.875, + "entry_time": "2024-04-02T20:00:00+00:00", + "exit_price": 92.605, + "exit_time": "2024-04-03T20:00:00+00:00", + "pnl": -26.999999999999602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.203, + "entry_time": "2024-04-05T20:00:00+00:00", + "exit_price": 92.389, + "exit_time": "2024-04-08T20:00:00+00:00", + "pnl": 18.599999999999284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.968, + "entry_time": "2024-04-11T20:00:00+00:00", + "exit_price": 91.888, + "exit_time": "2024-04-12T20:00:00+00:00", + "pnl": -7.9999999999998295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.872, + "entry_time": "2024-04-17T20:00:00+00:00", + "exit_price": 92.005, + "exit_time": "2024-04-18T20:00:00+00:00", + "pnl": -86.70000000000044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.84700000000001, + "entry_time": "2024-04-22T20:00:00+00:00", + "exit_price": 91.521, + "exit_time": "2024-04-24T20:00:00+00:00", + "pnl": -132.60000000000076, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.615, + "entry_time": "2024-04-26T20:00:00+00:00", + "exit_price": 92.84, + "exit_time": "2024-04-29T20:00:00+00:00", + "pnl": 22.500000000000853, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.018, + "entry_time": "2024-05-02T20:00:00+00:00", + "exit_price": 93.19500000000001, + "exit_time": "2024-05-03T20:00:00+00:00", + "pnl": 117.70000000000067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.761, + "entry_time": "2024-05-08T20:00:00+00:00", + "exit_price": 93.992, + "exit_time": "2024-05-09T20:00:00+00:00", + "pnl": 23.100000000000875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.186, + "entry_time": "2024-05-13T20:00:00+00:00", + "exit_price": 93.292, + "exit_time": "2024-05-15T20:00:00+00:00", + "pnl": 10.599999999999454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.053, + "entry_time": "2024-05-17T20:00:00+00:00", + "exit_price": 92.898, + "exit_time": "2024-05-20T20:00:00+00:00", + "pnl": -15.500000000000114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.003, + "entry_time": "2024-05-23T20:00:00+00:00", + "exit_price": 93.803, + "exit_time": "2024-05-24T20:00:00+00:00", + "pnl": 79.99999999999972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.531, + "entry_time": "2024-05-29T20:00:00+00:00", + "exit_price": 93.551, + "exit_time": "2024-05-30T20:00:00+00:00", + "pnl": 1.999999999999602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.921, + "entry_time": "2024-06-03T20:00:00+00:00", + "exit_price": 93.378, + "exit_time": "2024-06-05T20:00:00+00:00", + "pnl": -54.30000000000064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.738, + "entry_time": "2024-06-07T20:00:00+00:00", + "exit_price": 94.058, + "exit_time": "2024-06-10T20:00:00+00:00", + "pnl": 32.00000000000074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71600000000001, + "entry_time": "2024-06-13T20:00:00+00:00", + "exit_price": 92.354, + "exit_time": "2024-06-14T20:00:00+00:00", + "pnl": -36.2000000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20400000000001, + "entry_time": "2024-06-20T20:00:00+00:00", + "exit_price": 93.86, + "exit_time": "2024-06-26T20:00:00+00:00", + "pnl": -34.40000000000083, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.769, + "entry_time": "2024-06-28T20:00:00+00:00", + "exit_price": 94.267, + "exit_time": "2024-07-01T20:00:00+00:00", + "pnl": 149.79999999999905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.501, + "entry_time": "2024-07-05T20:00:00+00:00", + "exit_price": 92.97200000000001, + "exit_time": "2024-07-11T20:00:00+00:00", + "pnl": -52.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.501, + "entry_time": "2024-07-15T20:00:00+00:00", + "exit_price": 92.553, + "exit_time": "2024-07-17T20:00:00+00:00", + "pnl": 5.19999999999925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.928, + "entry_time": "2024-07-19T20:00:00+00:00", + "exit_price": 92.018, + "exit_time": "2024-07-22T20:00:00+00:00", + "pnl": 9.000000000000341, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.988, + "entry_time": "2024-07-25T20:00:00+00:00", + "exit_price": 92.135, + "exit_time": "2024-07-26T20:00:00+00:00", + "pnl": 14.700000000000557, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.85600000000001, + "entry_time": "2024-07-31T20:00:00+00:00", + "exit_price": 92.251, + "exit_time": "2024-08-01T20:00:00+00:00", + "pnl": 39.4999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.903, + "entry_time": "2024-08-05T20:00:00+00:00", + "exit_price": 91.614, + "exit_time": "2024-08-07T20:00:00+00:00", + "pnl": -28.900000000000148, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.266, + "entry_time": "2024-08-09T20:00:00+00:00", + "exit_price": 93.255, + "exit_time": "2024-08-12T20:00:00+00:00", + "pnl": 98.89999999999901, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.888, + "entry_time": "2024-08-15T20:00:00+00:00", + "exit_price": 92.534, + "exit_time": "2024-08-16T20:00:00+00:00", + "pnl": -35.39999999999992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.352, + "entry_time": "2024-08-21T20:00:00+00:00", + "exit_price": 93.822, + "exit_time": "2024-08-22T20:00:00+00:00", + "pnl": 46.999999999999886, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.013, + "entry_time": "2024-08-26T20:00:00+00:00", + "exit_price": 93.143, + "exit_time": "2024-08-28T20:00:00+00:00", + "pnl": 112.99999999999955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.316, + "entry_time": "2024-08-30T20:00:00+00:00", + "exit_price": 92.433, + "exit_time": "2024-09-03T20:00:00+00:00", + "pnl": -188.29999999999956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.742, + "entry_time": "2024-09-05T20:00:00+00:00", + "exit_price": 93.047, + "exit_time": "2024-09-06T20:00:00+00:00", + "pnl": 30.49999999999926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.668, + "entry_time": "2024-09-11T20:00:00+00:00", + "exit_price": 91.661, + "exit_time": "2024-09-12T20:00:00+00:00", + "pnl": -100.7000000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.179, + "entry_time": "2024-09-16T20:00:00+00:00", + "exit_price": 91.58, + "exit_time": "2024-09-18T20:00:00+00:00", + "pnl": 40.099999999999625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.285, + "entry_time": "2024-09-20T20:00:00+00:00", + "exit_price": 90.104, + "exit_time": "2024-09-23T20:00:00+00:00", + "pnl": -18.09999999999974, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.052, + "entry_time": "2024-09-26T20:00:00+00:00", + "exit_price": 91.20400000000001, + "exit_time": "2024-09-27T20:00:00+00:00", + "pnl": 15.200000000000102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.551, + "entry_time": "2024-10-02T20:00:00+00:00", + "exit_price": 90.177, + "exit_time": "2024-10-03T20:00:00+00:00", + "pnl": -137.39999999999952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83, + "entry_time": "2024-10-07T20:00:00+00:00", + "exit_price": 91.072, + "exit_time": "2024-10-09T20:00:00+00:00", + "pnl": 24.200000000000443, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.139, + "entry_time": "2024-10-11T20:00:00+00:00", + "exit_price": 90.93, + "exit_time": "2024-10-14T20:00:00+00:00", + "pnl": -20.899999999998897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.494, + "entry_time": "2024-10-17T20:00:00+00:00", + "exit_price": 89.863, + "exit_time": "2024-10-18T20:00:00+00:00", + "pnl": -63.10000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.811, + "entry_time": "2024-10-23T20:00:00+00:00", + "exit_price": 89.547, + "exit_time": "2024-10-24T20:00:00+00:00", + "pnl": -26.400000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.85600000000001, + "entry_time": "2024-10-28T20:00:00+00:00", + "exit_price": 89.886, + "exit_time": "2024-10-30T20:00:00+00:00", + "pnl": 2.9999999999986926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.52, + "entry_time": "2024-11-01T20:00:00+00:00", + "exit_price": 89.584, + "exit_time": "2024-11-04T21:00:00+00:00", + "pnl": 106.40000000000072, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.328, + "entry_time": "2024-11-07T21:00:00+00:00", + "exit_price": 89.065, + "exit_time": "2024-11-08T21:00:00+00:00", + "pnl": -26.300000000000523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.21000000000001, + "entry_time": "2024-11-13T21:00:00+00:00", + "exit_price": 88.452, + "exit_time": "2024-11-14T21:00:00+00:00", + "pnl": -75.80000000000098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.85900000000001, + "entry_time": "2024-11-18T21:00:00+00:00", + "exit_price": 88.672, + "exit_time": "2024-11-20T21:00:00+00:00", + "pnl": 81.29999999999882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.369, + "entry_time": "2024-11-22T21:00:00+00:00", + "exit_price": 89.07000000000001, + "exit_time": "2024-11-25T21:00:00+00:00", + "pnl": -29.89999999999924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.84400000000001, + "entry_time": "2024-11-29T18:00:00+00:00", + "exit_price": 89.039, + "exit_time": "2024-12-05T21:00:00+00:00", + "pnl": 19.499999999999318, + "size": 100.0 + } + ], + "message": "exact ordered match", + "name": "trade_level_match", + "passed": true + }, + { + "actual": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.672, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.865, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.432, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.213, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.129, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.21, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.414, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.742, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.153, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.398, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.687, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.753, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.67, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.614, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.444, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.394, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.38, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.783, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.044, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.073, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.85, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.598, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.408, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.529, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.654, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.89, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.429, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.998, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.907, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.789, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.443, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.31, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.942, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.222, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.275, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.229, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.98, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.695, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.931, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.956, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.923, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.974, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.214, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.083, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.653, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.474, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.313, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.9, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.388, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.12, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.713, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.383, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.16, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.91, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.73, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.491, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.95, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.93, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.641, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.76, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.34, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.619, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.28, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.079, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.248, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.251, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.948, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.051, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.97, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.348, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.783, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.004, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.499, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.267, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.415, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.081, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.813, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.333, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.95, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.256, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.788, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.941, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.653, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.824, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.098, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.642, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.959, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.122, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.16, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.98, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.705, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.422, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.074, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.849, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.37, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.093, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.029, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.601, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.429, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.416, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.51, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.96, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.52, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.982, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.131, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.825, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.809, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.226, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.011, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.642, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.202, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.813, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.763, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.432, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.676, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.97, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.17, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.287, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.068, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.694, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.631, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.96, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.759, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.009, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.939, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.137, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.161, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.242, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.17, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.553, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.601, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.687, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.303, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.156, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.998, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.474, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.051, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.314, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.376, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.542, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.023, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.244, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.281, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.267, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.319, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.866, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.111, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.211, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.289, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.22, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.388, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.237, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.623, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.256, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.996, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.786, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.399, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.889, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.776, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.645, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.529, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.253, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.168, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.536, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.216, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.185, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.665, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.082, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.845, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.328, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.949, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.13, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.56, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.829, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.829, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.195, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.059, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.25, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.339, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.37, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.347, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.237, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.304, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.971, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.498, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.089, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.399, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.237, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.095, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.029, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.496, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.842, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.322, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.379, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.133, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.416, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.76, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.448, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.583, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.511, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.128, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.077, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.764, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.409, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.92, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.417, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.117, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.646, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.645, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.035, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.745, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.365, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.203, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.888, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.872, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.005, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.195, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.761, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.292, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.053, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.003, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.803, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.921, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.378, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.716, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.354, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.86, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.769, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.267, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.501, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.501, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.988, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.135, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.856, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.251, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.255, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.316, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.433, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.047, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.668, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.83, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.072, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.93, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.494, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.547, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.856, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.52, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.21, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.859, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.07, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.039, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-05T00:00:00" + } + ], + "canonical_quantum": "0.00000001", + "diagnostic_limit": null, + "difference": null, + "expected": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.672, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.86500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.432, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.129, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-30T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-31T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.414, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.742, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.153, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.398, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.687, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.753, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.614, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.444, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.48700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.394, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.38, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.783, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.044, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.07300000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.85000000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.598, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.47500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.408, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.529, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.654, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.89, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.429, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.998, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.907, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.789, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.443, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.31, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.35900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.94200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.22200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.275, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.229, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.98, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.07900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.46300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.69500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.931, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.956, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.923, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.974, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.214, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.083, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.653, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.474, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.313, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.9, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.388, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.12, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.71300000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.383, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.61500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.36200000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.91, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.73, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.491, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.95, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.93, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.47500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-19T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-25T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.641, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-27T18:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.76, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.34, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.73100000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.619, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.60300000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-31T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.11500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.28, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.07900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-19T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.248, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.251, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94800000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.051, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.97, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.348, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.08200000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.783, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.004, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.499, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34100000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.267, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.415, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.081, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.813, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.333, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.95, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.256, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73100000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.788, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.941, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.653, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.824, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.098, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.642, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.959, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.122, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.16, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.705, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.422, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.074, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.849, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.093, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.029, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.601, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.429, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.416, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.51, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.982, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.70400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.131, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.825, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.809, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.226, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.011, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-30T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.06700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.642, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.202, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.813, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.763, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-19T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.432, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.81400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.676, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.287, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.068, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-25T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.694, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.631, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.96000000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.759, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.009, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.93900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.137, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.161, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.242, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.17, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.553, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.601, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.687, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.303, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.156, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.998, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.474, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.051, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.31400000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.376, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.542, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.023, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.244, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.281, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.267, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.319, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.866, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.111, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.211, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.289, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.22, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.388, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.23700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.623, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-25T18:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.256, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.996, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.786, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.399, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-30T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82300000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.889, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.776, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.645, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.529, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.253, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.168, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.536, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21600000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.185, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.45400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.665, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.845, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.328, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.949, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73100000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.13, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95100000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.059, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.60300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.339, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T17:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34700000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.304, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.971, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.498, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.089, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.399, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.095, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.029, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.496, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.842, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.322, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.379, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.133, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.416, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-24T18:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.44800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.583, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35600000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.511, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.128, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.077, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.764, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.409, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.92, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-19T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.417, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-25T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.117, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-31T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.646, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.645, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.035, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.57900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.745, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.365, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.203, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.888, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.872, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.005, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.761, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.292, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.053, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.003, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.803, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.921, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.378, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.354, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.769, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.267, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.501, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.501, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.988, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.135, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.85600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.251, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.255, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.316, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.433, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.047, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.668, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20400000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.83, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.072, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.494, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.547, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.85600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.52, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.21000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.85900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.07000000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.84400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-29T18:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.039, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-05T21:00:00+00:00" + } + ], + "message": "exact ordered match", + "name": "fill_level_match", + "passed": true + } + ], + "framework": "Zipline", + "passed": true, + "scenario_id": "17" + }, + "detail": null, + "duration_seconds": 2.8268574259709567, + "framework": "zipline", + "framework_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "price": 101.119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.672, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.86500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.432, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.129, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-30T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-31T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.414, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.742, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.153, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.398, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.687, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.753, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.67, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.614, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.444, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.48700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.394, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.38, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.783, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.044, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 101.07300000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.85000000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.598, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.47500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.408, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.529, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.654, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 100.89, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.429, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.998, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.68900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.907, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.789, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.443, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.31, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.35900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.86, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.94200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.22200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.275, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.229, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.84700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.98, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.07900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.46300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.69500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.931, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.956, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.923, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.974, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.214, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.083, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.653, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.474, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.313, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.9, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.388, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.12, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.71300000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.383, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.11500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.61500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.16, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.36200000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.91, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.73, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 99.21600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.491, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.95, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.93, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.47500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-19T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-25T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.641, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-27T18:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.76, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.34, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.73100000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.619, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 98.386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.60300000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-31T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 97.11500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.28, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.07900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-19T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.248, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.251, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.94800000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.051, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.97, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.348, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.32300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.08200000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.58800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.783, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.004, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.499, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.34100000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.267, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.415, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.081, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.813, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.333, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.95, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.256, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.73100000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.788, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.941, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.653, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.824, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.78, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.098, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.642, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.959, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.122, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.16, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.98, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.705, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.422, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.87, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.074, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.849, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.093, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.029, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.601, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.429, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.416, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.51, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.96000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.52, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.982, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.82000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.70400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.131, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.825, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.809, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.226, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.011, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-30T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.06700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.642, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.202, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.813, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.763, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-19T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.432, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.96600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.81400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.676, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.97, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.17, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.287, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.068, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-25T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.09400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.694, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.87, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.631, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.96000000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.759, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.009, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.97200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.93900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.137, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.92, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.161, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.242, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.17, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.553, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.601, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.687, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.303, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.156, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.998, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.474, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.051, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.31400000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.376, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.542, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.023, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.244, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.281, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.267, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.319, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.866, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.111, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.211, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.289, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.22, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.388, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.23700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.623, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.54, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-25T18:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.256, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.996, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.786, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.399, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-30T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82300000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.889, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.776, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-11T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.645, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.529, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.253, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.168, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.13, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.536, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21600000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.185, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.45400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.665, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.08200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.05, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.845, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.328, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.949, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.73100000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.13, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.95100000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.82900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.06700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.88, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.96900000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.059, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.25, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.60300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.339, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.37, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T17:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.34700000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.23700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.304, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.971, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.498, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-04T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.21600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.22800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.089, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.399, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.57300000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.23700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.095, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.029, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.496, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.842, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.322, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.379, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.43, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.133, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.416, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.94500000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-17T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-24T18:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.76, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.44800000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.583, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.35600000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.511, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.128, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-28T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.66, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-03T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.077, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.764, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-10T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-12T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.409, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-16T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.92, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-19T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-24T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.417, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-25T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.117, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-31T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-02T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.646, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 96.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-09T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-15T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 95.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-21T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.645, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-23T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-29T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-01T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-06T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.035, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.57900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.745, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.56700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.365, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.203, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.888, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.872, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.005, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84700000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.84, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.19500000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.761, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-08T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.292, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.053, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.003, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.803, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-29T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.921, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.378, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.71600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-13T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.354, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.20400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.86, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.769, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.267, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.501, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.97200000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.501, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-19T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.988, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-25T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.135, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.85600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-31T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.251, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.255, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-15T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-21T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-22T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 94.316, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.433, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-05T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 93.047, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-06T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 92.668, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-12T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.58, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-20T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-26T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.20400000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-27T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-02T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-03T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.83, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.072, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-09T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 91.139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-11T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.93, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 90.494, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-17T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-18T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-23T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.547, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-24T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.85600000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-30T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.52, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-01T20:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-07T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-08T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.21000000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-13T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-14T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 87.85900000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-20T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-22T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.07000000000001, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T21:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 88.84400000000001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-29T18:00:00+00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "price": 89.039, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-05T21:00:00+00:00" + } + ], + "final_value": 100811.00000000015, + "framework": "Zipline", + "num_trades": 337, + "total_pnl": 811.0000000001455, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.119, + "entry_time": "2020-01-03T21:00:00+00:00", + "exit_price": 100.032, + "exit_time": "2020-01-06T21:00:00+00:00", + "pnl": -108.70000000000033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.672, + "entry_time": "2020-01-09T21:00:00+00:00", + "exit_price": 99.86500000000001, + "exit_time": "2020-01-10T21:00:00+00:00", + "pnl": 19.300000000001205, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.745, + "entry_time": "2020-01-15T21:00:00+00:00", + "exit_price": 99.432, + "exit_time": "2020-01-16T21:00:00+00:00", + "pnl": -31.30000000000024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.592, + "entry_time": "2020-01-21T21:00:00+00:00", + "exit_price": 99.21300000000001, + "exit_time": "2020-01-22T21:00:00+00:00", + "pnl": -37.89999999999907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.933, + "entry_time": "2020-01-24T21:00:00+00:00", + "exit_price": 100.129, + "exit_time": "2020-01-27T21:00:00+00:00", + "pnl": 19.599999999999795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21000000000001, + "entry_time": "2020-01-30T21:00:00+00:00", + "exit_price": 99.284, + "exit_time": "2020-01-31T21:00:00+00:00", + "pnl": 7.399999999999807, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.414, + "entry_time": "2020-02-05T21:00:00+00:00", + "exit_price": 99.742, + "exit_time": "2020-02-06T21:00:00+00:00", + "pnl": 132.8000000000003, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.153, + "entry_time": "2020-02-10T21:00:00+00:00", + "exit_price": 98.958, + "exit_time": "2020-02-12T21:00:00+00:00", + "pnl": -19.50000000000074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.398, + "entry_time": "2020-02-14T21:00:00+00:00", + "exit_price": 98.714, + "exit_time": "2020-02-18T21:00:00+00:00", + "pnl": -68.39999999999975, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.687, + "entry_time": "2020-02-20T21:00:00+00:00", + "exit_price": 99.197, + "exit_time": "2020-02-21T21:00:00+00:00", + "pnl": 51.00000000000051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.753, + "entry_time": "2020-02-26T21:00:00+00:00", + "exit_price": 98.67, + "exit_time": "2020-02-27T21:00:00+00:00", + "pnl": -8.29999999999984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.944, + "entry_time": "2020-03-02T21:00:00+00:00", + "exit_price": 99.276, + "exit_time": "2020-03-04T21:00:00+00:00", + "pnl": -66.80000000000064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.967, + "entry_time": "2020-03-06T21:00:00+00:00", + "exit_price": 99.019, + "exit_time": "2020-03-09T20:00:00+00:00", + "pnl": -94.79999999999933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.614, + "entry_time": "2020-03-12T20:00:00+00:00", + "exit_price": 99.444, + "exit_time": "2020-03-13T20:00:00+00:00", + "pnl": -17.00000000000017, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.48700000000001, + "entry_time": "2020-03-18T20:00:00+00:00", + "exit_price": 98.539, + "exit_time": "2020-03-19T20:00:00+00:00", + "pnl": -94.80000000000075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.361, + "entry_time": "2020-03-23T20:00:00+00:00", + "exit_price": 99.394, + "exit_time": "2020-03-25T20:00:00+00:00", + "pnl": 103.30000000000013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.38, + "entry_time": "2020-03-27T20:00:00+00:00", + "exit_price": 99.783, + "exit_time": "2020-03-30T20:00:00+00:00", + "pnl": 40.30000000000058, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.044, + "entry_time": "2020-04-02T20:00:00+00:00", + "exit_price": 100.006, + "exit_time": "2020-04-03T20:00:00+00:00", + "pnl": -3.7999999999996703, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.07300000000001, + "entry_time": "2020-04-08T20:00:00+00:00", + "exit_price": 99.85000000000001, + "exit_time": "2020-04-09T20:00:00+00:00", + "pnl": -122.2999999999999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.163, + "entry_time": "2020-04-14T20:00:00+00:00", + "exit_price": 99.598, + "exit_time": "2020-04-15T20:00:00+00:00", + "pnl": -56.49999999999977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.024, + "entry_time": "2020-04-17T20:00:00+00:00", + "exit_price": 100.102, + "exit_time": "2020-04-20T20:00:00+00:00", + "pnl": 7.800000000000296, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.47500000000001, + "entry_time": "2020-04-23T20:00:00+00:00", + "exit_price": 100.785, + "exit_time": "2020-04-24T20:00:00+00:00", + "pnl": 30.999999999998806, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.284, + "entry_time": "2020-04-29T20:00:00+00:00", + "exit_price": 100.408, + "exit_time": "2020-04-30T20:00:00+00:00", + "pnl": 12.399999999999523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.529, + "entry_time": "2020-05-04T20:00:00+00:00", + "exit_price": 100.468, + "exit_time": "2020-05-06T20:00:00+00:00", + "pnl": -6.099999999999284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.654, + "entry_time": "2020-05-08T20:00:00+00:00", + "exit_price": 100.845, + "exit_time": "2020-05-11T20:00:00+00:00", + "pnl": 19.10000000000025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.833, + "entry_time": "2020-05-14T20:00:00+00:00", + "exit_price": 100.141, + "exit_time": "2020-05-15T20:00:00+00:00", + "pnl": -69.1999999999993, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.172, + "entry_time": "2020-05-20T20:00:00+00:00", + "exit_price": 100.89, + "exit_time": "2020-05-21T20:00:00+00:00", + "pnl": 171.80000000000035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86, + "entry_time": "2020-05-26T20:00:00+00:00", + "exit_price": 99.429, + "exit_time": "2020-05-27T20:00:00+00:00", + "pnl": 56.90000000000026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.671, + "entry_time": "2020-05-29T20:00:00+00:00", + "exit_price": 97.998, + "exit_time": "2020-06-01T20:00:00+00:00", + "pnl": -67.30000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.68900000000001, + "entry_time": "2020-06-04T20:00:00+00:00", + "exit_price": 98.907, + "exit_time": "2020-06-05T20:00:00+00:00", + "pnl": 21.79999999999893, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.789, + "entry_time": "2020-06-10T20:00:00+00:00", + "exit_price": 99.443, + "exit_time": "2020-06-11T20:00:00+00:00", + "pnl": 65.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31, + "entry_time": "2020-06-15T20:00:00+00:00", + "exit_price": 98.913, + "exit_time": "2020-06-17T20:00:00+00:00", + "pnl": -39.70000000000056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.35900000000001, + "entry_time": "2020-06-19T20:00:00+00:00", + "exit_price": 99.246, + "exit_time": "2020-06-22T20:00:00+00:00", + "pnl": -11.300000000001376, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86, + "entry_time": "2020-06-25T20:00:00+00:00", + "exit_price": 98.94200000000001, + "exit_time": "2020-06-26T20:00:00+00:00", + "pnl": 8.200000000000784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.476, + "entry_time": "2020-07-01T20:00:00+00:00", + "exit_price": 98.22200000000001, + "exit_time": "2020-07-02T20:00:00+00:00", + "pnl": -25.399999999999068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.275, + "entry_time": "2020-07-07T20:00:00+00:00", + "exit_price": 99.229, + "exit_time": "2020-07-08T20:00:00+00:00", + "pnl": -4.600000000000648, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.84700000000001, + "entry_time": "2020-07-10T20:00:00+00:00", + "exit_price": 98.98, + "exit_time": "2020-07-13T20:00:00+00:00", + "pnl": 13.299999999999557, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.523, + "entry_time": "2020-07-16T20:00:00+00:00", + "exit_price": 98.848, + "exit_time": "2020-07-17T20:00:00+00:00", + "pnl": -67.49999999999972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.07900000000001, + "entry_time": "2020-07-22T20:00:00+00:00", + "exit_price": 98.46300000000001, + "exit_time": "2020-07-23T20:00:00+00:00", + "pnl": 38.400000000000034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.336, + "entry_time": "2020-07-27T20:00:00+00:00", + "exit_price": 97.69500000000001, + "exit_time": "2020-07-29T20:00:00+00:00", + "pnl": -164.0999999999991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.931, + "entry_time": "2020-07-31T20:00:00+00:00", + "exit_price": 98.053, + "exit_time": "2020-08-03T20:00:00+00:00", + "pnl": 12.199999999999989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.956, + "entry_time": "2020-08-06T20:00:00+00:00", + "exit_price": 97.857, + "exit_time": "2020-08-07T20:00:00+00:00", + "pnl": -109.90000000000038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.834, + "entry_time": "2020-08-12T20:00:00+00:00", + "exit_price": 97.257, + "exit_time": "2020-08-13T20:00:00+00:00", + "pnl": -57.69999999999982, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16, + "entry_time": "2020-08-17T20:00:00+00:00", + "exit_price": 98.416, + "exit_time": "2020-08-19T20:00:00+00:00", + "pnl": 25.600000000000023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.923, + "entry_time": "2020-08-21T20:00:00+00:00", + "exit_price": 97.974, + "exit_time": "2020-08-24T20:00:00+00:00", + "pnl": 5.100000000000193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.214, + "entry_time": "2020-08-27T20:00:00+00:00", + "exit_price": 98.083, + "exit_time": "2020-08-28T20:00:00+00:00", + "pnl": -113.10000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.001, + "entry_time": "2020-09-02T20:00:00+00:00", + "exit_price": 98.653, + "exit_time": "2020-09-03T20:00:00+00:00", + "pnl": 65.2000000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.474, + "entry_time": "2020-09-08T20:00:00+00:00", + "exit_price": 98.313, + "exit_time": "2020-09-09T20:00:00+00:00", + "pnl": -116.10000000000014, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.732, + "entry_time": "2020-09-11T20:00:00+00:00", + "exit_price": 98.566, + "exit_time": "2020-09-14T20:00:00+00:00", + "pnl": 83.40000000000032, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.9, + "entry_time": "2020-09-17T20:00:00+00:00", + "exit_price": 98.388, + "exit_time": "2020-09-18T20:00:00+00:00", + "pnl": 148.79999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.12, + "entry_time": "2020-09-23T20:00:00+00:00", + "exit_price": 99.257, + "exit_time": "2020-09-24T20:00:00+00:00", + "pnl": 13.700000000000045, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.71300000000001, + "entry_time": "2020-09-28T20:00:00+00:00", + "exit_price": 99.383, + "exit_time": "2020-09-30T20:00:00+00:00", + "pnl": 66.99999999999875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.584, + "entry_time": "2020-10-02T20:00:00+00:00", + "exit_price": 99.318, + "exit_time": "2020-10-05T20:00:00+00:00", + "pnl": -26.600000000000534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.11500000000001, + "entry_time": "2020-10-08T20:00:00+00:00", + "exit_price": 97.468, + "exit_time": "2020-10-09T20:00:00+00:00", + "pnl": -64.70000000000056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.61500000000001, + "entry_time": "2020-10-14T20:00:00+00:00", + "exit_price": 98.16, + "exit_time": "2020-10-15T20:00:00+00:00", + "pnl": 54.49999999999875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.36200000000001, + "entry_time": "2020-10-19T20:00:00+00:00", + "exit_price": 98.412, + "exit_time": "2020-10-21T20:00:00+00:00", + "pnl": 104.99999999999972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.782, + "entry_time": "2020-10-23T20:00:00+00:00", + "exit_price": 98.91, + "exit_time": "2020-10-26T20:00:00+00:00", + "pnl": 12.800000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.73, + "entry_time": "2020-10-29T20:00:00+00:00", + "exit_price": 98.608, + "exit_time": "2020-10-30T20:00:00+00:00", + "pnl": -12.199999999999989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21600000000001, + "entry_time": "2020-11-04T21:00:00+00:00", + "exit_price": 98.491, + "exit_time": "2020-11-05T21:00:00+00:00", + "pnl": -72.50000000000085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.95, + "entry_time": "2020-11-09T21:00:00+00:00", + "exit_price": 97.827, + "exit_time": "2020-11-11T21:00:00+00:00", + "pnl": -12.300000000000466, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.914, + "entry_time": "2020-11-13T21:00:00+00:00", + "exit_price": 98.93, + "exit_time": "2020-11-16T21:00:00+00:00", + "pnl": 1.6000000000005343, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.47500000000001, + "entry_time": "2020-11-19T21:00:00+00:00", + "exit_price": 98.101, + "exit_time": "2020-11-20T21:00:00+00:00", + "pnl": -37.400000000000944, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.485, + "entry_time": "2020-11-25T21:00:00+00:00", + "exit_price": 98.641, + "exit_time": "2020-11-27T18:00:00+00:00", + "pnl": 15.600000000000591, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.76, + "entry_time": "2020-11-30T21:00:00+00:00", + "exit_price": 97.799, + "exit_time": "2020-12-02T21:00:00+00:00", + "pnl": 3.900000000000148, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.985, + "entry_time": "2020-12-04T21:00:00+00:00", + "exit_price": 98.34, + "exit_time": "2020-12-07T21:00:00+00:00", + "pnl": 35.5000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.428, + "entry_time": "2020-12-10T21:00:00+00:00", + "exit_price": 96.632, + "exit_time": "2020-12-11T21:00:00+00:00", + "pnl": -79.59999999999923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.73100000000001, + "entry_time": "2020-12-16T21:00:00+00:00", + "exit_price": 97.619, + "exit_time": "2020-12-17T21:00:00+00:00", + "pnl": 88.7999999999991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.386, + "entry_time": "2020-12-21T21:00:00+00:00", + "exit_price": 96.994, + "exit_time": "2020-12-23T21:00:00+00:00", + "pnl": -139.1999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.124, + "entry_time": "2020-12-28T21:00:00+00:00", + "exit_price": 97.539, + "exit_time": "2020-12-29T21:00:00+00:00", + "pnl": 41.500000000000625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.60300000000001, + "entry_time": "2020-12-31T21:00:00+00:00", + "exit_price": 96.822, + "exit_time": "2021-01-04T21:00:00+00:00", + "pnl": -78.10000000000059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.791, + "entry_time": "2021-01-06T21:00:00+00:00", + "exit_price": 97.11500000000001, + "exit_time": "2021-01-07T21:00:00+00:00", + "pnl": 32.40000000000123, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.811, + "entry_time": "2021-01-11T21:00:00+00:00", + "exit_price": 96.28, + "exit_time": "2021-01-13T21:00:00+00:00", + "pnl": -53.10000000000059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.533, + "entry_time": "2021-01-15T21:00:00+00:00", + "exit_price": 96.07900000000001, + "exit_time": "2021-01-19T21:00:00+00:00", + "pnl": -45.39999999999935, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.796, + "entry_time": "2021-01-21T21:00:00+00:00", + "exit_price": 95.248, + "exit_time": "2021-01-22T21:00:00+00:00", + "pnl": -54.80000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.556, + "entry_time": "2021-01-27T21:00:00+00:00", + "exit_price": 96.557, + "exit_time": "2021-01-28T21:00:00+00:00", + "pnl": 100.10000000000048, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.251, + "entry_time": "2021-02-01T21:00:00+00:00", + "exit_price": 95.837, + "exit_time": "2021-02-03T21:00:00+00:00", + "pnl": -41.40000000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.265, + "entry_time": "2021-02-05T21:00:00+00:00", + "exit_price": 95.261, + "exit_time": "2021-02-08T21:00:00+00:00", + "pnl": -0.40000000000048885, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.94800000000001, + "entry_time": "2021-02-11T21:00:00+00:00", + "exit_price": 95.051, + "exit_time": "2021-02-12T21:00:00+00:00", + "pnl": 10.299999999999443, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.97, + "entry_time": "2021-02-17T21:00:00+00:00", + "exit_price": 96.348, + "exit_time": "2021-02-18T21:00:00+00:00", + "pnl": -62.19999999999999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.318, + "entry_time": "2021-02-22T21:00:00+00:00", + "exit_price": 95.625, + "exit_time": "2021-02-24T21:00:00+00:00", + "pnl": -69.29999999999978, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.886, + "entry_time": "2021-02-26T21:00:00+00:00", + "exit_price": 95.236, + "exit_time": "2021-03-01T21:00:00+00:00", + "pnl": 35.00000000000085, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.403, + "entry_time": "2021-03-04T21:00:00+00:00", + "exit_price": 94.32300000000001, + "exit_time": "2021-03-05T21:00:00+00:00", + "pnl": -7.9999999999998295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.08200000000001, + "entry_time": "2021-03-10T21:00:00+00:00", + "exit_price": 94.58800000000001, + "exit_time": "2021-03-11T21:00:00+00:00", + "pnl": -49.39999999999998, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.802, + "entry_time": "2021-03-15T20:00:00+00:00", + "exit_price": 94.783, + "exit_time": "2021-03-17T20:00:00+00:00", + "pnl": -1.9000000000005457, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.661, + "entry_time": "2021-03-19T20:00:00+00:00", + "exit_price": 95.004, + "exit_time": "2021-03-22T20:00:00+00:00", + "pnl": 134.30000000000035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.499, + "entry_time": "2021-03-25T20:00:00+00:00", + "exit_price": 93.976, + "exit_time": "2021-03-26T20:00:00+00:00", + "pnl": -152.2999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.019, + "entry_time": "2021-03-31T20:00:00+00:00", + "exit_price": 94.256, + "exit_time": "2021-04-01T20:00:00+00:00", + "pnl": 23.699999999999477, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.471, + "entry_time": "2021-04-06T20:00:00+00:00", + "exit_price": 93.724, + "exit_time": "2021-04-07T20:00:00+00:00", + "pnl": 25.30000000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.199, + "entry_time": "2021-04-09T20:00:00+00:00", + "exit_price": 93.34100000000001, + "exit_time": "2021-04-12T20:00:00+00:00", + "pnl": 14.200000000001012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.729, + "entry_time": "2021-04-15T20:00:00+00:00", + "exit_price": 93.256, + "exit_time": "2021-04-16T20:00:00+00:00", + "pnl": -47.2999999999999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.926, + "entry_time": "2021-04-21T20:00:00+00:00", + "exit_price": 94.143, + "exit_time": "2021-04-22T20:00:00+00:00", + "pnl": 121.69999999999987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.774, + "entry_time": "2021-04-26T20:00:00+00:00", + "exit_price": 93.493, + "exit_time": "2021-04-28T20:00:00+00:00", + "pnl": -28.10000000000059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.685, + "entry_time": "2021-04-30T20:00:00+00:00", + "exit_price": 94.267, + "exit_time": "2021-05-03T20:00:00+00:00", + "pnl": 58.19999999999936, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.415, + "entry_time": "2021-05-06T20:00:00+00:00", + "exit_price": 93.364, + "exit_time": "2021-05-07T20:00:00+00:00", + "pnl": -5.100000000000193, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.742, + "entry_time": "2021-05-12T20:00:00+00:00", + "exit_price": 94.554, + "exit_time": "2021-05-13T20:00:00+00:00", + "pnl": 81.19999999999976, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.502, + "entry_time": "2021-05-17T20:00:00+00:00", + "exit_price": 94.556, + "exit_time": "2021-05-19T20:00:00+00:00", + "pnl": 105.4000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.081, + "entry_time": "2021-05-21T20:00:00+00:00", + "exit_price": 92.813, + "exit_time": "2021-05-24T20:00:00+00:00", + "pnl": -26.800000000000068, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.953, + "entry_time": "2021-05-27T20:00:00+00:00", + "exit_price": 93.147, + "exit_time": "2021-05-28T20:00:00+00:00", + "pnl": 19.40000000000026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94500000000001, + "entry_time": "2021-06-02T20:00:00+00:00", + "exit_price": 92.896, + "exit_time": "2021-06-03T20:00:00+00:00", + "pnl": -4.900000000000659, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.577, + "entry_time": "2021-06-07T20:00:00+00:00", + "exit_price": 91.284, + "exit_time": "2021-06-09T20:00:00+00:00", + "pnl": -129.29999999999922, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13, + "entry_time": "2021-06-11T20:00:00+00:00", + "exit_price": 92.333, + "exit_time": "2021-06-14T20:00:00+00:00", + "pnl": -79.6999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.95, + "entry_time": "2021-06-17T20:00:00+00:00", + "exit_price": 92.166, + "exit_time": "2021-06-18T20:00:00+00:00", + "pnl": 21.599999999999397, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.256, + "entry_time": "2021-06-23T20:00:00+00:00", + "exit_price": 92.456, + "exit_time": "2021-06-24T20:00:00+00:00", + "pnl": 20.000000000000284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.73100000000001, + "entry_time": "2021-06-28T20:00:00+00:00", + "exit_price": 91.788, + "exit_time": "2021-06-30T20:00:00+00:00", + "pnl": 5.699999999998795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.941, + "entry_time": "2021-07-02T20:00:00+00:00", + "exit_price": 90.653, + "exit_time": "2021-07-06T20:00:00+00:00", + "pnl": -28.79999999999967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.824, + "entry_time": "2021-07-08T20:00:00+00:00", + "exit_price": 91.78, + "exit_time": "2021-07-09T20:00:00+00:00", + "pnl": -4.399999999999693, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.098, + "entry_time": "2021-07-14T20:00:00+00:00", + "exit_price": 91.642, + "exit_time": "2021-07-15T20:00:00+00:00", + "pnl": 54.39999999999969, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.333, + "entry_time": "2021-07-19T20:00:00+00:00", + "exit_price": 91.025, + "exit_time": "2021-07-21T20:00:00+00:00", + "pnl": -30.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.238, + "entry_time": "2021-07-23T20:00:00+00:00", + "exit_price": 91.959, + "exit_time": "2021-07-26T20:00:00+00:00", + "pnl": 72.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.122, + "entry_time": "2021-07-29T20:00:00+00:00", + "exit_price": 93.031, + "exit_time": "2021-07-30T20:00:00+00:00", + "pnl": 90.9000000000006, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.16, + "entry_time": "2021-08-04T20:00:00+00:00", + "exit_price": 91.643, + "exit_time": "2021-08-05T20:00:00+00:00", + "pnl": -51.69999999999959, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.188, + "entry_time": "2021-08-09T20:00:00+00:00", + "exit_price": 93.342, + "exit_time": "2021-08-11T20:00:00+00:00", + "pnl": 15.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.618, + "entry_time": "2021-08-13T20:00:00+00:00", + "exit_price": 94.259, + "exit_time": "2021-08-16T20:00:00+00:00", + "pnl": 64.10000000000053, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.98, + "entry_time": "2021-08-19T20:00:00+00:00", + "exit_price": 93.988, + "exit_time": "2021-08-20T20:00:00+00:00", + "pnl": 100.79999999999956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.681, + "entry_time": "2021-08-25T20:00:00+00:00", + "exit_price": 92.705, + "exit_time": "2021-08-26T20:00:00+00:00", + "pnl": 2.400000000000091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.361, + "entry_time": "2021-08-30T20:00:00+00:00", + "exit_price": 93.802, + "exit_time": "2021-09-01T20:00:00+00:00", + "pnl": 144.10000000000025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.154, + "entry_time": "2021-09-03T20:00:00+00:00", + "exit_price": 93.729, + "exit_time": "2021-09-07T20:00:00+00:00", + "pnl": 57.500000000000284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.158, + "entry_time": "2021-09-09T20:00:00+00:00", + "exit_price": 93.741, + "exit_time": "2021-09-10T20:00:00+00:00", + "pnl": -41.70000000000016, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.019, + "entry_time": "2021-09-15T20:00:00+00:00", + "exit_price": 94.422, + "exit_time": "2021-09-16T20:00:00+00:00", + "pnl": -59.70000000000084, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.354, + "entry_time": "2021-09-20T20:00:00+00:00", + "exit_price": 94.986, + "exit_time": "2021-09-22T20:00:00+00:00", + "pnl": 63.2000000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87, + "entry_time": "2021-09-24T20:00:00+00:00", + "exit_price": 94.849, + "exit_time": "2021-09-27T20:00:00+00:00", + "pnl": 97.89999999999992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.309, + "entry_time": "2021-09-30T20:00:00+00:00", + "exit_price": 93.994, + "exit_time": "2021-10-01T20:00:00+00:00", + "pnl": -31.499999999999773, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.074, + "entry_time": "2021-10-06T20:00:00+00:00", + "exit_price": 94.048, + "exit_time": "2021-10-07T20:00:00+00:00", + "pnl": -2.599999999999625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.849, + "entry_time": "2021-10-11T20:00:00+00:00", + "exit_price": 94.437, + "exit_time": "2021-10-13T20:00:00+00:00", + "pnl": 58.799999999999386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37, + "entry_time": "2021-10-15T20:00:00+00:00", + "exit_price": 95.093, + "exit_time": "2021-10-18T20:00:00+00:00", + "pnl": 72.2999999999999, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.029, + "entry_time": "2021-10-21T20:00:00+00:00", + "exit_price": 94.805, + "exit_time": "2021-10-22T20:00:00+00:00", + "pnl": 77.60000000000105, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.249, + "entry_time": "2021-10-27T20:00:00+00:00", + "exit_price": 93.601, + "exit_time": "2021-10-28T20:00:00+00:00", + "pnl": -64.79999999999961, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.241, + "entry_time": "2021-11-01T20:00:00+00:00", + "exit_price": 94.429, + "exit_time": "2021-11-03T20:00:00+00:00", + "pnl": 118.80000000000024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.416, + "entry_time": "2021-11-05T20:00:00+00:00", + "exit_price": 92.51, + "exit_time": "2021-11-08T21:00:00+00:00", + "pnl": -90.59999999999917, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96000000000001, + "entry_time": "2021-11-11T21:00:00+00:00", + "exit_price": 93.531, + "exit_time": "2021-11-12T21:00:00+00:00", + "pnl": 57.099999999999795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.427, + "entry_time": "2021-11-17T21:00:00+00:00", + "exit_price": 92.196, + "exit_time": "2021-11-18T21:00:00+00:00", + "pnl": -23.100000000000875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52, + "entry_time": "2021-11-22T21:00:00+00:00", + "exit_price": 93.982, + "exit_time": "2021-11-24T21:00:00+00:00", + "pnl": 146.20000000000033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82000000000001, + "entry_time": "2021-12-02T21:00:00+00:00", + "exit_price": 91.736, + "exit_time": "2021-12-03T21:00:00+00:00", + "pnl": -8.400000000000318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.70400000000001, + "entry_time": "2021-12-08T21:00:00+00:00", + "exit_price": 92.183, + "exit_time": "2021-12-09T21:00:00+00:00", + "pnl": 47.89999999999992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.131, + "entry_time": "2021-12-13T21:00:00+00:00", + "exit_price": 92.825, + "exit_time": "2021-12-15T21:00:00+00:00", + "pnl": 69.40000000000026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.809, + "entry_time": "2021-12-17T21:00:00+00:00", + "exit_price": 93.226, + "exit_time": "2021-12-20T21:00:00+00:00", + "pnl": -58.29999999999984, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06700000000001, + "entry_time": "2021-12-23T21:00:00+00:00", + "exit_price": 92.105, + "exit_time": "2021-12-27T21:00:00+00:00", + "pnl": -96.20000000000033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.026, + "entry_time": "2021-12-29T21:00:00+00:00", + "exit_price": 93.011, + "exit_time": "2021-12-30T21:00:00+00:00", + "pnl": 98.49999999999994, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.06700000000001, + "entry_time": "2022-01-03T21:00:00+00:00", + "exit_price": 91.642, + "exit_time": "2022-01-05T21:00:00+00:00", + "pnl": -42.50000000000114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.202, + "entry_time": "2022-01-07T21:00:00+00:00", + "exit_price": 91.813, + "exit_time": "2022-01-10T21:00:00+00:00", + "pnl": -38.89999999999958, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.255, + "entry_time": "2022-01-13T21:00:00+00:00", + "exit_price": 91.97500000000001, + "exit_time": "2022-01-14T21:00:00+00:00", + "pnl": -27.999999999998693, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.763, + "entry_time": "2022-01-19T21:00:00+00:00", + "exit_price": 91.432, + "exit_time": "2022-01-20T21:00:00+00:00", + "pnl": -33.10000000000031, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.96600000000001, + "entry_time": "2022-01-24T21:00:00+00:00", + "exit_price": 91.852, + "exit_time": "2022-01-26T21:00:00+00:00", + "pnl": -11.400000000000432, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.81400000000001, + "entry_time": "2022-01-28T21:00:00+00:00", + "exit_price": 91.676, + "exit_time": "2022-01-31T21:00:00+00:00", + "pnl": 86.19999999999948, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.985, + "entry_time": "2022-02-03T21:00:00+00:00", + "exit_price": 91.188, + "exit_time": "2022-02-04T21:00:00+00:00", + "pnl": -79.6999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.97, + "entry_time": "2022-02-09T21:00:00+00:00", + "exit_price": 92.17, + "exit_time": "2022-02-10T21:00:00+00:00", + "pnl": 20.000000000000284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.507, + "entry_time": "2022-02-14T21:00:00+00:00", + "exit_price": 91.156, + "exit_time": "2022-02-16T21:00:00+00:00", + "pnl": -35.09999999999991, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.661, + "entry_time": "2022-02-18T21:00:00+00:00", + "exit_price": 92.287, + "exit_time": "2022-02-22T21:00:00+00:00", + "pnl": 62.60000000000048, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.068, + "entry_time": "2022-02-24T21:00:00+00:00", + "exit_price": 91.351, + "exit_time": "2022-02-25T21:00:00+00:00", + "pnl": 28.300000000000125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.09400000000001, + "entry_time": "2022-03-02T21:00:00+00:00", + "exit_price": 91.421, + "exit_time": "2022-03-03T21:00:00+00:00", + "pnl": -67.30000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.013, + "entry_time": "2022-03-07T21:00:00+00:00", + "exit_price": 91.526, + "exit_time": "2022-03-09T21:00:00+00:00", + "pnl": -48.7000000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.012, + "entry_time": "2022-03-11T21:00:00+00:00", + "exit_price": 90.821, + "exit_time": "2022-03-14T20:00:00+00:00", + "pnl": -19.10000000000025, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.925, + "entry_time": "2022-03-17T20:00:00+00:00", + "exit_price": 90.615, + "exit_time": "2022-03-18T20:00:00+00:00", + "pnl": -131.00000000000023, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.965, + "entry_time": "2022-03-23T20:00:00+00:00", + "exit_price": 90.7, + "exit_time": "2022-03-24T20:00:00+00:00", + "pnl": -26.500000000000057, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.683, + "entry_time": "2022-03-28T20:00:00+00:00", + "exit_price": 91.694, + "exit_time": "2022-03-30T20:00:00+00:00", + "pnl": 101.09999999999957, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87, + "entry_time": "2022-04-01T20:00:00+00:00", + "exit_price": 90.055, + "exit_time": "2022-04-04T20:00:00+00:00", + "pnl": -81.49999999999977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.631, + "entry_time": "2022-04-07T20:00:00+00:00", + "exit_price": 89.96000000000001, + "exit_time": "2022-04-08T20:00:00+00:00", + "pnl": -67.09999999999923, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.759, + "entry_time": "2022-04-13T20:00:00+00:00", + "exit_price": 90.97800000000001, + "exit_time": "2022-04-14T20:00:00+00:00", + "pnl": 121.90000000000083, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.009, + "entry_time": "2022-04-19T20:00:00+00:00", + "exit_price": 90.97200000000001, + "exit_time": "2022-04-20T20:00:00+00:00", + "pnl": 96.30000000000081, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.449, + "entry_time": "2022-04-22T20:00:00+00:00", + "exit_price": 89.93900000000001, + "exit_time": "2022-04-25T20:00:00+00:00", + "pnl": -50.99999999999909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.137, + "entry_time": "2022-04-28T20:00:00+00:00", + "exit_price": 90.92, + "exit_time": "2022-04-29T20:00:00+00:00", + "pnl": 78.30000000000013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.235, + "entry_time": "2022-05-04T20:00:00+00:00", + "exit_price": 92.161, + "exit_time": "2022-05-05T20:00:00+00:00", + "pnl": 92.6000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.242, + "entry_time": "2022-05-09T20:00:00+00:00", + "exit_price": 91.392, + "exit_time": "2022-05-11T20:00:00+00:00", + "pnl": 114.99999999999915, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.798, + "entry_time": "2022-05-13T20:00:00+00:00", + "exit_price": 91.741, + "exit_time": "2022-05-16T20:00:00+00:00", + "pnl": -5.700000000000216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.129, + "entry_time": "2022-05-19T20:00:00+00:00", + "exit_price": 91.294, + "exit_time": "2022-05-20T20:00:00+00:00", + "pnl": 16.499999999999204, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.508, + "entry_time": "2022-05-25T20:00:00+00:00", + "exit_price": 90.206, + "exit_time": "2022-05-26T20:00:00+00:00", + "pnl": -30.19999999999925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.881, + "entry_time": "2022-05-31T20:00:00+00:00", + "exit_price": 90.543, + "exit_time": "2022-06-01T20:00:00+00:00", + "pnl": 66.20000000000061, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.973, + "entry_time": "2022-06-03T20:00:00+00:00", + "exit_price": 90.741, + "exit_time": "2022-06-06T20:00:00+00:00", + "pnl": -23.199999999999932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.848, + "entry_time": "2022-06-09T20:00:00+00:00", + "exit_price": 90.837, + "exit_time": "2022-06-10T20:00:00+00:00", + "pnl": -1.099999999999568, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.825, + "entry_time": "2022-06-15T20:00:00+00:00", + "exit_price": 90.17, + "exit_time": "2022-06-16T20:00:00+00:00", + "pnl": -65.50000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.553, + "entry_time": "2022-06-21T20:00:00+00:00", + "exit_price": 90.601, + "exit_time": "2022-06-22T20:00:00+00:00", + "pnl": 4.800000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.687, + "entry_time": "2022-06-24T20:00:00+00:00", + "exit_price": 90.053, + "exit_time": "2022-06-27T20:00:00+00:00", + "pnl": -63.400000000000034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.794, + "entry_time": "2022-06-30T20:00:00+00:00", + "exit_price": 92.411, + "exit_time": "2022-07-01T20:00:00+00:00", + "pnl": 161.70000000000044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.303, + "entry_time": "2022-07-06T20:00:00+00:00", + "exit_price": 90.141, + "exit_time": "2022-07-07T20:00:00+00:00", + "pnl": -116.19999999999919, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.156, + "entry_time": "2022-07-11T20:00:00+00:00", + "exit_price": 90.998, + "exit_time": "2022-07-13T20:00:00+00:00", + "pnl": -15.800000000000125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.512, + "entry_time": "2022-07-15T20:00:00+00:00", + "exit_price": 91.253, + "exit_time": "2022-07-18T20:00:00+00:00", + "pnl": 74.09999999999997, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.474, + "entry_time": "2022-07-21T20:00:00+00:00", + "exit_price": 89.988, + "exit_time": "2022-07-22T20:00:00+00:00", + "pnl": -148.60000000000042, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.051, + "entry_time": "2022-07-27T20:00:00+00:00", + "exit_price": 91.31400000000001, + "exit_time": "2022-07-28T20:00:00+00:00", + "pnl": 26.300000000000523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.376, + "entry_time": "2022-08-01T20:00:00+00:00", + "exit_price": 91.542, + "exit_time": "2022-08-03T20:00:00+00:00", + "pnl": 16.59999999999968, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.898, + "entry_time": "2022-08-05T20:00:00+00:00", + "exit_price": 92.023, + "exit_time": "2022-08-08T20:00:00+00:00", + "pnl": 12.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.244, + "entry_time": "2022-08-11T20:00:00+00:00", + "exit_price": 92.691, + "exit_time": "2022-08-12T20:00:00+00:00", + "pnl": 44.70000000000027, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.181, + "entry_time": "2022-08-17T20:00:00+00:00", + "exit_price": 92.495, + "exit_time": "2022-08-18T20:00:00+00:00", + "pnl": -68.59999999999928, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.024, + "entry_time": "2022-08-22T20:00:00+00:00", + "exit_price": 93.281, + "exit_time": "2022-08-24T20:00:00+00:00", + "pnl": 25.7000000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.724, + "entry_time": "2022-08-26T20:00:00+00:00", + "exit_price": 93.027, + "exit_time": "2022-08-29T20:00:00+00:00", + "pnl": -69.70000000000027, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.267, + "entry_time": "2022-09-01T20:00:00+00:00", + "exit_price": 93.319, + "exit_time": "2022-09-02T20:00:00+00:00", + "pnl": 5.200000000000671, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.866, + "entry_time": "2022-09-07T20:00:00+00:00", + "exit_price": 93.548, + "exit_time": "2022-09-08T20:00:00+00:00", + "pnl": 68.20000000000022, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.821, + "entry_time": "2022-09-12T20:00:00+00:00", + "exit_price": 94.111, + "exit_time": "2022-09-14T20:00:00+00:00", + "pnl": 29.000000000000625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.782, + "entry_time": "2022-09-16T20:00:00+00:00", + "exit_price": 94.266, + "exit_time": "2022-09-19T20:00:00+00:00", + "pnl": -51.59999999999911, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.888, + "entry_time": "2022-09-22T20:00:00+00:00", + "exit_price": 94.905, + "exit_time": "2022-09-23T20:00:00+00:00", + "pnl": 1.6999999999995907, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.211, + "entry_time": "2022-09-28T20:00:00+00:00", + "exit_price": 93.622, + "exit_time": "2022-09-29T20:00:00+00:00", + "pnl": -58.899999999999864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.289, + "entry_time": "2022-10-03T20:00:00+00:00", + "exit_price": 95.218, + "exit_time": "2022-10-05T20:00:00+00:00", + "pnl": -7.099999999999795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.625, + "entry_time": "2022-10-07T20:00:00+00:00", + "exit_price": 93.711, + "exit_time": "2022-10-10T20:00:00+00:00", + "pnl": -91.40000000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.22, + "entry_time": "2022-10-13T20:00:00+00:00", + "exit_price": 95.266, + "exit_time": "2022-10-14T20:00:00+00:00", + "pnl": 104.60000000000065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.369, + "entry_time": "2022-10-19T20:00:00+00:00", + "exit_price": 94.388, + "exit_time": "2022-10-20T20:00:00+00:00", + "pnl": 101.90000000000055, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.034, + "entry_time": "2022-10-24T20:00:00+00:00", + "exit_price": 94.253, + "exit_time": "2022-10-26T20:00:00+00:00", + "pnl": 21.89999999999941, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.929, + "entry_time": "2022-10-28T20:00:00+00:00", + "exit_price": 95.019, + "exit_time": "2022-10-31T20:00:00+00:00", + "pnl": 9.000000000000341, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.458, + "entry_time": "2022-11-03T20:00:00+00:00", + "exit_price": 95.965, + "exit_time": "2022-11-04T20:00:00+00:00", + "pnl": -49.2999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.23700000000001, + "entry_time": "2022-11-09T21:00:00+00:00", + "exit_price": 94.586, + "exit_time": "2022-11-10T21:00:00+00:00", + "pnl": -65.10000000000105, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.712, + "entry_time": "2022-11-14T21:00:00+00:00", + "exit_price": 94.086, + "exit_time": "2022-11-16T21:00:00+00:00", + "pnl": 37.39999999999952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.205, + "entry_time": "2022-11-18T21:00:00+00:00", + "exit_price": 94.623, + "exit_time": "2022-11-21T21:00:00+00:00", + "pnl": 41.80000000000064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54, + "entry_time": "2022-11-25T18:00:00+00:00", + "exit_price": 92.916, + "exit_time": "2022-12-01T21:00:00+00:00", + "pnl": -62.400000000000944, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.256, + "entry_time": "2022-12-05T21:00:00+00:00", + "exit_price": 93.35900000000001, + "exit_time": "2022-12-07T21:00:00+00:00", + "pnl": 10.300000000000864, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.218, + "entry_time": "2022-12-09T21:00:00+00:00", + "exit_price": 93.916, + "exit_time": "2022-12-12T21:00:00+00:00", + "pnl": 69.79999999999933, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.424, + "entry_time": "2022-12-15T21:00:00+00:00", + "exit_price": 92.996, + "exit_time": "2022-12-16T21:00:00+00:00", + "pnl": -42.80000000000115, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.738, + "entry_time": "2022-12-21T21:00:00+00:00", + "exit_price": 91.786, + "exit_time": "2022-12-22T21:00:00+00:00", + "pnl": 104.80000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.399, + "entry_time": "2022-12-27T21:00:00+00:00", + "exit_price": 92.116, + "exit_time": "2022-12-28T21:00:00+00:00", + "pnl": -28.300000000000125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.771, + "entry_time": "2022-12-30T21:00:00+00:00", + "exit_price": 92.97800000000001, + "exit_time": "2023-01-03T21:00:00+00:00", + "pnl": 20.700000000000784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.82300000000001, + "entry_time": "2023-01-05T21:00:00+00:00", + "exit_price": 92.889, + "exit_time": "2023-01-06T21:00:00+00:00", + "pnl": 6.599999999998829, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.776, + "entry_time": "2023-01-11T21:00:00+00:00", + "exit_price": 92.849, + "exit_time": "2023-01-12T21:00:00+00:00", + "pnl": 7.30000000000075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.165, + "entry_time": "2023-01-17T21:00:00+00:00", + "exit_price": 93.645, + "exit_time": "2023-01-18T21:00:00+00:00", + "pnl": 47.99999999999898, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.349, + "entry_time": "2023-01-20T21:00:00+00:00", + "exit_price": 93.529, + "exit_time": "2023-01-23T21:00:00+00:00", + "pnl": 117.99999999999926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.145, + "entry_time": "2023-01-26T21:00:00+00:00", + "exit_price": 93.092, + "exit_time": "2023-01-27T21:00:00+00:00", + "pnl": -105.29999999999973, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.034, + "entry_time": "2023-02-01T21:00:00+00:00", + "exit_price": 92.672, + "exit_time": "2023-02-02T21:00:00+00:00", + "pnl": -136.2000000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.253, + "entry_time": "2023-02-06T21:00:00+00:00", + "exit_price": 93.168, + "exit_time": "2023-02-08T21:00:00+00:00", + "pnl": -8.499999999999375, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13, + "entry_time": "2023-02-10T21:00:00+00:00", + "exit_price": 94.092, + "exit_time": "2023-02-13T21:00:00+00:00", + "pnl": 96.20000000000033, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.536, + "entry_time": "2023-02-16T21:00:00+00:00", + "exit_price": 94.21600000000001, + "exit_time": "2023-02-17T21:00:00+00:00", + "pnl": -31.999999999999318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.185, + "entry_time": "2023-02-22T21:00:00+00:00", + "exit_price": 93.989, + "exit_time": "2023-02-23T21:00:00+00:00", + "pnl": -19.599999999999795, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.45400000000001, + "entry_time": "2023-02-27T21:00:00+00:00", + "exit_price": 94.437, + "exit_time": "2023-03-01T21:00:00+00:00", + "pnl": -1.7000000000010118, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.958, + "entry_time": "2023-03-03T21:00:00+00:00", + "exit_price": 93.665, + "exit_time": "2023-03-06T21:00:00+00:00", + "pnl": -29.299999999999216, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35000000000001, + "entry_time": "2023-03-09T21:00:00+00:00", + "exit_price": 93.062, + "exit_time": "2023-03-10T21:00:00+00:00", + "pnl": -28.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.884, + "entry_time": "2023-03-15T20:00:00+00:00", + "exit_price": 94.08200000000001, + "exit_time": "2023-03-16T20:00:00+00:00", + "pnl": 19.80000000000075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.295, + "entry_time": "2023-03-20T20:00:00+00:00", + "exit_price": 92.05, + "exit_time": "2023-03-22T20:00:00+00:00", + "pnl": -24.500000000000455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.845, + "entry_time": "2023-03-24T20:00:00+00:00", + "exit_price": 93.328, + "exit_time": "2023-03-27T20:00:00+00:00", + "pnl": 148.3000000000004, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.949, + "entry_time": "2023-03-30T20:00:00+00:00", + "exit_price": 93.548, + "exit_time": "2023-03-31T20:00:00+00:00", + "pnl": 59.900000000000375, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.73100000000001, + "entry_time": "2023-04-05T20:00:00+00:00", + "exit_price": 92.13, + "exit_time": "2023-04-06T20:00:00+00:00", + "pnl": -60.10000000000133, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.325, + "entry_time": "2023-04-11T20:00:00+00:00", + "exit_price": 92.404, + "exit_time": "2023-04-12T20:00:00+00:00", + "pnl": -92.10000000000065, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56, + "entry_time": "2023-04-14T20:00:00+00:00", + "exit_price": 92.82900000000001, + "exit_time": "2023-04-17T20:00:00+00:00", + "pnl": 26.900000000000546, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.799, + "entry_time": "2023-04-20T20:00:00+00:00", + "exit_price": 92.95100000000001, + "exit_time": "2023-04-21T20:00:00+00:00", + "pnl": 15.200000000000102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35900000000001, + "entry_time": "2023-04-26T20:00:00+00:00", + "exit_price": 92.905, + "exit_time": "2023-04-27T20:00:00+00:00", + "pnl": -45.40000000000077, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.681, + "entry_time": "2023-05-01T20:00:00+00:00", + "exit_price": 92.82900000000001, + "exit_time": "2023-05-03T20:00:00+00:00", + "pnl": 14.800000000001035, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.06700000000001, + "entry_time": "2023-05-05T20:00:00+00:00", + "exit_price": 93.19500000000001, + "exit_time": "2023-05-08T20:00:00+00:00", + "pnl": 12.800000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.877, + "entry_time": "2023-05-11T20:00:00+00:00", + "exit_price": 93.476, + "exit_time": "2023-05-12T20:00:00+00:00", + "pnl": 159.90000000000038, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.775, + "entry_time": "2023-05-17T20:00:00+00:00", + "exit_price": 93.218, + "exit_time": "2023-05-18T20:00:00+00:00", + "pnl": 44.299999999999784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88, + "entry_time": "2023-05-22T20:00:00+00:00", + "exit_price": 93.96900000000001, + "exit_time": "2023-05-24T20:00:00+00:00", + "pnl": 8.900000000001285, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.333, + "entry_time": "2023-05-26T20:00:00+00:00", + "exit_price": 94.059, + "exit_time": "2023-05-30T20:00:00+00:00", + "pnl": -27.40000000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.762, + "entry_time": "2023-06-01T20:00:00+00:00", + "exit_price": 94.25, + "exit_time": "2023-06-02T20:00:00+00:00", + "pnl": 148.79999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.294, + "entry_time": "2023-06-07T20:00:00+00:00", + "exit_price": 94.60300000000001, + "exit_time": "2023-06-08T20:00:00+00:00", + "pnl": 30.90000000000117, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.427, + "entry_time": "2023-06-12T20:00:00+00:00", + "exit_price": 94.339, + "exit_time": "2023-06-14T20:00:00+00:00", + "pnl": -8.800000000000807, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37, + "entry_time": "2023-06-16T20:00:00+00:00", + "exit_price": 94.163, + "exit_time": "2023-06-20T20:00:00+00:00", + "pnl": -20.700000000000784, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.953, + "entry_time": "2023-06-22T20:00:00+00:00", + "exit_price": 94.374, + "exit_time": "2023-06-23T20:00:00+00:00", + "pnl": -57.90000000000077, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.898, + "entry_time": "2023-06-28T20:00:00+00:00", + "exit_price": 94.566, + "exit_time": "2023-06-29T20:00:00+00:00", + "pnl": 66.80000000000064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.277, + "entry_time": "2023-07-03T17:00:00+00:00", + "exit_price": 94.941, + "exit_time": "2023-07-10T20:00:00+00:00", + "pnl": 66.40000000000015, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.493, + "entry_time": "2023-07-13T20:00:00+00:00", + "exit_price": 94.34700000000001, + "exit_time": "2023-07-14T20:00:00+00:00", + "pnl": -14.599999999998658, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.23700000000001, + "entry_time": "2023-07-19T20:00:00+00:00", + "exit_price": 94.334, + "exit_time": "2023-07-20T20:00:00+00:00", + "pnl": 109.69999999999942, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.531, + "entry_time": "2023-07-24T20:00:00+00:00", + "exit_price": 93.304, + "exit_time": "2023-07-26T20:00:00+00:00", + "pnl": -22.700000000000387, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.055, + "entry_time": "2023-07-28T20:00:00+00:00", + "exit_price": 93.971, + "exit_time": "2023-07-31T20:00:00+00:00", + "pnl": -8.400000000000318, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.498, + "entry_time": "2023-08-03T20:00:00+00:00", + "exit_price": 93.961, + "exit_time": "2023-08-04T20:00:00+00:00", + "pnl": 46.299999999999386, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.21600000000001, + "entry_time": "2023-08-09T20:00:00+00:00", + "exit_price": 93.22800000000001, + "exit_time": "2023-08-10T20:00:00+00:00", + "pnl": -98.79999999999995, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.656, + "entry_time": "2023-08-14T20:00:00+00:00", + "exit_price": 94.398, + "exit_time": "2023-08-16T20:00:00+00:00", + "pnl": 174.19999999999902, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.089, + "entry_time": "2023-08-18T20:00:00+00:00", + "exit_price": 93.399, + "exit_time": "2023-08-21T20:00:00+00:00", + "pnl": -68.99999999999977, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.799, + "entry_time": "2023-08-24T20:00:00+00:00", + "exit_price": 93.688, + "exit_time": "2023-08-25T20:00:00+00:00", + "pnl": 88.89999999999958, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.791, + "entry_time": "2023-08-30T20:00:00+00:00", + "exit_price": 92.57300000000001, + "exit_time": "2023-08-31T20:00:00+00:00", + "pnl": -121.79999999999893, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.041, + "entry_time": "2023-09-05T20:00:00+00:00", + "exit_price": 94.468, + "exit_time": "2023-09-06T20:00:00+00:00", + "pnl": 142.70000000000067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.23700000000001, + "entry_time": "2023-09-08T20:00:00+00:00", + "exit_price": 94.095, + "exit_time": "2023-09-11T20:00:00+00:00", + "pnl": -14.200000000001012, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.791, + "entry_time": "2023-09-14T20:00:00+00:00", + "exit_price": 94.029, + "exit_time": "2023-09-15T20:00:00+00:00", + "pnl": -76.20000000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.173, + "entry_time": "2023-09-20T20:00:00+00:00", + "exit_price": 93.583, + "exit_time": "2023-09-21T20:00:00+00:00", + "pnl": -59.00000000000034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.115, + "entry_time": "2023-09-25T20:00:00+00:00", + "exit_price": 93.162, + "exit_time": "2023-09-27T20:00:00+00:00", + "pnl": -95.29999999999887, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.496, + "entry_time": "2023-09-29T20:00:00+00:00", + "exit_price": 92.842, + "exit_time": "2023-10-02T20:00:00+00:00", + "pnl": -65.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.019, + "entry_time": "2023-10-05T20:00:00+00:00", + "exit_price": 92.773, + "exit_time": "2023-10-06T20:00:00+00:00", + "pnl": -24.600000000000932, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.345, + "entry_time": "2023-10-11T20:00:00+00:00", + "exit_price": 92.322, + "exit_time": "2023-10-12T20:00:00+00:00", + "pnl": -2.2999999999996135, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.994, + "entry_time": "2023-10-16T20:00:00+00:00", + "exit_price": 91.586, + "exit_time": "2023-10-18T20:00:00+00:00", + "pnl": -40.800000000000125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.467, + "entry_time": "2023-10-20T20:00:00+00:00", + "exit_price": 92.361, + "exit_time": "2023-10-23T20:00:00+00:00", + "pnl": 89.40000000000055, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.379, + "entry_time": "2023-10-26T20:00:00+00:00", + "exit_price": 91.412, + "exit_time": "2023-10-27T20:00:00+00:00", + "pnl": -96.69999999999987, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43, + "entry_time": "2023-11-01T20:00:00+00:00", + "exit_price": 91.133, + "exit_time": "2023-11-02T20:00:00+00:00", + "pnl": -29.700000000001125, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.967, + "entry_time": "2023-11-06T21:00:00+00:00", + "exit_price": 91.602, + "exit_time": "2023-11-08T21:00:00+00:00", + "pnl": 63.50000000000051, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.416, + "entry_time": "2023-11-10T21:00:00+00:00", + "exit_price": 92.325, + "exit_time": "2023-11-13T21:00:00+00:00", + "pnl": -9.099999999999397, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.94500000000001, + "entry_time": "2023-11-16T21:00:00+00:00", + "exit_price": 92.019, + "exit_time": "2023-11-17T21:00:00+00:00", + "pnl": -92.6000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.744, + "entry_time": "2023-11-22T21:00:00+00:00", + "exit_price": 93.688, + "exit_time": "2023-11-24T18:00:00+00:00", + "pnl": 94.40000000000026, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.139, + "entry_time": "2023-11-27T21:00:00+00:00", + "exit_price": 92.476, + "exit_time": "2023-11-29T21:00:00+00:00", + "pnl": -166.29999999999967, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76, + "entry_time": "2023-12-01T21:00:00+00:00", + "exit_price": 93.44800000000001, + "exit_time": "2023-12-04T21:00:00+00:00", + "pnl": 68.80000000000024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.583, + "entry_time": "2023-12-07T21:00:00+00:00", + "exit_price": 94.144, + "exit_time": "2023-12-08T21:00:00+00:00", + "pnl": 56.100000000000705, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.056, + "entry_time": "2023-12-13T21:00:00+00:00", + "exit_price": 93.35600000000001, + "exit_time": "2023-12-14T21:00:00+00:00", + "pnl": 130.00000000000114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.194, + "entry_time": "2023-12-18T21:00:00+00:00", + "exit_price": 92.511, + "exit_time": "2023-12-20T21:00:00+00:00", + "pnl": 31.699999999999307, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.914, + "entry_time": "2023-12-22T21:00:00+00:00", + "exit_price": 92.894, + "exit_time": "2023-12-26T21:00:00+00:00", + "pnl": -101.9999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.128, + "entry_time": "2023-12-28T21:00:00+00:00", + "exit_price": 93.66, + "exit_time": "2023-12-29T21:00:00+00:00", + "pnl": 53.19999999999965, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.892, + "entry_time": "2024-01-03T21:00:00+00:00", + "exit_price": 94.589, + "exit_time": "2024-01-04T21:00:00+00:00", + "pnl": -30.299999999999727, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.077, + "entry_time": "2024-01-08T21:00:00+00:00", + "exit_price": 94.764, + "exit_time": "2024-01-10T21:00:00+00:00", + "pnl": -31.30000000000024, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.805, + "entry_time": "2024-01-12T21:00:00+00:00", + "exit_price": 94.409, + "exit_time": "2024-01-16T21:00:00+00:00", + "pnl": -39.60000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.092, + "entry_time": "2024-01-18T21:00:00+00:00", + "exit_price": 94.92, + "exit_time": "2024-01-19T21:00:00+00:00", + "pnl": -17.199999999999704, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.886, + "entry_time": "2024-01-24T21:00:00+00:00", + "exit_price": 95.417, + "exit_time": "2024-01-25T21:00:00+00:00", + "pnl": 53.10000000000059, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.117, + "entry_time": "2024-01-29T21:00:00+00:00", + "exit_price": 94.586, + "exit_time": "2024-01-31T21:00:00+00:00", + "pnl": 46.89999999999941, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.519, + "entry_time": "2024-02-02T21:00:00+00:00", + "exit_price": 95.646, + "exit_time": "2024-02-05T21:00:00+00:00", + "pnl": 12.699999999999534, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.974, + "entry_time": "2024-02-08T21:00:00+00:00", + "exit_price": 96.257, + "exit_time": "2024-02-09T21:00:00+00:00", + "pnl": 128.30000000000013, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.384, + "entry_time": "2024-02-14T21:00:00+00:00", + "exit_price": 94.768, + "exit_time": "2024-02-15T21:00:00+00:00", + "pnl": 38.400000000000034, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.926, + "entry_time": "2024-02-20T21:00:00+00:00", + "exit_price": 95.284, + "exit_time": "2024-02-21T21:00:00+00:00", + "pnl": 35.80000000000041, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.645, + "entry_time": "2024-02-23T21:00:00+00:00", + "exit_price": 94.632, + "exit_time": "2024-02-26T21:00:00+00:00", + "pnl": -1.2999999999991019, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.994, + "entry_time": "2024-02-29T21:00:00+00:00", + "exit_price": 93.516, + "exit_time": "2024-03-01T21:00:00+00:00", + "pnl": 52.20000000000056, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.208, + "entry_time": "2024-03-06T21:00:00+00:00", + "exit_price": 93.035, + "exit_time": "2024-03-07T21:00:00+00:00", + "pnl": -17.300000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.57900000000001, + "entry_time": "2024-03-11T20:00:00+00:00", + "exit_price": 93.424, + "exit_time": "2024-03-13T20:00:00+00:00", + "pnl": -15.500000000000114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.322, + "entry_time": "2024-03-15T20:00:00+00:00", + "exit_price": 93.745, + "exit_time": "2024-03-18T20:00:00+00:00", + "pnl": 42.30000000000018, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56700000000001, + "entry_time": "2024-03-21T20:00:00+00:00", + "exit_price": 90.994, + "exit_time": "2024-03-22T20:00:00+00:00", + "pnl": -157.30000000000075, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.365, + "entry_time": "2024-03-27T20:00:00+00:00", + "exit_price": 92.886, + "exit_time": "2024-03-28T20:00:00+00:00", + "pnl": 52.10000000000008, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.875, + "entry_time": "2024-04-02T20:00:00+00:00", + "exit_price": 92.605, + "exit_time": "2024-04-03T20:00:00+00:00", + "pnl": -26.999999999999602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.203, + "entry_time": "2024-04-05T20:00:00+00:00", + "exit_price": 92.389, + "exit_time": "2024-04-08T20:00:00+00:00", + "pnl": 18.599999999999284, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.968, + "entry_time": "2024-04-11T20:00:00+00:00", + "exit_price": 91.888, + "exit_time": "2024-04-12T20:00:00+00:00", + "pnl": -7.9999999999998295, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.872, + "entry_time": "2024-04-17T20:00:00+00:00", + "exit_price": 92.005, + "exit_time": "2024-04-18T20:00:00+00:00", + "pnl": -86.70000000000044, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.84700000000001, + "entry_time": "2024-04-22T20:00:00+00:00", + "exit_price": 91.521, + "exit_time": "2024-04-24T20:00:00+00:00", + "pnl": -132.60000000000076, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.615, + "entry_time": "2024-04-26T20:00:00+00:00", + "exit_price": 92.84, + "exit_time": "2024-04-29T20:00:00+00:00", + "pnl": 22.500000000000853, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.018, + "entry_time": "2024-05-02T20:00:00+00:00", + "exit_price": 93.19500000000001, + "exit_time": "2024-05-03T20:00:00+00:00", + "pnl": 117.70000000000067, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.761, + "entry_time": "2024-05-08T20:00:00+00:00", + "exit_price": 93.992, + "exit_time": "2024-05-09T20:00:00+00:00", + "pnl": 23.100000000000875, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.186, + "entry_time": "2024-05-13T20:00:00+00:00", + "exit_price": 93.292, + "exit_time": "2024-05-15T20:00:00+00:00", + "pnl": 10.599999999999454, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.053, + "entry_time": "2024-05-17T20:00:00+00:00", + "exit_price": 92.898, + "exit_time": "2024-05-20T20:00:00+00:00", + "pnl": -15.500000000000114, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.003, + "entry_time": "2024-05-23T20:00:00+00:00", + "exit_price": 93.803, + "exit_time": "2024-05-24T20:00:00+00:00", + "pnl": 79.99999999999972, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.531, + "entry_time": "2024-05-29T20:00:00+00:00", + "exit_price": 93.551, + "exit_time": "2024-05-30T20:00:00+00:00", + "pnl": 1.999999999999602, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.921, + "entry_time": "2024-06-03T20:00:00+00:00", + "exit_price": 93.378, + "exit_time": "2024-06-05T20:00:00+00:00", + "pnl": -54.30000000000064, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.738, + "entry_time": "2024-06-07T20:00:00+00:00", + "exit_price": 94.058, + "exit_time": "2024-06-10T20:00:00+00:00", + "pnl": 32.00000000000074, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.71600000000001, + "entry_time": "2024-06-13T20:00:00+00:00", + "exit_price": 92.354, + "exit_time": "2024-06-14T20:00:00+00:00", + "pnl": -36.2000000000009, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.20400000000001, + "entry_time": "2024-06-20T20:00:00+00:00", + "exit_price": 93.86, + "exit_time": "2024-06-26T20:00:00+00:00", + "pnl": -34.40000000000083, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.769, + "entry_time": "2024-06-28T20:00:00+00:00", + "exit_price": 94.267, + "exit_time": "2024-07-01T20:00:00+00:00", + "pnl": 149.79999999999905, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.501, + "entry_time": "2024-07-05T20:00:00+00:00", + "exit_price": 92.97200000000001, + "exit_time": "2024-07-11T20:00:00+00:00", + "pnl": -52.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.501, + "entry_time": "2024-07-15T20:00:00+00:00", + "exit_price": 92.553, + "exit_time": "2024-07-17T20:00:00+00:00", + "pnl": 5.19999999999925, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.928, + "entry_time": "2024-07-19T20:00:00+00:00", + "exit_price": 92.018, + "exit_time": "2024-07-22T20:00:00+00:00", + "pnl": 9.000000000000341, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.988, + "entry_time": "2024-07-25T20:00:00+00:00", + "exit_price": 92.135, + "exit_time": "2024-07-26T20:00:00+00:00", + "pnl": 14.700000000000557, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.85600000000001, + "entry_time": "2024-07-31T20:00:00+00:00", + "exit_price": 92.251, + "exit_time": "2024-08-01T20:00:00+00:00", + "pnl": 39.4999999999996, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.903, + "entry_time": "2024-08-05T20:00:00+00:00", + "exit_price": 91.614, + "exit_time": "2024-08-07T20:00:00+00:00", + "pnl": -28.900000000000148, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.266, + "entry_time": "2024-08-09T20:00:00+00:00", + "exit_price": 93.255, + "exit_time": "2024-08-12T20:00:00+00:00", + "pnl": 98.89999999999901, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.888, + "entry_time": "2024-08-15T20:00:00+00:00", + "exit_price": 92.534, + "exit_time": "2024-08-16T20:00:00+00:00", + "pnl": -35.39999999999992, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.352, + "entry_time": "2024-08-21T20:00:00+00:00", + "exit_price": 93.822, + "exit_time": "2024-08-22T20:00:00+00:00", + "pnl": 46.999999999999886, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.013, + "entry_time": "2024-08-26T20:00:00+00:00", + "exit_price": 93.143, + "exit_time": "2024-08-28T20:00:00+00:00", + "pnl": 112.99999999999955, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.316, + "entry_time": "2024-08-30T20:00:00+00:00", + "exit_price": 92.433, + "exit_time": "2024-09-03T20:00:00+00:00", + "pnl": -188.29999999999956, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.742, + "entry_time": "2024-09-05T20:00:00+00:00", + "exit_price": 93.047, + "exit_time": "2024-09-06T20:00:00+00:00", + "pnl": 30.49999999999926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.668, + "entry_time": "2024-09-11T20:00:00+00:00", + "exit_price": 91.661, + "exit_time": "2024-09-12T20:00:00+00:00", + "pnl": -100.7000000000005, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.179, + "entry_time": "2024-09-16T20:00:00+00:00", + "exit_price": 91.58, + "exit_time": "2024-09-18T20:00:00+00:00", + "pnl": 40.099999999999625, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.285, + "entry_time": "2024-09-20T20:00:00+00:00", + "exit_price": 90.104, + "exit_time": "2024-09-23T20:00:00+00:00", + "pnl": -18.09999999999974, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.052, + "entry_time": "2024-09-26T20:00:00+00:00", + "exit_price": 91.20400000000001, + "exit_time": "2024-09-27T20:00:00+00:00", + "pnl": 15.200000000000102, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.551, + "entry_time": "2024-10-02T20:00:00+00:00", + "exit_price": 90.177, + "exit_time": "2024-10-03T20:00:00+00:00", + "pnl": -137.39999999999952, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83, + "entry_time": "2024-10-07T20:00:00+00:00", + "exit_price": 91.072, + "exit_time": "2024-10-09T20:00:00+00:00", + "pnl": 24.200000000000443, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.139, + "entry_time": "2024-10-11T20:00:00+00:00", + "exit_price": 90.93, + "exit_time": "2024-10-14T20:00:00+00:00", + "pnl": -20.899999999998897, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.494, + "entry_time": "2024-10-17T20:00:00+00:00", + "exit_price": 89.863, + "exit_time": "2024-10-18T20:00:00+00:00", + "pnl": -63.10000000000002, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.811, + "entry_time": "2024-10-23T20:00:00+00:00", + "exit_price": 89.547, + "exit_time": "2024-10-24T20:00:00+00:00", + "pnl": -26.400000000001, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.85600000000001, + "entry_time": "2024-10-28T20:00:00+00:00", + "exit_price": 89.886, + "exit_time": "2024-10-30T20:00:00+00:00", + "pnl": 2.9999999999986926, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.52, + "entry_time": "2024-11-01T20:00:00+00:00", + "exit_price": 89.584, + "exit_time": "2024-11-04T21:00:00+00:00", + "pnl": 106.40000000000072, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.328, + "entry_time": "2024-11-07T21:00:00+00:00", + "exit_price": 89.065, + "exit_time": "2024-11-08T21:00:00+00:00", + "pnl": -26.300000000000523, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.21000000000001, + "entry_time": "2024-11-13T21:00:00+00:00", + "exit_price": 88.452, + "exit_time": "2024-11-14T21:00:00+00:00", + "pnl": -75.80000000000098, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.85900000000001, + "entry_time": "2024-11-18T21:00:00+00:00", + "exit_price": 88.672, + "exit_time": "2024-11-20T21:00:00+00:00", + "pnl": 81.29999999999882, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.369, + "entry_time": "2024-11-22T21:00:00+00:00", + "exit_price": 89.07000000000001, + "exit_time": "2024-11-25T21:00:00+00:00", + "pnl": -29.89999999999924, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.84400000000001, + "entry_time": "2024-11-29T18:00:00+00:00", + "exit_price": 89.039, + "exit_time": "2024-12-05T21:00:00+00:00", + "pnl": 19.499999999999318, + "size": 100.0 + } + ] + }, + "ml4t_result": { + "capabilities": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "extra": {}, + "fills": [ + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.119, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.032, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.672, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.865, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.745, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.432, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.592, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.213, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.933, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.129, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.21, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-01-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.414, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.742, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.153, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.958, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.398, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.714, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.687, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.197, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.753, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.67, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.944, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.276, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.614, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.444, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.487, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.394, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.38, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.783, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.044, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.006, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 101.073, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.85, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.163, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.598, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.102, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.785, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.284, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.408, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.529, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.654, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.845, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 100.833, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.172, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 100.89, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.429, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.671, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.998, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.689, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.907, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.789, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.443, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.31, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.913, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.246, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.86, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-06-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.942, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.476, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.222, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.275, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.229, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.98, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.523, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.848, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.079, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.463, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.336, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.695, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.931, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.956, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.857, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.834, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.16, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.416, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.923, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.974, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.214, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-08-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.083, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.001, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.653, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.474, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.313, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.732, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.9, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.388, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.12, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.713, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.383, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.584, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 99.318, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.16, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.362, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.91, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.73, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-10-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.608, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 99.216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.491, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.95, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.827, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.93, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.475, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.101, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.485, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.641, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.76, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-11-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.799, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 98.34, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.428, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.619, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 98.386, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.124, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.539, + "quantity": 100.0, + "side": "sell", + "timestamp": "2020-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 97.603, + "quantity": 100.0, + "side": "buy", + "timestamp": "2020-12-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 97.115, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.28, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.533, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.079, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.796, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.248, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.556, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.557, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.251, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.265, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.261, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.948, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.051, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.97, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.348, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.318, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.625, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.236, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.403, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.323, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.082, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.588, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.802, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.783, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.004, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.499, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.976, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-03-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.471, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.724, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.199, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.341, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.729, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.256, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.774, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.493, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.685, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-04-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.267, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.415, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.364, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.554, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.502, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.556, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.081, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.813, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-05-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.147, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-05-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.896, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.577, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.333, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.95, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.166, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.256, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.456, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.788, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.941, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.653, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.824, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.78, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.098, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.642, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.025, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.238, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.959, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.122, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-07-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.031, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-07-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.16, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.643, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.188, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.342, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.618, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.259, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.98, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.705, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.361, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.802, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.154, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.729, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.158, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.422, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.354, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.986, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.87, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.309, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-09-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.074, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.048, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.849, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.37, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.093, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.029, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.805, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.249, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.601, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.241, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.429, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.416, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.51, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.96, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.531, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.196, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.52, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.982, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.82, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.736, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.704, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.183, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.131, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.825, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.809, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.226, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.105, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.026, + "quantity": 100.0, + "side": "buy", + "timestamp": "2021-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.011, + "quantity": 100.0, + "side": "sell", + "timestamp": "2021-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.642, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.202, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.813, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.255, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.975, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.763, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.432, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.966, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.852, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.814, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-01-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.676, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.985, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.188, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.97, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.17, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.507, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.156, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.661, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.287, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.068, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-02-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.351, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-02-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.094, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.421, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.526, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.012, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.821, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.925, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.615, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.965, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.7, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.683, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.694, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.87, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.055, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.631, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.96, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.759, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.009, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.449, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.939, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.137, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-04-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.92, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.235, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.161, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.242, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.392, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.798, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.129, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.294, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.508, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.206, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.881, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-05-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.543, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.973, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.741, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.848, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.837, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.825, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.17, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.553, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.601, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.687, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.053, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-06-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.794, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-06-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.411, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.303, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.141, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.156, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.998, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.512, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.474, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.988, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.051, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-07-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.314, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.376, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.542, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.023, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.244, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.691, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.181, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.495, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.024, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.281, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.724, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.027, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-08-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.267, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.319, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.866, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.821, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.111, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.782, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.211, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-09-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.622, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.289, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.625, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.711, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.22, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.266, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.388, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.253, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.929, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-10-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 96.458, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.965, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.237, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.712, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.086, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.205, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.623, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-11-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.54, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.256, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.359, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.218, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.916, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.424, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.996, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.786, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.399, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.116, + "quantity": 100.0, + "side": "sell", + "timestamp": "2022-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.771, + "quantity": 100.0, + "side": "buy", + "timestamp": "2022-12-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.978, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.823, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.889, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.776, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.849, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.165, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.645, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.349, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.529, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.145, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-01-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-01-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.034, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.253, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.168, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.13, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.092, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.536, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.216, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.185, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.989, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.454, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-02-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.437, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.958, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.665, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.35, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.062, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.884, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.082, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.295, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.05, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.845, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.328, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.949, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-03-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.548, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-03-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.731, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.13, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.325, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.404, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.56, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.829, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.951, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.359, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.905, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-04-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.681, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.829, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.067, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.195, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.877, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.775, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.218, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.88, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.969, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.333, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-05-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.059, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.762, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.25, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.294, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.603, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.427, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.339, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.37, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.163, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.953, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.374, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.898, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.566, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-06-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.277, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.941, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.493, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.347, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.237, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.334, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.304, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.055, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-07-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.971, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.498, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.961, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.216, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.228, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.656, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.398, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.089, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.399, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.799, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.573, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-08-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.041, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.468, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.237, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.095, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.791, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.029, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.173, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.583, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.115, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.162, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.496, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-09-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.842, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.019, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.773, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.345, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.322, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.467, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.361, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.379, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-10-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.412, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-10-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.43, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.133, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.967, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.602, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.416, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.325, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.945, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.019, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.744, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.688, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-11-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.476, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.76, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.448, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.583, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.144, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.056, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.356, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.194, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.511, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.914, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.894, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.128, + "quantity": 100.0, + "side": "buy", + "timestamp": "2023-12-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.66, + "quantity": 100.0, + "side": "sell", + "timestamp": "2023-12-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.892, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.589, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.077, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.764, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.805, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.409, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.092, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.92, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.886, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.417, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.117, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-01-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.586, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-01-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 95.519, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.646, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.974, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 96.257, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.384, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.768, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.926, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 95.284, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.645, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.632, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-02-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.994, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-02-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.516, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.208, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.035, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.579, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.424, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.322, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.745, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.567, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.994, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.365, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-03-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-03-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.875, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.605, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.203, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.389, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.968, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.888, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.872, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.005, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.847, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.521, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.615, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-04-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.84, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-04-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.018, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.195, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.761, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.992, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.186, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.292, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.053, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.898, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.003, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.803, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.531, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-05-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.551, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-05-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.921, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.378, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.738, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.058, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-10T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.716, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.354, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.204, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.86, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-06-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.769, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-06-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 94.267, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.501, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.972, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.501, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.553, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.928, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-19T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.018, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.988, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.135, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-07-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.856, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-07-31T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.251, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.903, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.614, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.266, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.255, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.888, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-15T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.534, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 93.352, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-21T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.822, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.013, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.143, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-08-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 94.316, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-08-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 92.433, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.742, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-05T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 93.047, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-06T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 92.668, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.661, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-12T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.179, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-16T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.58, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.285, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.104, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.052, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-09-26T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.204, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-09-27T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.551, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-02T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.177, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-03T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.83, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 91.072, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-09T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 91.139, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-11T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 90.93, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 90.494, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-17T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.863, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.811, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-23T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.547, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-24T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.856, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-10-28T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.886, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-10-30T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.52, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-01T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.584, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-04T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.328, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-07T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.065, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-08T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.21, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-13T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.452, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-14T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 87.859, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-18T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 88.672, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-20T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 89.369, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-22T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.07, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-11-25T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "", + "price": 88.844, + "quantity": 100.0, + "side": "buy", + "timestamp": "2024-11-29T00:00:00" + }, + { + "asset": "TEST", + "commission": 0.0, + "exit_reason": "signal", + "price": 89.039, + "quantity": 100.0, + "side": "sell", + "timestamp": "2024-12-05T00:00:00" + } + ], + "final_value": 100811.00000000025, + "framework": "ml4t.backtest", + "num_trades": 337, + "total_pnl": 811.0000000002474, + "trades": [ + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.119, + "entry_time": "2020-01-03T00:00:00", + "exit_price": 100.032, + "exit_reason": "signal", + "exit_time": "2020-01-06T00:00:00", + "pnl": -108.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.672, + "entry_time": "2020-01-09T00:00:00", + "exit_price": 99.865, + "exit_reason": "signal", + "exit_time": "2020-01-10T00:00:00", + "pnl": 19.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.745, + "entry_time": "2020-01-15T00:00:00", + "exit_price": 99.432, + "exit_reason": "signal", + "exit_time": "2020-01-16T00:00:00", + "pnl": -31.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.592, + "entry_time": "2020-01-21T00:00:00", + "exit_price": 99.213, + "exit_reason": "signal", + "exit_time": "2020-01-22T00:00:00", + "pnl": -37.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.933, + "entry_time": "2020-01-24T00:00:00", + "exit_price": 100.129, + "exit_reason": "signal", + "exit_time": "2020-01-27T00:00:00", + "pnl": 19.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.21, + "entry_time": "2020-01-30T00:00:00", + "exit_price": 99.284, + "exit_reason": "signal", + "exit_time": "2020-01-31T00:00:00", + "pnl": 7.400000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.414, + "entry_time": "2020-02-05T00:00:00", + "exit_price": 99.742, + "exit_reason": "signal", + "exit_time": "2020-02-06T00:00:00", + "pnl": 132.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.153, + "entry_time": "2020-02-10T00:00:00", + "exit_price": 98.958, + "exit_reason": "signal", + "exit_time": "2020-02-12T00:00:00", + "pnl": -19.50000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.398, + "entry_time": "2020-02-14T00:00:00", + "exit_price": 98.714, + "exit_reason": "signal", + "exit_time": "2020-02-18T00:00:00", + "pnl": -68.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.687, + "entry_time": "2020-02-20T00:00:00", + "exit_price": 99.197, + "exit_reason": "signal", + "exit_time": "2020-02-21T00:00:00", + "pnl": 51.00000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.753, + "entry_time": "2020-02-26T00:00:00", + "exit_price": 98.67, + "exit_reason": "signal", + "exit_time": "2020-02-27T00:00:00", + "pnl": -8.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.944, + "entry_time": "2020-03-02T00:00:00", + "exit_price": 99.276, + "exit_reason": "signal", + "exit_time": "2020-03-04T00:00:00", + "pnl": -66.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.967, + "entry_time": "2020-03-06T00:00:00", + "exit_price": 99.019, + "exit_reason": "signal", + "exit_time": "2020-03-09T00:00:00", + "pnl": -94.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.614, + "entry_time": "2020-03-12T00:00:00", + "exit_price": 99.444, + "exit_reason": "signal", + "exit_time": "2020-03-13T00:00:00", + "pnl": -17.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.487, + "entry_time": "2020-03-18T00:00:00", + "exit_price": 98.539, + "exit_reason": "signal", + "exit_time": "2020-03-19T00:00:00", + "pnl": -94.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.361, + "entry_time": "2020-03-23T00:00:00", + "exit_price": 99.394, + "exit_reason": "signal", + "exit_time": "2020-03-25T00:00:00", + "pnl": 103.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.38, + "entry_time": "2020-03-27T00:00:00", + "exit_price": 99.783, + "exit_reason": "signal", + "exit_time": "2020-03-30T00:00:00", + "pnl": 40.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.044, + "entry_time": "2020-04-02T00:00:00", + "exit_price": 100.006, + "exit_reason": "signal", + "exit_time": "2020-04-03T00:00:00", + "pnl": -3.7999999999992724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 101.073, + "entry_time": "2020-04-08T00:00:00", + "exit_price": 99.85, + "exit_reason": "signal", + "exit_time": "2020-04-09T00:00:00", + "pnl": -122.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.163, + "entry_time": "2020-04-14T00:00:00", + "exit_price": 99.598, + "exit_reason": "signal", + "exit_time": "2020-04-15T00:00:00", + "pnl": -56.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.024, + "entry_time": "2020-04-17T00:00:00", + "exit_price": 100.102, + "exit_reason": "signal", + "exit_time": "2020-04-20T00:00:00", + "pnl": 7.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.475, + "entry_time": "2020-04-23T00:00:00", + "exit_price": 100.785, + "exit_reason": "signal", + "exit_time": "2020-04-24T00:00:00", + "pnl": 31.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.284, + "entry_time": "2020-04-29T00:00:00", + "exit_price": 100.408, + "exit_reason": "signal", + "exit_time": "2020-04-30T00:00:00", + "pnl": 12.399999999997817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.529, + "entry_time": "2020-05-04T00:00:00", + "exit_price": 100.468, + "exit_reason": "signal", + "exit_time": "2020-05-06T00:00:00", + "pnl": -6.099999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.654, + "entry_time": "2020-05-08T00:00:00", + "exit_price": 100.845, + "exit_reason": "signal", + "exit_time": "2020-05-11T00:00:00", + "pnl": 19.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 100.833, + "entry_time": "2020-05-14T00:00:00", + "exit_price": 100.141, + "exit_reason": "signal", + "exit_time": "2020-05-15T00:00:00", + "pnl": -69.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.172, + "entry_time": "2020-05-20T00:00:00", + "exit_price": 100.89, + "exit_reason": "signal", + "exit_time": "2020-05-21T00:00:00", + "pnl": 171.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86, + "entry_time": "2020-05-26T00:00:00", + "exit_price": 99.429, + "exit_reason": "signal", + "exit_time": "2020-05-27T00:00:00", + "pnl": 56.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.671, + "entry_time": "2020-05-29T00:00:00", + "exit_price": 97.998, + "exit_reason": "signal", + "exit_time": "2020-06-01T00:00:00", + "pnl": -67.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.689, + "entry_time": "2020-06-04T00:00:00", + "exit_price": 98.907, + "exit_reason": "signal", + "exit_time": "2020-06-05T00:00:00", + "pnl": 21.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.789, + "entry_time": "2020-06-10T00:00:00", + "exit_price": 99.443, + "exit_reason": "signal", + "exit_time": "2020-06-11T00:00:00", + "pnl": 65.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.31, + "entry_time": "2020-06-15T00:00:00", + "exit_price": 98.913, + "exit_reason": "signal", + "exit_time": "2020-06-17T00:00:00", + "pnl": -39.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.359, + "entry_time": "2020-06-19T00:00:00", + "exit_price": 99.246, + "exit_reason": "signal", + "exit_time": "2020-06-22T00:00:00", + "pnl": -11.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.86, + "entry_time": "2020-06-25T00:00:00", + "exit_price": 98.942, + "exit_reason": "signal", + "exit_time": "2020-06-26T00:00:00", + "pnl": 8.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.476, + "entry_time": "2020-07-01T00:00:00", + "exit_price": 98.222, + "exit_reason": "signal", + "exit_time": "2020-07-02T00:00:00", + "pnl": -25.400000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.275, + "entry_time": "2020-07-07T00:00:00", + "exit_price": 99.229, + "exit_reason": "signal", + "exit_time": "2020-07-08T00:00:00", + "pnl": -4.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.847, + "entry_time": "2020-07-10T00:00:00", + "exit_price": 98.98, + "exit_reason": "signal", + "exit_time": "2020-07-13T00:00:00", + "pnl": 13.300000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.523, + "entry_time": "2020-07-16T00:00:00", + "exit_price": 98.848, + "exit_reason": "signal", + "exit_time": "2020-07-17T00:00:00", + "pnl": -67.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.079, + "entry_time": "2020-07-22T00:00:00", + "exit_price": 98.463, + "exit_reason": "signal", + "exit_time": "2020-07-23T00:00:00", + "pnl": 38.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.336, + "entry_time": "2020-07-27T00:00:00", + "exit_price": 97.695, + "exit_reason": "signal", + "exit_time": "2020-07-29T00:00:00", + "pnl": -164.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.931, + "entry_time": "2020-07-31T00:00:00", + "exit_price": 98.053, + "exit_reason": "signal", + "exit_time": "2020-08-03T00:00:00", + "pnl": 12.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.956, + "entry_time": "2020-08-06T00:00:00", + "exit_price": 97.857, + "exit_reason": "signal", + "exit_time": "2020-08-07T00:00:00", + "pnl": -109.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.834, + "entry_time": "2020-08-12T00:00:00", + "exit_price": 97.257, + "exit_reason": "signal", + "exit_time": "2020-08-13T00:00:00", + "pnl": -57.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.16, + "entry_time": "2020-08-17T00:00:00", + "exit_price": 98.416, + "exit_reason": "signal", + "exit_time": "2020-08-19T00:00:00", + "pnl": 25.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.923, + "entry_time": "2020-08-21T00:00:00", + "exit_price": 97.974, + "exit_reason": "signal", + "exit_time": "2020-08-24T00:00:00", + "pnl": 5.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.214, + "entry_time": "2020-08-27T00:00:00", + "exit_price": 98.083, + "exit_reason": "signal", + "exit_time": "2020-08-28T00:00:00", + "pnl": -113.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.001, + "entry_time": "2020-09-02T00:00:00", + "exit_price": 98.653, + "exit_reason": "signal", + "exit_time": "2020-09-03T00:00:00", + "pnl": 65.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.474, + "entry_time": "2020-09-08T00:00:00", + "exit_price": 98.313, + "exit_reason": "signal", + "exit_time": "2020-09-09T00:00:00", + "pnl": -116.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.732, + "entry_time": "2020-09-11T00:00:00", + "exit_price": 98.566, + "exit_reason": "signal", + "exit_time": "2020-09-14T00:00:00", + "pnl": 83.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.9, + "entry_time": "2020-09-17T00:00:00", + "exit_price": 98.388, + "exit_reason": "signal", + "exit_time": "2020-09-18T00:00:00", + "pnl": 148.8000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.12, + "entry_time": "2020-09-23T00:00:00", + "exit_price": 99.257, + "exit_reason": "signal", + "exit_time": "2020-09-24T00:00:00", + "pnl": 13.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.713, + "entry_time": "2020-09-28T00:00:00", + "exit_price": 99.383, + "exit_reason": "signal", + "exit_time": "2020-09-30T00:00:00", + "pnl": 67.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.584, + "entry_time": "2020-10-02T00:00:00", + "exit_price": 99.318, + "exit_reason": "signal", + "exit_time": "2020-10-05T00:00:00", + "pnl": -26.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.115, + "entry_time": "2020-10-08T00:00:00", + "exit_price": 97.468, + "exit_reason": "signal", + "exit_time": "2020-10-09T00:00:00", + "pnl": -64.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.615, + "entry_time": "2020-10-14T00:00:00", + "exit_price": 98.16, + "exit_reason": "signal", + "exit_time": "2020-10-15T00:00:00", + "pnl": 54.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.362, + "entry_time": "2020-10-19T00:00:00", + "exit_price": 98.412, + "exit_reason": "signal", + "exit_time": "2020-10-21T00:00:00", + "pnl": 105.00000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.782, + "entry_time": "2020-10-23T00:00:00", + "exit_price": 98.91, + "exit_reason": "signal", + "exit_time": "2020-10-26T00:00:00", + "pnl": 12.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.73, + "entry_time": "2020-10-29T00:00:00", + "exit_price": 98.608, + "exit_reason": "signal", + "exit_time": "2020-10-30T00:00:00", + "pnl": -12.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 99.216, + "entry_time": "2020-11-04T00:00:00", + "exit_price": 98.491, + "exit_reason": "signal", + "exit_time": "2020-11-05T00:00:00", + "pnl": -72.49999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.95, + "entry_time": "2020-11-09T00:00:00", + "exit_price": 97.827, + "exit_reason": "signal", + "exit_time": "2020-11-11T00:00:00", + "pnl": -12.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.914, + "entry_time": "2020-11-13T00:00:00", + "exit_price": 98.93, + "exit_reason": "signal", + "exit_time": "2020-11-16T00:00:00", + "pnl": 1.6000000000003638, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.475, + "entry_time": "2020-11-19T00:00:00", + "exit_price": 98.101, + "exit_reason": "signal", + "exit_time": "2020-11-20T00:00:00", + "pnl": -37.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.485, + "entry_time": "2020-11-25T00:00:00", + "exit_price": 98.641, + "exit_reason": "signal", + "exit_time": "2020-11-27T00:00:00", + "pnl": 15.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.76, + "entry_time": "2020-11-30T00:00:00", + "exit_price": 97.799, + "exit_reason": "signal", + "exit_time": "2020-12-02T00:00:00", + "pnl": 3.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.985, + "entry_time": "2020-12-04T00:00:00", + "exit_price": 98.34, + "exit_reason": "signal", + "exit_time": "2020-12-07T00:00:00", + "pnl": 35.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.428, + "entry_time": "2020-12-10T00:00:00", + "exit_price": 96.632, + "exit_reason": "signal", + "exit_time": "2020-12-11T00:00:00", + "pnl": -79.59999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.731, + "entry_time": "2020-12-16T00:00:00", + "exit_price": 97.619, + "exit_reason": "signal", + "exit_time": "2020-12-17T00:00:00", + "pnl": 88.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 98.386, + "entry_time": "2020-12-21T00:00:00", + "exit_price": 96.994, + "exit_reason": "signal", + "exit_time": "2020-12-23T00:00:00", + "pnl": -139.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.124, + "entry_time": "2020-12-28T00:00:00", + "exit_price": 97.539, + "exit_reason": "signal", + "exit_time": "2020-12-29T00:00:00", + "pnl": 41.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 97.603, + "entry_time": "2020-12-31T00:00:00", + "exit_price": 96.822, + "exit_reason": "signal", + "exit_time": "2021-01-04T00:00:00", + "pnl": -78.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.791, + "entry_time": "2021-01-06T00:00:00", + "exit_price": 97.115, + "exit_reason": "signal", + "exit_time": "2021-01-07T00:00:00", + "pnl": 32.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.811, + "entry_time": "2021-01-11T00:00:00", + "exit_price": 96.28, + "exit_reason": "signal", + "exit_time": "2021-01-13T00:00:00", + "pnl": -53.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.533, + "entry_time": "2021-01-15T00:00:00", + "exit_price": 96.079, + "exit_reason": "signal", + "exit_time": "2021-01-19T00:00:00", + "pnl": -45.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.796, + "entry_time": "2021-01-21T00:00:00", + "exit_price": 95.248, + "exit_reason": "signal", + "exit_time": "2021-01-22T00:00:00", + "pnl": -54.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.556, + "entry_time": "2021-01-27T00:00:00", + "exit_price": 96.557, + "exit_reason": "signal", + "exit_time": "2021-01-28T00:00:00", + "pnl": 100.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.251, + "entry_time": "2021-02-01T00:00:00", + "exit_price": 95.837, + "exit_reason": "signal", + "exit_time": "2021-02-03T00:00:00", + "pnl": -41.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.265, + "entry_time": "2021-02-05T00:00:00", + "exit_price": 95.261, + "exit_reason": "signal", + "exit_time": "2021-02-08T00:00:00", + "pnl": -0.3999999999996362, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.948, + "entry_time": "2021-02-11T00:00:00", + "exit_price": 95.051, + "exit_reason": "signal", + "exit_time": "2021-02-12T00:00:00", + "pnl": 10.300000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.97, + "entry_time": "2021-02-17T00:00:00", + "exit_price": 96.348, + "exit_reason": "signal", + "exit_time": "2021-02-18T00:00:00", + "pnl": -62.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.318, + "entry_time": "2021-02-22T00:00:00", + "exit_price": 95.625, + "exit_reason": "signal", + "exit_time": "2021-02-24T00:00:00", + "pnl": -69.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.886, + "entry_time": "2021-02-26T00:00:00", + "exit_price": 95.236, + "exit_reason": "signal", + "exit_time": "2021-03-01T00:00:00", + "pnl": 35.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.403, + "entry_time": "2021-03-04T00:00:00", + "exit_price": 94.323, + "exit_reason": "signal", + "exit_time": "2021-03-05T00:00:00", + "pnl": -8.000000000001819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.082, + "entry_time": "2021-03-10T00:00:00", + "exit_price": 94.588, + "exit_reason": "signal", + "exit_time": "2021-03-11T00:00:00", + "pnl": -49.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.802, + "entry_time": "2021-03-15T00:00:00", + "exit_price": 94.783, + "exit_reason": "signal", + "exit_time": "2021-03-17T00:00:00", + "pnl": -1.9000000000014552, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.661, + "entry_time": "2021-03-19T00:00:00", + "exit_price": 95.004, + "exit_reason": "signal", + "exit_time": "2021-03-22T00:00:00", + "pnl": 134.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.499, + "entry_time": "2021-03-25T00:00:00", + "exit_price": 93.976, + "exit_reason": "signal", + "exit_time": "2021-03-26T00:00:00", + "pnl": -152.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.019, + "entry_time": "2021-03-31T00:00:00", + "exit_price": 94.256, + "exit_reason": "signal", + "exit_time": "2021-04-01T00:00:00", + "pnl": 23.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.471, + "entry_time": "2021-04-06T00:00:00", + "exit_price": 93.724, + "exit_reason": "signal", + "exit_time": "2021-04-07T00:00:00", + "pnl": 25.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.199, + "entry_time": "2021-04-09T00:00:00", + "exit_price": 93.341, + "exit_reason": "signal", + "exit_time": "2021-04-12T00:00:00", + "pnl": 14.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.729, + "entry_time": "2021-04-15T00:00:00", + "exit_price": 93.256, + "exit_reason": "signal", + "exit_time": "2021-04-16T00:00:00", + "pnl": -47.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.926, + "entry_time": "2021-04-21T00:00:00", + "exit_price": 94.143, + "exit_reason": "signal", + "exit_time": "2021-04-22T00:00:00", + "pnl": 121.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.774, + "entry_time": "2021-04-26T00:00:00", + "exit_price": 93.493, + "exit_reason": "signal", + "exit_time": "2021-04-28T00:00:00", + "pnl": -28.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.685, + "entry_time": "2021-04-30T00:00:00", + "exit_price": 94.267, + "exit_reason": "signal", + "exit_time": "2021-05-03T00:00:00", + "pnl": 58.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.415, + "entry_time": "2021-05-06T00:00:00", + "exit_price": 93.364, + "exit_reason": "signal", + "exit_time": "2021-05-07T00:00:00", + "pnl": -5.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.742, + "entry_time": "2021-05-12T00:00:00", + "exit_price": 94.554, + "exit_reason": "signal", + "exit_time": "2021-05-13T00:00:00", + "pnl": 81.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.502, + "entry_time": "2021-05-17T00:00:00", + "exit_price": 94.556, + "exit_reason": "signal", + "exit_time": "2021-05-19T00:00:00", + "pnl": 105.40000000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.081, + "entry_time": "2021-05-21T00:00:00", + "exit_price": 92.813, + "exit_reason": "signal", + "exit_time": "2021-05-24T00:00:00", + "pnl": -26.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.953, + "entry_time": "2021-05-27T00:00:00", + "exit_price": 93.147, + "exit_reason": "signal", + "exit_time": "2021-05-28T00:00:00", + "pnl": 19.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.945, + "entry_time": "2021-06-02T00:00:00", + "exit_price": 92.896, + "exit_reason": "signal", + "exit_time": "2021-06-03T00:00:00", + "pnl": -4.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.577, + "entry_time": "2021-06-07T00:00:00", + "exit_price": 91.284, + "exit_reason": "signal", + "exit_time": "2021-06-09T00:00:00", + "pnl": -129.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13, + "entry_time": "2021-06-11T00:00:00", + "exit_price": 92.333, + "exit_reason": "signal", + "exit_time": "2021-06-14T00:00:00", + "pnl": -79.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.95, + "entry_time": "2021-06-17T00:00:00", + "exit_price": 92.166, + "exit_reason": "signal", + "exit_time": "2021-06-18T00:00:00", + "pnl": 21.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.256, + "entry_time": "2021-06-23T00:00:00", + "exit_price": 92.456, + "exit_reason": "signal", + "exit_time": "2021-06-24T00:00:00", + "pnl": 20.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.731, + "entry_time": "2021-06-28T00:00:00", + "exit_price": 91.788, + "exit_reason": "signal", + "exit_time": "2021-06-30T00:00:00", + "pnl": 5.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.941, + "entry_time": "2021-07-02T00:00:00", + "exit_price": 90.653, + "exit_reason": "signal", + "exit_time": "2021-07-06T00:00:00", + "pnl": -28.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.824, + "entry_time": "2021-07-08T00:00:00", + "exit_price": 91.78, + "exit_reason": "signal", + "exit_time": "2021-07-09T00:00:00", + "pnl": -4.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.098, + "entry_time": "2021-07-14T00:00:00", + "exit_price": 91.642, + "exit_reason": "signal", + "exit_time": "2021-07-15T00:00:00", + "pnl": 54.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.333, + "entry_time": "2021-07-19T00:00:00", + "exit_price": 91.025, + "exit_reason": "signal", + "exit_time": "2021-07-21T00:00:00", + "pnl": -30.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.238, + "entry_time": "2021-07-23T00:00:00", + "exit_price": 91.959, + "exit_reason": "signal", + "exit_time": "2021-07-26T00:00:00", + "pnl": 72.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.122, + "entry_time": "2021-07-29T00:00:00", + "exit_price": 93.031, + "exit_reason": "signal", + "exit_time": "2021-07-30T00:00:00", + "pnl": 90.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.16, + "entry_time": "2021-08-04T00:00:00", + "exit_price": 91.643, + "exit_reason": "signal", + "exit_time": "2021-08-05T00:00:00", + "pnl": -51.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.188, + "entry_time": "2021-08-09T00:00:00", + "exit_price": 93.342, + "exit_reason": "signal", + "exit_time": "2021-08-11T00:00:00", + "pnl": 15.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.618, + "entry_time": "2021-08-13T00:00:00", + "exit_price": 94.259, + "exit_reason": "signal", + "exit_time": "2021-08-16T00:00:00", + "pnl": 64.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.98, + "entry_time": "2021-08-19T00:00:00", + "exit_price": 93.988, + "exit_reason": "signal", + "exit_time": "2021-08-20T00:00:00", + "pnl": 100.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.681, + "entry_time": "2021-08-25T00:00:00", + "exit_price": 92.705, + "exit_reason": "signal", + "exit_time": "2021-08-26T00:00:00", + "pnl": 2.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.361, + "entry_time": "2021-08-30T00:00:00", + "exit_price": 93.802, + "exit_reason": "signal", + "exit_time": "2021-09-01T00:00:00", + "pnl": 144.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.154, + "entry_time": "2021-09-03T00:00:00", + "exit_price": 93.729, + "exit_reason": "signal", + "exit_time": "2021-09-07T00:00:00", + "pnl": 57.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.158, + "entry_time": "2021-09-09T00:00:00", + "exit_price": 93.741, + "exit_reason": "signal", + "exit_time": "2021-09-10T00:00:00", + "pnl": -41.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.019, + "entry_time": "2021-09-15T00:00:00", + "exit_price": 94.422, + "exit_reason": "signal", + "exit_time": "2021-09-16T00:00:00", + "pnl": -59.70000000000255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.354, + "entry_time": "2021-09-20T00:00:00", + "exit_price": 94.986, + "exit_reason": "signal", + "exit_time": "2021-09-22T00:00:00", + "pnl": 63.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.87, + "entry_time": "2021-09-24T00:00:00", + "exit_price": 94.849, + "exit_reason": "signal", + "exit_time": "2021-09-27T00:00:00", + "pnl": 97.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.309, + "entry_time": "2021-09-30T00:00:00", + "exit_price": 93.994, + "exit_reason": "signal", + "exit_time": "2021-10-01T00:00:00", + "pnl": -31.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.074, + "entry_time": "2021-10-06T00:00:00", + "exit_price": 94.048, + "exit_reason": "signal", + "exit_time": "2021-10-07T00:00:00", + "pnl": -2.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.849, + "entry_time": "2021-10-11T00:00:00", + "exit_price": 94.437, + "exit_reason": "signal", + "exit_time": "2021-10-13T00:00:00", + "pnl": 58.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37, + "entry_time": "2021-10-15T00:00:00", + "exit_price": 95.093, + "exit_reason": "signal", + "exit_time": "2021-10-18T00:00:00", + "pnl": 72.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.029, + "entry_time": "2021-10-21T00:00:00", + "exit_price": 94.805, + "exit_reason": "signal", + "exit_time": "2021-10-22T00:00:00", + "pnl": 77.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.249, + "entry_time": "2021-10-27T00:00:00", + "exit_price": 93.601, + "exit_reason": "signal", + "exit_time": "2021-10-28T00:00:00", + "pnl": -64.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.241, + "entry_time": "2021-11-01T00:00:00", + "exit_price": 94.429, + "exit_reason": "signal", + "exit_time": "2021-11-03T00:00:00", + "pnl": 118.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.416, + "entry_time": "2021-11-05T00:00:00", + "exit_price": 92.51, + "exit_reason": "signal", + "exit_time": "2021-11-08T00:00:00", + "pnl": -90.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.96, + "entry_time": "2021-11-11T00:00:00", + "exit_price": 93.531, + "exit_reason": "signal", + "exit_time": "2021-11-12T00:00:00", + "pnl": 57.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.427, + "entry_time": "2021-11-17T00:00:00", + "exit_price": 92.196, + "exit_reason": "signal", + "exit_time": "2021-11-18T00:00:00", + "pnl": -23.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.52, + "entry_time": "2021-11-22T00:00:00", + "exit_price": 93.982, + "exit_reason": "signal", + "exit_time": "2021-11-24T00:00:00", + "pnl": 146.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.82, + "entry_time": "2021-12-02T00:00:00", + "exit_price": 91.736, + "exit_reason": "signal", + "exit_time": "2021-12-03T00:00:00", + "pnl": -8.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.704, + "entry_time": "2021-12-08T00:00:00", + "exit_price": 92.183, + "exit_reason": "signal", + "exit_time": "2021-12-09T00:00:00", + "pnl": 47.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.131, + "entry_time": "2021-12-13T00:00:00", + "exit_price": 92.825, + "exit_reason": "signal", + "exit_time": "2021-12-15T00:00:00", + "pnl": 69.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.809, + "entry_time": "2021-12-17T00:00:00", + "exit_price": 93.226, + "exit_reason": "signal", + "exit_time": "2021-12-20T00:00:00", + "pnl": -58.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.067, + "entry_time": "2021-12-23T00:00:00", + "exit_price": 92.105, + "exit_reason": "signal", + "exit_time": "2021-12-27T00:00:00", + "pnl": -96.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.026, + "entry_time": "2021-12-29T00:00:00", + "exit_price": 93.011, + "exit_reason": "signal", + "exit_time": "2021-12-30T00:00:00", + "pnl": 98.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.067, + "entry_time": "2022-01-03T00:00:00", + "exit_price": 91.642, + "exit_reason": "signal", + "exit_time": "2022-01-05T00:00:00", + "pnl": -42.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.202, + "entry_time": "2022-01-07T00:00:00", + "exit_price": 91.813, + "exit_reason": "signal", + "exit_time": "2022-01-10T00:00:00", + "pnl": -38.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.255, + "entry_time": "2022-01-13T00:00:00", + "exit_price": 91.975, + "exit_reason": "signal", + "exit_time": "2022-01-14T00:00:00", + "pnl": -28.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.763, + "entry_time": "2022-01-19T00:00:00", + "exit_price": 91.432, + "exit_reason": "signal", + "exit_time": "2022-01-20T00:00:00", + "pnl": -33.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.966, + "entry_time": "2022-01-24T00:00:00", + "exit_price": 91.852, + "exit_reason": "signal", + "exit_time": "2022-01-26T00:00:00", + "pnl": -11.399999999997817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.814, + "entry_time": "2022-01-28T00:00:00", + "exit_price": 91.676, + "exit_reason": "signal", + "exit_time": "2022-01-31T00:00:00", + "pnl": 86.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.985, + "entry_time": "2022-02-03T00:00:00", + "exit_price": 91.188, + "exit_reason": "signal", + "exit_time": "2022-02-04T00:00:00", + "pnl": -79.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.97, + "entry_time": "2022-02-09T00:00:00", + "exit_price": 92.17, + "exit_reason": "signal", + "exit_time": "2022-02-10T00:00:00", + "pnl": 20.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.507, + "entry_time": "2022-02-14T00:00:00", + "exit_price": 91.156, + "exit_reason": "signal", + "exit_time": "2022-02-16T00:00:00", + "pnl": -35.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.661, + "entry_time": "2022-02-18T00:00:00", + "exit_price": 92.287, + "exit_reason": "signal", + "exit_time": "2022-02-22T00:00:00", + "pnl": 62.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.068, + "entry_time": "2022-02-24T00:00:00", + "exit_price": 91.351, + "exit_reason": "signal", + "exit_time": "2022-02-25T00:00:00", + "pnl": 28.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.094, + "entry_time": "2022-03-02T00:00:00", + "exit_price": 91.421, + "exit_reason": "signal", + "exit_time": "2022-03-03T00:00:00", + "pnl": -67.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.013, + "entry_time": "2022-03-07T00:00:00", + "exit_price": 91.526, + "exit_reason": "signal", + "exit_time": "2022-03-09T00:00:00", + "pnl": -48.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.012, + "entry_time": "2022-03-11T00:00:00", + "exit_price": 90.821, + "exit_reason": "signal", + "exit_time": "2022-03-14T00:00:00", + "pnl": -19.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.925, + "entry_time": "2022-03-17T00:00:00", + "exit_price": 90.615, + "exit_reason": "signal", + "exit_time": "2022-03-18T00:00:00", + "pnl": -131.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.965, + "entry_time": "2022-03-23T00:00:00", + "exit_price": 90.7, + "exit_reason": "signal", + "exit_time": "2022-03-24T00:00:00", + "pnl": -26.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.683, + "entry_time": "2022-03-28T00:00:00", + "exit_price": 91.694, + "exit_reason": "signal", + "exit_time": "2022-03-30T00:00:00", + "pnl": 101.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.87, + "entry_time": "2022-04-01T00:00:00", + "exit_price": 90.055, + "exit_reason": "signal", + "exit_time": "2022-04-04T00:00:00", + "pnl": -81.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.631, + "entry_time": "2022-04-07T00:00:00", + "exit_price": 89.96, + "exit_reason": "signal", + "exit_time": "2022-04-08T00:00:00", + "pnl": -67.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.759, + "entry_time": "2022-04-13T00:00:00", + "exit_price": 90.978, + "exit_reason": "signal", + "exit_time": "2022-04-14T00:00:00", + "pnl": 121.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.009, + "entry_time": "2022-04-19T00:00:00", + "exit_price": 90.972, + "exit_reason": "signal", + "exit_time": "2022-04-20T00:00:00", + "pnl": 96.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.449, + "entry_time": "2022-04-22T00:00:00", + "exit_price": 89.939, + "exit_reason": "signal", + "exit_time": "2022-04-25T00:00:00", + "pnl": -51.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.137, + "entry_time": "2022-04-28T00:00:00", + "exit_price": 90.92, + "exit_reason": "signal", + "exit_time": "2022-04-29T00:00:00", + "pnl": 78.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.235, + "entry_time": "2022-05-04T00:00:00", + "exit_price": 92.161, + "exit_reason": "signal", + "exit_time": "2022-05-05T00:00:00", + "pnl": 92.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.242, + "entry_time": "2022-05-09T00:00:00", + "exit_price": 91.392, + "exit_reason": "signal", + "exit_time": "2022-05-11T00:00:00", + "pnl": 114.99999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.798, + "entry_time": "2022-05-13T00:00:00", + "exit_price": 91.741, + "exit_reason": "signal", + "exit_time": "2022-05-16T00:00:00", + "pnl": -5.699999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.129, + "entry_time": "2022-05-19T00:00:00", + "exit_price": 91.294, + "exit_reason": "signal", + "exit_time": "2022-05-20T00:00:00", + "pnl": 16.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.508, + "entry_time": "2022-05-25T00:00:00", + "exit_price": 90.206, + "exit_reason": "signal", + "exit_time": "2022-05-26T00:00:00", + "pnl": -30.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.881, + "entry_time": "2022-05-31T00:00:00", + "exit_price": 90.543, + "exit_reason": "signal", + "exit_time": "2022-06-01T00:00:00", + "pnl": 66.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.973, + "entry_time": "2022-06-03T00:00:00", + "exit_price": 90.741, + "exit_reason": "signal", + "exit_time": "2022-06-06T00:00:00", + "pnl": -23.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.848, + "entry_time": "2022-06-09T00:00:00", + "exit_price": 90.837, + "exit_reason": "signal", + "exit_time": "2022-06-10T00:00:00", + "pnl": -1.0999999999985448, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.825, + "entry_time": "2022-06-15T00:00:00", + "exit_price": 90.17, + "exit_reason": "signal", + "exit_time": "2022-06-16T00:00:00", + "pnl": -65.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.553, + "entry_time": "2022-06-21T00:00:00", + "exit_price": 90.601, + "exit_reason": "signal", + "exit_time": "2022-06-22T00:00:00", + "pnl": 4.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.687, + "entry_time": "2022-06-24T00:00:00", + "exit_price": 90.053, + "exit_reason": "signal", + "exit_time": "2022-06-27T00:00:00", + "pnl": -63.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.794, + "entry_time": "2022-06-30T00:00:00", + "exit_price": 92.411, + "exit_reason": "signal", + "exit_time": "2022-07-01T00:00:00", + "pnl": 161.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.303, + "entry_time": "2022-07-06T00:00:00", + "exit_price": 90.141, + "exit_reason": "signal", + "exit_time": "2022-07-07T00:00:00", + "pnl": -116.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.156, + "entry_time": "2022-07-11T00:00:00", + "exit_price": 90.998, + "exit_reason": "signal", + "exit_time": "2022-07-13T00:00:00", + "pnl": -15.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.512, + "entry_time": "2022-07-15T00:00:00", + "exit_price": 91.253, + "exit_reason": "signal", + "exit_time": "2022-07-18T00:00:00", + "pnl": 74.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.474, + "entry_time": "2022-07-21T00:00:00", + "exit_price": 89.988, + "exit_reason": "signal", + "exit_time": "2022-07-22T00:00:00", + "pnl": -148.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.051, + "entry_time": "2022-07-27T00:00:00", + "exit_price": 91.314, + "exit_reason": "signal", + "exit_time": "2022-07-28T00:00:00", + "pnl": 26.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.376, + "entry_time": "2022-08-01T00:00:00", + "exit_price": 91.542, + "exit_reason": "signal", + "exit_time": "2022-08-03T00:00:00", + "pnl": 16.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.898, + "entry_time": "2022-08-05T00:00:00", + "exit_price": 92.023, + "exit_reason": "signal", + "exit_time": "2022-08-08T00:00:00", + "pnl": 12.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.244, + "entry_time": "2022-08-11T00:00:00", + "exit_price": 92.691, + "exit_reason": "signal", + "exit_time": "2022-08-12T00:00:00", + "pnl": 44.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.181, + "entry_time": "2022-08-17T00:00:00", + "exit_price": 92.495, + "exit_reason": "signal", + "exit_time": "2022-08-18T00:00:00", + "pnl": -68.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.024, + "entry_time": "2022-08-22T00:00:00", + "exit_price": 93.281, + "exit_reason": "signal", + "exit_time": "2022-08-24T00:00:00", + "pnl": 25.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.724, + "entry_time": "2022-08-26T00:00:00", + "exit_price": 93.027, + "exit_reason": "signal", + "exit_time": "2022-08-29T00:00:00", + "pnl": -69.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.267, + "entry_time": "2022-09-01T00:00:00", + "exit_price": 93.319, + "exit_reason": "signal", + "exit_time": "2022-09-02T00:00:00", + "pnl": 5.200000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.866, + "entry_time": "2022-09-07T00:00:00", + "exit_price": 93.548, + "exit_reason": "signal", + "exit_time": "2022-09-08T00:00:00", + "pnl": 68.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.821, + "entry_time": "2022-09-12T00:00:00", + "exit_price": 94.111, + "exit_reason": "signal", + "exit_time": "2022-09-14T00:00:00", + "pnl": 29.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.782, + "entry_time": "2022-09-16T00:00:00", + "exit_price": 94.266, + "exit_reason": "signal", + "exit_time": "2022-09-19T00:00:00", + "pnl": -51.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.888, + "entry_time": "2022-09-22T00:00:00", + "exit_price": 94.905, + "exit_reason": "signal", + "exit_time": "2022-09-23T00:00:00", + "pnl": 1.6999999999989086, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.211, + "entry_time": "2022-09-28T00:00:00", + "exit_price": 93.622, + "exit_reason": "signal", + "exit_time": "2022-09-29T00:00:00", + "pnl": -58.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.289, + "entry_time": "2022-10-03T00:00:00", + "exit_price": 95.218, + "exit_reason": "signal", + "exit_time": "2022-10-05T00:00:00", + "pnl": -7.099999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.625, + "entry_time": "2022-10-07T00:00:00", + "exit_price": 93.711, + "exit_reason": "signal", + "exit_time": "2022-10-10T00:00:00", + "pnl": -91.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.22, + "entry_time": "2022-10-13T00:00:00", + "exit_price": 95.266, + "exit_reason": "signal", + "exit_time": "2022-10-14T00:00:00", + "pnl": 104.60000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.369, + "entry_time": "2022-10-19T00:00:00", + "exit_price": 94.388, + "exit_reason": "signal", + "exit_time": "2022-10-20T00:00:00", + "pnl": 101.90000000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.034, + "entry_time": "2022-10-24T00:00:00", + "exit_price": 94.253, + "exit_reason": "signal", + "exit_time": "2022-10-26T00:00:00", + "pnl": 21.899999999997817, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.929, + "entry_time": "2022-10-28T00:00:00", + "exit_price": 95.019, + "exit_reason": "signal", + "exit_time": "2022-10-31T00:00:00", + "pnl": 9.000000000001819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 96.458, + "entry_time": "2022-11-03T00:00:00", + "exit_price": 95.965, + "exit_reason": "signal", + "exit_time": "2022-11-04T00:00:00", + "pnl": -49.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.237, + "entry_time": "2022-11-09T00:00:00", + "exit_price": 94.586, + "exit_reason": "signal", + "exit_time": "2022-11-10T00:00:00", + "pnl": -65.09999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.712, + "entry_time": "2022-11-14T00:00:00", + "exit_price": 94.086, + "exit_reason": "signal", + "exit_time": "2022-11-16T00:00:00", + "pnl": 37.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.205, + "entry_time": "2022-11-18T00:00:00", + "exit_price": 94.623, + "exit_reason": "signal", + "exit_time": "2022-11-21T00:00:00", + "pnl": 41.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.54, + "entry_time": "2022-11-25T00:00:00", + "exit_price": 92.916, + "exit_reason": "signal", + "exit_time": "2022-12-01T00:00:00", + "pnl": -62.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.256, + "entry_time": "2022-12-05T00:00:00", + "exit_price": 93.359, + "exit_reason": "signal", + "exit_time": "2022-12-07T00:00:00", + "pnl": 10.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.218, + "entry_time": "2022-12-09T00:00:00", + "exit_price": 93.916, + "exit_reason": "signal", + "exit_time": "2022-12-12T00:00:00", + "pnl": 69.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.424, + "entry_time": "2022-12-15T00:00:00", + "exit_price": 92.996, + "exit_reason": "signal", + "exit_time": "2022-12-16T00:00:00", + "pnl": -42.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.738, + "entry_time": "2022-12-21T00:00:00", + "exit_price": 91.786, + "exit_reason": "signal", + "exit_time": "2022-12-22T00:00:00", + "pnl": 104.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.399, + "entry_time": "2022-12-27T00:00:00", + "exit_price": 92.116, + "exit_reason": "signal", + "exit_time": "2022-12-28T00:00:00", + "pnl": -28.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.771, + "entry_time": "2022-12-30T00:00:00", + "exit_price": 92.978, + "exit_reason": "signal", + "exit_time": "2023-01-03T00:00:00", + "pnl": 20.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.823, + "entry_time": "2023-01-05T00:00:00", + "exit_price": 92.889, + "exit_reason": "signal", + "exit_time": "2023-01-06T00:00:00", + "pnl": 6.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.776, + "entry_time": "2023-01-11T00:00:00", + "exit_price": 92.849, + "exit_reason": "signal", + "exit_time": "2023-01-12T00:00:00", + "pnl": 7.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.165, + "entry_time": "2023-01-17T00:00:00", + "exit_price": 93.645, + "exit_reason": "signal", + "exit_time": "2023-01-18T00:00:00", + "pnl": 48.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.349, + "entry_time": "2023-01-20T00:00:00", + "exit_price": 93.529, + "exit_reason": "signal", + "exit_time": "2023-01-23T00:00:00", + "pnl": 118.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.145, + "entry_time": "2023-01-26T00:00:00", + "exit_price": 93.092, + "exit_reason": "signal", + "exit_time": "2023-01-27T00:00:00", + "pnl": -105.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.034, + "entry_time": "2023-02-01T00:00:00", + "exit_price": 92.672, + "exit_reason": "signal", + "exit_time": "2023-02-02T00:00:00", + "pnl": -136.20000000000255, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.253, + "entry_time": "2023-02-06T00:00:00", + "exit_price": 93.168, + "exit_reason": "signal", + "exit_time": "2023-02-08T00:00:00", + "pnl": -8.499999999998181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.13, + "entry_time": "2023-02-10T00:00:00", + "exit_price": 94.092, + "exit_reason": "signal", + "exit_time": "2023-02-13T00:00:00", + "pnl": 96.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.536, + "entry_time": "2023-02-16T00:00:00", + "exit_price": 94.216, + "exit_reason": "signal", + "exit_time": "2023-02-17T00:00:00", + "pnl": -32.00000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.185, + "entry_time": "2023-02-22T00:00:00", + "exit_price": 93.989, + "exit_reason": "signal", + "exit_time": "2023-02-23T00:00:00", + "pnl": -19.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.454, + "entry_time": "2023-02-27T00:00:00", + "exit_price": 94.437, + "exit_reason": "signal", + "exit_time": "2023-03-01T00:00:00", + "pnl": -1.7000000000007276, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.958, + "entry_time": "2023-03-03T00:00:00", + "exit_price": 93.665, + "exit_reason": "signal", + "exit_time": "2023-03-06T00:00:00", + "pnl": -29.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.35, + "entry_time": "2023-03-09T00:00:00", + "exit_price": 93.062, + "exit_reason": "signal", + "exit_time": "2023-03-10T00:00:00", + "pnl": -28.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.884, + "entry_time": "2023-03-15T00:00:00", + "exit_price": 94.082, + "exit_reason": "signal", + "exit_time": "2023-03-16T00:00:00", + "pnl": 19.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.295, + "entry_time": "2023-03-20T00:00:00", + "exit_price": 92.05, + "exit_reason": "signal", + "exit_time": "2023-03-22T00:00:00", + "pnl": -24.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.845, + "entry_time": "2023-03-24T00:00:00", + "exit_price": 93.328, + "exit_reason": "signal", + "exit_time": "2023-03-27T00:00:00", + "pnl": 148.3000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.949, + "entry_time": "2023-03-30T00:00:00", + "exit_price": 93.548, + "exit_reason": "signal", + "exit_time": "2023-03-31T00:00:00", + "pnl": 59.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.731, + "entry_time": "2023-04-05T00:00:00", + "exit_price": 92.13, + "exit_reason": "signal", + "exit_time": "2023-04-06T00:00:00", + "pnl": -60.099999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.325, + "entry_time": "2023-04-11T00:00:00", + "exit_price": 92.404, + "exit_reason": "signal", + "exit_time": "2023-04-12T00:00:00", + "pnl": -92.10000000000036, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.56, + "entry_time": "2023-04-14T00:00:00", + "exit_price": 92.829, + "exit_reason": "signal", + "exit_time": "2023-04-17T00:00:00", + "pnl": 26.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.799, + "entry_time": "2023-04-20T00:00:00", + "exit_price": 92.951, + "exit_reason": "signal", + "exit_time": "2023-04-21T00:00:00", + "pnl": 15.19999999999709, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.359, + "entry_time": "2023-04-26T00:00:00", + "exit_price": 92.905, + "exit_reason": "signal", + "exit_time": "2023-04-27T00:00:00", + "pnl": -45.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.681, + "entry_time": "2023-05-01T00:00:00", + "exit_price": 92.829, + "exit_reason": "signal", + "exit_time": "2023-05-03T00:00:00", + "pnl": 14.799999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.067, + "entry_time": "2023-05-05T00:00:00", + "exit_price": 93.195, + "exit_reason": "signal", + "exit_time": "2023-05-08T00:00:00", + "pnl": 12.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.877, + "entry_time": "2023-05-11T00:00:00", + "exit_price": 93.476, + "exit_reason": "signal", + "exit_time": "2023-05-12T00:00:00", + "pnl": 159.90000000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.775, + "entry_time": "2023-05-17T00:00:00", + "exit_price": 93.218, + "exit_reason": "signal", + "exit_time": "2023-05-18T00:00:00", + "pnl": 44.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.88, + "entry_time": "2023-05-22T00:00:00", + "exit_price": 93.969, + "exit_reason": "signal", + "exit_time": "2023-05-24T00:00:00", + "pnl": 8.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.333, + "entry_time": "2023-05-26T00:00:00", + "exit_price": 94.059, + "exit_reason": "signal", + "exit_time": "2023-05-30T00:00:00", + "pnl": -27.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.762, + "entry_time": "2023-06-01T00:00:00", + "exit_price": 94.25, + "exit_reason": "signal", + "exit_time": "2023-06-02T00:00:00", + "pnl": 148.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.294, + "entry_time": "2023-06-07T00:00:00", + "exit_price": 94.603, + "exit_reason": "signal", + "exit_time": "2023-06-08T00:00:00", + "pnl": 30.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.427, + "entry_time": "2023-06-12T00:00:00", + "exit_price": 94.339, + "exit_reason": "signal", + "exit_time": "2023-06-14T00:00:00", + "pnl": -8.800000000001091, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.37, + "entry_time": "2023-06-16T00:00:00", + "exit_price": 94.163, + "exit_reason": "signal", + "exit_time": "2023-06-20T00:00:00", + "pnl": -20.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.953, + "entry_time": "2023-06-22T00:00:00", + "exit_price": 94.374, + "exit_reason": "signal", + "exit_time": "2023-06-23T00:00:00", + "pnl": -57.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.898, + "entry_time": "2023-06-28T00:00:00", + "exit_price": 94.566, + "exit_reason": "signal", + "exit_time": "2023-06-29T00:00:00", + "pnl": 66.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.277, + "entry_time": "2023-07-03T00:00:00", + "exit_price": 94.941, + "exit_reason": "signal", + "exit_time": "2023-07-10T00:00:00", + "pnl": 66.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.493, + "entry_time": "2023-07-13T00:00:00", + "exit_price": 94.347, + "exit_reason": "signal", + "exit_time": "2023-07-14T00:00:00", + "pnl": -14.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.237, + "entry_time": "2023-07-19T00:00:00", + "exit_price": 94.334, + "exit_reason": "signal", + "exit_time": "2023-07-20T00:00:00", + "pnl": 109.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.531, + "entry_time": "2023-07-24T00:00:00", + "exit_price": 93.304, + "exit_reason": "signal", + "exit_time": "2023-07-26T00:00:00", + "pnl": -22.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.055, + "entry_time": "2023-07-28T00:00:00", + "exit_price": 93.971, + "exit_reason": "signal", + "exit_time": "2023-07-31T00:00:00", + "pnl": -8.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.498, + "entry_time": "2023-08-03T00:00:00", + "exit_price": 93.961, + "exit_reason": "signal", + "exit_time": "2023-08-04T00:00:00", + "pnl": 46.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.216, + "entry_time": "2023-08-09T00:00:00", + "exit_price": 93.228, + "exit_reason": "signal", + "exit_time": "2023-08-10T00:00:00", + "pnl": -98.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.656, + "entry_time": "2023-08-14T00:00:00", + "exit_price": 94.398, + "exit_reason": "signal", + "exit_time": "2023-08-16T00:00:00", + "pnl": 174.1999999999989, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.089, + "entry_time": "2023-08-18T00:00:00", + "exit_price": 93.399, + "exit_reason": "signal", + "exit_time": "2023-08-21T00:00:00", + "pnl": -69.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.799, + "entry_time": "2023-08-24T00:00:00", + "exit_price": 93.688, + "exit_reason": "signal", + "exit_time": "2023-08-25T00:00:00", + "pnl": 88.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.791, + "entry_time": "2023-08-30T00:00:00", + "exit_price": 92.573, + "exit_reason": "signal", + "exit_time": "2023-08-31T00:00:00", + "pnl": -121.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.041, + "entry_time": "2023-09-05T00:00:00", + "exit_price": 94.468, + "exit_reason": "signal", + "exit_time": "2023-09-06T00:00:00", + "pnl": 142.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.237, + "entry_time": "2023-09-08T00:00:00", + "exit_price": 94.095, + "exit_reason": "signal", + "exit_time": "2023-09-11T00:00:00", + "pnl": -14.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.791, + "entry_time": "2023-09-14T00:00:00", + "exit_price": 94.029, + "exit_reason": "signal", + "exit_time": "2023-09-15T00:00:00", + "pnl": -76.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.173, + "entry_time": "2023-09-20T00:00:00", + "exit_price": 93.583, + "exit_reason": "signal", + "exit_time": "2023-09-21T00:00:00", + "pnl": -59.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.115, + "entry_time": "2023-09-25T00:00:00", + "exit_price": 93.162, + "exit_reason": "signal", + "exit_time": "2023-09-27T00:00:00", + "pnl": -95.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.496, + "entry_time": "2023-09-29T00:00:00", + "exit_price": 92.842, + "exit_reason": "signal", + "exit_time": "2023-10-02T00:00:00", + "pnl": -65.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.019, + "entry_time": "2023-10-05T00:00:00", + "exit_price": 92.773, + "exit_reason": "signal", + "exit_time": "2023-10-06T00:00:00", + "pnl": -24.600000000002183, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.345, + "entry_time": "2023-10-11T00:00:00", + "exit_price": 92.322, + "exit_reason": "signal", + "exit_time": "2023-10-12T00:00:00", + "pnl": -2.2999999999992724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.994, + "entry_time": "2023-10-16T00:00:00", + "exit_price": 91.586, + "exit_reason": "signal", + "exit_time": "2023-10-18T00:00:00", + "pnl": -40.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.467, + "entry_time": "2023-10-20T00:00:00", + "exit_price": 92.361, + "exit_reason": "signal", + "exit_time": "2023-10-23T00:00:00", + "pnl": 89.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.379, + "entry_time": "2023-10-26T00:00:00", + "exit_price": 91.412, + "exit_reason": "signal", + "exit_time": "2023-10-27T00:00:00", + "pnl": -96.69999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.43, + "entry_time": "2023-11-01T00:00:00", + "exit_price": 91.133, + "exit_reason": "signal", + "exit_time": "2023-11-02T00:00:00", + "pnl": -29.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.967, + "entry_time": "2023-11-06T00:00:00", + "exit_price": 91.602, + "exit_reason": "signal", + "exit_time": "2023-11-08T00:00:00", + "pnl": 63.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.416, + "entry_time": "2023-11-10T00:00:00", + "exit_price": 92.325, + "exit_reason": "signal", + "exit_time": "2023-11-13T00:00:00", + "pnl": -9.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.945, + "entry_time": "2023-11-16T00:00:00", + "exit_price": 92.019, + "exit_reason": "signal", + "exit_time": "2023-11-17T00:00:00", + "pnl": -92.59999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.744, + "entry_time": "2023-11-22T00:00:00", + "exit_price": 93.688, + "exit_reason": "signal", + "exit_time": "2023-11-24T00:00:00", + "pnl": 94.40000000000146, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.139, + "entry_time": "2023-11-27T00:00:00", + "exit_price": 92.476, + "exit_reason": "signal", + "exit_time": "2023-11-29T00:00:00", + "pnl": -166.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.76, + "entry_time": "2023-12-01T00:00:00", + "exit_price": 93.448, + "exit_reason": "signal", + "exit_time": "2023-12-04T00:00:00", + "pnl": 68.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.583, + "entry_time": "2023-12-07T00:00:00", + "exit_price": 94.144, + "exit_reason": "signal", + "exit_time": "2023-12-08T00:00:00", + "pnl": 56.10000000000218, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.056, + "entry_time": "2023-12-13T00:00:00", + "exit_price": 93.356, + "exit_reason": "signal", + "exit_time": "2023-12-14T00:00:00", + "pnl": 129.99999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.194, + "entry_time": "2023-12-18T00:00:00", + "exit_price": 92.511, + "exit_reason": "signal", + "exit_time": "2023-12-20T00:00:00", + "pnl": 31.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.914, + "entry_time": "2023-12-22T00:00:00", + "exit_price": 92.894, + "exit_reason": "signal", + "exit_time": "2023-12-26T00:00:00", + "pnl": -101.99999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.128, + "entry_time": "2023-12-28T00:00:00", + "exit_price": 93.66, + "exit_reason": "signal", + "exit_time": "2023-12-29T00:00:00", + "pnl": 53.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.892, + "entry_time": "2024-01-03T00:00:00", + "exit_price": 94.589, + "exit_reason": "signal", + "exit_time": "2024-01-04T00:00:00", + "pnl": -30.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.077, + "entry_time": "2024-01-08T00:00:00", + "exit_price": 94.764, + "exit_reason": "signal", + "exit_time": "2024-01-10T00:00:00", + "pnl": -31.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.805, + "entry_time": "2024-01-12T00:00:00", + "exit_price": 94.409, + "exit_reason": "signal", + "exit_time": "2024-01-16T00:00:00", + "pnl": -39.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.092, + "entry_time": "2024-01-18T00:00:00", + "exit_price": 94.92, + "exit_reason": "signal", + "exit_time": "2024-01-19T00:00:00", + "pnl": -17.200000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.886, + "entry_time": "2024-01-24T00:00:00", + "exit_price": 95.417, + "exit_reason": "signal", + "exit_time": "2024-01-25T00:00:00", + "pnl": 53.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.117, + "entry_time": "2024-01-29T00:00:00", + "exit_price": 94.586, + "exit_reason": "signal", + "exit_time": "2024-01-31T00:00:00", + "pnl": 46.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 95.519, + "entry_time": "2024-02-02T00:00:00", + "exit_price": 95.646, + "exit_reason": "signal", + "exit_time": "2024-02-05T00:00:00", + "pnl": 12.699999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.974, + "entry_time": "2024-02-08T00:00:00", + "exit_price": 96.257, + "exit_reason": "signal", + "exit_time": "2024-02-09T00:00:00", + "pnl": 128.3000000000011, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.384, + "entry_time": "2024-02-14T00:00:00", + "exit_price": 94.768, + "exit_reason": "signal", + "exit_time": "2024-02-15T00:00:00", + "pnl": 38.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.926, + "entry_time": "2024-02-20T00:00:00", + "exit_price": 95.284, + "exit_reason": "signal", + "exit_time": "2024-02-21T00:00:00", + "pnl": 35.80000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.645, + "entry_time": "2024-02-23T00:00:00", + "exit_price": 94.632, + "exit_reason": "signal", + "exit_time": "2024-02-26T00:00:00", + "pnl": -1.2999999999992724, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.994, + "entry_time": "2024-02-29T00:00:00", + "exit_price": 93.516, + "exit_reason": "signal", + "exit_time": "2024-03-01T00:00:00", + "pnl": 52.20000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.208, + "entry_time": "2024-03-06T00:00:00", + "exit_price": 93.035, + "exit_reason": "signal", + "exit_time": "2024-03-07T00:00:00", + "pnl": -17.299999999999272, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.579, + "entry_time": "2024-03-11T00:00:00", + "exit_price": 93.424, + "exit_reason": "signal", + "exit_time": "2024-03-13T00:00:00", + "pnl": -15.499999999998181, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.322, + "entry_time": "2024-03-15T00:00:00", + "exit_price": 93.745, + "exit_reason": "signal", + "exit_time": "2024-03-18T00:00:00", + "pnl": 42.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.567, + "entry_time": "2024-03-21T00:00:00", + "exit_price": 90.994, + "exit_reason": "signal", + "exit_time": "2024-03-22T00:00:00", + "pnl": -157.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.365, + "entry_time": "2024-03-27T00:00:00", + "exit_price": 92.886, + "exit_reason": "signal", + "exit_time": "2024-03-28T00:00:00", + "pnl": 52.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.875, + "entry_time": "2024-04-02T00:00:00", + "exit_price": 92.605, + "exit_reason": "signal", + "exit_time": "2024-04-03T00:00:00", + "pnl": -27.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.203, + "entry_time": "2024-04-05T00:00:00", + "exit_price": 92.389, + "exit_reason": "signal", + "exit_time": "2024-04-08T00:00:00", + "pnl": 18.599999999998545, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.968, + "entry_time": "2024-04-11T00:00:00", + "exit_price": 91.888, + "exit_reason": "signal", + "exit_time": "2024-04-12T00:00:00", + "pnl": -8.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.872, + "entry_time": "2024-04-17T00:00:00", + "exit_price": 92.005, + "exit_reason": "signal", + "exit_time": "2024-04-18T00:00:00", + "pnl": -86.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.847, + "entry_time": "2024-04-22T00:00:00", + "exit_price": 91.521, + "exit_reason": "signal", + "exit_time": "2024-04-24T00:00:00", + "pnl": -132.59999999999854, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.615, + "entry_time": "2024-04-26T00:00:00", + "exit_price": 92.84, + "exit_reason": "signal", + "exit_time": "2024-04-29T00:00:00", + "pnl": 22.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.018, + "entry_time": "2024-05-02T00:00:00", + "exit_price": 93.195, + "exit_reason": "signal", + "exit_time": "2024-05-03T00:00:00", + "pnl": 117.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.761, + "entry_time": "2024-05-08T00:00:00", + "exit_price": 93.992, + "exit_reason": "signal", + "exit_time": "2024-05-09T00:00:00", + "pnl": 23.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.186, + "entry_time": "2024-05-13T00:00:00", + "exit_price": 93.292, + "exit_reason": "signal", + "exit_time": "2024-05-15T00:00:00", + "pnl": 10.600000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.053, + "entry_time": "2024-05-17T00:00:00", + "exit_price": 92.898, + "exit_reason": "signal", + "exit_time": "2024-05-20T00:00:00", + "pnl": -15.5, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.003, + "entry_time": "2024-05-23T00:00:00", + "exit_price": 93.803, + "exit_reason": "signal", + "exit_time": "2024-05-24T00:00:00", + "pnl": 80.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.531, + "entry_time": "2024-05-29T00:00:00", + "exit_price": 93.551, + "exit_reason": "signal", + "exit_time": "2024-05-30T00:00:00", + "pnl": 2.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.921, + "entry_time": "2024-06-03T00:00:00", + "exit_price": 93.378, + "exit_reason": "signal", + "exit_time": "2024-06-05T00:00:00", + "pnl": -54.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.738, + "entry_time": "2024-06-07T00:00:00", + "exit_price": 94.058, + "exit_reason": "signal", + "exit_time": "2024-06-10T00:00:00", + "pnl": 32.00000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.716, + "entry_time": "2024-06-13T00:00:00", + "exit_price": 92.354, + "exit_reason": "signal", + "exit_time": "2024-06-14T00:00:00", + "pnl": -36.19999999999891, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.204, + "entry_time": "2024-06-20T00:00:00", + "exit_price": 93.86, + "exit_reason": "signal", + "exit_time": "2024-06-26T00:00:00", + "pnl": -34.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.769, + "entry_time": "2024-06-28T00:00:00", + "exit_price": 94.267, + "exit_reason": "signal", + "exit_time": "2024-07-01T00:00:00", + "pnl": 149.79999999999745, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.501, + "entry_time": "2024-07-05T00:00:00", + "exit_price": 92.972, + "exit_reason": "signal", + "exit_time": "2024-07-11T00:00:00", + "pnl": -52.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.501, + "entry_time": "2024-07-15T00:00:00", + "exit_price": 92.553, + "exit_reason": "signal", + "exit_time": "2024-07-17T00:00:00", + "pnl": 5.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.928, + "entry_time": "2024-07-19T00:00:00", + "exit_price": 92.018, + "exit_reason": "signal", + "exit_time": "2024-07-22T00:00:00", + "pnl": 9.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.988, + "entry_time": "2024-07-25T00:00:00", + "exit_price": 92.135, + "exit_reason": "signal", + "exit_time": "2024-07-26T00:00:00", + "pnl": 14.700000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.856, + "entry_time": "2024-07-31T00:00:00", + "exit_price": 92.251, + "exit_reason": "signal", + "exit_time": "2024-08-01T00:00:00", + "pnl": 39.50000000000182, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.903, + "entry_time": "2024-08-05T00:00:00", + "exit_price": 91.614, + "exit_reason": "signal", + "exit_time": "2024-08-07T00:00:00", + "pnl": -28.900000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.266, + "entry_time": "2024-08-09T00:00:00", + "exit_price": 93.255, + "exit_reason": "signal", + "exit_time": "2024-08-12T00:00:00", + "pnl": 98.89999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.888, + "entry_time": "2024-08-15T00:00:00", + "exit_price": 92.534, + "exit_reason": "signal", + "exit_time": "2024-08-16T00:00:00", + "pnl": -35.399999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 93.352, + "entry_time": "2024-08-21T00:00:00", + "exit_price": 93.822, + "exit_reason": "signal", + "exit_time": "2024-08-22T00:00:00", + "pnl": 47.0, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.013, + "entry_time": "2024-08-26T00:00:00", + "exit_price": 93.143, + "exit_reason": "signal", + "exit_time": "2024-08-28T00:00:00", + "pnl": 112.99999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 94.316, + "entry_time": "2024-08-30T00:00:00", + "exit_price": 92.433, + "exit_reason": "signal", + "exit_time": "2024-09-03T00:00:00", + "pnl": -188.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.742, + "entry_time": "2024-09-05T00:00:00", + "exit_price": 93.047, + "exit_reason": "signal", + "exit_time": "2024-09-06T00:00:00", + "pnl": 30.49999999999818, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 92.668, + "entry_time": "2024-09-11T00:00:00", + "exit_price": 91.661, + "exit_reason": "signal", + "exit_time": "2024-09-12T00:00:00", + "pnl": -100.70000000000073, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.179, + "entry_time": "2024-09-16T00:00:00", + "exit_price": 91.58, + "exit_reason": "signal", + "exit_time": "2024-09-18T00:00:00", + "pnl": 40.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.285, + "entry_time": "2024-09-20T00:00:00", + "exit_price": 90.104, + "exit_reason": "signal", + "exit_time": "2024-09-23T00:00:00", + "pnl": -18.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.052, + "entry_time": "2024-09-26T00:00:00", + "exit_price": 91.204, + "exit_reason": "signal", + "exit_time": "2024-09-27T00:00:00", + "pnl": 15.199999999998909, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.551, + "entry_time": "2024-10-02T00:00:00", + "exit_price": 90.177, + "exit_reason": "signal", + "exit_time": "2024-10-03T00:00:00", + "pnl": -137.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.83, + "entry_time": "2024-10-07T00:00:00", + "exit_price": 91.072, + "exit_reason": "signal", + "exit_time": "2024-10-09T00:00:00", + "pnl": 24.200000000000728, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 91.139, + "entry_time": "2024-10-11T00:00:00", + "exit_price": 90.93, + "exit_reason": "signal", + "exit_time": "2024-10-14T00:00:00", + "pnl": -20.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 90.494, + "entry_time": "2024-10-17T00:00:00", + "exit_price": 89.863, + "exit_reason": "signal", + "exit_time": "2024-10-18T00:00:00", + "pnl": -63.100000000000364, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.811, + "entry_time": "2024-10-23T00:00:00", + "exit_price": 89.547, + "exit_reason": "signal", + "exit_time": "2024-10-24T00:00:00", + "pnl": -26.400000000001455, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.856, + "entry_time": "2024-10-28T00:00:00", + "exit_price": 89.886, + "exit_reason": "signal", + "exit_time": "2024-10-30T00:00:00", + "pnl": 3.000000000001819, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.52, + "entry_time": "2024-11-01T00:00:00", + "exit_price": 89.584, + "exit_reason": "signal", + "exit_time": "2024-11-04T00:00:00", + "pnl": 106.39999999999964, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.328, + "entry_time": "2024-11-07T00:00:00", + "exit_price": 89.065, + "exit_reason": "signal", + "exit_time": "2024-11-08T00:00:00", + "pnl": -26.30000000000109, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.21, + "entry_time": "2024-11-13T00:00:00", + "exit_price": 88.452, + "exit_reason": "signal", + "exit_time": "2024-11-14T00:00:00", + "pnl": -75.79999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 87.859, + "entry_time": "2024-11-18T00:00:00", + "exit_price": 88.672, + "exit_reason": "signal", + "exit_time": "2024-11-20T00:00:00", + "pnl": 81.29999999999927, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 89.369, + "entry_time": "2024-11-22T00:00:00", + "exit_price": 89.07, + "exit_reason": "signal", + "exit_time": "2024-11-25T00:00:00", + "pnl": -29.899999999999636, + "size": 100.0 + }, + { + "asset": "TEST", + "commission": 0.0, + "direction": "Long", + "entry_price": 88.844, + "entry_time": "2024-11-29T00:00:00", + "exit_price": 89.039, + "exit_reason": "signal", + "exit_time": "2024-12-05T00:00:00", + "pnl": 19.5, + "size": 100.0 + } + ] + }, + "provenance": { + "adapter": { + "module": "frameworks.zipline", + "path": "validation/frameworks/zipline.py" + }, + "capabilities": { + "framework": { + "cash_flows": "aggregate_only", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "fills": "reconstructed", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "native_filled_only", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + }, + "ml4t": { + "cash_flows": "aggregate_only", + "closed_trades": "native", + "exit_reason": "native", + "fills": "native", + "intents": "input_only", + "open_trades": "unavailable", + "orders": "unavailable", + "positions": "unavailable", + "rejections": "unavailable", + "terminal": "native" + } + }, + "comparison_protocol": { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "none", + "trade_records": "adapter_reconstructed_from_native_transactions" + }, + "digests": { + "adapter": "6e650c04c9604c3cfa40e597e16fa2e792d7e61fe2ebec56b7f46b5e33dde581", + "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", + "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", + "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", + "engine": "9a423b1f58d81bded0545cf0d4572d8c0c2a41129d41a33c59ea7649f6c051b1", + "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", + "profile": "4c1b7206fe55cebbe9f41acb88a30dac343e4ce973e92ad60c236a27ef021548", + "scenario": "d0e0852cea9e321d72793f0f7fd7479d70d67ea3b367cbab817e4e3067af4e32" + }, + "framework_target": { + "actual_version": "3.1.1", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "version": "3.1.1" + }, + "input_digest": "d8119bff0157cd31258a444fec247040af62a78f46aff8b484ad1b9ef8915516", + "ml4t": { + "commit": "98483c88c37247cbc17525fb5e803f6fca1ee4fd", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "record_counts": { + "bars": 1241, + "entry_signals": 412, + "exit_signals": 412, + "framework_closed_trades": 337, + "framework_fills": 674, + "framework_intents": 824, + "framework_orders": null, + "ml4t_closed_trades": 337, + "ml4t_fills": 674, + "ml4t_intents": 824, + "ml4t_orders": null + } + }, + "release_blocking": false, + "required": true, + "scenario_id": "17", + "scenario_name": "High Event Count", "status": "pass" } ], "release_gate_passed": true, - "schema_version": 1, + "schema_version": 3, "summary": { "adapter_failure": 0, "adapter_import_failure": 0, @@ -618,7 +294815,7 @@ "malformed_output": 0, "missing_scenario": 0, "ml4t_failure": 0, - "pass": 62, + "pass": 66, "skipped": 0, "subprocess_failure": 0, "timeout": 0, diff --git a/validation/LARGE_SCALE_RESULTS.json b/validation/LARGE_SCALE_RESULTS.json new file mode 100644 index 00000000..fcd06857 --- /dev/null +++ b/validation/LARGE_SCALE_RESULTS.json @@ -0,0 +1,1828 @@ +{ + "frameworks": [ + { + "capabilities": { + "closed_trades": "reconstructed from canonical native fills", + "fill_order": "session, asset, side, quantity, price", + "fills": "native", + "intents": "canonical strategy trace", + "terminal_state": "reconstructed from native fills and final marks" + }, + "comparison": { + "actual_error": null, + "actual_framework": "ml4t.backtest[vectorbt_strict]", + "canonical_money_quantum": "0.000001", + "canonical_record_quantum": "1E-8", + "checks": [ + { + "actual_count": 427790, + "actual_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "expected_count": 427790, + "expected_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "first_difference": null, + "name": "order_intents", + "passed": true + }, + { + "actual_count": 390369, + "actual_sha256": "83af0bc6cb77d931349349093a611cb645e1503c2c33aef9e626c293630cf0c1", + "expected_count": 390369, + "expected_sha256": "83af0bc6cb77d931349349093a611cb645e1503c2c33aef9e626c293630cf0c1", + "first_difference": null, + "name": "fills", + "passed": true + }, + { + "actual_count": 188549, + "actual_sha256": "7055c62444c54eb5f5191358b187641ad7de019c3c182ce7f088d460ec59a242", + "expected_count": 188549, + "expected_sha256": "7055c62444c54eb5f5191358b187641ad7de019c3c182ce7f088d460ec59a242", + "first_difference": null, + "name": "trades", + "passed": true + }, + { + "actual": 188549, + "canonical_actual": 188549.0, + "canonical_difference": 0.0, + "canonical_expected": 188549.0, + "expected": 188549, + "name": "trade_count", + "passed": true, + "raw_difference": 0 + }, + { + "actual": -283214.59191072755, + "canonical_actual": -283214.591911, + "canonical_difference": 0.0, + "canonical_expected": -283214.591911, + "expected": -283214.59191072907, + "name": "total_pnl", + "passed": true, + "raw_difference": 1.5133991837501526e-09 + }, + { + "actual": 716785.4080892724, + "canonical_actual": 716785.408089, + "canonical_difference": 0.0, + "canonical_expected": 716785.408089, + "expected": 716785.4080892709, + "name": "final_value", + "passed": true, + "raw_difference": 1.5133991837501526e-09 + }, + { + "actual": { + "cash_from_fill_ledger": 786065.409828, + "holdings_from_fill_ledger": -69280.005398, + "positions": { + "ASSET_000": 0.0, + "ASSET_001": -100.0, + "ASSET_002": 0.0, + "ASSET_004": -0.0, + "ASSET_005": -100.0, + "ASSET_006": 10.74397, + "ASSET_007": 0.0, + "ASSET_008": -0.0, + "ASSET_009": -0.0, + "ASSET_010": 0.0, + "ASSET_011": -0.0, + "ASSET_014": 0.0, + "ASSET_015": -0.0, + "ASSET_017": 0.0, + "ASSET_019": 0.0, + "ASSET_020": -100.0, + "ASSET_021": -0.0, + "ASSET_023": -0.0, + "ASSET_024": -0.0, + "ASSET_025": -0.0, + "ASSET_026": 0.0, + "ASSET_027": 0.0, + "ASSET_028": 100.0, + "ASSET_029": 100.0, + "ASSET_030": -0.477202, + "ASSET_032": 0.0, + "ASSET_033": -0.0, + "ASSET_034": -0.0, + "ASSET_035": -0.0, + "ASSET_036": 0.0, + "ASSET_037": 0.0, + "ASSET_038": -0.0, + "ASSET_039": 0.0, + "ASSET_040": 0.0, + "ASSET_042": -0.0, + "ASSET_043": -0.0, + "ASSET_044": -0.0, + "ASSET_046": -0.0, + "ASSET_047": 0.0, + "ASSET_048": 0.0, + "ASSET_049": -0.0, + "ASSET_051": 0.0, + "ASSET_052": 0.0, + "ASSET_053": 0.0, + "ASSET_054": 0.0, + "ASSET_055": -0.0, + "ASSET_057": -0.0, + "ASSET_058": 0.0, + "ASSET_059": 0.0, + "ASSET_060": 0.0, + "ASSET_062": 0.0, + "ASSET_065": -0.0, + "ASSET_066": -100.0, + "ASSET_067": -0.0, + "ASSET_068": 0.0, + "ASSET_069": 0.0, + "ASSET_070": -100.0, + "ASSET_071": 100.0, + "ASSET_072": 0.0, + "ASSET_073": -0.0, + "ASSET_074": 0.0, + "ASSET_075": -80.307178, + "ASSET_076": -0.0, + "ASSET_077": -0.0, + "ASSET_078": 0.0, + "ASSET_079": -0.0, + "ASSET_081": 0.0, + "ASSET_082": 0.0, + "ASSET_084": -0.0, + "ASSET_085": 0.0, + "ASSET_086": -0.0, + "ASSET_087": -0.0, + "ASSET_089": 0.0, + "ASSET_090": 0.0, + "ASSET_091": 0.0, + "ASSET_092": -0.0, + "ASSET_093": 0.0, + "ASSET_094": 0.0, + "ASSET_096": -0.0, + "ASSET_097": 0.0, + "ASSET_098": 0.0, + "ASSET_099": -0.0, + "ASSET_101": -0.0, + "ASSET_102": 0.0, + "ASSET_103": -0.0, + "ASSET_104": 0.0, + "ASSET_105": 0.0, + "ASSET_106": -0.0, + "ASSET_107": 0.0, + "ASSET_108": -0.0, + "ASSET_109": 0.0, + "ASSET_110": -0.0, + "ASSET_111": 0.0, + "ASSET_112": 0.0, + "ASSET_113": -0.0, + "ASSET_114": -0.0, + "ASSET_115": 0.0, + "ASSET_116": -0.0, + "ASSET_117": -0.0, + "ASSET_118": 0.0, + "ASSET_119": -0.0, + "ASSET_120": 0.0, + "ASSET_121": -0.0, + "ASSET_122": 0.0, + "ASSET_123": -0.0, + "ASSET_124": 0.0, + "ASSET_125": -0.0, + "ASSET_126": -0.0, + "ASSET_127": 0.0, + "ASSET_130": 0.0, + "ASSET_131": -0.0, + "ASSET_132": 0.0, + "ASSET_134": 0.0, + "ASSET_135": -0.0, + "ASSET_136": 0.0, + "ASSET_137": 0.0, + "ASSET_138": -100.0, + "ASSET_139": 100.0, + "ASSET_140": -65.731089, + "ASSET_142": -0.0, + "ASSET_143": 0.0, + "ASSET_146": 0.0, + "ASSET_147": -0.0, + "ASSET_148": -0.0, + "ASSET_150": 0.0, + "ASSET_151": -0.0, + "ASSET_152": 0.0, + "ASSET_153": 11.479909, + "ASSET_154": -0.0, + "ASSET_155": -0.0, + "ASSET_156": 4.275139, + "ASSET_157": 0.0, + "ASSET_158": -0.0, + "ASSET_159": 9.819309, + "ASSET_160": -0.0, + "ASSET_161": 100.0, + "ASSET_162": 0.0, + "ASSET_163": 0.0, + "ASSET_164": 0.0, + "ASSET_165": 0.0, + "ASSET_166": -0.0, + "ASSET_168": 0.0, + "ASSET_169": -0.0, + "ASSET_170": -0.0, + "ASSET_171": 0.0, + "ASSET_173": 54.074946, + "ASSET_174": -0.0, + "ASSET_175": 0.0, + "ASSET_176": 0.0, + "ASSET_177": -0.0, + "ASSET_178": -0.0, + "ASSET_179": 0.0, + "ASSET_180": 0.0, + "ASSET_181": -0.0, + "ASSET_182": -0.0, + "ASSET_183": 0.0, + "ASSET_184": 100.0, + "ASSET_185": 0.0, + "ASSET_186": 0.0, + "ASSET_187": 0.0, + "ASSET_188": -0.0, + "ASSET_189": -0.0, + "ASSET_190": 0.0, + "ASSET_191": 0.0, + "ASSET_192": -0.0, + "ASSET_193": 0.0, + "ASSET_194": 0.0, + "ASSET_195": -100.0, + "ASSET_196": -0.0, + "ASSET_197": 0.0, + "ASSET_198": 0.0, + "ASSET_199": 0.0, + "ASSET_200": 0.0, + "ASSET_201": -23.687792, + "ASSET_202": 0.0, + "ASSET_203": -0.0, + "ASSET_205": 100.0, + "ASSET_206": -10.740523, + "ASSET_207": -0.0, + "ASSET_208": -0.0, + "ASSET_209": 0.0, + "ASSET_210": -34.019116, + "ASSET_212": 0.0, + "ASSET_213": -0.0, + "ASSET_214": 0.0, + "ASSET_218": 0.0, + "ASSET_219": 0.0, + "ASSET_220": 0.0, + "ASSET_221": -0.0, + "ASSET_222": -0.0, + "ASSET_223": -0.0, + "ASSET_224": 0.0, + "ASSET_225": -0.0, + "ASSET_226": 0.0, + "ASSET_227": -0.0, + "ASSET_228": -0.0, + "ASSET_229": -100.0, + "ASSET_230": -0.0, + "ASSET_231": -0.0, + "ASSET_232": -0.0, + "ASSET_233": 0.0, + "ASSET_235": 0.0, + "ASSET_236": 0.0, + "ASSET_237": 0.0, + "ASSET_239": -0.0, + "ASSET_240": 0.0, + "ASSET_241": -100.0, + "ASSET_243": 0.0, + "ASSET_244": -0.0, + "ASSET_246": -100.0, + "ASSET_247": -0.0, + "ASSET_249": -0.0 + }, + "reported_final_value": 716785.408089, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "actual_sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c", + "expected": { + "cash_from_fill_ledger": 786065.409828, + "holdings_from_fill_ledger": -69280.005398, + "positions": { + "ASSET_000": 0.0, + "ASSET_001": -100.0, + "ASSET_002": 0.0, + "ASSET_004": -0.0, + "ASSET_005": -100.0, + "ASSET_006": 10.74397, + "ASSET_007": 0.0, + "ASSET_008": -0.0, + "ASSET_009": -0.0, + "ASSET_010": 0.0, + "ASSET_011": -0.0, + "ASSET_014": 0.0, + "ASSET_015": -0.0, + "ASSET_017": 0.0, + "ASSET_019": 0.0, + "ASSET_020": -100.0, + "ASSET_021": -0.0, + "ASSET_023": -0.0, + "ASSET_024": -0.0, + "ASSET_025": -0.0, + "ASSET_026": 0.0, + "ASSET_027": 0.0, + "ASSET_028": 100.0, + "ASSET_029": 100.0, + "ASSET_030": -0.477202, + "ASSET_032": 0.0, + "ASSET_033": -0.0, + "ASSET_034": -0.0, + "ASSET_035": -0.0, + "ASSET_036": 0.0, + "ASSET_037": 0.0, + "ASSET_038": -0.0, + "ASSET_039": 0.0, + "ASSET_040": 0.0, + "ASSET_042": -0.0, + "ASSET_043": -0.0, + "ASSET_044": -0.0, + "ASSET_046": -0.0, + "ASSET_047": 0.0, + "ASSET_048": 0.0, + "ASSET_049": -0.0, + "ASSET_051": 0.0, + "ASSET_052": 0.0, + "ASSET_053": 0.0, + "ASSET_054": 0.0, + "ASSET_055": -0.0, + "ASSET_057": -0.0, + "ASSET_058": 0.0, + "ASSET_059": 0.0, + "ASSET_060": 0.0, + "ASSET_062": 0.0, + "ASSET_065": -0.0, + "ASSET_066": -100.0, + "ASSET_067": -0.0, + "ASSET_068": 0.0, + "ASSET_069": 0.0, + "ASSET_070": -100.0, + "ASSET_071": 100.0, + "ASSET_072": 0.0, + "ASSET_073": -0.0, + "ASSET_074": 0.0, + "ASSET_075": -80.307178, + "ASSET_076": -0.0, + "ASSET_077": -0.0, + "ASSET_078": 0.0, + "ASSET_079": -0.0, + "ASSET_081": 0.0, + "ASSET_082": 0.0, + "ASSET_084": -0.0, + "ASSET_085": 0.0, + "ASSET_086": -0.0, + "ASSET_087": -0.0, + "ASSET_089": 0.0, + "ASSET_090": 0.0, + "ASSET_091": 0.0, + "ASSET_092": -0.0, + "ASSET_093": 0.0, + "ASSET_094": 0.0, + "ASSET_096": -0.0, + "ASSET_097": 0.0, + "ASSET_098": 0.0, + "ASSET_099": -0.0, + "ASSET_101": -0.0, + "ASSET_102": 0.0, + "ASSET_103": -0.0, + "ASSET_104": 0.0, + "ASSET_105": 0.0, + "ASSET_106": -0.0, + "ASSET_107": 0.0, + "ASSET_108": -0.0, + "ASSET_109": 0.0, + "ASSET_110": -0.0, + "ASSET_111": 0.0, + "ASSET_112": 0.0, + "ASSET_113": -0.0, + "ASSET_114": -0.0, + "ASSET_115": 0.0, + "ASSET_116": -0.0, + "ASSET_117": -0.0, + "ASSET_118": 0.0, + "ASSET_119": -0.0, + "ASSET_120": 0.0, + "ASSET_121": -0.0, + "ASSET_122": 0.0, + "ASSET_123": -0.0, + "ASSET_124": 0.0, + "ASSET_125": -0.0, + "ASSET_126": -0.0, + "ASSET_127": 0.0, + "ASSET_130": 0.0, + "ASSET_131": -0.0, + "ASSET_132": 0.0, + "ASSET_134": 0.0, + "ASSET_135": -0.0, + "ASSET_136": 0.0, + "ASSET_137": 0.0, + "ASSET_138": -100.0, + "ASSET_139": 100.0, + "ASSET_140": -65.731089, + "ASSET_142": -0.0, + "ASSET_143": 0.0, + "ASSET_146": 0.0, + "ASSET_147": -0.0, + "ASSET_148": -0.0, + "ASSET_150": 0.0, + "ASSET_151": -0.0, + "ASSET_152": 0.0, + "ASSET_153": 11.479909, + "ASSET_154": -0.0, + "ASSET_155": -0.0, + "ASSET_156": 4.275139, + "ASSET_157": 0.0, + "ASSET_158": -0.0, + "ASSET_159": 9.819309, + "ASSET_160": -0.0, + "ASSET_161": 100.0, + "ASSET_162": 0.0, + "ASSET_163": 0.0, + "ASSET_164": 0.0, + "ASSET_165": 0.0, + "ASSET_166": -0.0, + "ASSET_168": 0.0, + "ASSET_169": -0.0, + "ASSET_170": -0.0, + "ASSET_171": 0.0, + "ASSET_173": 54.074946, + "ASSET_174": -0.0, + "ASSET_175": 0.0, + "ASSET_176": 0.0, + "ASSET_177": -0.0, + "ASSET_178": -0.0, + "ASSET_179": 0.0, + "ASSET_180": 0.0, + "ASSET_181": -0.0, + "ASSET_182": -0.0, + "ASSET_183": 0.0, + "ASSET_184": 100.0, + "ASSET_185": 0.0, + "ASSET_186": 0.0, + "ASSET_187": 0.0, + "ASSET_188": -0.0, + "ASSET_189": -0.0, + "ASSET_190": 0.0, + "ASSET_191": 0.0, + "ASSET_192": -0.0, + "ASSET_193": 0.0, + "ASSET_194": 0.0, + "ASSET_195": -100.0, + "ASSET_196": -0.0, + "ASSET_197": 0.0, + "ASSET_198": 0.0, + "ASSET_199": 0.0, + "ASSET_200": 0.0, + "ASSET_201": -23.687792, + "ASSET_202": 0.0, + "ASSET_203": -0.0, + "ASSET_205": 100.0, + "ASSET_206": -10.740523, + "ASSET_207": -0.0, + "ASSET_208": -0.0, + "ASSET_209": 0.0, + "ASSET_210": -34.019116, + "ASSET_212": 0.0, + "ASSET_213": -0.0, + "ASSET_214": 0.0, + "ASSET_218": 0.0, + "ASSET_219": 0.0, + "ASSET_220": 0.0, + "ASSET_221": -0.0, + "ASSET_222": -0.0, + "ASSET_223": -0.0, + "ASSET_224": 0.0, + "ASSET_225": -0.0, + "ASSET_226": 0.0, + "ASSET_227": -0.0, + "ASSET_228": -0.0, + "ASSET_229": -100.0, + "ASSET_230": -0.0, + "ASSET_231": -0.0, + "ASSET_232": -0.0, + "ASSET_233": 0.0, + "ASSET_235": 0.0, + "ASSET_236": 0.0, + "ASSET_237": 0.0, + "ASSET_239": -0.0, + "ASSET_240": 0.0, + "ASSET_241": -100.0, + "ASSET_243": 0.0, + "ASSET_244": -0.0, + "ASSET_246": -100.0, + "ASSET_247": -0.0, + "ASSET_249": -0.0 + }, + "reported_final_value": 716785.408089, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "expected_sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c", + "name": "terminal_state", + "passed": true + } + ], + "expected_error": null, + "expected_framework": "VectorBT Pro", + "passed": true, + "scenario": "controlled_250_assets_5040_sessions", + "schema_version": 1, + "timestamp_domain": "session_date" + }, + "framework": "vectorbt_pro", + "input": { + "conversion": "none", + "effective_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09", + "raw_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09" + }, + "ml4t": { + "commit": "ad62d2bd30f9e3a25a9a205ae60df6b0309ca89a", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runtime_seconds": { + "framework": 67.83662832411937, + "ml4t": 122.52686988189816, + "not_a_performance_claim": true + }, + "source_digests": { + "benchmark_suite": "dcafa42216566ff5e83ae0788d53d9789c2b7980956ea656c874684730b40523", + "framework_manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "large_scale_runner": "31620bd2b07466f733a6060676707e664881e7b6d4c3ea3f09d8f47354e86706", + "profiles": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505" + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + } + }, + { + "capabilities": { + "closed_trades": "reconstructed from canonical native fills", + "fill_order": "session, asset, side, quantity, price", + "fills": "native", + "intents": "canonical strategy trace", + "terminal_state": "reconstructed from native fills and final marks" + }, + "comparison": { + "actual_error": null, + "actual_framework": "ml4t.backtest[vectorbt_oss_strict]", + "canonical_money_quantum": "0.000001", + "canonical_record_quantum": "1E-8", + "checks": [ + { + "actual_count": 427790, + "actual_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "expected_count": 427790, + "expected_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "first_difference": null, + "name": "order_intents", + "passed": true + }, + { + "actual_count": 390369, + "actual_sha256": "0a43d8334e05f1f269335d8111390a5dbafda6c36f66fa7d40b05120521ef83c", + "expected_count": 390369, + "expected_sha256": "0a43d8334e05f1f269335d8111390a5dbafda6c36f66fa7d40b05120521ef83c", + "first_difference": null, + "name": "fills", + "passed": true + }, + { + "actual_count": 188549, + "actual_sha256": "e8d13c481c716065ff0bf5fceed131c4ec39bfea45f5b4b7d51fdd867f53d8c9", + "expected_count": 188549, + "expected_sha256": "e8d13c481c716065ff0bf5fceed131c4ec39bfea45f5b4b7d51fdd867f53d8c9", + "first_difference": null, + "name": "trades", + "passed": true + }, + { + "actual": 188549, + "canonical_actual": 188549.0, + "canonical_difference": 0.0, + "canonical_expected": 188549.0, + "expected": 188549, + "name": "trade_count", + "passed": true, + "raw_difference": 0 + }, + { + "actual": -283214.5919107256, + "canonical_actual": -283214.591911, + "canonical_difference": 0.0, + "canonical_expected": -283214.591911, + "expected": -283214.5919107344, + "name": "total_pnl", + "passed": true, + "raw_difference": 8.847564458847046e-09 + }, + { + "actual": 716785.4080892744, + "canonical_actual": 716785.408089, + "canonical_difference": 0.0, + "canonical_expected": 716785.408089, + "expected": 716785.4080892656, + "name": "final_value", + "passed": true, + "raw_difference": 8.847564458847046e-09 + }, + { + "actual": { + "cash_from_fill_ledger": 786065.409828, + "holdings_from_fill_ledger": -69280.005398, + "positions": { + "ASSET_000": 0.0, + "ASSET_001": -100.0, + "ASSET_002": 0.0, + "ASSET_004": -0.0, + "ASSET_005": -100.0, + "ASSET_006": 10.74397, + "ASSET_007": 0.0, + "ASSET_008": -0.0, + "ASSET_009": -0.0, + "ASSET_010": 0.0, + "ASSET_011": -0.0, + "ASSET_014": 0.0, + "ASSET_015": -0.0, + "ASSET_017": 0.0, + "ASSET_019": 0.0, + "ASSET_020": -100.0, + "ASSET_021": -0.0, + "ASSET_023": -0.0, + "ASSET_024": -0.0, + "ASSET_025": -0.0, + "ASSET_026": 0.0, + "ASSET_027": 0.0, + "ASSET_028": 100.0, + "ASSET_029": 100.0, + "ASSET_030": -0.477202, + "ASSET_032": 0.0, + "ASSET_033": -0.0, + "ASSET_034": -0.0, + "ASSET_035": -0.0, + "ASSET_036": 0.0, + "ASSET_037": 0.0, + "ASSET_038": -0.0, + "ASSET_039": 0.0, + "ASSET_040": 0.0, + "ASSET_042": -0.0, + "ASSET_043": -0.0, + "ASSET_044": -0.0, + "ASSET_046": -0.0, + "ASSET_047": 0.0, + "ASSET_048": 0.0, + "ASSET_049": -0.0, + "ASSET_051": 0.0, + "ASSET_052": 0.0, + "ASSET_053": 0.0, + "ASSET_054": 0.0, + "ASSET_055": -0.0, + "ASSET_057": -0.0, + "ASSET_058": 0.0, + "ASSET_059": 0.0, + "ASSET_060": 0.0, + "ASSET_062": 0.0, + "ASSET_065": -0.0, + "ASSET_066": -100.0, + "ASSET_067": -0.0, + "ASSET_068": 0.0, + "ASSET_069": 0.0, + "ASSET_070": -100.0, + "ASSET_071": 100.0, + "ASSET_072": 0.0, + "ASSET_073": -0.0, + "ASSET_074": 0.0, + "ASSET_075": -80.307178, + "ASSET_076": -0.0, + "ASSET_077": -0.0, + "ASSET_078": 0.0, + "ASSET_079": -0.0, + "ASSET_081": 0.0, + "ASSET_082": 0.0, + "ASSET_084": -0.0, + "ASSET_085": 0.0, + "ASSET_086": -0.0, + "ASSET_087": -0.0, + "ASSET_089": 0.0, + "ASSET_090": 0.0, + "ASSET_091": 0.0, + "ASSET_092": -0.0, + "ASSET_093": 0.0, + "ASSET_094": 0.0, + "ASSET_096": -0.0, + "ASSET_097": 0.0, + "ASSET_098": 0.0, + "ASSET_099": -0.0, + "ASSET_101": -0.0, + "ASSET_102": 0.0, + "ASSET_103": -0.0, + "ASSET_104": 0.0, + "ASSET_105": 0.0, + "ASSET_106": -0.0, + "ASSET_107": 0.0, + "ASSET_108": -0.0, + "ASSET_109": 0.0, + "ASSET_110": -0.0, + "ASSET_111": 0.0, + "ASSET_112": 0.0, + "ASSET_113": -0.0, + "ASSET_114": -0.0, + "ASSET_115": 0.0, + "ASSET_116": -0.0, + "ASSET_117": -0.0, + "ASSET_118": 0.0, + "ASSET_119": -0.0, + "ASSET_120": 0.0, + "ASSET_121": -0.0, + "ASSET_122": 0.0, + "ASSET_123": -0.0, + "ASSET_124": 0.0, + "ASSET_125": -0.0, + "ASSET_126": -0.0, + "ASSET_127": 0.0, + "ASSET_130": 0.0, + "ASSET_131": -0.0, + "ASSET_132": 0.0, + "ASSET_134": 0.0, + "ASSET_135": -0.0, + "ASSET_136": 0.0, + "ASSET_137": 0.0, + "ASSET_138": -100.0, + "ASSET_139": 100.0, + "ASSET_140": -65.731089, + "ASSET_142": -0.0, + "ASSET_143": 0.0, + "ASSET_146": 0.0, + "ASSET_147": -0.0, + "ASSET_148": -0.0, + "ASSET_150": 0.0, + "ASSET_151": -0.0, + "ASSET_152": 0.0, + "ASSET_153": 11.479909, + "ASSET_154": -0.0, + "ASSET_155": -0.0, + "ASSET_156": 4.275139, + "ASSET_157": 0.0, + "ASSET_158": -0.0, + "ASSET_159": 9.819309, + "ASSET_160": -0.0, + "ASSET_161": 100.0, + "ASSET_162": 0.0, + "ASSET_163": 0.0, + "ASSET_164": 0.0, + "ASSET_165": 0.0, + "ASSET_166": -0.0, + "ASSET_168": 0.0, + "ASSET_169": -0.0, + "ASSET_170": -0.0, + "ASSET_171": 0.0, + "ASSET_173": 54.074946, + "ASSET_174": -0.0, + "ASSET_175": 0.0, + "ASSET_176": 0.0, + "ASSET_177": -0.0, + "ASSET_178": -0.0, + "ASSET_179": 0.0, + "ASSET_180": 0.0, + "ASSET_181": -0.0, + "ASSET_182": -0.0, + "ASSET_183": 0.0, + "ASSET_184": 100.0, + "ASSET_185": 0.0, + "ASSET_186": 0.0, + "ASSET_187": 0.0, + "ASSET_188": -0.0, + "ASSET_189": -0.0, + "ASSET_190": 0.0, + "ASSET_191": 0.0, + "ASSET_192": -0.0, + "ASSET_193": 0.0, + "ASSET_194": 0.0, + "ASSET_195": -100.0, + "ASSET_196": -0.0, + "ASSET_197": 0.0, + "ASSET_198": 0.0, + "ASSET_199": 0.0, + "ASSET_200": 0.0, + "ASSET_201": -23.687792, + "ASSET_202": 0.0, + "ASSET_203": -0.0, + "ASSET_205": 100.0, + "ASSET_206": -10.740523, + "ASSET_207": -0.0, + "ASSET_208": -0.0, + "ASSET_209": 0.0, + "ASSET_210": -34.019116, + "ASSET_212": 0.0, + "ASSET_213": -0.0, + "ASSET_214": 0.0, + "ASSET_218": 0.0, + "ASSET_219": 0.0, + "ASSET_220": 0.0, + "ASSET_221": -0.0, + "ASSET_222": -0.0, + "ASSET_223": -0.0, + "ASSET_224": 0.0, + "ASSET_225": -0.0, + "ASSET_226": 0.0, + "ASSET_227": -0.0, + "ASSET_228": -0.0, + "ASSET_229": -100.0, + "ASSET_230": -0.0, + "ASSET_231": -0.0, + "ASSET_232": -0.0, + "ASSET_233": 0.0, + "ASSET_235": 0.0, + "ASSET_236": 0.0, + "ASSET_237": 0.0, + "ASSET_239": -0.0, + "ASSET_240": 0.0, + "ASSET_241": -100.0, + "ASSET_243": 0.0, + "ASSET_244": -0.0, + "ASSET_246": -100.0, + "ASSET_247": -0.0, + "ASSET_249": -0.0 + }, + "reported_final_value": 716785.408089, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "actual_sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c", + "expected": { + "cash_from_fill_ledger": 786065.409828, + "holdings_from_fill_ledger": -69280.005398, + "positions": { + "ASSET_000": 0.0, + "ASSET_001": -100.0, + "ASSET_002": 0.0, + "ASSET_004": -0.0, + "ASSET_005": -100.0, + "ASSET_006": 10.74397, + "ASSET_007": 0.0, + "ASSET_008": -0.0, + "ASSET_009": -0.0, + "ASSET_010": 0.0, + "ASSET_011": -0.0, + "ASSET_014": 0.0, + "ASSET_015": -0.0, + "ASSET_017": 0.0, + "ASSET_019": 0.0, + "ASSET_020": -100.0, + "ASSET_021": -0.0, + "ASSET_023": -0.0, + "ASSET_024": -0.0, + "ASSET_025": -0.0, + "ASSET_026": 0.0, + "ASSET_027": 0.0, + "ASSET_028": 100.0, + "ASSET_029": 100.0, + "ASSET_030": -0.477202, + "ASSET_032": 0.0, + "ASSET_033": -0.0, + "ASSET_034": -0.0, + "ASSET_035": -0.0, + "ASSET_036": 0.0, + "ASSET_037": 0.0, + "ASSET_038": -0.0, + "ASSET_039": 0.0, + "ASSET_040": 0.0, + "ASSET_042": -0.0, + "ASSET_043": -0.0, + "ASSET_044": -0.0, + "ASSET_046": -0.0, + "ASSET_047": 0.0, + "ASSET_048": 0.0, + "ASSET_049": -0.0, + "ASSET_051": 0.0, + "ASSET_052": 0.0, + "ASSET_053": 0.0, + "ASSET_054": 0.0, + "ASSET_055": -0.0, + "ASSET_057": -0.0, + "ASSET_058": 0.0, + "ASSET_059": 0.0, + "ASSET_060": 0.0, + "ASSET_062": 0.0, + "ASSET_065": -0.0, + "ASSET_066": -100.0, + "ASSET_067": -0.0, + "ASSET_068": 0.0, + "ASSET_069": 0.0, + "ASSET_070": -100.0, + "ASSET_071": 100.0, + "ASSET_072": 0.0, + "ASSET_073": -0.0, + "ASSET_074": 0.0, + "ASSET_075": -80.307178, + "ASSET_076": -0.0, + "ASSET_077": -0.0, + "ASSET_078": 0.0, + "ASSET_079": -0.0, + "ASSET_081": 0.0, + "ASSET_082": 0.0, + "ASSET_084": -0.0, + "ASSET_085": 0.0, + "ASSET_086": -0.0, + "ASSET_087": -0.0, + "ASSET_089": 0.0, + "ASSET_090": 0.0, + "ASSET_091": 0.0, + "ASSET_092": -0.0, + "ASSET_093": 0.0, + "ASSET_094": 0.0, + "ASSET_096": -0.0, + "ASSET_097": 0.0, + "ASSET_098": 0.0, + "ASSET_099": -0.0, + "ASSET_101": -0.0, + "ASSET_102": 0.0, + "ASSET_103": -0.0, + "ASSET_104": 0.0, + "ASSET_105": 0.0, + "ASSET_106": -0.0, + "ASSET_107": 0.0, + "ASSET_108": -0.0, + "ASSET_109": 0.0, + "ASSET_110": -0.0, + "ASSET_111": 0.0, + "ASSET_112": 0.0, + "ASSET_113": -0.0, + "ASSET_114": -0.0, + "ASSET_115": 0.0, + "ASSET_116": -0.0, + "ASSET_117": -0.0, + "ASSET_118": 0.0, + "ASSET_119": -0.0, + "ASSET_120": 0.0, + "ASSET_121": -0.0, + "ASSET_122": 0.0, + "ASSET_123": -0.0, + "ASSET_124": 0.0, + "ASSET_125": -0.0, + "ASSET_126": -0.0, + "ASSET_127": 0.0, + "ASSET_130": 0.0, + "ASSET_131": -0.0, + "ASSET_132": 0.0, + "ASSET_134": 0.0, + "ASSET_135": -0.0, + "ASSET_136": 0.0, + "ASSET_137": 0.0, + "ASSET_138": -100.0, + "ASSET_139": 100.0, + "ASSET_140": -65.731089, + "ASSET_142": -0.0, + "ASSET_143": 0.0, + "ASSET_146": 0.0, + "ASSET_147": -0.0, + "ASSET_148": -0.0, + "ASSET_150": 0.0, + "ASSET_151": -0.0, + "ASSET_152": 0.0, + "ASSET_153": 11.479909, + "ASSET_154": -0.0, + "ASSET_155": -0.0, + "ASSET_156": 4.275139, + "ASSET_157": 0.0, + "ASSET_158": -0.0, + "ASSET_159": 9.819309, + "ASSET_160": -0.0, + "ASSET_161": 100.0, + "ASSET_162": 0.0, + "ASSET_163": 0.0, + "ASSET_164": 0.0, + "ASSET_165": 0.0, + "ASSET_166": -0.0, + "ASSET_168": 0.0, + "ASSET_169": -0.0, + "ASSET_170": -0.0, + "ASSET_171": 0.0, + "ASSET_173": 54.074946, + "ASSET_174": -0.0, + "ASSET_175": 0.0, + "ASSET_176": 0.0, + "ASSET_177": -0.0, + "ASSET_178": -0.0, + "ASSET_179": 0.0, + "ASSET_180": 0.0, + "ASSET_181": -0.0, + "ASSET_182": -0.0, + "ASSET_183": 0.0, + "ASSET_184": 100.0, + "ASSET_185": 0.0, + "ASSET_186": 0.0, + "ASSET_187": 0.0, + "ASSET_188": -0.0, + "ASSET_189": -0.0, + "ASSET_190": 0.0, + "ASSET_191": 0.0, + "ASSET_192": -0.0, + "ASSET_193": 0.0, + "ASSET_194": 0.0, + "ASSET_195": -100.0, + "ASSET_196": -0.0, + "ASSET_197": 0.0, + "ASSET_198": 0.0, + "ASSET_199": 0.0, + "ASSET_200": 0.0, + "ASSET_201": -23.687792, + "ASSET_202": 0.0, + "ASSET_203": -0.0, + "ASSET_205": 100.0, + "ASSET_206": -10.740523, + "ASSET_207": -0.0, + "ASSET_208": -0.0, + "ASSET_209": 0.0, + "ASSET_210": -34.019116, + "ASSET_212": 0.0, + "ASSET_213": -0.0, + "ASSET_214": 0.0, + "ASSET_218": 0.0, + "ASSET_219": 0.0, + "ASSET_220": 0.0, + "ASSET_221": -0.0, + "ASSET_222": -0.0, + "ASSET_223": -0.0, + "ASSET_224": 0.0, + "ASSET_225": -0.0, + "ASSET_226": 0.0, + "ASSET_227": -0.0, + "ASSET_228": -0.0, + "ASSET_229": -100.0, + "ASSET_230": -0.0, + "ASSET_231": -0.0, + "ASSET_232": -0.0, + "ASSET_233": 0.0, + "ASSET_235": 0.0, + "ASSET_236": 0.0, + "ASSET_237": 0.0, + "ASSET_239": -0.0, + "ASSET_240": 0.0, + "ASSET_241": -100.0, + "ASSET_243": 0.0, + "ASSET_244": -0.0, + "ASSET_246": -100.0, + "ASSET_247": -0.0, + "ASSET_249": -0.0 + }, + "reported_final_value": 716785.408089, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "expected_sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c", + "name": "terminal_state", + "passed": true + } + ], + "expected_error": null, + "expected_framework": "VectorBT OSS", + "passed": true, + "scenario": "controlled_250_assets_5040_sessions", + "schema_version": 1, + "timestamp_domain": "session_date" + }, + "framework": "vectorbt_oss", + "input": { + "conversion": "none", + "effective_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09", + "raw_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09" + }, + "ml4t": { + "commit": "ad62d2bd30f9e3a25a9a205ae60df6b0309ca89a", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runtime_seconds": { + "framework": 72.04599663615227, + "ml4t": 185.34229934494942, + "not_a_performance_claim": true + }, + "source_digests": { + "benchmark_suite": "dcafa42216566ff5e83ae0788d53d9789c2b7980956ea656c874684730b40523", + "framework_manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "large_scale_runner": "31620bd2b07466f733a6060676707e664881e7b6d4c3ea3f09d8f47354e86706", + "profiles": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505" + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + } + }, + { + "capabilities": { + "closed_trades": "reconstructed from canonical native fills", + "fill_order": "session, asset, side, quantity, price", + "fills": "native", + "intents": "canonical strategy trace", + "terminal_state": "reconstructed from native fills and final marks" + }, + "comparison": { + "actual_error": null, + "actual_framework": "ml4t.backtest[backtrader_strict]", + "canonical_money_quantum": "0.000001", + "canonical_record_quantum": "1E-8", + "checks": [ + { + "actual_count": 427790, + "actual_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "expected_count": 427790, + "expected_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "first_difference": null, + "name": "order_intents", + "passed": true + }, + { + "actual_count": 343813, + "actual_sha256": "bacd31b4b84da47129e9ad05288eb74733968f32d1f09b1a911587fa22e5180e", + "expected_count": 343813, + "expected_sha256": "bacd31b4b84da47129e9ad05288eb74733968f32d1f09b1a911587fa22e5180e", + "first_difference": null, + "name": "fills", + "passed": true + }, + { + "actual_count": 182019, + "actual_sha256": "5ca62d52bc97c43d8c053f4e73d4b84199fc71155d56b61b3a18dd7e1017c3f8", + "expected_count": 182019, + "expected_sha256": "5ca62d52bc97c43d8c053f4e73d4b84199fc71155d56b61b3a18dd7e1017c3f8", + "first_difference": null, + "name": "trades", + "passed": true + }, + { + "actual": 182019, + "canonical_actual": 182019.0, + "canonical_difference": 0.0, + "canonical_expected": 182019.0, + "expected": 182019, + "name": "trade_count", + "passed": true, + "raw_difference": 0 + }, + { + "actual": -10166273.555953683, + "canonical_actual": -10166273.555954, + "canonical_difference": 0.0, + "canonical_expected": -10166273.555954, + "expected": -10166273.555953681, + "name": "total_pnl", + "passed": true, + "raw_difference": 1.862645149230957e-09 + }, + { + "actual": -9166273.555953683, + "canonical_actual": -9166273.555954, + "canonical_difference": 0.0, + "canonical_expected": -9166273.555954, + "expected": -9166273.555953681, + "name": "final_value", + "passed": true, + "raw_difference": 1.862645149230957e-09 + }, + { + "actual": { + "cash_from_fill_ledger": -75891.763751, + "holdings_from_fill_ledger": -9090381.792622, + "positions": { + "ASSET_007": -100.0, + "ASSET_008": -100.0, + "ASSET_010": 100.0, + "ASSET_022": 100.0, + "ASSET_024": -100.0, + "ASSET_034": -100.0, + "ASSET_039": -100.0, + "ASSET_046": -100.0, + "ASSET_057": 100.0, + "ASSET_058": 100.0, + "ASSET_060": 100.0, + "ASSET_063": 100.0, + "ASSET_104": -100.0, + "ASSET_105": -100.0, + "ASSET_109": 100.0, + "ASSET_112": -100.0, + "ASSET_117": -100.0, + "ASSET_120": 100.0, + "ASSET_121": -100.0, + "ASSET_130": 100.0, + "ASSET_132": -100.0, + "ASSET_133": -100.0, + "ASSET_138": -100.0, + "ASSET_140": 100.0, + "ASSET_150": -100.0, + "ASSET_151": 100.0, + "ASSET_152": -100.0, + "ASSET_156": -100.0, + "ASSET_159": 100.0, + "ASSET_165": -100.0, + "ASSET_174": -100.0, + "ASSET_177": 100.0, + "ASSET_187": -100.0, + "ASSET_202": -100.0, + "ASSET_209": 100.0, + "ASSET_210": 100.0, + "ASSET_217": 100.0, + "ASSET_218": 100.0, + "ASSET_229": -100.0, + "ASSET_238": 100.0, + "ASSET_248": 100.0 + }, + "reported_final_value": -9166273.555954, + "sha256": "28ed0fb657c2c38cd6eac08b323db6e95d235dcdeff18df05a895b1faf21c374" + }, + "actual_sha256": "28ed0fb657c2c38cd6eac08b323db6e95d235dcdeff18df05a895b1faf21c374", + "expected": { + "cash_from_fill_ledger": -75891.763751, + "holdings_from_fill_ledger": -9090381.792622, + "positions": { + "ASSET_007": -100.0, + "ASSET_008": -100.0, + "ASSET_010": 100.0, + "ASSET_022": 100.0, + "ASSET_024": -100.0, + "ASSET_034": -100.0, + "ASSET_039": -100.0, + "ASSET_046": -100.0, + "ASSET_057": 100.0, + "ASSET_058": 100.0, + "ASSET_060": 100.0, + "ASSET_063": 100.0, + "ASSET_104": -100.0, + "ASSET_105": -100.0, + "ASSET_109": 100.0, + "ASSET_112": -100.0, + "ASSET_117": -100.0, + "ASSET_120": 100.0, + "ASSET_121": -100.0, + "ASSET_130": 100.0, + "ASSET_132": -100.0, + "ASSET_133": -100.0, + "ASSET_138": -100.0, + "ASSET_140": 100.0, + "ASSET_150": -100.0, + "ASSET_151": 100.0, + "ASSET_152": -100.0, + "ASSET_156": -100.0, + "ASSET_159": 100.0, + "ASSET_165": -100.0, + "ASSET_174": -100.0, + "ASSET_177": 100.0, + "ASSET_187": -100.0, + "ASSET_202": -100.0, + "ASSET_209": 100.0, + "ASSET_210": 100.0, + "ASSET_217": 100.0, + "ASSET_218": 100.0, + "ASSET_229": -100.0, + "ASSET_238": 100.0, + "ASSET_248": 100.0 + }, + "reported_final_value": -9166273.555954, + "sha256": "28ed0fb657c2c38cd6eac08b323db6e95d235dcdeff18df05a895b1faf21c374" + }, + "expected_sha256": "28ed0fb657c2c38cd6eac08b323db6e95d235dcdeff18df05a895b1faf21c374", + "name": "terminal_state", + "passed": true + } + ], + "expected_error": null, + "expected_framework": "Backtrader", + "passed": true, + "scenario": "controlled_250_assets_5040_sessions", + "schema_version": 1, + "timestamp_domain": "session_date" + }, + "framework": "backtrader", + "input": { + "conversion": "none", + "effective_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09", + "raw_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09" + }, + "ml4t": { + "commit": "ad62d2bd30f9e3a25a9a205ae60df6b0309ca89a", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runtime_seconds": { + "framework": 588.8566795079969, + "ml4t": 177.4460704110097, + "not_a_performance_claim": true + }, + "source_digests": { + "benchmark_suite": "dcafa42216566ff5e83ae0788d53d9789c2b7980956ea656c874684730b40523", + "framework_manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "large_scale_runner": "31620bd2b07466f733a6060676707e664881e7b6d4c3ea3f09d8f47354e86706", + "profiles": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505" + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + } + }, + { + "capabilities": { + "closed_trades": "reconstructed from canonical native fills", + "fill_order": "session, asset, side, quantity, price", + "fills": "native", + "intents": "canonical strategy trace", + "terminal_state": "reconstructed from native fills and final marks" + }, + "comparison": { + "actual_error": null, + "actual_framework": "ml4t.backtest[zipline_strict]", + "canonical_money_quantum": "0.000001", + "canonical_record_quantum": "1E-8", + "checks": [ + { + "actual_count": 427790, + "actual_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "expected_count": 427790, + "expected_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "first_difference": null, + "name": "order_intents", + "passed": true + }, + { + "actual_count": 427696, + "actual_sha256": "25213baad0647cd21e481786c60ceb3b57f89a6578fcdf37bcac20e543aa4bd8", + "expected_count": 427696, + "expected_sha256": "25213baad0647cd21e481786c60ceb3b57f89a6578fcdf37bcac20e543aa4bd8", + "first_difference": null, + "name": "fills", + "passed": true + }, + { + "actual_count": 226434, + "actual_sha256": "5da4529deddb3c32c605e079e486f26402a0ed7011c849cbe788cf1cf2850ed4", + "expected_count": 226434, + "expected_sha256": "5da4529deddb3c32c605e079e486f26402a0ed7011c849cbe788cf1cf2850ed4", + "first_difference": null, + "name": "trades", + "passed": true + }, + { + "actual": 226434, + "canonical_actual": 226434.0, + "canonical_difference": 0.0, + "canonical_expected": 226434.0, + "expected": 226434, + "name": "trade_count", + "passed": true, + "raw_difference": 0 + }, + { + "actual": 9504095.900000088, + "canonical_actual": 9504095.9, + "canonical_difference": 0.0, + "canonical_expected": 9504095.9, + "expected": 9504095.90000011, + "name": "total_pnl", + "passed": true, + "raw_difference": 2.2351741790771484e-08 + }, + { + "actual": 10504095.900000088, + "canonical_actual": 10504095.9, + "canonical_difference": 0.0, + "canonical_expected": 10504095.9, + "expected": 10504095.90000011, + "name": "final_value", + "passed": true, + "raw_difference": 2.2351741790771484e-08 + }, + { + "actual": { + "cash_from_fill_ledger": 7797567.3, + "holdings_from_fill_ledger": 2706528.6, + "positions": { + "ASSET_003": -100.0, + "ASSET_004": 100.0, + "ASSET_017": -100.0, + "ASSET_023": -100.0, + "ASSET_026": -100.0, + "ASSET_027": 100.0, + "ASSET_034": 100.0, + "ASSET_035": -100.0, + "ASSET_036": 100.0, + "ASSET_058": 100.0, + "ASSET_060": 100.0, + "ASSET_062": 100.0, + "ASSET_063": -100.0, + "ASSET_068": -100.0, + "ASSET_075": -100.0, + "ASSET_096": -100.0, + "ASSET_104": 100.0, + "ASSET_107": 100.0, + "ASSET_126": 100.0, + "ASSET_130": 100.0, + "ASSET_132": -100.0, + "ASSET_136": -100.0, + "ASSET_141": -100.0, + "ASSET_143": -100.0, + "ASSET_149": 100.0, + "ASSET_150": 100.0, + "ASSET_154": -100.0, + "ASSET_158": 100.0, + "ASSET_160": -100.0, + "ASSET_161": -100.0, + "ASSET_163": -100.0, + "ASSET_169": 100.0, + "ASSET_170": -100.0, + "ASSET_180": -100.0, + "ASSET_183": 100.0, + "ASSET_184": -100.0, + "ASSET_189": -100.0, + "ASSET_191": 100.0, + "ASSET_203": 100.0, + "ASSET_209": -100.0, + "ASSET_216": -100.0, + "ASSET_218": 100.0, + "ASSET_220": 100.0, + "ASSET_225": -100.0, + "ASSET_226": 100.0, + "ASSET_227": 100.0, + "ASSET_234": -100.0, + "ASSET_236": 100.0, + "ASSET_243": 100.0, + "ASSET_244": 100.0 + }, + "reported_final_value": 10504095.9, + "sha256": "2b4072c31c6c0e8b81f1e93f142845962422754c7f69d37925372de3faba5a05" + }, + "actual_sha256": "2b4072c31c6c0e8b81f1e93f142845962422754c7f69d37925372de3faba5a05", + "expected": { + "cash_from_fill_ledger": 7797567.3, + "holdings_from_fill_ledger": 2706528.6, + "positions": { + "ASSET_003": -100.0, + "ASSET_004": 100.0, + "ASSET_017": -100.0, + "ASSET_023": -100.0, + "ASSET_026": -100.0, + "ASSET_027": 100.0, + "ASSET_034": 100.0, + "ASSET_035": -100.0, + "ASSET_036": 100.0, + "ASSET_058": 100.0, + "ASSET_060": 100.0, + "ASSET_062": 100.0, + "ASSET_063": -100.0, + "ASSET_068": -100.0, + "ASSET_075": -100.0, + "ASSET_096": -100.0, + "ASSET_104": 100.0, + "ASSET_107": 100.0, + "ASSET_126": 100.0, + "ASSET_130": 100.0, + "ASSET_132": -100.0, + "ASSET_136": -100.0, + "ASSET_141": -100.0, + "ASSET_143": -100.0, + "ASSET_149": 100.0, + "ASSET_150": 100.0, + "ASSET_154": -100.0, + "ASSET_158": 100.0, + "ASSET_160": -100.0, + "ASSET_161": -100.0, + "ASSET_163": -100.0, + "ASSET_169": 100.0, + "ASSET_170": -100.0, + "ASSET_180": -100.0, + "ASSET_183": 100.0, + "ASSET_184": -100.0, + "ASSET_189": -100.0, + "ASSET_191": 100.0, + "ASSET_203": 100.0, + "ASSET_209": -100.0, + "ASSET_216": -100.0, + "ASSET_218": 100.0, + "ASSET_220": 100.0, + "ASSET_225": -100.0, + "ASSET_226": 100.0, + "ASSET_227": 100.0, + "ASSET_234": -100.0, + "ASSET_236": 100.0, + "ASSET_243": 100.0, + "ASSET_244": 100.0 + }, + "reported_final_value": 10504095.9, + "sha256": "2b4072c31c6c0e8b81f1e93f142845962422754c7f69d37925372de3faba5a05" + }, + "expected_sha256": "2b4072c31c6c0e8b81f1e93f142845962422754c7f69d37925372de3faba5a05", + "name": "terminal_state", + "passed": true + } + ], + "expected_error": null, + "expected_framework": "Zipline", + "passed": true, + "scenario": "controlled_250_assets_5040_sessions", + "schema_version": 1, + "timestamp_domain": "session_date" + }, + "framework": "zipline", + "input": { + "conversion": "OHLC rounded to 3 decimals before both engines", + "effective_sha256": "488f31689ee4843e2817851e92c0fb229c3a253ec7d597cbc8c7c89f790e4ffd", + "raw_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09" + }, + "ml4t": { + "commit": "ad62d2bd30f9e3a25a9a205ae60df6b0309ca89a", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runtime_seconds": { + "framework": 313.67492819414474, + "ml4t": 109.66853755200282, + "not_a_performance_claim": true + }, + "source_digests": { + "benchmark_suite": "dcafa42216566ff5e83ae0788d53d9789c2b7980956ea656c874684730b40523", + "framework_manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "large_scale_runner": "31620bd2b07466f733a6060676707e664881e7b6d4c3ea3f09d8f47354e86706", + "profiles": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505" + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + } + }, + { + "capabilities": { + "closed_trades": "reconstructed from canonical native fills", + "fill_order": "session, asset, side, quantity, price", + "fills": "native", + "intents": "canonical strategy trace", + "terminal_state": "reconstructed from native fills and final marks" + }, + "comparison": { + "actual_error": null, + "actual_framework": "ml4t.backtest[lean]", + "canonical_money_quantum": "0.000001", + "canonical_record_quantum": "1E-8", + "checks": [ + { + "actual_count": 427790, + "actual_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "expected_count": 427790, + "expected_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "first_difference": null, + "name": "order_intents", + "passed": true + }, + { + "actual_count": 361297, + "actual_sha256": "8195538948325e43f0905fd1877fd5a6a3d7f43b909f22a28912be3b11588b28", + "expected_count": 361297, + "expected_sha256": "8195538948325e43f0905fd1877fd5a6a3d7f43b909f22a28912be3b11588b28", + "first_difference": null, + "name": "fills", + "passed": true + }, + { + "actual_count": 191297, + "actual_sha256": "021ef93839be812f0b7e6010ba7535f0ae60df144f1d055e6bfd829bc57ab7f9", + "expected_count": 191297, + "expected_sha256": "021ef93839be812f0b7e6010ba7535f0ae60df144f1d055e6bfd829bc57ab7f9", + "first_difference": null, + "name": "trades", + "passed": true + }, + { + "actual": 191297, + "canonical_actual": 191297.0, + "canonical_difference": 0.0, + "canonical_expected": 191297.0, + "expected": 191297, + "name": "trade_count", + "passed": true, + "raw_difference": 0 + }, + { + "actual": -815461.8699999778, + "canonical_actual": -815461.87, + "canonical_difference": 0.0, + "canonical_expected": -815461.87, + "expected": -815461.87, + "name": "total_pnl", + "passed": true, + "raw_difference": 2.223532646894455e-08 + }, + { + "actual": 184538.13000002224, + "canonical_actual": 184538.13, + "canonical_difference": 0.0, + "canonical_expected": 184538.13, + "expected": 184538.13, + "name": "final_value", + "passed": true, + "raw_difference": 2.223532646894455e-08 + }, + { + "actual": { + "cash_from_fill_ledger": 140759.97, + "holdings_from_fill_ledger": 43778.16, + "positions": { + "ASSET_003": -100.0, + "ASSET_017": -100.0, + "ASSET_023": -100.0, + "ASSET_026": -100.0, + "ASSET_035": -100.0, + "ASSET_062": 100.0, + "ASSET_063": -100.0, + "ASSET_068": -100.0, + "ASSET_104": 100.0, + "ASSET_126": 100.0, + "ASSET_130": 100.0, + "ASSET_132": -100.0, + "ASSET_136": -100.0, + "ASSET_141": -100.0, + "ASSET_143": -100.0, + "ASSET_149": 100.0, + "ASSET_150": 100.0, + "ASSET_154": -100.0, + "ASSET_158": 100.0, + "ASSET_160": -100.0, + "ASSET_163": -100.0, + "ASSET_180": -100.0, + "ASSET_183": 100.0, + "ASSET_191": 100.0, + "ASSET_209": -100.0, + "ASSET_216": -100.0, + "ASSET_220": 100.0, + "ASSET_225": -100.0, + "ASSET_226": 100.0, + "ASSET_227": 100.0, + "ASSET_243": 100.0, + "ASSET_244": 100.0 + }, + "reported_final_value": 184538.13, + "sha256": "5dcf8612a6d4383347ee7206a837cc808fba5539086d589328ac8289496497d1" + }, + "actual_sha256": "5dcf8612a6d4383347ee7206a837cc808fba5539086d589328ac8289496497d1", + "expected": { + "cash_from_fill_ledger": 140759.97, + "holdings_from_fill_ledger": 43778.16, + "positions": { + "ASSET_003": -100.0, + "ASSET_017": -100.0, + "ASSET_023": -100.0, + "ASSET_026": -100.0, + "ASSET_035": -100.0, + "ASSET_062": 100.0, + "ASSET_063": -100.0, + "ASSET_068": -100.0, + "ASSET_104": 100.0, + "ASSET_126": 100.0, + "ASSET_130": 100.0, + "ASSET_132": -100.0, + "ASSET_136": -100.0, + "ASSET_141": -100.0, + "ASSET_143": -100.0, + "ASSET_149": 100.0, + "ASSET_150": 100.0, + "ASSET_154": -100.0, + "ASSET_158": 100.0, + "ASSET_160": -100.0, + "ASSET_163": -100.0, + "ASSET_180": -100.0, + "ASSET_183": 100.0, + "ASSET_191": 100.0, + "ASSET_209": -100.0, + "ASSET_216": -100.0, + "ASSET_220": 100.0, + "ASSET_225": -100.0, + "ASSET_226": 100.0, + "ASSET_227": 100.0, + "ASSET_243": 100.0, + "ASSET_244": 100.0 + }, + "reported_final_value": 184538.13, + "sha256": "5dcf8612a6d4383347ee7206a837cc808fba5539086d589328ac8289496497d1" + }, + "expected_sha256": "5dcf8612a6d4383347ee7206a837cc808fba5539086d589328ac8289496497d1", + "name": "terminal_state", + "passed": true + } + ], + "expected_error": null, + "expected_framework": "LEAN CLI", + "passed": true, + "scenario": "controlled_250_assets_5040_sessions", + "schema_version": 1, + "timestamp_domain": "session_date" + }, + "framework": "lean", + "input": { + "conversion": "OHLC rounded to 4 decimals before both engines", + "effective_sha256": "718a6da2fc4a0a1326fc42a0d32c274843c6c40b56c7277422caf5ef1dc84023", + "raw_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09" + }, + "ml4t": { + "commit": "ad62d2bd30f9e3a25a9a205ae60df6b0309ca89a", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runtime_seconds": { + "framework": 170.06328585091978, + "ml4t": 229.72061479417607, + "not_a_performance_claim": true + }, + "source_digests": { + "benchmark_suite": "dcafa42216566ff5e83ae0788d53d9789c2b7980956ea656c874684730b40523", + "framework_manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "large_scale_runner": "31620bd2b07466f733a6060676707e664881e7b6d4c3ea3f09d8f47354e86706", + "profiles": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505" + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + } + } + ], + "generated_at": "2026-08-14T13:16:45.765518+00:00", + "release_gate_passed": true, + "schema_version": 1, + "workload": { + "data_points": 1260000, + "generator": "validation.benchmark_suite.generate_benchmark_data", + "recipe": { + "assets": 250, + "bars": 5040, + "bottom_n": 25, + "end_session": "2025-12-31", + "initial_cash": 1000000.0, + "long_target_shares": 100.0, + "name": "controlled_250_assets_5040_sessions", + "rebalance_frequency": 1, + "seed": 42, + "short_target_shares": -100.0, + "top_n": 25 + }, + "recipe_sha256": "5de81aacdda2ee7f08b2cc1549e64a974b19693967ac2fe1fdb0f1a6370d0ba5", + "redistributable": true + } +} diff --git a/validation/METHODOLOGY.md b/validation/METHODOLOGY.md index fc44f4ce..f38b99a2 100644 --- a/validation/METHODOLOGY.md +++ b/validation/METHODOLOGY.md @@ -1,6 +1,6 @@ # Validation Methodology -*Last updated: 2026-08-08* +*Last updated: 2026-08-14* ## Core Principle @@ -12,6 +12,17 @@ configurable knob is missing or misconfigured. The gap must be driven to zero. ## How It Works +### Evidence scope + +The primary cross-framework audit uses frozen inputs from three production case studies: ETF +allocation, CME futures, and crypto perpetual futures with funding. It compares only combinations +that the framework and frozen data carrier genuinely support. Model inference and target +construction happen before either engine runs, so both sides receive the same targets. + +The 17 synthetic scenarios test isolated execution conventions. The 250-asset synthetic workload +tests high event counts and broad state transitions. These two suites are diagnostic and stress +evidence, not evidence that a realistic strategy is equivalent. + ### 1. Configurable Code Paths Every behavioral choice that differs between backtesting frameworks is expressed as a configurable @@ -38,7 +49,7 @@ replicate that framework's behavior: | `vectorbt` / `vectorbt_strict` | VectorBT Pro/OSS | 0% trade gap, 0% value gap | | `backtrader` / `backtrader_strict` | Backtrader | 0% trade gap, 0% value gap | | `zipline` / `zipline_strict` | Zipline Reloaded | 0% trade gap, 0% value gap | -| `lean` | QuantConnect LEAN | 0% fill gap, near-0% value gap | +| `lean` | Frozen LEAN daily US-equity protocol | 0 fill gap, 0 canonical value gap | | `default` | ml4t's own opinion | Best-practice defaults | | `realistic` | Conservative simulation | Adds costs, integer shares | @@ -134,8 +145,8 @@ Update the behavioral difference matrix, profile diffs, and parity results. ## Anti-Patterns **DO NOT** accept gaps as "structural" or "expected": -- "LEAN fills at bar close, ml4t at next-bar open -- this is a structural difference" is WRONG -- CORRECT: "We need to add `execution_price=close` to the lean profile to close this gap" +- "The engines use different order timing, so the gap is expected" is wrong. +- Identify the native event sequence, configure the corresponding profile, or narrow the claim. **DO NOT** say "this is good enough for production": - 95% parity is not the goal -- 100% parity is the goal @@ -151,27 +162,110 @@ Update the behavioral difference matrix, profile diffs, and parity results. Complete matrix of how each framework handles every behavioral dimension. +### VectorBT native evidence + +The VectorBT column cites checks from `native/vectorbt_behavior.py`. The checks import only the +frozen framework and its dependencies. Both current targets passed all checks: + +- [VectorBT OSS 1.1.0 evidence](native/evidence/vectorbt_oss-1.1.0.json) +- [VectorBT Pro 2026.6.27 evidence](native/evidence/vectorbt_pro-2026.6.27.json) + +`VBT-S` refers to the `signal_timing_and_default_fill` and `explicit_fill_price` checks. `VBT-R` +refers to `stop_fill` and `trailing_stop_extreme_and_intrabar_fill`. `VBT-C` refers to +`short_cash`, `cash_sharing_and_call_sequence`, and `insufficient_cash_partial_fill`. `VBT-O` +refers to `target_percent_sizing`, `accumulation`, `long_signal_conflict`, and +`missing_order_price`. `VBT-F` refers to `defaults`, `fees_and_slippage`, and +`record_construction`. + +The evidence records the official source address for each frozen implementation. OSS uses +[`Portfolio.from_orders`](https://github.com/polakowo/vectorbt/blob/259d2d89fe2e7638baf3ca76c394937cd32b656d/vectorbt/portfolio/base.py#L1616) +and [`Portfolio.from_signals`](https://github.com/polakowo/vectorbt/blob/259d2d89fe2e7638baf3ca76c394937cd32b656d/vectorbt/portfolio/base.py#L2047). +Pro uses the corresponding methods at +[`Portfolio.from_orders`](https://github.com/polakowo/vectorbt.pro/blob/6e18cf0aa37849cfc20848f40f1d26ecfdc771b4/vectorbtpro/portfolio/base.py#L4145) +and [`Portfolio.from_signals`](https://github.com/polakowo/vectorbt.pro/blob/6e18cf0aa37849cfc20848f40f1d26ecfdc771b4/vectorbtpro/portfolio/base.py#L4646). + +### Backtrader native evidence + +The Backtrader column cites checks from `native/backtrader_behavior.py`. The probe imports only +Backtrader 1.9.78.123 and pandas. It passed all 14 checks in the retained +[Backtrader evidence](native/evidence/backtrader-1.9.78.123.json). The evidence identifies the +installed wheel and its SHA-256 digest, and records source locations inside that artifact. + +`BT-T` refers to `next_bar_open_and_gap`, `cheat_on_close`, and `final_bar_market_order`. `BT-S` +refers to `integer_target_percent` and `commission_headroom`. `BT-C` refers to `defaults`, +`cash_rejection_and_configured_leverage`, `short_cash`, and `trade_record`. `BT-O` refers to +`submission_sequence`. `BT-R` refers to `signal_price_stop_basis` and +`trailing_stop_signal_close_and_lagged`. `BT-D` refers to `missing_bar_uses_last_value` and +`late_feed_start`. + +### Zipline native evidence and comparison protocol + +The retained [Zipline Reloaded 3.1.1 evidence](native/evidence/zipline-3.1.1.json) contains 13 +checks executed through `zipline.run_algorithm` and direct construction of the frozen models. +The source locations resolve to commit `09885a2ebc7567d40942c891b3879dc03c745070`, and the +evidence identifies the source artifact and its SHA-256 digest. + +The native defaults and the comparison protocol are different: + +| Behavior | Zipline Reloaded 3.1.1 default | Suite comparison protocol | +|---|---|---| +| Daily fill | Next session close plus 5 basis points | Next session open | +| Equity commission | `$0.001` per share, `$0` minimum | No commission unless the scenario specifies one | +| Equity slippage | `FixedBasisPointsSlippage(5 bps, volume_limit=0.1)` | Custom open-price model with no volume cap | +| Optional volume-share model | `volume_limit=0.025`, `price_impact=0.1` | Used only by an explicit scenario or native check | +| Stop loss, take profit, trailing stop | No portfolio risk-rule protocol | Adapter evaluates daily OHLC and submits an exit | +| Closed trades | Native transactions and positions, no closed-trade column | Adapter reconstructs round trips from transactions | + +The `0.1` in `VolumeShareSlippage` is a coefficient in a quadratic price-impact formula. It is +not a 10% slippage rate. The profile and scenario matrix reproduce the suite protocol, not the +framework defaults. Each scenario record identifies adapter-emulated risk rules and reconstructed +trade records in `provenance.comparison_protocol`. + +`ZL-D` refers to `defaults` and `default_next_bar_close_fill`. `ZL-P` refers to +`configured_next_bar_open_fill` and `explicit_minimum_commission`. `ZL-S` refers to +`integer_target_percent` and `target_percent_snapshot`. `ZL-C` refers to +`cash_and_short_proceeds`. `ZL-O` refers to `submission_sequence` and +`final_bar_market_order`. `ZL-V` refers to `volume_share_partial_fills`. `ZL-X` refers to +`transaction_records_not_native_trades`. `ZL-M` refers to `session_calendar` and `missing_bar`. + +`LN-T` refers to LEAN native `timing` and `final_bar_order`. `LN-M` refers to `default_models`, +`buying_power_allowed`, and `buying_power_rejected`. `LN-O` refers to `submission_sequence` and +`buying_power_sequence`. `LN-S` refers to `target_sizing`. `LN-C` refers to `explicit_costs`. +`LN-D` refers to `fill_forward`. `LN-F` refers to `default_full_fill`. `LN-X` refers to +`terminal_holding` and `liquidation`. These checks use LEAN engine 18001 at commit +`278fcb3d1b815b63ccadba68d7ae54422e34b792`, CLI 1.0.228, `DefaultBrokerageModel`, a margin +account, daily adjusted US equities, and 2x security leverage. + +The tables below describe configured profile values. They are not all cross-engine equivalence +claims. `behavior_coverage.toml` maps every profile field to its native checks and cross-engine +scenarios. A dimension is publishable only when both references are present. The current scenario +matrix does not publish equivalence for target-percent sizing, insufficient-cash boundaries, +competing same-session orders, partial fills, missing bars, or late assets. Those settings remain +available profile choices backed by native evidence where the map identifies it. + ### Execution Timing -| Knob | ml4t Default | VectorBT | Backtrader | Zipline | LEAN | -|------|-------------|----------|------------|---------|------| -| `execution_mode` | next_bar | **same_bar** | next_bar | next_bar | **same_bar** | -| `fill_timing` | next_bar_open | **same_bar** | next_bar_open | next_bar_open | **same_bar** | -| `execution_price` | open | **close** | open | open | **close** | +| Knob | ml4t Default | VectorBT | VBT evidence | Backtrader | Zipline protocol | LEAN | +|------|-------------|----------|--------------|------------|---------|------| +| `execution_mode` | next_bar | **same_bar** | VBT-S | next_bar (BT-T) | next_bar (ZL-P) | next_bar (LN-T) | +| `fill_timing` | next_bar_open | **same_bar** | VBT-S | next_bar_open (BT-T) | next_bar_open (ZL-P) | next session (LN-T) | +| `execution_price` | open | **close** | VBT-S | open (BT-T) | open (ZL-P) | open (LN-T) | -VectorBT and LEAN both use same-bar execution with close fills. VectorBT is vectorized -(inherently same-bar), while LEAN processes market orders immediately at bar close in its -event-driven loop. All event-driven frameworks (BT, Zipline) except LEAN use next-bar open. +LEAN emits a daily US-equity bar to `OnData` at the market close. A market order submitted from +that callback is therefore submitted while the market is closed, converted to market-on-open, and +filled at the next session's open. A final-bar order remains submitted and unfilled. VectorBT uses +same-bar close execution. Backtrader and the configured Zipline protocol use the next session's +open. ### Stop/Risk Configuration -| Knob | ml4t Default | VectorBT | Backtrader | Zipline | LEAN | -|------|-------------|----------|------------|---------|------| -| `stop_fill_mode` | stop_price | stop_price | stop_price | stop_price | stop_price | -| `stop_level_basis` | fill_price | fill_price | **signal_price** | fill_price | fill_price | -| `trail_hwm_source` | close | **bar_extreme** | close | close | close | -| `initial_hwm_source` | fill_price | **bar_high** | fill_price | fill_price | fill_price | -| `trail_stop_timing` | lagged | **intrabar** | lagged | lagged | lagged | +| Knob | ml4t Default | VectorBT | VBT evidence | Backtrader | Zipline protocol | LEAN | +|------|-------------|----------|--------------|------------|---------|------| +| `stop_fill_mode` | stop_price | stop_price | VBT-R | stop_price (BT-R) | next_bar_open (adapter) | profile fallback; not claimed | +| `stop_level_basis` | fill_price | fill_price | VBT-R | **signal_price (BT-R)** | fill_price (adapter) | profile fallback; not claimed | +| `trail_hwm_source` | close | **bar_extreme** | VBT-R | close (BT-R) | bar_extreme (adapter) | profile fallback; not claimed | +| `initial_hwm_source` | fill_price | **bar_high** | VBT-R | signal_price (BT-R) | fill_price (adapter) | profile fallback; not claimed | +| `trail_stop_timing` | lagged | **intrabar** | VBT-R | lagged (BT-R) | intrabar (adapter) | profile fallback; not claimed | Backtrader calculates stop levels from **signal bar close** (the price when the strategy decided to trade), not the actual fill price. This matters when next-bar open differs significantly from @@ -179,54 +273,67 @@ previous close. ### Account & Cash -| Knob | ml4t Default | VectorBT | Backtrader | Zipline | LEAN | -|------|-------------|----------|------------|---------|------| -| `allow_short_selling` | false | **true** | **true** | false | true | -| `allow_leverage` | false | false | **true** | false | true | -| `short_cash_policy` | credit | credit | credit | credit | credit | -| `initial_margin` | 0.5 | -- | **0.5** | -- | varies | -| `long_maint_margin` | 0.25 | -- | **0.25** | -- | varies | -| `short_maint_margin` | 0.30 | -- | **0.30** | -- | varies | +| Knob | ml4t Default | VectorBT | VBT evidence | Backtrader | Zipline protocol | LEAN | +|------|-------------|----------|--------------|------------|---------|------| +| `allow_short_selling` | false | **true** | VBT-C | **true (BT-C)** | true (ZL-C) | true | +| `allow_leverage` | false | false | VBT-C | false by default (BT-C) | cash validation disabled (ZL-C) | true | +| `short_cash_policy` | credit | credit | VBT-C | credit (BT-C) | credit (ZL-C) | credit | +| `initial_margin` | 0.5 | -- | VBT-C | -- (BT-C) | -- | 0.5 (LN-M) | +| `long_maint_margin` | 0.25 | -- | VBT-C | -- (BT-C) | -- | 0.5 (LN-M) | +| `short_maint_margin` | 0.30 | -- | VBT-C | -- (BT-C) | -- | 0.5 (LN-M) | + +These LEAN margin values belong to `SecurityMarginModel` at 2x leverage. Other security and +brokerage models can select different requirements. ### Order Handling -| Knob | ml4t Default | VectorBT | Backtrader | Zipline | LEAN | -|------|-------------|----------|------------|---------|------| -| `fill_ordering` | exit_first | exit_first | **fifo** | exit_first | **exit_first** | -| `entry_order_priority` | submission | submission | submission | submission | submission | -| `rebalance_mode` | incremental | **hybrid** | **snapshot** | **snapshot** | snapshot | -| `rebalance_headroom_pct` | 1.0 | 1.0 | **0.998** | **0.998** | 0.998 | -| `reject_on_insufficient_cash` | true | **false** | true | true | true | -| `partial_fills_allowed` | false | **true** | false | **true** | false | -| `missing_price_policy` | skip | **use_last** | **use_last** | **use_last** | use_last | +| Knob | ml4t Default | VectorBT | VBT evidence | Backtrader | Zipline protocol | LEAN | +|------|-------------|----------|--------------|------------|---------|------| +| `fill_ordering` | exit_first | exit_first | VBT-C, VBT-O | **fifo (BT-O)** | fifo (ZL-O) | sequential (LN-O) | +| `entry_order_priority` | submission | submission | VBT-C | submission (BT-O) | submission (ZL-O) | submission | +| `immediate_fill` | false | **true** | VBT-S, VBT-O | false (BT-T) | false (ZL-P, ZL-O) | false (LN-T) | +| `rebalance_mode` | incremental | **hybrid** | VBT-O | **snapshot (BT-O)** | snapshot (ZL-S) | snapshot | +| `rebalance_headroom_pct` | 1.0 | 1.0 | VBT-O | 1.0 (BT-S) | 1.0 (ZL-S) | 0.9975 (LN-S) | +| `reject_on_insufficient_cash` | true | **false** | VBT-C | true (BT-C, BT-O) | false (ZL-C) | true | +| `partial_fills_allowed` | false | **true** | VBT-C | false (BT-C) | false in protocol (ZL-P) | false in default fill model (LN-F) | +| `missing_price_policy` | skip | skip order; forward-fill valuation | VBT-O | **use_last (BT-D)** | last price for sizing; stale bar defers fill (ZL-M) | fill-forward data; defer to next real open (LN-D) | +| `late_asset_policy` | allow after 1 bar | allow after 1 bar | VBT-O | allow after 1 bar (BT-D) | allow (ZL-M) | allow | ### Position Sizing & Costs -| Knob | ml4t Default | VectorBT | Backtrader | Zipline | LEAN | -|------|-------------|----------|------------|---------|------| -| `share_type` | fractional | fractional | **integer** | **integer** | **integer** | -| `signal_processing` | check_position | **process_all** | check_position | check_position | check_position | -| `commission_model` | percentage | **none** | percentage | **per_share** | per_share | -| `commission_rate` | 0.1% | 0% | 0.1% | -- | -- | -| `commission_per_share` | -- | -- | -- | **$0.005** | varies | -| `commission_minimum` | $0 | -- | -- | **$1.00** | varies | -| `slippage_model` | percentage | **none** | percentage | **volume_based** | volume_based | -| `slippage_rate` | 0.1% | 0% | 0.1% | **10%** | varies | - -### "Strict" Profile Additions (for validation parity) - -| Knob | vbt_strict | bt_strict | zip_strict | lean | -|------|-----------|-----------|------------|-------------| -| `short_cash_policy` | **lock_notional** | credit | **credit** | credit | -| `skip_cash_validation` | false | false | **true** | false | -| `reject_on_insufficient_cash` | **true** | true | true | true | -| `fill_ordering` | **fifo** | fifo | exit_first | **exit_first** | -| `next_bar_submission_precheck` | -- | **true** | -- | false | -| `next_bar_simple_cash_check` | -- | **true** | -- | false | -| `allow_short_selling` | -- | -- | **true** | **true** | -| `allow_leverage` | -- | -- | -- | **true** | -| `execution_mode` | -- | **next_bar** | **next_bar** | **next_bar** | -| `execution_price` | -- | **open** | **open** | **open** | +| Knob | ml4t Default | VectorBT | VBT evidence | Backtrader | Zipline protocol | LEAN | +|------|-------------|----------|--------------|------------|---------|------| +| `share_type` | integer | fractional | VBT-O | integer (BT-S) | integer (ZL-S) | integer (LN-S) | +| `share_rounding` | nearest | nearest | VBT-O | truncate (BT-S) | nearest (ZL-S) | nearest (LN-S) | +| repeated entry | check position | ignore unless accumulation is enabled | VBT-O | adapter checks position | adapter checks position | adapter submits target delta | +| `commission_model` | none | none | VBT-F | none (BT-C) | none (ZL-P) | `InteractiveBrokersFeeModel` (LN-M) | +| `commission_rate` | 0% | 0% | VBT-F | 0% (BT-C) | -- | -- | +| `commission_per_share` | -- | -- | VBT-F | -- | -- (ZL-P) | $0.005 for US equities (LN-M) | +| `commission_minimum` | $0 | -- | VBT-F | -- | -- (ZL-P) | $1 for US equities (LN-M) | +| `slippage_model` | none | none | VBT-F | none (BT-C) | custom open, zero cost (ZL-P) | `NullSlippageModel` (LN-M) | +| `slippage_rate` | 0% | 0% | VBT-F | 0% (BT-C) | 0% (ZL-P) | 0% (LN-M) | + +The fee and slippage entries name the models selected by `DefaultBrokerageModel` for a US equity. +They are not universal LEAN defaults. `LN-C` separately verifies explicit constant fee and +percentage slippage overrides. + +### Comparison profiles + +`vectorbt_strict` uses locked short collateral, partial fills, and FIFO processing to match the +controlled `Portfolio.from_orders` protocol. The retained native check verifies that short-sale +cash is reported in the cash series but cannot fund new exposure. `backtrader` uses the measured +framework defaults for costs, leverage, target headroom, missing bars, and late feeds. +`backtrader_strict` adds submission-time cash checks and truncates target quantities to reproduce +Backtrader's enabled `checksubmit` and native integer-sizing paths. `zipline_strict` resolves to +the same settings as `zipline`; both represent the +explicit comparison protocol described above. The native Zipline defaults remain separate. The +`lean` profile represents only the named daily US-equity protocol above. Its stop settings are not +part of the retained LEAN equivalence claim. + +Synthetic scale evidence compares native ordered fills first, then reconstructs closed trades from the +canonical 1e-8 fill records for both engines. This prevents sub-quantum differences in a +framework's post-hoc trade-table arithmetic from changing a trade derived from equivalent fills. +The scenario suite separately compares each framework's native trade records. --- @@ -235,31 +342,33 @@ previous close. -Scenario claims use the retained release-candidate matrix. "Exact" appears only when every required scenario has zero canonical gap. +Scenario claims use the retained accepted matrix. "Exact" means terminal values, ordered closed trades, and ordered fills match after 1e-8 quantization. Each record declares whether a surface is native, reconstructed, aggregate-only, input-only, or unavailable; the claim does not extend to unavailable order-lifecycle fields. | Profile | Pinned framework | Required scenarios | Evidence | |---|---|---:|---| -| `vectorbt_strict` | [VectorBT Pro 2025.12.31](https://github.com/polakowo/vectorbt.pro) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `vectorbt` | [VectorBT OSS 0.28.2](https://pypi.org/project/vectorbt/0.28.2/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | - -Large-scale claims are published only when a retained workload has zero canonical gap. - -| Profile | Pinned framework | Compared | Trade gap | Terminal value | Evidence | -|---|---|---:|---:|---:|---| -| `vectorbt_strict` | VectorBT Pro 2025.12.31 (`1305a1e19743`) | 225,844 trades | 0 | 685179.007330 | [large-scale evidence](https://github.com/ml4t/backtest/blob/main/validation/vectorbt_pro/large_scale_parity.json) | - -No large-scale claim is published for Backtrader, Zipline, VectorBT OSS, or LEAN without a passing retained artifact. +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | + +The controlled scale workload contains 250 assets and 5,040 daily sessions (1,260,000 bars). Every row has zero canonical gap for target intents, native fills, closed trades reconstructed from those fills, and terminal state reconstructed from the fill ledger and final marks. + +| Profile | Current framework | Target intents | Native fills | Fill-derived closed trades | Terminal value | Evidence | +|---|---|---:|---:|---:|---:|---| +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 427,790 | 343,813 | 182,019 | -9,166,273.555954 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 427,790 | 427,696 | 226,434 | 10,504,095.900000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `lean` | [LEAN 18001](https://github.com/QuantConnect/Lean) | 427,790 | 361,297 | 191,297 | 184,538.130000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | --- ## Validation Harness -### Scenario Tests (16 scenarios x 4 frameworks) +### Synthetic Scenario Tests (17 scenarios x 4 frameworks) -The validation suite tests 16 scenarios against 4 external frameworks: +The validation suite tests 17 isolated conformance scenarios against 4 external frameworks: | ID | Scenario | What It Tests | |----|----------|---------------| @@ -278,13 +387,14 @@ The validation suite tests 16 scenarios against 4 external frameworks: | 13 | TSL + TP Combo | Rule chain evaluation order | | 14 | TSL + SL Combo | Rule chain evaluation order | | 15 | Triple Rule | Three-rule chain with priority | -| 16 | Stress Test | 1500 bars, 9 market regimes | +| 16 | Regime Path Coverage | 1500 bars, 9 market regimes and sparse entries | +| 17 | High Event Count | 1800 bars, up to 600 completed round trips | -### Large-Scale Validation (250 assets x 20 years) +### Synthetic Stress Validation (250 assets x 20 years) -Beyond scenario tests, the benchmark suite runs a full ranking strategy on 250 US equities -from 1998-2018. This produces 200K+ trades that are compared trade-by-trade between frameworks. -See `benchmark_suite.py` for the implementation. +The benchmark suite runs a generated ranking workload on 250 US equities from 1998-2018. It +produces more than 200,000 trades for record-volume and state-transition testing. See +`benchmark_suite.py` for the implementation. It is not a production case study. ### Running the Suite @@ -300,6 +410,16 @@ python validation/run_scenario.py --all # Large-scale benchmark python validation/benchmark_suite.py --profile backtrader_strict --framework backtrader + +# Compare retained real-strategy outputs +uv run python validation/real_strategy_evidence.py \ + --evidence-root PATH/TO/REAL_STRATEGY_OUTPUTS \ + --output validation/candidates/REAL_STRATEGY_RESULTS.candidate.json + +# Repeat engine-only timings for correctness-passing real-strategy pairs +uv run python validation/real_strategy_benchmark.py \ + --bundle-root PATH/TO/CONTENT_ADDRESSED_BUNDLES \ + --samples 10 ``` --- @@ -314,3 +434,6 @@ python validation/benchmark_suite.py --profile backtrader_strict --framework bac | Framework drivers | `validation/frameworks/` | | Benchmark suite | `validation/benchmark_suite.py` | | Scenario runner | `validation/run_scenario.py` | +| Real-strategy applicability | `validation/real_strategy_applicability.toml` | +| Real-strategy correctness evidence | `validation/REAL_STRATEGY_RESULTS.json` | +| Real-strategy performance evidence | `validation/REAL_STRATEGY_PERFORMANCE.json` | diff --git a/validation/PERFORMANCE_RESULTS.json b/validation/PERFORMANCE_RESULTS.json new file mode 100644 index 00000000..55348bb0 --- /dev/null +++ b/validation/PERFORMANCE_RESULTS.json @@ -0,0 +1,8144 @@ +{ + "calibration": { + "allocated_bytes": 33554432, + "process_peak_rss_mb": 167.5859375, + "process_wall_seconds": 0.4757457880768925, + "worker_seconds": 0.03539959201589227 + }, + "capability_matrix": [ + { + "coverage": [ + "vectorbt_pro", + "vectorbt_oss", + "backtrader", + "zipline", + "lean" + ], + "dimensions": "50 assets x 252 daily sessions", + "use": "controlled and idiomatic repeated performance evidence", + "workload": "performance_50_assets_252_sessions" + }, + { + "coverage": [ + "vectorbt_pro", + "vectorbt_oss", + "backtrader", + "zipline", + "lean" + ], + "dimensions": "250 assets x 5040 daily sessions", + "use": "large-scale equivalence only; recorded runtimes are not performance claims", + "workload": "controlled_250_assets_5040_sessions" + }, + { + "coverage": [ + "vectorbt_oss", + "backtrader", + "zipline", + "lean" + ], + "dimensions": "250 assets x 5,040 daily sessions", + "use": "superseded audit input; single samples, inconsistent setup boundaries, missing peak RSS for LEAN, and a non-reconstructable temporary data path", + "workload": "historical_real_250_assets_5040_sessions" + }, + { + "coverage": [ + "ml4t_backtest" + ], + "dimensions": "single-asset, 250-asset, quote, rebalance, and partial-fill workloads", + "use": "internal regression evidence; not a cross-framework comparison", + "workload": "performance_baselines.json workloads" + } + ], + "controlled": { + "equivalence_required": true, + "pairs": { + "backtrader": { + "exact_output": true, + "external_runner": "backtrader:external", + "ml4t_runner": "backtrader:ml4t", + "passed": true + }, + "lean": { + "exact_output": true, + "external_runner": "lean:external", + "ml4t_runner": "lean:ml4t", + "passed": true + }, + "vectorbt_oss": { + "exact_output": true, + "external_runner": "vectorbt_oss:external", + "ml4t_runner": "vectorbt_oss:ml4t", + "passed": true + }, + "vectorbt_pro": { + "exact_output": true, + "external_runner": "vectorbt_pro:external", + "ml4t_runner": "vectorbt_pro:ml4t", + "passed": true + }, + "zipline": { + "exact_output": true, + "external_runner": "zipline:external", + "ml4t_runner": "zipline:ml4t", + "passed": true + } + }, + "passed": true + }, + "generated_at": "2026-08-14T12:14:30.387013+00:00", + "historical_assessment": { + "comparable_to_current_measurements": false, + "reason": "The 2026-02-28 artifacts used one sample, inconsistent setup boundaries, old framework revisions, different hardware provenance, and incomplete memory data." + }, + "host": { + "cpu_model": "12th Gen Intel(R) Core(TM) i9-12900K", + "logical_cpu_count": 24, + "machine": "x86_64", + "platform": "Linux-6.8.0-136-generic-x86_64-with-glibc2.39", + "processor": "x86_64", + "python": "3.12.11" + }, + "idiomatic": { + "equivalence_claim": false, + "passed": true, + "runners": { + "backtrader": { + "invariants_passed": true, + "sample_source": "backtrader:external", + "semantic_disclosure": "Native Cerebro and Strategy callbacks with target orders, next-session open fills, integer shares, zero commission, and enabled submission cash checks." + }, + "lean": { + "invariants_passed": true, + "sample_source": "lean:external", + "semantic_disclosure": "Native QCAlgorithm daily callback and market-order API in the frozen LEAN image with the declared margin account, zero fee, and zero slippage models." + }, + "ml4t_backtest": { + "invariants_passed": true, + "sample_source": "vectorbt_oss:ml4t", + "semantic_disclosure": "Event-driven Strategy and Engine API with the vectorbt_oss_strict profile; this is one documented ML4T configuration, not a framework-wide default-performance claim." + }, + "vectorbt_oss": { + "invariants_passed": true, + "sample_source": "vectorbt_oss:external", + "semantic_disclosure": "Vectorized Portfolio.from_orders target-amount API with cash sharing, same-bar close execution, zero costs, and lock_cash enabled." + }, + "vectorbt_pro": { + "invariants_passed": true, + "sample_source": "vectorbt_pro:external", + "semantic_disclosure": "Vectorized Portfolio.from_orders target-amount API with cash sharing, same-bar close execution, zero costs, and locked short collateral." + }, + "zipline": { + "invariants_passed": true, + "sample_source": "zipline:external", + "semantic_disclosure": "Native run_algorithm callback and order_target API with daily bundle ingestion, a custom open-price slippage model, and zero commission. Bundle creation is included." + } + } + }, + "measurement_protocol": { + "cache_policy": "installed packages and compiled framework caches persist; inputs and framework state are rebuilt in every child; Zipline uses a new bundle root for every child", + "memory": "child resource.getrusage(RUSAGE_SELF).ru_maxrss over the complete process", + "process_isolation": "one fresh child process per warm-up and measured repetition", + "runtime_primary": "parent perf_counter around the complete child process, including interpreter startup, imports, deterministic input generation, adapter setup, engine execution, output extraction, canonical validation, and process teardown", + "runtime_secondary": "adapter-reported engine interval and worker stage intervals", + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "uncertainty": { + "confidence": 0.95, + "method": "deterministic percentile bootstrap of the sample median", + "resamples": 10000 + }, + "warmup": "one unmeasured isolated process per runner before measured repetitions" + }, + "protocol_sha256": "2e1c91c46a8f6be460b9f33157afe602c8eaf15358aa247c5406d2abf93ff8bb", + "release_gate_passed": true, + "runners": { + "backtrader:external": { + "adapter_engine_seconds": { + "ci95": [ + 3.350934648886323, + 3.6069803595310077 + ], + "maximum": 4.0709646351169795, + "median": 3.423901053494774, + "minimum": 3.304090574849397 + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 197.19921875, + 197.45703125 + ], + "maximum": 201.2265625, + "median": 197.294921875, + "minimum": 197.03515625 + }, + "process_wall_seconds": { + "ci95": [ + 4.859050475992262, + 5.406705005094409 + ], + "maximum": 5.6817656338680536, + "median": 5.014518941054121, + "minimum": 4.792324147885665 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "backtrader", + "profile": "backtrader_strict", + "runner_id": "backtrader:external", + "side": "external" + }, + "samples": [ + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.5078125, + "process_wall_seconds": 5.376169226132333, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.6734475230332464, + "framework_call": 3.987528580939397, + "input_generation": 0.17883973685093224, + "output_validation": 0.7111673119943589, + "worker_total": 4.884594844887033 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 195.28125 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 201.2265625, + "process_wall_seconds": 5.6817656338680536, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 4.0709646351169795, + "framework_call": 4.383497969945893, + "input_generation": 0.18363346089608967, + "output_validation": 0.6725615339819342, + "worker_total": 5.2451489749364555 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 194.87890625 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.2734375, + "process_wall_seconds": 5.109883235068992, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.540513196028769, + "framework_call": 3.8552259739954025, + "input_generation": 0.17031445098109543, + "output_validation": 0.6831903841812164, + "worker_total": 4.7138629630208015 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 195.46875 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.40625, + "process_wall_seconds": 5.4834628470707685, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.576482319040224, + "framework_call": 3.9185223788954318, + "input_generation": 0.1673972129356116, + "output_validation": 0.7199663419742137, + "worker_total": 4.813109786948189 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 195.48828125 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.4296875, + "process_wall_seconds": 5.3299471631180495, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.4706426488701254, + "framework_call": 3.889205976156518, + "input_generation": 0.2292528140824288, + "output_validation": 0.6676586889661849, + "worker_total": 4.79290368501097 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 195.3203125 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.296875, + "process_wall_seconds": 4.859050475992262, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.377159458119422, + "framework_call": 3.6661560570355505, + "input_generation": 0.1512304120697081, + "output_validation": 0.6185254689771682, + "worker_total": 4.440962121123448 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 196.4453125 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.03515625, + "process_wall_seconds": 4.898767878999934, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.3749146070331335, + "framework_call": 3.6809635940007865, + "input_generation": 0.16374001908116043, + "output_validation": 0.6309148538857698, + "worker_total": 4.482350798789412 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 195.93359375 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.19921875, + "process_wall_seconds": 4.9191546470392495, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.350934648886323, + "framework_call": 3.668874398106709, + "input_generation": 0.1646620538085699, + "output_validation": 0.6683604100253433, + "worker_total": 4.506771945860237 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 196.00390625 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.29296875, + "process_wall_seconds": 4.856806471943855, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.334570054896176, + "framework_call": 3.6319363589864224, + "input_generation": 0.1571136680431664, + "output_validation": 0.670759926084429, + "worker_total": 4.465157583123073 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 195.984375 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 197.15234375, + "process_wall_seconds": 4.792324147885665, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 3.304090574849397, + "framework_call": 3.5917146620340645, + "input_generation": 0.16222902899608016, + "output_validation": 0.6231943219900131, + "worker_total": 4.383566793054342 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 196.125 + } + ], + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "warmup": { + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_wall_seconds": 5.175673787947744 + } + }, + "backtrader:ml4t": { + "adapter_engine_seconds": { + "ci95": [ + 0.908577922033146, + 0.9894778840243816 + ], + "maximum": 1.037454895908013, + "median": 0.9448818495729938, + "minimum": 0.8902315250597894 + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 155.8671875, + 156.65234375 + ], + "maximum": 312.3828125, + "median": 156.07421875, + "minimum": 155.85546875 + }, + "process_wall_seconds": { + "ci95": [ + 2.530810981988907, + 2.709004875156097 + ], + "maximum": 2.866589648881927, + "median": 2.612126521533355, + "minimum": 2.447079428937286 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "backtrader", + "profile": "backtrader_strict", + "runner_id": "backtrader:ml4t", + "side": "ml4t" + }, + "samples": [ + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 156.98046875, + "process_wall_seconds": 2.7839601701125503, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.0181061150506139, + "framework_call": 1.5028354679234326, + "input_generation": 0.21065072109922767, + "output_validation": 0.6413971921429038, + "worker_total": 2.3612418100237846 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.24609375 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 156.32421875, + "process_wall_seconds": 2.6768742080312222, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9608496529981494, + "framework_call": 1.4163008669856936, + "input_generation": 0.17067066789604723, + "output_validation": 0.6646531720180064, + "worker_total": 2.257363608106971 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.8125 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 156.0625, + "process_wall_seconds": 2.613623331999406, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9633448419626802, + "framework_call": 1.4114560668822378, + "input_generation": 0.1719590718857944, + "output_validation": 0.648574722930789, + "worker_total": 2.237245577853173 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.35546875 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 155.8671875, + "process_wall_seconds": 2.866589648881927, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.037454895908013, + "framework_call": 1.5683179590851068, + "input_generation": 0.18849451513960958, + "output_validation": 0.6789953368715942, + "worker_total": 2.4413970168679953 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.80078125 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 156.0859375, + "process_wall_seconds": 2.610629711067304, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9382545321714133, + "framework_call": 1.42265171604231, + "input_generation": 0.152428223984316, + "output_validation": 0.6759225248824805, + "worker_total": 2.2558157618623227 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.01953125 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 155.859375, + "process_wall_seconds": 2.530810981988907, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9065284337848425, + "framework_call": 1.3859011081513017, + "input_generation": 0.15998178184963763, + "output_validation": 0.6346101809758693, + "worker_total": 2.1876259739510715 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.13671875 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 312.3828125, + "process_wall_seconds": 2.597840033005923, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.929973758989945, + "framework_call": 1.3882147979456931, + "input_generation": 0.17093791300430894, + "output_validation": 0.6521568079479039, + "worker_total": 2.216292425058782 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.78515625 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 156.45703125, + "process_wall_seconds": 2.447079428937286, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8902315250597894, + "framework_call": 1.3272064051125199, + "input_generation": 0.1574009859468788, + "output_validation": 0.6059910738840699, + "worker_total": 2.096101847011596 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.421875 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 155.87890625, + "process_wall_seconds": 2.634049580199644, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9515091669745743, + "framework_call": 1.4156893738545477, + "input_generation": 0.1641269619576633, + "output_validation": 0.660244386876002, + "worker_total": 2.244823061861098 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.4296875 + }, + { + "captured_log_tail": "", + "framework": "backtrader", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "febf7d800ad51bb21a08dcde7271f83d998df1555717892bb7df1e043c558963" + }, + "final_value": 1017080.363019, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "ff7fe2b530c5859f9f166204f13090e1852563d1f442facea022fdf3580ba1d9", + "total_pnl": 17080.363019, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "775e56a8766efa3cd1bddc12b8ba0580b7bc0306fe0391d02bc7f5bd9724f73d" + } + }, + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_peak_rss_mb": 155.85546875, + "process_wall_seconds": 2.4748893938958645, + "profile": "backtrader_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "backtrader:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.908577922033146, + "framework_call": 1.3572073380928487, + "input_generation": 0.1586920388508588, + "output_validation": 0.6126857830677181, + "worker_total": 2.1335354649927467 + }, + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.9140625 + } + ], + "target": { + "access": "public", + "actual_version": "1.9.78.123", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "version": "1.9.78.123" + }, + "warmup": { + "output_sha256": "812655f4febafd954501947cff27c631ef86d0d1e2708f18eb8c94d4ee742438", + "process_wall_seconds": 2.614274393999949 + } + }, + "lean:external": { + "adapter_engine_seconds": { + "ci95": [ + 9.302797012962401, + 10.53841226757504 + ], + "maximum": 11.18987100222148, + "median": 9.411902562016621, + "minimum": 8.945152326952666 + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 756.7421875, + 788.666015625 + ], + "maximum": 983.65625, + "median": 774.61328125, + "minimum": 691.19140625 + }, + "process_wall_seconds": { + "ci95": [ + 11.036492455634288, + 12.244950134074315 + ], + "maximum": 13.056066303048283, + "median": 11.206220811931416, + "minimum": 10.7337086268235 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "lean", + "profile": "lean", + "runner_id": "lean:external", + "side": "external" + }, + "samples": [ + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 776.76171875, + "process_wall_seconds": 12.019305891124532, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 10.185783114982769, + "framework_call": 10.724170634057373, + "input_generation": 0.19310970208607614, + "output_validation": 0.702254791976884, + "worker_total": 11.623742611845955 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 136.97265625 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 781.83203125, + "process_wall_seconds": 13.056066303048283, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 11.18987100222148, + "framework_call": 11.758946699090302, + "input_generation": 0.188275049906224, + "output_validation": 0.7313700309023261, + "worker_total": 12.683818692108616 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 136.97265625 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 795.5, + "process_wall_seconds": 12.244950134074315, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 10.404145527165383, + "framework_call": 10.970031555974856, + "input_generation": 0.1847632999997586, + "output_validation": 0.7049245410598814, + "worker_total": 11.866646374808624 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 136.97265625 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 983.65625, + "process_wall_seconds": 12.704453617101535, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 10.891041420167312, + "framework_call": 11.443608423927799, + "input_generation": 0.19487099605612457, + "output_validation": 0.7112620898988098, + "worker_total": 12.355302988784388 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 136.97265625 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 772.46484375, + "process_wall_seconds": 11.11995538813062, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 9.363360463874415, + "framework_call": 9.906120584113523, + "input_generation": 0.19041855516843498, + "output_validation": 0.679943721042946, + "worker_total": 10.783782337093726 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 136.97265625 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 785.8984375, + "process_wall_seconds": 11.26505703292787, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 9.450210659066215, + "framework_call": 10.003367149969563, + "input_generation": 0.19682106701657176, + "output_validation": 0.7030586530454457, + "worker_total": 10.908337126951665 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 136.97265625 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 749.671875, + "process_wall_seconds": 11.084114050026983, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 9.3164061778225, + "framework_call": 9.84822169598192, + "input_generation": 0.19571771007031202, + "output_validation": 0.680251837009564, + "worker_total": 10.728396950056776 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 136.97265625 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 691.19140625, + "process_wall_seconds": 10.7337086268235, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 8.945152326952666, + "framework_call": 9.481722017051652, + "input_generation": 0.18337821518070996, + "output_validation": 0.6910067761782557, + "worker_total": 10.360885162837803 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 138.68359375 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 761.35546875, + "process_wall_seconds": 10.953029523137957, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 9.231999560957775, + "framework_call": 9.745108352974057, + "input_generation": 0.18416382395662367, + "output_validation": 0.6621900799218565, + "worker_total": 10.596050997963175 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 138.68359375 + }, + { + "captured_log_tail": " LEAN data export: cache hit (50 assets)\n", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 763.8125, + "process_wall_seconds": 11.147384590934962, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 9.373594464967027, + "framework_call": 9.93591579911299, + "input_generation": 0.1843034198973328, + "output_validation": 0.6802478530444205, + "worker_total": 10.804355204105377 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 138.68359375 + } + ], + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "warmup": { + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_wall_seconds": 11.679331682156771 + } + }, + "lean:ml4t": { + "adapter_engine_seconds": { + "ci95": [ + 1.3706486190203577, + 1.4218521299771965 + ], + "maximum": 1.433795009041205, + "median": 1.397009706008248, + "minimum": 1.3313814599532634 + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 156.81640625, + 157.501953125 + ], + "maximum": 158.859375, + "median": 157.15234375, + "minimum": 156.74609375 + }, + "process_wall_seconds": { + "ci95": [ + 3.049292348441668, + 3.2311629990581423 + ], + "maximum": 3.5748406078200787, + "median": 3.1330102384090424, + "minimum": 3.011835790006444 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "lean", + "profile": "lean", + "runner_id": "lean:ml4t", + "side": "ml4t" + }, + "samples": [ + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 157.046875, + "process_wall_seconds": 3.5748406078200787, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.4276690089609474, + "framework_call": 2.0419853311032057, + "input_generation": 0.21625301497988403, + "output_validation": 0.9067609130870551, + "worker_total": 3.1709984850604087 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.9375 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 156.74609375, + "process_wall_seconds": 3.1823340819682926, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.3706486190203577, + "framework_call": 1.8673832311760634, + "input_generation": 0.18896398902870715, + "output_validation": 0.7042831610888243, + "worker_total": 2.766540241893381 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.1796875 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 157.71875, + "process_wall_seconds": 3.0813401688355953, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.4004664199892431, + "framework_call": 1.8936227390076965, + "input_generation": 0.19472763198427856, + "output_validation": 0.6292587341740727, + "worker_total": 2.7227156930603087 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.02734375 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 158.859375, + "process_wall_seconds": 3.083686394849792, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.393552992027253, + "framework_call": 1.8873397649731487, + "input_generation": 0.18920155288651586, + "output_validation": 0.627145430073142, + "worker_total": 2.7081215269863605 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.87890625 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 156.7578125, + "process_wall_seconds": 3.0148983020335436, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.3553519088309258, + "framework_call": 1.8468800981063396, + "input_generation": 0.18298948789015412, + "output_validation": 0.6126887190621346, + "worker_total": 2.646813865052536 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.046875 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 157.046875, + "process_wall_seconds": 3.1869257749058306, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.433795009041205, + "framework_call": 1.946343685965985, + "input_generation": 0.1942231790162623, + "output_validation": 0.618491327855736, + "worker_total": 2.763743472052738 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.34765625 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 157.32421875, + "process_wall_seconds": 3.2311629990581423, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.4218521299771965, + "framework_call": 1.955944683868438, + "input_generation": 0.19136144500225782, + "output_validation": 0.661566044902429, + "worker_total": 2.8142996768001467 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.921875 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 156.81640625, + "process_wall_seconds": 3.0752324189525098, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.382749306038022, + "framework_call": 1.8939984000753611, + "input_generation": 0.19286258495412767, + "output_validation": 0.6301647510845214, + "worker_total": 2.7216198549140245 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.47265625 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 157.2578125, + "process_wall_seconds": 3.011835790006444, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.3313814599532634, + "framework_call": 1.8444276098161936, + "input_generation": 0.18630578787997365, + "output_validation": 0.6243295278400183, + "worker_total": 2.6601850509177893 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.71484375 + }, + { + "captured_log_tail": "", + "framework": "lean", + "input": { + "effective_sha256": "139d5a2f6a9f88a185c97c00eaf9f9a85ba3953b2e3632bc33c9f0677641a6a5", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "ef7b6d976557fef0b0d366a85d44112d1c9a1282307a44ad6351d030d5a6e7d5" + }, + "final_value": 1017080.38, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "f426d075aad3f7bc182858a410e3c9d325ca40c7b634a8c0f7bda3043b6da0a0", + "total_pnl": 17080.38, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "cac5bf5535364f3f04bf994c75a570f8fad24a632681372e3b2a2d4ce6967728" + } + }, + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_peak_rss_mb": 157.28515625, + "process_wall_seconds": 3.250726570840925, + "profile": "lean", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "lean:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.4113483978435397, + "framework_call": 1.9658494531176984, + "input_generation": 0.19743163813836873, + "output_validation": 0.6800318469759077, + "worker_total": 2.847525800112635 + }, + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.76171875 + } + ], + "target": { + "access": "public", + "actual_version": "18001", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "warmup": { + "output_sha256": "d89dbc381565eab9a3d4a88b680fd815cc5f4a934a386b23ad1e8ed7ad0e8b22", + "process_wall_seconds": 3.186559548135847 + } + }, + "vectorbt_oss:external": { + "adapter_engine_seconds": { + "ci95": [ + 0.8307405739324167, + 0.8690108514856547 + ], + "maximum": 0.882908120052889, + "median": 0.8480116230202839, + "minimum": 0.8021623259410262 + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 387.306640625, + 387.5 + ], + "maximum": 387.5234375, + "median": 387.439453125, + "minimum": 387.16796875 + }, + "process_wall_seconds": { + "ci95": [ + 3.525195039110258, + 3.6873238731641322 + ], + "maximum": 3.8338988691102713, + "median": 3.6086933659389615, + "minimum": 3.482216221978888 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "vectorbt_oss", + "profile": "vectorbt_oss_strict", + "runner_id": "vectorbt_oss:external", + "side": "external" + }, + "samples": [ + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.43359375, + "process_wall_seconds": 3.670104590943083, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8798201009631157, + "framework_call": 2.062932245898992, + "input_generation": 0.16191663895733654, + "output_validation": 0.7096830219961703, + "worker_total": 2.9396252918522805 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 385.25 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.51953125, + "process_wall_seconds": 3.8338988691102713, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8585861781612039, + "framework_call": 2.091058199061081, + "input_generation": 0.16191325685940683, + "output_validation": 0.7331500151194632, + "worker_total": 2.9914798820391297 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 384.98828125 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.48046875, + "process_wall_seconds": 3.6873238731641322, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8582016020081937, + "framework_call": 2.064197650179267, + "input_generation": 0.16661790409125388, + "output_validation": 0.6851765559986234, + "worker_total": 2.921632877085358 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 384.265625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.16796875, + "process_wall_seconds": 3.7498691040091217, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8465168729890138, + "framework_call": 2.1357659180648625, + "input_generation": 0.1744779150467366, + "output_validation": 0.6610894009936601, + "worker_total": 2.976782123092562 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 386.109375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.375, + "process_wall_seconds": 3.5211444818414748, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8488034920301288, + "framework_call": 2.0262639930006117, + "input_generation": 0.1772257210686803, + "output_validation": 0.647859837859869, + "worker_total": 2.8567061200737953 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 385.19921875 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.1796875, + "process_wall_seconds": 3.608235420892015, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8308160889428109, + "framework_call": 2.067230924963951, + "input_generation": 0.16955018020235002, + "output_validation": 0.6723636840470135, + "worker_total": 2.9140442551579326 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 384.9609375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.4453125, + "process_wall_seconds": 3.5682687910739332, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8472197540104389, + "framework_call": 2.0262966749724, + "input_generation": 0.17957995180040598, + "output_validation": 0.6536156190559268, + "worker_total": 2.8652191888540983 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 385.765625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.43359375, + "process_wall_seconds": 3.482216221978888, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8149642748758197, + "framework_call": 2.021031162934378, + "input_generation": 0.15743755199946463, + "output_validation": 0.64180369512178, + "worker_total": 2.825268122833222 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 385.5234375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.48046875, + "process_wall_seconds": 3.609151310985908, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.882908120052889, + "framework_call": 2.051390077918768, + "input_generation": 0.15605690493248403, + "output_validation": 0.6586936758831143, + "worker_total": 2.8732933779247105 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 385.7890625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 387.5234375, + "process_wall_seconds": 3.525195039110258, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 0.8021623259410262, + "framework_call": 1.9822685839608312, + "input_generation": 0.15689620794728398, + "output_validation": 0.6623139940202236, + "worker_total": 2.806431439006701 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 386.17578125 + } + ], + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "warmup": { + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_wall_seconds": 3.7903245377819985 + } + }, + "vectorbt_oss:ml4t": { + "adapter_engine_seconds": { + "ci95": [ + 0.8981822959613055, + 1.008911918150261 + ], + "maximum": 1.2465274089481682, + "median": 0.9092964320443571, + "minimum": 0.8798509649932384 + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 155.798828125, + 157.884765625 + ], + "maximum": 310.21484375, + "median": 155.9140625, + "minimum": 155.7109375 + }, + "process_wall_seconds": { + "ci95": [ + 2.2440610979683697, + 2.4991891224635765 + ], + "maximum": 3.256326812086627, + "median": 2.277965266490355, + "minimum": 2.223389583872631 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "vectorbt_oss", + "profile": "vectorbt_oss_strict", + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t" + }, + "samples": [ + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 159.609375, + "process_wall_seconds": 2.3952237679623067, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9686031411401927, + "framework_call": 1.1901077630463988, + "input_generation": 0.154701157938689, + "output_validation": 0.654574777930975, + "worker_total": 2.0046242149546742 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.08984375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.7109375, + "process_wall_seconds": 2.6031544769648463, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.008911918150261, + "framework_call": 1.3068602001294494, + "input_generation": 0.21605361602269113, + "output_validation": 0.653870282927528, + "worker_total": 2.183360032038763 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.71875 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.84375, + "process_wall_seconds": 2.451485815923661, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.0214208189863712, + "framework_call": 1.248727394035086, + "input_generation": 0.1640953291207552, + "output_validation": 0.6562014650553465, + "worker_total": 2.074317052960396 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.03515625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.75390625, + "process_wall_seconds": 3.256326812086627, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.2465274089481682, + "framework_call": 1.577657372923568, + "input_generation": 0.1758553208783269, + "output_validation": 0.8341000508517027, + "worker_total": 2.595768948085606 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.72265625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.83203125, + "process_wall_seconds": 2.2834033970721066, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9060374309774488, + "framework_call": 1.1317346221767366, + "input_generation": 0.15844938182272017, + "output_validation": 0.6323951878584921, + "worker_total": 1.9277215849142522 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.359375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 156.16015625, + "process_wall_seconds": 2.223389583872631, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8981822959613055, + "framework_call": 1.1087714741006494, + "input_generation": 0.15337755298241973, + "output_validation": 0.6162916289176792, + "worker_total": 1.883411531103775 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.80859375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 310.21484375, + "process_wall_seconds": 2.2725271359086037, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9125554331112653, + "framework_call": 1.1285230768844485, + "input_generation": 0.15912495600059628, + "output_validation": 0.6264055089559406, + "worker_total": 1.9197965608909726 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.578125 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.875, + "process_wall_seconds": 2.2243441899772733, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8798509649932384, + "framework_call": 1.0897447711322457, + "input_generation": 0.15880534006282687, + "output_validation": 0.6201093110721558, + "worker_total": 1.873634281102568 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.390625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.953125, + "process_wall_seconds": 2.2440610979683697, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8912546280771494, + "framework_call": 1.115328145911917, + "input_generation": 0.15796285402029753, + "output_validation": 0.612602864857763, + "worker_total": 1.8908990109339356 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.53515625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_oss", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 157.4453125, + "process_wall_seconds": 2.2701504779979587, + "profile": "vectorbt_oss_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_oss:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9017682771664113, + "framework_call": 1.1111474989447743, + "input_generation": 0.1592353261075914, + "output_validation": 0.6402482429984957, + "worker_total": 1.9163800119422376 + }, + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.1953125 + } + ], + "target": { + "access": "public", + "actual_version": "1.1.0", + "artifact": "vectorbt-1.1.0.tar.gz", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "display_name": "VectorBT OSS", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "version": "1.1.0" + }, + "warmup": { + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_wall_seconds": 2.7466204871889204 + } + }, + "vectorbt_pro:external": { + "adapter_engine_seconds": { + "ci95": [ + 1.6690128268674016, + 1.7714889941271394 + ], + "maximum": 2.270636638859287, + "median": 1.728068141383119, + "minimum": 1.6571708989795297 + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 414.65234375, + 414.884765625 + ], + "maximum": 414.99609375, + "median": 414.74609375, + "minimum": 414.578125 + }, + "process_wall_seconds": { + "ci95": [ + 5.71285487303976, + 6.257438300875947 + ], + "maximum": 9.99652496096678, + "median": 5.991469567990862, + "minimum": 5.5841467110440135 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "vectorbt_pro", + "profile": "vectorbt_strict", + "runner_id": "vectorbt_pro:external", + "side": "external" + }, + "samples": [ + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.8203125, + "process_wall_seconds": 5.959158386103809, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.7371781261172146, + "framework_call": 4.1232807820197195, + "input_generation": 0.1640956699848175, + "output_validation": 0.648703636135906, + "worker_total": 4.9424108299426734 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 411.59765625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.65234375, + "process_wall_seconds": 6.257438300875947, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.7362616048194468, + "framework_call": 4.317180361133069, + "input_generation": 0.1769615518860519, + "output_validation": 0.7294469620101154, + "worker_total": 5.229629810899496 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 411.96875 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.7734375, + "process_wall_seconds": 9.99652496096678, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 2.270636638859287, + "framework_call": 6.091383671853691, + "input_generation": 0.16453690105117857, + "output_validation": 0.8518167729489505, + "worker_total": 7.118468755856156 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 412.03515625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.99609375, + "process_wall_seconds": 6.023780749877915, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.7160168879199773, + "framework_call": 4.048435340868309, + "input_generation": 0.1620536979753524, + "output_validation": 0.7531253169290721, + "worker_total": 4.972098605940118 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 411.4375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.71484375, + "process_wall_seconds": 5.609207591973245, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.66347999102436, + "framework_call": 3.9243139519821852, + "input_generation": 0.15953805786557496, + "output_validation": 0.6566350138746202, + "worker_total": 4.745537045877427 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 412.39453125 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.64453125, + "process_wall_seconds": 6.314501478103921, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.8057998621370643, + "framework_call": 4.355701731983572, + "input_generation": 0.16373650403693318, + "output_validation": 0.6716082249768078, + "worker_total": 5.200047123944387 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 412.18359375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.578125, + "process_wall_seconds": 5.800166065106168, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.6690128268674016, + "framework_call": 4.021351563045755, + "input_generation": 0.17845306801609695, + "output_validation": 0.6897027879022062, + "worker_total": 4.895391779951751 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 411.51953125 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.875, + "process_wall_seconds": 5.816502154106274, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.764242930104956, + "framework_call": 4.080579221947119, + "input_generation": 0.15481626009568572, + "output_validation": 0.662275732960552, + "worker_total": 4.903302671853453 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 412.5390625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.99609375, + "process_wall_seconds": 5.5841467110440135, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.6571708989795297, + "framework_call": 3.8644673260860145, + "input_generation": 0.1620912249200046, + "output_validation": 0.6730847209692001, + "worker_total": 4.715928931022063 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 412.63671875 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 414.71875, + "process_wall_seconds": 6.088474199874327, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 1.719874677946791, + "framework_call": 4.2443152100313455, + "input_generation": 0.21618003700859845, + "output_validation": 0.6430077231489122, + "worker_total": 5.109357130015269 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 413.01953125 + } + ], + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "warmup": { + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_wall_seconds": 6.184146265964955 + } + }, + "vectorbt_pro:ml4t": { + "adapter_engine_seconds": { + "ci95": [ + 0.9047102495096624, + 1.0043395365355536 + ], + "maximum": 1.9459911989979446, + "median": 0.9240547810913995, + "minimum": 0.8907343389000744 + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 155.8359375, + 156.02734375 + ], + "maximum": 159.6171875, + "median": 155.865234375, + "minimum": 155.796875 + }, + "process_wall_seconds": { + "ci95": [ + 2.2773244495037943, + 2.5231631849892437 + ], + "maximum": 4.528987112920731, + "median": 2.3167884735157713, + "minimum": 2.244471146957949 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "vectorbt_pro", + "profile": "vectorbt_strict", + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t" + }, + "samples": [ + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.9453125, + "process_wall_seconds": 2.5357214431278408, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.930464378092438, + "framework_call": 1.1525822631083429, + "input_generation": 0.15816618292592466, + "output_validation": 0.7532674588728696, + "worker_total": 2.079071493120864 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.48828125 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.796875, + "process_wall_seconds": 2.5231631849892437, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.0782146949786693, + "framework_call": 1.3005577349103987, + "input_generation": 0.16522943787276745, + "output_validation": 0.6411126849707216, + "worker_total": 2.1124589869286865 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.9140625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 156.02734375, + "process_wall_seconds": 4.528987112920731, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 1.9459911989979446, + "framework_call": 2.386813025921583, + "input_generation": 0.45184363005682826, + "output_validation": 0.755135057028383, + "worker_total": 3.6057104161009192 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.8671875 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 156.09765625, + "process_wall_seconds": 2.3521372568793595, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9350400541443378, + "framework_call": 1.168484119931236, + "input_generation": 0.16800005920231342, + "output_validation": 0.6441999510861933, + "worker_total": 1.9865476908162236 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 155.06640625 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.8203125, + "process_wall_seconds": 2.286148939980194, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.916111133992672, + "framework_call": 1.1275252439081669, + "input_generation": 0.1644469709135592, + "output_validation": 0.6393944921437651, + "worker_total": 1.9367348002269864 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.01171875 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.85546875, + "process_wall_seconds": 2.326364906039089, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.917645184090361, + "framework_call": 1.1439288000110537, + "input_generation": 0.16722212894819677, + "output_validation": 0.6177532710134983, + "worker_total": 1.9345095169264823 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 153.78125 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.8515625, + "process_wall_seconds": 2.2889087309595197, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9393373690545559, + "framework_call": 1.1504261358641088, + "input_generation": 0.15304543706588447, + "output_validation": 0.6295626398641616, + "worker_total": 1.938792741857469 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.0234375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.875, + "process_wall_seconds": 2.247436858015135, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8933093650266528, + "framework_call": 1.1127361478284001, + "input_generation": 0.158513454021886, + "output_validation": 0.607449027011171, + "worker_total": 1.8840810460969806 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.34375 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 159.6171875, + "process_wall_seconds": 2.3072120409924537, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.9071503840386868, + "framework_call": 1.134229457937181, + "input_generation": 0.15990970307029784, + "output_validation": 0.6521279099397361, + "worker_total": 1.9519521209876984 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.078125 + }, + { + "captured_log_tail": "", + "framework": "vectorbt_pro", + "input": { + "effective_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4306, + "sha256": "5e74fc1dc208d9a4ecac295eca00a797db81db8ce00aa50f1f3c8ca9a3db59da" + }, + "final_value": 1007736.514952, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "b44d0292dd420d62eea72d4cf03fb04bc5a8ec76c742a53d2d6d6940ab22c436", + "total_pnl": 7736.514952, + "trade_count": 2280, + "trades": { + "count": 2280, + "sha256": "b531982ccef3b5b71002ddcffa42d093e737312df88eaeffc6645d152d4cc3db" + } + }, + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_peak_rss_mb": 155.84765625, + "process_wall_seconds": 2.244471146957949, + "profile": "vectorbt_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "vectorbt_pro:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8907343389000744, + "framework_call": 1.1046026512049139, + "input_generation": 0.16227731201797724, + "output_validation": 0.6135311261750758, + "worker_total": 1.8856932430062443 + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 154.53515625 + } + ], + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + }, + "warmup": { + "output_sha256": "c804c59ed063b927bc86dc00416ff689a7dbdbb25f3ffaa9fd179a7648403c53", + "process_wall_seconds": 2.267685509985313 + } + }, + "zipline:external": { + "adapter_engine_seconds": { + "ci95": [ + 4.748736156150699, + 5.10177456215024 + ], + "maximum": 5.503119731787592, + "median": 4.977568666450679, + "minimum": 4.717232923023403 + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 346.33203125, + 348.34765625 + ], + "maximum": 351.35546875, + "median": 346.390625, + "minimum": 346.20703125 + }, + "process_wall_seconds": { + "ci95": [ + 7.1438562190160155, + 7.647039557108656 + ], + "maximum": 8.003612227039412, + "median": 7.464878038037568, + "minimum": 7.018419272033498 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "zipline", + "profile": "zipline_strict", + "runner_id": "zipline:external", + "side": "external" + }, + "samples": [ + { + "captured_log_tail": " Bundle creation: 0.9s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 351.35546875, + "process_wall_seconds": 7.711425847141072, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 5.091250766068697, + "framework_call": 6.295086770085618, + "input_generation": 0.19786221301183105, + "output_validation": 0.6627009769435972, + "worker_total": 7.161247201031074 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 342.7265625 + }, + { + "captured_log_tail": " Bundle creation: 1.1s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 346.33203125, + "process_wall_seconds": 8.003612227039412, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 5.503119731787592, + "framework_call": 6.497629802906886, + "input_generation": 0.20184951601549983, + "output_validation": 0.7159625249914825, + "worker_total": 7.420901325065643 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 342.81640625 + }, + { + "captured_log_tail": " Bundle creation: 0.9s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 346.4296875, + "process_wall_seconds": 7.3726214750204235, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 4.924369488842785, + "framework_call": 5.869465551106259, + "input_generation": 0.1991936641279608, + "output_validation": 0.7059388430789113, + "worker_total": 6.7807400999590755 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 343.62890625 + }, + { + "captured_log_tail": " Bundle creation: 0.9s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 350.28125, + "process_wall_seconds": 7.582653267076239, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 5.030767844058573, + "framework_call": 6.077844540122896, + "input_generation": 0.21785450587049127, + "output_validation": 0.6522597980219871, + "worker_total": 6.9531793689820915 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 342.45703125 + }, + { + "captured_log_tail": " Bundle creation: 0.9s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 346.328125, + "process_wall_seconds": 7.557134601054713, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 5.10177456215024, + "framework_call": 6.074810586171225, + "input_generation": 0.21035503293387592, + "output_validation": 0.6693015419878066, + "worker_total": 6.960555827943608 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 341.96484375 + }, + { + "captured_log_tail": " Bundle creation: 0.9s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 346.20703125, + "process_wall_seconds": 7.1438562190160155, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 4.748736156150699, + "framework_call": 5.73698405502364, + "input_generation": 0.21277186600491405, + "output_validation": 0.6704761269502342, + "worker_total": 6.626129260985181 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 343.41796875 + }, + { + "captured_log_tail": " Bundle creation: 0.9s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 346.35546875, + "process_wall_seconds": 7.24830866092816, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 4.8676639350596815, + "framework_call": 5.794056324986741, + "input_generation": 0.18637165799736977, + "output_validation": 0.6866976919118315, + "worker_total": 6.674514743965119 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 344.40234375 + }, + { + "captured_log_tail": " Bundle creation: 0.9s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 346.3671875, + "process_wall_seconds": 7.018419272033498, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 4.717232923023403, + "framework_call": 5.63641257584095, + "input_generation": 0.2074915268458426, + "output_validation": 0.6421569350641221, + "worker_total": 6.490977911977097 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 343.26953125 + }, + { + "captured_log_tail": " Bundle creation: 1.0s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 346.875, + "process_wall_seconds": 7.631891947938129, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 5.117074390873313, + "framework_call": 6.1258636098355055, + "input_generation": 0.20888931094668806, + "output_validation": 0.6922734039835632, + "worker_total": 7.033299366943538 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 343.3671875 + }, + { + "captured_log_tail": " Bundle creation: 0.9s (one-time setup)\n", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 346.4140625, + "process_wall_seconds": 7.067554120905697, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:external", + "side": "external", + "stages_seconds": { + "adapter_reported_engine": 4.741218131966889, + "framework_call": 5.661317677004263, + "input_generation": 0.19341292115859687, + "output_validation": 0.6663111308589578, + "worker_total": 6.526222827844322 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 343.953125 + } + ], + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "warmup": { + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_wall_seconds": 7.682794199092314 + } + }, + "zipline:ml4t": { + "adapter_engine_seconds": { + "ci95": [ + 0.8491478658979759, + 0.8854195929598063 + ], + "maximum": 0.8986947531811893, + "median": 0.8598419894697145, + "minimum": 0.8189114129636437 + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "passed": true, + "process_peak_rss_mb": { + "ci95": [ + 160.685546875, + 164.6640625 + ], + "maximum": 320.2578125, + "median": 161.07421875, + "minimum": 160.328125 + }, + "process_wall_seconds": { + "ci95": [ + 2.573103487957269, + 2.7163554108701646 + ], + "maximum": 2.719864967977628, + "median": 2.6236208204645663, + "minimum": 2.5323963440023363 + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner": { + "framework": "zipline", + "profile": "zipline_strict", + "runner_id": "zipline:ml4t", + "side": "ml4t" + }, + "samples": [ + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 320.2578125, + "process_wall_seconds": 2.655956004979089, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8430441298987716, + "framework_call": 1.3786883461289108, + "input_generation": 0.19677593000233173, + "output_validation": 0.6716889808885753, + "worker_total": 2.2532301018945873 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 159.06640625 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 164.63671875, + "process_wall_seconds": 2.7195419939234853, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8895131449680775, + "framework_call": 1.4294707980006933, + "input_generation": 0.24853772879578173, + "output_validation": 0.638234734069556, + "worker_total": 2.3220137970056385 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 158.8359375 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 161.06640625, + "process_wall_seconds": 2.703950681956485, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8590001529082656, + "framework_call": 1.3576857191510499, + "input_generation": 0.25127662695012987, + "output_validation": 0.6541171967983246, + "worker_total": 2.269417939009145 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 159.55859375 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 164.67578125, + "process_wall_seconds": 2.7163554108701646, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8986947531811893, + "framework_call": 1.473513575969264, + "input_generation": 0.20762456092052162, + "output_validation": 0.6460245719645172, + "worker_total": 2.3321758878882974 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 158.703125 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 160.5390625, + "process_wall_seconds": 2.573103487957269, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8606838260311633, + "framework_call": 1.338602809002623, + "input_generation": 0.20307351904921234, + "output_validation": 0.6266762991435826, + "worker_total": 2.1743306289426982 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 158.15625 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 161.08203125, + "process_wall_seconds": 2.591285635950044, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8552516018971801, + "framework_call": 1.3401092560961843, + "input_generation": 0.2297970480285585, + "output_validation": 0.6156892699655145, + "worker_total": 2.190389066003263 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 158.875 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 164.6640625, + "process_wall_seconds": 2.5908634080551565, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8500719619914889, + "framework_call": 1.3792267120443285, + "input_generation": 0.18986796401441097, + "output_validation": 0.6602669539861381, + "worker_total": 2.2349234770517796 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 159.89453125 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 160.328125, + "process_wall_seconds": 2.5323963440023363, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8189114129636437, + "framework_call": 1.3030543180648237, + "input_generation": 0.2030899878591299, + "output_validation": 0.6371270779054612, + "worker_total": 2.1484398460015655 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 158.41796875 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 160.76171875, + "process_wall_seconds": 2.719864967977628, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8854195929598063, + "framework_call": 1.417193704051897, + "input_generation": 0.21940957801416516, + "output_validation": 0.6480343870352954, + "worker_total": 2.2898331182077527 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 158.1640625 + }, + { + "captured_log_tail": "", + "framework": "zipline", + "input": { + "effective_sha256": "b1cae50463faa3523965f50cc48276f96820c5d361cb1dd470c2f5e2223a5754", + "raw_sha256": "c37af67d1da290637fa4721b44a0043485234c6c39374856fc09bd77b6ad412e" + }, + "lean_container_observed": true, + "ml4t": { + "commit": "0315119acc05796d95cc3c344a0418007dde6cbc", + "dirty": false + }, + "output": { + "fills": { + "count": 4288, + "sha256": "50f0db39e980f29f693a0806d1d2cff1e88bce680448181418440362a66cabf5" + }, + "final_value": 1017079.3, + "order_intents": { + "count": 4306, + "sha256": "8ceb30edfe288d834194a069b3f5588dd763139633d2d1eda193511ff7dd7a96" + }, + "terminal_state_sha256": "67e49c164678d98824b30cd2bcd23b422571c3a0261734fda293e899b01b1d2a", + "total_pnl": 17079.3, + "trade_count": 2271, + "trades": { + "count": 2271, + "sha256": "66c48c8a7633abd9bfd1d5cb6fdef5e625ce2a96b83722b84724b39eed60eefe" + } + }, + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_peak_rss_mb": 160.83203125, + "process_wall_seconds": 2.571588051971048, + "profile": "zipline_strict", + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runner_id": "zipline:ml4t", + "side": "ml4t", + "stages_seconds": { + "adapter_reported_engine": 0.8790653401520103, + "framework_call": 1.3678630059584975, + "input_generation": 0.19575455598533154, + "output_validation": 0.6345286080613732, + "worker_total": 2.2030992510262877 + }, + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "thread_environment": { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0" + }, + "worker_self_peak_rss_mb": 159.125 + } + ], + "target": { + "access": "public", + "actual_version": "3.1.1", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "display_name": "Zipline Reloaded", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "version": "3.1.1" + }, + "warmup": { + "output_sha256": "931316a4f8eb196536fc90f7afb2ef0172ae4e08b6d652151e39877d22c0a59d", + "process_wall_seconds": 2.6221440921071917 + } + } + }, + "samples_per_runner": 10, + "schema_version": 1, + "source_digests": { + "benchmark_suite": "dcafa42216566ff5e83ae0788d53d9789c2b7980956ea656c874684730b40523", + "framework_manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "performance_runner": "b0739317d13321297a7dbb505f1044ef6fe2f70a1d86ae53c56d4c672ad1b0f5", + "profiles": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505" + }, + "workload": { + "data_points": 12600, + "recipe": { + "assets": 50, + "bars": 252, + "bottom_n": 5, + "end_session": "2025-12-31", + "initial_cash": 1000000.0, + "long_target_shares": 100.0, + "name": "performance_50_assets_252_sessions", + "rebalance_frequency": 1, + "seed": 42, + "short_target_shares": -100.0, + "top_n": 5 + }, + "recipe_sha256": "3000b13c09f3bad9dfb6450c6aea002c07482b42f23481f36e97a2b364015c78" + } +} diff --git a/validation/README.md b/validation/README.md index 80fca992..86a8a9a0 100644 --- a/validation/README.md +++ b/validation/README.md @@ -12,30 +12,36 @@ ml4t-backtest validates framework-specific behavior through configurable profile claims require a zero-gap retained result. See [METHODOLOGY.md](METHODOLOGY.md) for the full approach. -Validation is performed per-framework in **isolated virtual environments** due to dependency -conflicts between frameworks (VBT Pro, Backtrader, Zipline). +Validation is performed per-framework in isolated, locked environments. VectorBT OSS 1.1.0 +requires pandas 3 while Zipline Reloaded 3.1.1 requires pandas below 3, so a shared comparison +environment cannot reproduce the current target set. + +The primary audit uses frozen market data and model-derived targets from three production case +studies. The scenario matrix and 250-asset workload are synthetic diagnostic and stress suites. ## Retained Parity Claims -Scenario claims use the retained release-candidate matrix. "Exact" appears only when every required scenario has zero canonical gap. +Scenario claims use the retained accepted matrix. "Exact" means terminal values, ordered closed trades, and ordered fills match after 1e-8 quantization. Each record declares whether a surface is native, reconstructed, aggregate-only, input-only, or unavailable; the claim does not extend to unavailable order-lifecycle fields. | Profile | Pinned framework | Required scenarios | Evidence | |---|---|---:|---| -| `vectorbt_strict` | [VectorBT Pro 2025.12.31](https://github.com/polakowo/vectorbt.pro) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `vectorbt` | [VectorBT OSS 0.28.2](https://pypi.org/project/vectorbt/0.28.2/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | -| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 15/15 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | - -Large-scale claims are published only when a retained workload has zero canonical gap. - -| Profile | Pinned framework | Compared | Trade gap | Terminal value | Evidence | -|---|---|---:|---:|---:|---| -| `vectorbt_strict` | VectorBT Pro 2025.12.31 (`1305a1e19743`) | 225,844 trades | 0 | 685179.007330 | [large-scale evidence](https://github.com/ml4t/backtest/blob/main/validation/vectorbt_pro/large_scale_parity.json) | - -No large-scale claim is published for Backtrader, Zipline, VectorBT OSS, or LEAN without a passing retained artifact. +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 17/17 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 16/16 exact | [scenario evidence](https://github.com/ml4t/backtest/blob/main/validation/CORRECTNESS_RESULTS.json) | + +The controlled scale workload contains 250 assets and 5,040 daily sessions (1,260,000 bars). Every row has zero canonical gap for target intents, native fills, closed trades reconstructed from those fills, and terminal state reconstructed from the fill ledger and final marks. + +| Profile | Current framework | Target intents | Native fills | Fill-derived closed trades | Terminal value | Evidence | +|---|---|---:|---:|---:|---:|---| +| `vectorbt_strict` | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `vectorbt_oss_strict` | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 427,790 | 390,369 | 188,549 | 716,785.408089 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `backtrader_strict` | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 427,790 | 343,813 | 182,019 | -9,166,273.555954 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `zipline_strict` | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 427,790 | 427,696 | 226,434 | 10,504,095.900000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | +| `lean` | [LEAN 18001](https://github.com/QuantConnect/Lean) | 427,790 | 361,297 | 191,297 | 184,538.130000 | [scale evidence](https://github.com/ml4t/backtest/blob/main/validation/LARGE_SCALE_RESULTS.json) | ## How to Run @@ -60,6 +66,12 @@ The command returns nonzero when a required framework or scenario does not execu `--result-json PATH` to retain machine-readable terminal records. An explicitly unsupported pair is reported as `unsupported`; it is visible in the matrix and does not count as a pass. +Each passing record includes exact ordered closed-trade and fill comparisons. The trade surface +contains session, symbol, direction, quantity, entry and exit prices, P&L, and commission. The fill +surface contains session, symbol, side, quantity, price, and commission. Capability declarations +identify native, reconstructed, aggregate-only, input-only, and unavailable surfaces. See +`behavior_coverage.toml` for the profile-field evidence map. + ### Isolated release-gate runner ```bash @@ -70,61 +82,99 @@ python validation/run_all_correctness.py python validation/run_all_correctness.py --framework backtrader --scenarios 01,03,05,09 ``` -The isolated runner writes `validation/CORRECTNESS_RESULTS.json` and distinguishes comparison -failures, unsupported pairs, unavailable environments, adapter failures, subprocess failures, -timeouts, skips, malformed records, and missing scenarios. Every status except `pass` and an -explicitly optional `unsupported` record fails the release gate. +The isolated runner always writes a diagnostic candidate under `validation/candidates/`. It +replaces `validation/CORRECTNESS_RESULTS.json` only after the complete required matrix passes with +the declared pair counts. Records retain both frameworks' measurements, canonical comparisons, +runtime identity, input digests, adapter identity, and source provenance. Comparison failures, +unavailable environments, adapter failures, subprocess failures, timeouts, skips, malformed +records, missing pairs, duplicates, and incorrect required or unsupported counts fail the gate. -### Large-scale benchmarks +### Retained real-strategy evidence ```bash -# Framework benchmark -python validation/benchmark_suite.py --profile backtrader_strict --framework backtrader +# Compare previously generated native and ML4T outputs +uv run python validation/real_strategy_evidence.py \ + --evidence-root PATH/TO/REAL_STRATEGY_OUTPUTS \ + --output validation/candidates/REAL_STRATEGY_RESULTS.candidate.json + +# Repeat engine-only timings for correctness-passing pairs +uv run python validation/real_strategy_benchmark.py \ + --bundle-root PATH/TO/CONTENT_ADDRESSED_BUNDLES \ + --samples 10 +``` + +The content-addressed input bundles are materialized before engine execution. Each pair receives +the same frozen targets. Timing excludes input loading, inference, target construction, adapter +preparation, result extraction, serialization, and reporting. The performance runner refuses to +time a pair that did not pass the retained correctness comparison. -# Full validation (correctness + benchmarks) -python validation/run_full_validation.py +### Retained synthetic scale and performance evidence + +```bash +# Validate retained reconstructable scale evidence +uv run python validation/large_scale_evidence.py --check --verify-input + +# Validate repeated cross-framework performance evidence +uv run python validation/cross_framework_performance.py --check + +# Regenerate the complete controlled performance artifact +uv run python validation/cross_framework_performance.py --samples 10 ``` +The performance runner uses one isolated warm-up and ten isolated measurements per runner. It +retains complete-process wall time, process-tree peak RSS including the LEAN container, raw +samples, deterministic 95% bootstrap intervals, exact output checksums, immutable framework +identities, and semantic disclosures for an idiomatic view. No stable ratio claim is generated. + ## Virtual Environment Setup ```bash -# VectorBT Pro 2025.12.31, commit 1305a1e1974325db9382eaeacc6452e9b075ca71 -# Requires an authorized VectorBT Pro license and GitHub SSH access. -uv venv .venv-vectorbt-pro --python 3.12 -uv pip install --python .venv-vectorbt-pro/bin/python \ - "vectorbtpro @ git+ssh://git@github.com/polakowo/vectorbt.pro.git@1305a1e1974325db9382eaeacc6452e9b075ca71" -uv pip install --python .venv-vectorbt-pro/bin/python -e . -uv run python validation/run_all_correctness.py --framework vectorbt_pro - -# VectorBT OSS -python3 -m venv .venv-vectorbt -.venv-vectorbt/bin/pip install vectorbt pandas numpy polars pyyaml pydantic numba - -# Backtrader -python3 -m venv .venv-backtrader -.venv-backtrader/bin/pip install backtrader pandas numpy polars pyyaml pydantic numba exchange_calendars - -# Zipline -python3 -m venv .venv-zipline -.venv-zipline/bin/pip install zipline-reloaded pandas numpy polars pyyaml pydantic numba exchange_calendars - -# Never mix VBT OSS and Pro in the same environment +# Build and verify all public targets from their committed uv locks +python validation/build_framework_env.py --all-public + +# Licensed VectorBT Pro requires authorized SSH access to the frozen source commit +python validation/build_framework_env.py --framework vectorbt_pro + +# Verify the locked LEAN CLI and immutable engine image +python validation/build_framework_env.py --framework lean + +# Reproduce the native behavior and Chapter 16 comparison evidence +.venv-lean/bin/python validation/native/lean_behavior.py \ + --lean-command .venv-lean/bin/lean \ + --output /tmp/lean-native.json +.venv-lean/bin/python validation/run_lean_case_studies.py \ + --lean-command .venv-lean/bin/lean \ + --output /tmp/lean-case-studies.json ``` +The target versions, artifact hashes, source commits, interpreter paths, and expected matrix counts +are defined in `framework_targets.toml`. Each lock is under `validation/environments/`. CI builds +those locks and executes all 17 declared pairs for each public framework; an omitted pair fails. +The release workflow separately requires licensed VectorBT Pro execution and fresh LEAN native +and Chapter 16 execution against the frozen image. Repository workflows never store licensed +credentials. + ## File Organization ``` validation/ ├── README.md # This file ├── METHODOLOGY.md # Validation philosophy and behavioral matrix +├── behavior_coverage.toml # Profile fields mapped to native and cross-engine evidence ├── common/ # Shared infrastructure (types, data generators, comparator) -├── scenarios/ # Declarative scenario definitions (16 configs) +├── scenarios/ # Declarative scenario definitions (17 configs) ├── frameworks/ # Parameterized framework drivers (4 modules) ├── run_scenario.py # Unified CLI runner ├── run_all_correctness.py # Isolated release-gate correctness runner -├── run_all_benchmarks.py # Framework benchmark loop -├── benchmark_suite.py # Large-scale benchmark runner -├── run_full_validation.py # Complete validation pipeline +├── real_strategy_applicability.toml # Supported case-study/framework pairs +├── real_strategy_comparison.py # Exact real-strategy comparator +├── real_strategy_benchmark.py # Repeated engine-only timings +├── REAL_STRATEGY_RESULTS.json # Retained correctness evidence +├── REAL_STRATEGY_PERFORMANCE.json # Retained engine timing evidence +├── large_scale_evidence.py # Reconstructable exact scale matrix +├── cross_framework_performance.py # Repeated controlled and idiomatic evidence +├── run_all_benchmarks.py # Compatibility route to the retained performance runner +├── benchmark_suite.py # Shared framework workload adapters ├── lean/ # LEAN integration ├── trade_logs/ # Golden file CSVs (gitignored) └── nautilus/ # Nautilus Trader evaluation diff --git a/validation/REAL_STRATEGY_PERFORMANCE.json b/validation/REAL_STRATEGY_PERFORMANCE.json new file mode 100644 index 00000000..7803f449 --- /dev/null +++ b/validation/REAL_STRATEGY_PERFORMANCE.json @@ -0,0 +1,474 @@ +{ + "correctness_evidence_generated_at": "2026-08-14T21:50:26.236995+00:00", + "environment": { + "cpu_count": 24, + "frameworks": { + "backtrader": { + "access": "public", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "environment": ".venv-backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "python_env_var": "ML4T_BACKTRADER_PYTHON", + "required_scenarios": 17, + "scenario_matrix": true, + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "unsupported_scenarios": 0, + "version": "1.9.78.123" + }, + "lean": { + "access": "public", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "display_name": "LEAN", + "environment": ".venv-lean", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "python_env_var": "ML4T_LEAN_PYTHON", + "required_scenarios": 0, + "scenario_matrix": false, + "source": "https://github.com/QuantConnect/Lean", + "source_commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "unsupported_scenarios": 0, + "version": "18001" + }, + "vectorbt_oss": { + "access": "public", + "artifact": "vectorbt-1.1.0.tar.gz", + "display_name": "VectorBT OSS", + "environment": ".venv-vectorbt-oss", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "python_env_var": "ML4T_VECTORBT_OSS_PYTHON", + "required_scenarios": 16, + "scenario_matrix": true, + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "source_commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "unsupported_scenarios": 1, + "version": "1.1.0" + }, + "vectorbt_pro": { + "access": "licensed", + "display_name": "VectorBT Pro", + "environment": ".venv-vectorbt-pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "python_env_var": "ML4T_VECTORBT_PRO_PYTHON", + "required_scenarios": 17, + "scenario_matrix": true, + "source": "https://github.com/polakowo/vectorbt.pro", + "source_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "unsupported_scenarios": 0, + "version": "2026.6.27" + }, + "zipline": { + "access": "public", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "display_name": "Zipline Reloaded", + "environment": ".venv-zipline", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "python_env_var": "ML4T_ZIPLINE_PYTHON", + "required_scenarios": 16, + "scenario_matrix": true, + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "source_commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "unsupported_scenarios": 1, + "version": "3.1.1" + } + }, + "machine": "x86_64", + "platform": "Linux-6.8.0-136-generic-x86_64-with-glibc2.39", + "processor": "x86_64" + }, + "generated_at": "2026-08-14T22:02:59.708731+00:00", + "records": [ + { + "case_study": "etfs", + "correctness_status": "pass", + "framework": "vectorbt_pro", + "framework_engine": { + "ci_95_seconds": [ + 0.2877248858567327, + 0.3143139739986509 + ], + "maximum_seconds": 0.321378983091563, + "median_seconds": 0.30129249359015375, + "minimum_seconds": 0.2838830230757594, + "output_identity": { + "equity.parquet": "9bef5099c36b4a61b32670d19340ebb9f4adba07c63359a5c31a345ad51d1cd6", + "fills.parquet": "698baf228da467fcce287f6f7da4903b3421d2649b181e3905a3681905251ffd" + }, + "samples_seconds": [ + 0.3078031288459897, + 0.2877248858567327, + 0.31535538914613426, + 0.28730017109774053, + 0.29972767806611955, + 0.296694670105353, + 0.2838830230757594, + 0.30285730911418796, + 0.321378983091563, + 0.3143139739986509 + ] + }, + "framework_to_ml4t_median_ratio": 0.63734406854925, + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "ml4t_engine": { + "ci_95_seconds": [ + 0.46813473547808826, + 0.48135182401165366 + ], + "maximum_seconds": 0.5062140279915184, + "median_seconds": 0.4727313055191189, + "minimum_seconds": 0.4654777019750327, + "output_identity": { + "equity.parquet": "2b3109fecdfbc3beb73440b2cb7b622fea0eadfc420c789e8df0c12a910f204a", + "fills.parquet": "c5bc939502eb338df0b625c08d452519ec98613fdf7fcf67a1834e0ca03f0bc1", + "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" + }, + "samples_seconds": [ + 0.46608604094944894, + 0.4712033399846405, + 0.4654777019750327, + 0.47425927105359733, + 0.5062140279915184, + 0.4701834300067276, + 0.46974061895161867, + 0.4876708099618554, + 0.4750328380614519, + 0.47705927421338856 + ] + } + }, + { + "case_study": "etfs", + "correctness_status": "pass", + "framework": "vectorbt_oss", + "framework_engine": { + "ci_95_seconds": [ + 0.17306407110299915, + 0.18181957793422043 + ], + "maximum_seconds": 0.21566205006092787, + "median_seconds": 0.17451222008094192, + "minimum_seconds": 0.1721026541199535, + "output_identity": { + "equity.parquet": "9bef5099c36b4a61b32670d19340ebb9f4adba07c63359a5c31a345ad51d1cd6", + "fills.parquet": "a563dc47e59cc8d1ecf49a490f1e83842e5c4ca67a6a56adb411a58eb0842646" + }, + "samples_seconds": [ + 0.17271609115414321, + 0.1734120510518551, + 0.1837726249359548, + 0.17510798503644764, + 0.17646493786014616, + 0.17332790791988373, + 0.18181957793422043, + 0.1721026541199535, + 0.21566205006092787, + 0.1739164551254362 + ] + }, + "framework_to_ml4t_median_ratio": 0.36925871041104746, + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "ml4t_engine": { + "ci_95_seconds": [ + 0.4680275656282902, + 0.4801189919235185 + ], + "maximum_seconds": 0.5001788369845599, + "median_seconds": 0.47260149905923754, + "minimum_seconds": 0.4633619370870292, + "output_identity": { + "equity.parquet": "2b3109fecdfbc3beb73440b2cb7b622fea0eadfc420c789e8df0c12a910f204a", + "fills.parquet": "c5bc939502eb338df0b625c08d452519ec98613fdf7fcf67a1834e0ca03f0bc1", + "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" + }, + "samples_seconds": [ + 0.5001788369845599, + 0.48318234691396356, + 0.4722748331259936, + 0.47093891398981214, + 0.4633619370870292, + 0.48009940097108483, + 0.46378029813058674, + 0.4770556369330734, + 0.46870339196175337, + 0.47292816499248147 + ] + } + }, + { + "case_study": "etfs", + "correctness_status": "pass", + "framework": "backtrader", + "framework_engine": { + "ci_95_seconds": [ + 9.667390221497044, + 13.843348437454551 + ], + "maximum_seconds": 15.390819479012862, + "median_seconds": 10.112870517419651, + "minimum_seconds": 9.50694501097314, + "output_identity": { + "equity.parquet": "194818b08af3ceac17f2ff8b143d76184b63f95a92ab2db1ee4a13b903843d92", + "fills.parquet": "8fbc351395431fcaf3d986c1d72011520394fa202db5b25ea2a79f49f4c013ab", + "rejected_orders.parquet": "29756624602e47c7f667e995e892fd158828381420d570a8a8a65d23d84d617b" + }, + "samples_seconds": [ + 10.426955967908725, + 9.50694501097314, + 9.725007123081014, + 15.390819479012862, + 13.655269084963948, + 9.798785066930577, + 13.02946886094287, + 14.657228013966233, + 9.702260518912226, + 9.609773319913074 + ] + }, + "framework_to_ml4t_median_ratio": 23.220408605374217, + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "ml4t_engine": { + "ci_95_seconds": [ + 0.430571055971086, + 0.46572351013310254 + ], + "maximum_seconds": 0.48355723288841546, + "median_seconds": 0.43551647558342665, + "minimum_seconds": 0.429133758880198, + "output_identity": { + "equity.parquet": "c0d9b87df7d1d490134679c571414ee3f5d5dc96cba2fd81e18c24c920ee9b60", + "fills.parquet": "11fee07c68fa9550b8c9bfa8590940e33a0247db7640c280043b6eddcaf7fa12", + "rejected_orders.parquet": "12abf1f224c27116ad669c98592fc527880414b152e921de2fb362eb8c3815d3" + }, + "samples_seconds": [ + 0.43825321504846215, + 0.4314290499314666, + 0.429133758880198, + 0.4683438939973712, + 0.48355723288841546, + 0.43277973611839116, + 0.46572351013310254, + 0.4302571520674974, + 0.430571055971086, + 0.444610444130376 + ] + } + }, + { + "case_study": "etfs", + "correctness_status": "pass", + "framework": "zipline", + "framework_engine": { + "ci_95_seconds": [ + 3.956691594561562, + 4.069972718833014 + ], + "maximum_seconds": 4.293457298073918, + "median_seconds": 3.994884098530747, + "minimum_seconds": 3.940686154179275, + "output_identity": { + "equity.parquet": "e67ccdf71043cd216a9d8ea6f96f6cc0eba564907919ef1b867bce4726e36b31", + "fills.parquet": "611b2ca3adc8a24484dcee08d5fba4c9219c0c0c6f4b27d701db51ea98390572" + }, + "samples_seconds": [ + 4.018492441158742, + 4.079541471088305, + 4.023147796047851, + 3.9627670240588486, + 3.9712757559027523, + 3.940686154179275, + 3.9475881590042263, + 4.293457298073918, + 4.069972718833014, + 3.9657950301188976 + ] + }, + "framework_to_ml4t_median_ratio": 9.266386817235245, + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "ml4t_engine": { + "ci_95_seconds": [ + 0.4164497200399637, + 0.4516012701205909 + ], + "maximum_seconds": 0.5047315200790763, + "median_seconds": 0.4311156200710684, + "minimum_seconds": 0.41364461509510875, + "output_identity": { + "equity.parquet": "578498185c7abd3b869578c8492937a09ce6cf8904ea64650375587fd397952a", + "fills.parquet": "b068c42a1d63409086e4cc638aec586818f9025f661897e7bdd34e5e4d8f9c6f", + "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" + }, + "samples_seconds": [ + 0.41557857510633767, + 0.4229783359915018, + 0.5047315200790763, + 0.43745689396746457, + 0.42477434617467225, + 0.4551242580637336, + 0.437978943111375, + 0.4516012701205909, + 0.4164497200399637, + 0.41364461509510875 + ] + } + }, + { + "case_study": "etfs", + "correctness_status": "pass", + "framework": "lean", + "framework_engine": { + "ci_95_seconds": [ + 2.887489428045228, + 3.3646027559880167 + ], + "maximum_seconds": 6.0475188188720495, + "median_seconds": 3.0153015080140904, + "minimum_seconds": 2.720208310056478, + "output_identity": { + "equity.parquet": "ce1426438d739bc4f923d852fa9972446ef3acb5906ac70a8a66678495ad7a4f", + "fills.parquet": "f987de663e3459a6a9e78c117d93807d2181fb261c375bb3f4d212072f5764cd", + "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" + }, + "samples_seconds": [ + 2.9472668361850083, + 6.0475188188720495, + 3.1162031220737845, + 2.720208310056478, + 2.832029588986188, + 2.887489428045228, + 3.015350027009845, + 3.3646027559880167, + 3.015252989018336, + 3.454807749018073 + ] + }, + "framework_to_ml4t_median_ratio": 5.202119620681108, + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "ml4t_engine": { + "ci_95_seconds": [ + 0.5633496295195073, + 0.6195018270518631 + ], + "maximum_seconds": 0.6607448949944228, + "median_seconds": 0.579629406449385, + "minimum_seconds": 0.5530728748999536, + "output_identity": { + "equity.parquet": "9d2ae671c05691680de1a947edc07b5805d3d17c4fffdb0d9cb002908d5d9189", + "fills.parquet": "6dabab0285fe7d1d41c6008f9db1910fd0eb5117ce132cda2eac13fa47581b18", + "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" + }, + "samples_seconds": [ + 0.5560325291007757, + 0.5686522379983217, + 0.5780714668799192, + 0.5811873460188508, + 0.5530728748999536, + 0.62224833201617, + 0.5947634829208255, + 0.5706667299382389, + 0.6607448949944228, + 0.6195018270518631 + ] + } + }, + { + "case_study": "crypto_perps_funding", + "correctness_status": "pass", + "framework": "lean", + "framework_engine": { + "ci_95_seconds": [ + 2.879764577955939, + 3.7526830200804397 + ], + "maximum_seconds": 5.715309476945549, + "median_seconds": 2.941230505006388, + "minimum_seconds": 2.794232564046979, + "output_identity": { + "equity.parquet": "9fb5d72364e039e75a28a1dcb77c06082418d698cac2467de8dc0c84371d2762", + "fills.parquet": "93ca6c8936e944e5f077e5b9b272a5467bac5ae828650029fc198dacd33ef46b", + "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" + }, + "samples_seconds": [ + 2.9528271581511945, + 2.906595162814483, + 4.5487695201300085, + 2.794232564046979, + 2.90836218604818, + 3.0265224468894303, + 2.956596520030871, + 2.851166969863698, + 5.715309476945549, + 2.929633851861581 + ] + }, + "framework_to_ml4t_median_ratio": 4.377674960680803, + "input_bundle_sha256": "2acee3c8542043266e6f9c0dfc9434c95b4469ef6fcaf0556efc569fc9721cdd", + "ml4t_engine": { + "ci_95_seconds": [ + 0.662905823905021, + 0.6844377170782536 + ], + "maximum_seconds": 0.6992742058355361, + "median_seconds": 0.671870463527739, + "minimum_seconds": 0.6581363650038838, + "output_identity": { + "equity.parquet": "0b98b8b65e7cc6885a27f9ffff6268d6d15a82b613ab06e4e57bbf96805ef1c9", + "fills.parquet": "b19ec75bb792f9109356b3127ea8580935932b00a9fb9dae92a970f643d74705", + "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" + }, + "samples_seconds": [ + 0.6621688180603087, + 0.6836541260126978, + 0.6924467631615698, + 0.662905823905021, + 0.6581363650038838, + 0.6674405999947339, + 0.6681335410103202, + 0.6764286709949374, + 0.6992742058355361, + 0.6756073860451579 + ] + } + } + ], + "schema_version": 1, + "timing_policy": { + "boundary": "engine call only", + "excluded": [ + "input loading", + "model inference", + "target construction", + "adapter preparation", + "result extraction", + "serialization", + "reporting" + ], + "interval": "10,000-draw percentile bootstrap of the sample median", + "measured_processes": 10, + "process_isolation": true, + "publication_scope": "only correctness-passing case-study/framework pairs", + "warmup_processes": 1 + } +} diff --git a/validation/REAL_STRATEGY_RESULTS.json b/validation/REAL_STRATEGY_RESULTS.json new file mode 100644 index 00000000..74e9c606 --- /dev/null +++ b/validation/REAL_STRATEGY_RESULTS.json @@ -0,0 +1,783 @@ +{ + "comparison_policy": { + "canonical_quantum": "0.00000001", + "fill_order": "canonical timestamp, asset, side, quantity, price, commission", + "meaning": "zero numeric gap after canonical quantization, not bit identity", + "rounding": "ROUND_HALF_EVEN", + "timestamp_domain": { + "cme_futures": "session date", + "crypto_perps_funding": "exact UTC event timestamp", + "etfs": "session date" + } + }, + "generated_at": "2026-08-14T21:50:26.236995+00:00", + "provenance": { + "adapters": { + "backtrader": "b71c5faab1aceb6bab1a766c0b5759092f1addda4b36ac92e43d8dd3d3f8eb69", + "lean_crypto": "82f1fbb6054fba25d74a4eabbc9ad4eae808caf89c00f560edefa63304da0dc4", + "lean_equity": "facb2ad161253472ef8f54bf7482cf403b7afadc0fd17cd8c145b16921561ca4", + "ml4t": "77fc95575ecbf298eb386967cb5c49629a51efd7269dbdcdaec3c214de04ad8d", + "vectorbt_oss": "7c2c296ed741bf4bfba0777861fddfc59ae75367a0305dbb36f6b4bb0f4ffcbe", + "vectorbt_pro": "7c2c296ed741bf4bfba0777861fddfc59ae75367a0305dbb36f6b4bb0f4ffcbe", + "zipline": "73d98aa4403132353cfbef3b178a35a7a8b349921ff1c82b13c6b0508dcc7fba" + }, + "applicability_sha256": "9449052970c6b76f75775d0b72075b412bf6fd9d0ef24d4af30c34fdf0857a3b", + "cpu_count": 24, + "frameworks": { + "backtrader": { + "access": "public", + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "display_name": "Backtrader", + "environment": ".venv-backtrader", + "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "license": "GPL-3.0-or-later", + "package": "backtrader", + "profile": "backtrader_strict", + "python": "3.12 audit interpreter; upstream package metadata does not declare a range", + "python_env_var": "ML4T_BACKTRADER_PYTHON", + "required_scenarios": 17, + "scenario_matrix": true, + "source": "https://pypi.org/project/backtrader/1.9.78.123/", + "unsupported_scenarios": 0, + "version": "1.9.78.123" + }, + "lean": { + "access": "public", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "display_name": "LEAN", + "environment": ".venv-lean", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "python_env_var": "ML4T_LEAN_PYTHON", + "required_scenarios": 0, + "scenario_matrix": false, + "source": "https://github.com/QuantConnect/Lean", + "source_commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "unsupported_scenarios": 0, + "version": "18001" + }, + "vectorbt_oss": { + "access": "public", + "artifact": "vectorbt-1.1.0.tar.gz", + "display_name": "VectorBT OSS", + "environment": ".venv-vectorbt-oss", + "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", + "license": "Apache-2.0 WITH Commons-Clause", + "package": "vectorbt", + "profile": "vectorbt_oss_strict", + "python": ">=3.11,<3.15", + "python_env_var": "ML4T_VECTORBT_OSS_PYTHON", + "required_scenarios": 16, + "scenario_matrix": true, + "source": "https://pypi.org/project/vectorbt/1.1.0/", + "source_commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "unsupported_scenarios": 1, + "version": "1.1.0" + }, + "vectorbt_pro": { + "access": "licensed", + "display_name": "VectorBT Pro", + "environment": ".venv-vectorbt-pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "python_env_var": "ML4T_VECTORBT_PRO_PYTHON", + "required_scenarios": 17, + "scenario_matrix": true, + "source": "https://github.com/polakowo/vectorbt.pro", + "source_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "unsupported_scenarios": 0, + "version": "2026.6.27" + }, + "zipline": { + "access": "public", + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "display_name": "Zipline Reloaded", + "environment": ".venv-zipline", + "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "license": "Apache-2.0", + "package": "zipline-reloaded", + "profile": "zipline_strict", + "python": ">=3.10", + "python_env_var": "ML4T_ZIPLINE_PYTHON", + "required_scenarios": 16, + "scenario_matrix": true, + "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", + "source_commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "unsupported_scenarios": 1, + "version": "3.1.1" + } + }, + "machine": "x86_64", + "ml4t": { + "commit": "ae6eadfb3de3b5cd00425ae8598c839bb2eddcec", + "dirty": false, + "engine_source_sha256": "d0e58bd4d73e7d942a16c9e162b273a7e123cda55ecc8a262ef0cc5c1169aebe" + }, + "platform": "Linux-6.8.0-136-generic-x86_64-with-glibc2.39", + "python": "3.12.11" + }, + "records": [ + { + "case_study": "etfs", + "engine_seconds": { + "framework": 0.4040620180312544, + "ml4t": 0.629301629960537, + "single_run_diagnostic_only": true + }, + "evidence": { + "framework_manifest_sha256": "537c660c711d2a1fd21aa69b4f8532f7fdeeca5b6dcef7ee9511051ce12fdff7", + "ml4t_manifest_sha256": "7dea74cbf3c9b8285effdbad1571c03dd50c9fe195f0910ba9abf5090233b6f9" + }, + "excluded_surfaces": { + "accepted_unfilled_orders": "not exposed by every native runner", + "cash": "not exposed with common accounting semantics", + "closed_trades": "not a common native framework concept", + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "positions": "not exposed in a common native record schema by every runner" + }, + "framework": "vectorbt_pro", + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "negative_control": { + "detected": true, + "mutation": "first fill price + 0.00000001" + }, + "profile": "vectorbt_strict", + "status": "pass", + "surfaces": { + "equity": { + "coverage": { + "framework_only_timestamps": 0, + "ml4t_only_timestamps": 0, + "shared_timestamps": 1995 + }, + "first_divergence": null, + "framework_records": 1995, + "framework_sha256": "2a90d6fb0aba61ab170d077e3c648f46bd719a3fd286625e393827b9bd40aef5", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1995, + "ml4t_sha256": "35b169e25c0face2b5e714bcef7f8a871eb1202ef26dca0a8e363dde0b9c35f4", + "passed": true + }, + "fills": { + "first_divergence": null, + "framework_records": 2466, + "framework_sha256": "4fd8e258ca5d6c1b682bbdfc5c36676ab0ba7a50c4b825be460ce628852e5639", + "max_canonical_difference": "0.00000000", + "ml4t_records": 2466, + "ml4t_sha256": "8e7fa6334fe7e70a236ecf5b326cca611cca899a2e578157b4616782b9766a9e", + "passed": true + }, + "terminal": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "11db1c456d36b30c4d6fe19414e21296ed1ea78289f54c50e82b6034b7f8c883", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "57b2a04fa64b67afab474dfd60eb02467ce8f45f4b1a6334192432ff1620eba7", + "passed": true + } + } + }, + { + "case_study": "etfs", + "engine_seconds": { + "framework": 0.3250391921028495, + "ml4t": 0.5358219449408352, + "single_run_diagnostic_only": true + }, + "evidence": { + "framework_manifest_sha256": "42955db895abf309fcacdd0b285d3760b40c1ce56f4d2ccaa379c6e20dc9668c", + "ml4t_manifest_sha256": "2f9ba57e88936b70d97c18e0544939dde5129698950df565be350476ad3f69e1" + }, + "excluded_surfaces": { + "accepted_unfilled_orders": "not exposed by every native runner", + "cash": "not exposed with common accounting semantics", + "closed_trades": "not a common native framework concept", + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "positions": "not exposed in a common native record schema by every runner" + }, + "framework": "vectorbt_oss", + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "negative_control": { + "detected": true, + "mutation": "first fill price + 0.00000001" + }, + "profile": "vectorbt_oss_strict", + "status": "pass", + "surfaces": { + "equity": { + "coverage": { + "framework_only_timestamps": 0, + "ml4t_only_timestamps": 0, + "shared_timestamps": 1995 + }, + "first_divergence": null, + "framework_records": 1995, + "framework_sha256": "2a90d6fb0aba61ab170d077e3c648f46bd719a3fd286625e393827b9bd40aef5", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1995, + "ml4t_sha256": "35b169e25c0face2b5e714bcef7f8a871eb1202ef26dca0a8e363dde0b9c35f4", + "passed": true + }, + "fills": { + "first_divergence": null, + "framework_records": 2466, + "framework_sha256": "4fd8e258ca5d6c1b682bbdfc5c36676ab0ba7a50c4b825be460ce628852e5639", + "max_canonical_difference": "0.00000000", + "ml4t_records": 2466, + "ml4t_sha256": "8e7fa6334fe7e70a236ecf5b326cca611cca899a2e578157b4616782b9766a9e", + "passed": true + }, + "terminal": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "11db1c456d36b30c4d6fe19414e21296ed1ea78289f54c50e82b6034b7f8c883", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "57b2a04fa64b67afab474dfd60eb02467ce8f45f4b1a6334192432ff1620eba7", + "passed": true + } + } + }, + { + "case_study": "etfs", + "engine_seconds": { + "framework": 10.37365989596583, + "ml4t": 0.494711043080315, + "single_run_diagnostic_only": true + }, + "evidence": { + "framework_manifest_sha256": "06c7afb82b6f1197105a9262620101d9e497e458e21dfba4981e597ace112389", + "ml4t_manifest_sha256": "99085680175eaa147282e4c5cdf588c56890937e4069151e92574f2c3987bbcc" + }, + "excluded_surfaces": { + "accepted_unfilled_orders": "not exposed by every native runner", + "cash": "not exposed with common accounting semantics", + "closed_trades": "not a common native framework concept", + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "positions": "not exposed in a common native record schema by every runner" + }, + "framework": "backtrader", + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "negative_control": { + "detected": true, + "mutation": "first fill price + 0.00000001" + }, + "profile": "backtrader_strict", + "status": "pass", + "surfaces": { + "equity": { + "coverage": { + "framework_only_timestamps": 0, + "ml4t_only_timestamps": 0, + "shared_timestamps": 1995 + }, + "first_divergence": null, + "framework_records": 1995, + "framework_sha256": "e24fb0355c02e8e6fd24c3a050d058244d48d900682f1242e41938482a45affb", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1995, + "ml4t_sha256": "2f657ea8deecd915e43d5f207661f1907358bc3172eca4e7f56cfc4b105fbd8f", + "passed": true + }, + "fills": { + "first_divergence": null, + "framework_records": 2433, + "framework_sha256": "0efdc5bd3df5c4ee32d9e7601a0a0f205ca338c61217271432830cc5728767ea", + "max_canonical_difference": "0.00000000", + "ml4t_records": 2433, + "ml4t_sha256": "3535fd059ff949dafefd38383f3883a273073b0d982f8d19ba682137e5c3e629", + "passed": true + }, + "rejection_count": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "cc5553d35594bb9f739671460ea2ddfbc7151b631d07ad81792942dd32c22cf9", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "cc5553d35594bb9f739671460ea2ddfbc7151b631d07ad81792942dd32c22cf9", + "passed": true + }, + "terminal": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "bab10acfe67a203e84aa8ee135c37a84462af6281afc20dc288ccc96a6af1f1a", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "e00b039f6819ab12344af27396c8915f76913726e723c079d6f2c80edb0df0f6", + "passed": true + } + } + }, + { + "case_study": "etfs", + "engine_seconds": { + "framework": 5.272912076907232, + "ml4t": 0.46331586595624685, + "single_run_diagnostic_only": true + }, + "evidence": { + "framework_manifest_sha256": "7d0010410e06ed7a611343cbf39d2f35fe55c4f97d47e7c53aa7ff8daf0a894a", + "ml4t_manifest_sha256": "60b202562c59b89c1a8c3b9cb1cbae27ede358d66370fa3b8eed88c4f1442e2a" + }, + "excluded_surfaces": { + "accepted_unfilled_orders": "not exposed by every native runner", + "cash": "not exposed with common accounting semantics", + "closed_trades": "not a common native framework concept", + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "positions": "not exposed in a common native record schema by every runner" + }, + "framework": "zipline", + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "negative_control": { + "detected": true, + "mutation": "first fill price + 0.00000001" + }, + "profile": "zipline_strict", + "status": "pass", + "surfaces": { + "equity": { + "coverage": { + "framework_only_timestamps": 0, + "ml4t_only_timestamps": 0, + "shared_timestamps": 1995 + }, + "first_divergence": null, + "framework_records": 1995, + "framework_sha256": "a5face19b441f6cf41b92e81c4458eff3428a7835cd4465c468c4e3d75ff311d", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1995, + "ml4t_sha256": "8bafee4ab985e6e89429cdaa327caabe06d92af700c03587e5d9e6459e499e25", + "passed": true + }, + "fills": { + "first_divergence": null, + "framework_records": 2458, + "framework_sha256": "e7845f778289a093b7b13703938ac1aff36060e55841c658fa3c4cfaf7d66e80", + "max_canonical_difference": "0.00000000", + "ml4t_records": 2458, + "ml4t_sha256": "c78d44621cdcd2f4b2e1797ba6b0a50a76555f210597189a73ab57ec5f8ea672", + "passed": true + }, + "terminal": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "def79e34efb8b45e3f792ede075b8cdc2bb7e409b26d6e2584f5c5d7f9486726", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "4e87bd8a979d23c1189bde4d37dcbf51f9a32462a653e436223e7cf29dc494b8", + "passed": true + } + } + }, + { + "case_study": "etfs", + "engine_seconds": { + "framework": 4.122711522039026, + "ml4t": 0.5797442020848393, + "single_run_diagnostic_only": true + }, + "evidence": { + "framework_manifest_sha256": "250cf56114937129fb657a4749e9beb026f4e077d356a7a1d7e8cf51c50e2fc2", + "ml4t_manifest_sha256": "61b1a6aa4240235b89e4b1b8e3c481081da43047f4a8f5d2fbe5ff67d9cc20ba" + }, + "excluded_surfaces": { + "accepted_unfilled_orders": "not exposed by every native runner", + "cash": "compared separately for LEAN equities", + "closed_trades": "not a common native framework concept", + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "positions": "not exposed in a common native record schema by every runner" + }, + "framework": "lean", + "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "negative_control": { + "detected": true, + "mutation": "first fill price + 0.00000001" + }, + "profile": "lean", + "status": "pass", + "surfaces": { + "cash": { + "coverage": { + "framework_only_timestamps": 5, + "ml4t_only_timestamps": 0, + "shared_timestamps": 1995 + }, + "first_divergence": null, + "framework_records": 1995, + "framework_sha256": "16f270b64f43ed22739d234d1b7abe1611c253828a5964411aae8fa3955b9730", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1995, + "ml4t_sha256": "30beda4a3a1167d861ee2c16622ef00c00ded113c1acf6dea0b8eaf0b78fd76e", + "passed": true + }, + "equity": { + "coverage": { + "framework_only_timestamps": 5, + "ml4t_only_timestamps": 0, + "shared_timestamps": 1995 + }, + "first_divergence": null, + "framework_records": 1995, + "framework_sha256": "7959271a1f6e2dc65ee85a40114db98334a8852941a2fea28948bdf9eaeff5d1", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1995, + "ml4t_sha256": "90912934200276e9da497a2ac61e5b459b660815f3b63f43c971e4c4f553b092", + "passed": true + }, + "fills": { + "first_divergence": null, + "framework_records": 2457, + "framework_sha256": "bb7685c44f3439854f69c28ed45f00cf6590c41fb4186e008bfc5ec8854c8f34", + "max_canonical_difference": "0.00000000", + "ml4t_records": 2457, + "ml4t_sha256": "bb7685c44f3439854f69c28ed45f00cf6590c41fb4186e008bfc5ec8854c8f34", + "passed": true + }, + "rejection_count": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "59fbab4bac7cb12eee5b33c7df3f95e89686eb8f430c84695e63c7557c702414", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "59fbab4bac7cb12eee5b33c7df3f95e89686eb8f430c84695e63c7557c702414", + "passed": true + }, + "terminal": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "dcdf690e7ea4a122b3ca6a083112a518058dc72bdba2bb120334d4b9636f47fc", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "4e9b140ade6e038a406e3a9332649f239d317a7666468785ce8a1c7f89318bff", + "passed": true + } + } + }, + { + "case_study": "cme_futures", + "engine_seconds": { + "framework": 0.4237614271696657, + "ml4t": 0.5547289319802076, + "single_run_diagnostic_only": true + }, + "evidence": { + "framework_manifest_sha256": "781c018b31759e5eaf2297f7dcf13b36494c3430a334f4fa2e1df5adbfed7b2b", + "ml4t_manifest_sha256": "c142a3136033d6f7caf2e40a2603d784d7e858d6eb754829ea328a0a084dc5ca" + }, + "excluded_surfaces": { + "accepted_unfilled_orders": "not exposed by every native runner", + "cash": "not exposed with common accounting semantics", + "closed_trades": "not a common native framework concept", + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "positions": "not exposed in a common native record schema by every runner" + }, + "framework": "vectorbt_pro", + "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", + "negative_control": { + "detected": true, + "mutation": "first fill price + 0.00000001" + }, + "profile": "vectorbt_strict", + "status": "fail", + "surfaces": { + "equity": { + "coverage": { + "framework_only_timestamps": 1, + "ml4t_only_timestamps": 0, + "shared_timestamps": 1595 + }, + "first_divergence": { + "canonical_gap": "0.00000001", + "field": "equity", + "framework": { + "equity": "10000000.0", + "timestamp": "2019-01-04" + }, + "index": 310, + "kind": "record", + "ml4t": { + "equity": "9999999.999999993", + "timestamp": "2019-01-04" + } + }, + "framework_records": 1595, + "framework_sha256": "b1b40cf1cbcbc671db8670a19066dfaa77b497e6d03b06d83f087ad0a8aefc2c", + "max_canonical_difference": "0.00000010", + "ml4t_records": 1595, + "ml4t_sha256": "b3d629a19f386d6688964e89188f3ba27c95d34be5e96e22a1c9c8b83427a98b", + "passed": false + }, + "fills": { + "first_divergence": null, + "framework_records": 3545, + "framework_sha256": "33a8c1d5aac88de6255f5a23742619e68dcf77804f5158f02a910df265d5c154", + "max_canonical_difference": "0.00000000", + "ml4t_records": 3545, + "ml4t_sha256": "7588d63e48658ce630d22b814df79345ae7a8fdf53be1f133858f44b9f375971", + "passed": true + }, + "terminal": { + "first_divergence": { + "canonical_gap": "0.00000007", + "field": "final_value", + "framework": { + "final_value": "21780101.163148317" + }, + "index": 0, + "kind": "record", + "ml4t": { + "final_value": "21780101.16314839" + } + }, + "framework_records": 1, + "framework_sha256": "f0c1745e2a779c7b4127d81f854e355c791224c93f190167be7207250d8fe271", + "max_canonical_difference": "0.00000007", + "ml4t_records": 1, + "ml4t_sha256": "9f2c5af308ff360b1b6987eb84facaeeb98a44d08471480f4eeccb85ef11fc46", + "passed": false + } + } + }, + { + "case_study": "cme_futures", + "framework": "vectorbt_oss", + "reason": "no native futures contract multiplier and margin-account model", + "source": "https://vectorbt.dev/api/portfolio/base/", + "status": "unsupported" + }, + { + "case_study": "cme_futures", + "engine_seconds": { + "framework": 2.906314143911004, + "ml4t": 0.5458641869481653, + "single_run_diagnostic_only": true + }, + "evidence": { + "framework_manifest_sha256": "ac82009ee99eecfe9436f521c40ff00414dadd623259e1ea2ab29b307f93151a", + "ml4t_manifest_sha256": "bb4c7129768bd4eb6a735d32eb0f57b06188f39961c89c4c3270faa2dd7acf37" + }, + "excluded_surfaces": { + "accepted_unfilled_orders": "not exposed by every native runner", + "cash": "not exposed with common accounting semantics", + "closed_trades": "not a common native framework concept", + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "positions": "not exposed in a common native record schema by every runner" + }, + "framework": "backtrader", + "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", + "negative_control": { + "detected": true, + "mutation": "first fill price + 0.00000001" + }, + "profile": "backtrader_strict", + "status": "fail", + "surfaces": { + "equity": { + "coverage": { + "framework_only_timestamps": 1, + "ml4t_only_timestamps": 0, + "shared_timestamps": 1595 + }, + "first_divergence": { + "canonical_gap": "0.00000001", + "field": "equity", + "framework": { + "equity": "8260040.797423724", + "timestamp": "2019-02-01" + }, + "index": 330, + "kind": "record", + "ml4t": { + "equity": "8260040.7974237185", + "timestamp": "2019-02-01" + } + }, + "framework_records": 1595, + "framework_sha256": "420284821eb233db8012d42b32f4df081744545df7c98df38e974ef87b8d8d1c", + "max_canonical_difference": "0.00000015", + "ml4t_records": 1595, + "ml4t_sha256": "89ba33c5e41e25db2aec0cb23ce625fbe8b2ff7ff1109f4d461dc9956105b7f1", + "passed": false + }, + "fills": { + "first_divergence": null, + "framework_records": 3376, + "framework_sha256": "079faf95a56575dca51207bf0587d0d792fe66dff32021f19d85114d8b3dfcb0", + "max_canonical_difference": "0.00000000", + "ml4t_records": 3376, + "ml4t_sha256": "4e8fc7f1acdbf85567d0c8148f2b1532dee362b1f4913058851d29a5e20896ee", + "passed": true + }, + "rejection_count": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "59fbab4bac7cb12eee5b33c7df3f95e89686eb8f430c84695e63c7557c702414", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "59fbab4bac7cb12eee5b33c7df3f95e89686eb8f430c84695e63c7557c702414", + "passed": true + }, + "terminal": { + "first_divergence": { + "canonical_gap": "0.00000015", + "field": "final_value", + "framework": { + "final_value": "37957959.26743194" + }, + "index": 0, + "kind": "record", + "ml4t": { + "final_value": "37957959.26743179" + } + }, + "framework_records": 1, + "framework_sha256": "6ba61c2f2bdff3890ecbfac82425f15f4c2efaec002753bc6c31b52636106e10", + "max_canonical_difference": "0.00000015", + "ml4t_records": 1, + "ml4t_sha256": "66cdabf91ff8007a7010c0f36cf05e84eb4d4944a3bb85d8b296463ebdfe908a", + "passed": false + } + } + }, + { + "case_study": "cme_futures", + "framework": "zipline", + "reason": "the frozen workload has continuous root series but no dated contract chain or roll map", + "source": "https://zipline.ml4trading.io/api-reference.html", + "status": "unsupported" + }, + { + "case_study": "cme_futures", + "framework": "lean", + "reason": "the frozen workload has continuous root series but no dated contract chain or roll map", + "source": "https://www.quantconnect.com/docs/v2/writing-algorithms/securities/asset-classes/futures", + "status": "unsupported" + }, + { + "case_study": "crypto_perps_funding", + "framework": "vectorbt_pro", + "reason": "no native perpetual-futures funding and margin-account model", + "source": "https://vectorbt.pro/features/portfolio/", + "status": "unsupported" + }, + { + "case_study": "crypto_perps_funding", + "framework": "vectorbt_oss", + "reason": "no native perpetual-futures funding and margin-account model", + "source": "https://vectorbt.dev/api/portfolio/base/", + "status": "unsupported" + }, + { + "case_study": "crypto_perps_funding", + "framework": "backtrader", + "reason": "no native perpetual-futures funding model", + "source": "https://www.backtrader.com/docu/commission-schemes/commission-schemes/", + "status": "unsupported" + }, + { + "case_study": "crypto_perps_funding", + "framework": "zipline", + "reason": "no crypto perpetual-futures asset and funding model", + "source": "https://zipline.ml4trading.io/api-reference.html", + "status": "unsupported" + }, + { + "case_study": "crypto_perps_funding", + "engine_seconds": { + "framework": 4.180981411831453, + "ml4t": 0.7640254779253155, + "single_run_diagnostic_only": true + }, + "evidence": { + "framework_manifest_sha256": "a20e2e83439deeecc0e1ab9e1be959a31957dd8393bd15bd1f7e36d3a3c85e7a", + "ml4t_manifest_sha256": "65751e1fd35a5ab468c81c07a986193e377e547b8e0a44328f6aed687eaa3043" + }, + "excluded_surfaces": { + "accepted_unfilled_orders": "not exposed by every native runner", + "cash": "not exposed with common accounting semantics", + "closed_trades": "not a common native framework concept", + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "positions": "not exposed in a common native record schema by every runner" + }, + "framework": "lean", + "input_bundle_sha256": "2acee3c8542043266e6f9c0dfc9434c95b4469ef6fcaf0556efc569fc9721cdd", + "negative_control": { + "detected": true, + "mutation": "first fill price + 0.00000001" + }, + "profile": "lean_crypto_future", + "status": "pass", + "surfaces": { + "equity": { + "coverage": { + "framework_only_timestamps": 0, + "ml4t_only_timestamps": 0, + "shared_timestamps": 2426 + }, + "first_divergence": null, + "framework_records": 2426, + "framework_sha256": "e6dd17ae20dd049dc63534d4f83ddd2f663d036811e3aa588644a8a753dc6f22", + "max_canonical_difference": "0.00000000", + "ml4t_records": 2426, + "ml4t_sha256": "6bcc1f4bec12a1bf8cdc8ea800aae99f742295686e2529c5572c7590d863baf7", + "passed": true + }, + "fills": { + "first_divergence": null, + "framework_records": 8408, + "framework_sha256": "724263fa265d59ef7d650a7f168a35aa056af6db81b7934519a87bbebf281cf0", + "max_canonical_difference": "0.00000000", + "ml4t_records": 8408, + "ml4t_sha256": "b3e3877d7eded50fa0f5d168086fcfb9f1e18856a3506479f2312e48186d234f", + "passed": true + }, + "rejection_count": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "59fbab4bac7cb12eee5b33c7df3f95e89686eb8f430c84695e63c7557c702414", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "59fbab4bac7cb12eee5b33c7df3f95e89686eb8f430c84695e63c7557c702414", + "passed": true + }, + "terminal": { + "first_divergence": null, + "framework_records": 1, + "framework_sha256": "59a1167e8efd652cf03b0ce0b34c9612fdd03c2e653c0e282a007ca950140635", + "max_canonical_difference": "0.00000000", + "ml4t_records": 1, + "ml4t_sha256": "66c05a1c0dbc0b8b194846e4f2709cb7c887955f3d86049f6336a992c3967e6b", + "passed": true + } + } + } + ], + "schema_version": 1, + "scope": { + "case_studies": [ + "etfs", + "cme_futures", + "crypto_perps_funding" + ], + "frameworks": [ + "vectorbt_pro", + "vectorbt_oss", + "backtrader", + "zipline", + "lean" + ], + "real_strategy_equivalence_gate_passed": false, + "required_pairs": 8, + "unsupported_pairs": 7 + } +} diff --git a/validation/backtrader/benchmark_performance.py b/validation/backtrader/benchmark_performance.py index 3d13a404..1388c445 100644 --- a/validation/backtrader/benchmark_performance.py +++ b/validation/backtrader/benchmark_performance.py @@ -1,308 +1,15 @@ #!/usr/bin/env python3 -"""Performance benchmark: ml4t.backtest vs Backtrader. +"""Route the former Backtrader benchmark entry point to retained performance evidence.""" -This script benchmarks runtime performance across different data sizes -and number of assets. +from __future__ import annotations -Run from .venv-backtrader environment: - .venv-backtrader/bin/python3 validation/backtrader/benchmark_performance.py - -Metrics: -- Total runtime (seconds) -- Trades per second -- Memory usage (MB) -""" - -import gc import sys -import time -import tracemalloc from pathlib import Path -import numpy as np -import pandas as pd - -# Add project root to path -PROJECT_ROOT = Path(__file__).parent.parent.parent -sys.path.insert(0, str(PROJECT_ROOT / "src")) - - -def generate_benchmark_data(n_bars: int, n_assets: int, seed: int = 42) -> tuple: - """Generate benchmark data for both frameworks.""" - np.random.seed(seed) - - dates = pd.date_range(start="2020-01-01", periods=n_bars, freq="D") - - # Generate price data for multiple assets - asset_data = {} - for i in range(n_assets): - base_price = 100.0 + i * 10 - returns = np.random.randn(n_bars) * 0.02 - prices = base_price * np.exp(np.cumsum(returns)) - - asset_data[f"ASSET_{i:03d}"] = pd.DataFrame( - { - "open": prices * (1 + np.random.randn(n_bars) * 0.005), - "high": prices * (1 + np.abs(np.random.randn(n_bars)) * 0.01), - "low": prices * (1 - np.abs(np.random.randn(n_bars)) * 0.01), - "close": prices, - "volume": np.random.randint(100000, 1000000, n_bars).astype(float), - }, - index=dates, - ) - - # Generate signals - entry every 20 bars, exit 10 bars later - entries = np.zeros(n_bars, dtype=bool) - exits = np.zeros(n_bars, dtype=bool) - - i = 0 - while i < n_bars - 11: - entries[i] = True - exits[i + 10] = True - i += 20 - - return asset_data, entries, exits, dates - - -def benchmark_backtrader(asset_data: dict, entries: np.ndarray, exits: np.ndarray) -> dict: - """Benchmark Backtrader.""" - import backtrader as bt - - class PandasData(bt.feeds.PandasData): - params = ( - ("datetime", None), - ("open", "open"), - ("high", "high"), - ("low", "low"), - ("close", "close"), - ("volume", "volume"), - ("openinterest", -1), - ) - - class BenchmarkStrategy(bt.Strategy): - params = (("entries", None), ("exits", None)) - - def __init__(self): - self.bar_count = 0 - self.trade_count = 0 - - def next(self): - idx = self.bar_count - for i, data in enumerate(self.datas): - if not self.getposition(data): - if idx < len(self.params.entries) and self.params.entries[idx]: - self.buy(data=data, size=100) - else: - if idx < len(self.params.exits) and self.params.exits[idx]: - self.close(data=data) - self.bar_count += 1 - - def notify_trade(self, trade): - if trade.isclosed: - self.trade_count += 1 - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - cerebro = bt.Cerebro() - cerebro.broker.setcash(100_000.0) - cerebro.broker.setcommission(commission=0.0) - - for name, df in asset_data.items(): - data = PandasData(dataname=df) - cerebro.adddata(data, name=name) - - cerebro.addstrategy(BenchmarkStrategy, entries=entries, exits=exits) - - results = cerebro.run() - strategy = results[0] - num_trades = strategy.trade_count - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "Backtrader", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": peak / 1024 / 1024, - } - - -def benchmark_ml4t_backtest( - asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates -) -> dict: - """Benchmark ml4t.backtest.""" - import polars as pl - - from ml4t.backtest._validation_imports import DataFeed, Engine, ExecutionMode, NoCommission, NoSlippage, Strategy - - # Prepare data in polars format - rows = [] - for asset_name, df in asset_data.items(): - for i, (ts, row) in enumerate(df.iterrows()): - rows.append( - { - "timestamp": ts.to_pydatetime(), - "asset": asset_name, - "open": row["open"], - "high": row["high"], - "low": row["low"], - "close": row["close"], - "volume": row["volume"], - } - ) - - prices_pl = pl.DataFrame(rows) - - # Prepare signals - signal_rows = [] - for asset_name in asset_data: - for i, ts in enumerate(dates): - signal_rows.append( - { - "timestamp": ts.to_pydatetime(), - "asset": asset_name, - "entry": bool(entries[i]), - "exit": bool(exits[i]), - } - ) - - signals_pl = pl.DataFrame(signal_rows) - - class BenchmarkStrategy(Strategy): - def on_data(self, timestamp, data, context, broker): - for asset_name, asset_data in data.items(): - signals = asset_data.get("signals", {}) - position = broker.get_position(asset_name) - current_qty = position.quantity if position else 0 - - if signals.get("exit") and current_qty > 0: - broker.close_position(asset_name) - elif signals.get("entry") and current_qty == 0: - broker.submit_order(asset_name, 100) - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - feed = DataFeed(prices_df=prices_pl, signals_df=signals_pl) - strategy = BenchmarkStrategy() - - engine = Engine( - feed, - strategy, - initial_cash=100_000.0, - allow_short_selling=False, - commission_model=NoCommission(), - slippage_model=NoSlippage(), - execution_mode=ExecutionMode.NEXT_BAR, # Match Backtrader - ) - - results = engine.run() - num_trades = results["num_trades"] - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "ml4t.backtest", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": peak / 1024 / 1024, - } - - -def run_benchmark(n_bars: int, n_assets: int) -> dict: - """Run benchmark for specific configuration.""" - print(f"\n Generating data: {n_bars} bars x {n_assets} assets...") - asset_data, entries, exits, dates = generate_benchmark_data(n_bars, n_assets) - - print(" Running Backtrader...") - bt_results = benchmark_backtrader(asset_data, entries, exits) - - print(" Running ml4t.backtest...") - ml4t_results = benchmark_ml4t_backtest(asset_data, entries, exits, dates) - - # Calculate speedup (>1 means Backtrader is faster) - speedup = ( - bt_results["runtime_sec"] / ml4t_results["runtime_sec"] - if ml4t_results["runtime_sec"] > 0 - else 0 - ) - - return { - "n_bars": n_bars, - "n_assets": n_assets, - "bt_runtime": bt_results["runtime_sec"], - "bt_trades": bt_results["num_trades"], - "bt_memory": bt_results["memory_mb"], - "ml4t_runtime": ml4t_results["runtime_sec"], - "ml4t_trades": ml4t_results["num_trades"], - "ml4t_memory": ml4t_results["memory_mb"], - "speedup": speedup, - } - - -def main(): - print("=" * 70) - print("Performance Benchmark: ml4t.backtest vs Backtrader") - print("=" * 70) - - # Test configurations (smaller for Backtrader - it's slower) - configs = [ - (100, 1), - (1000, 1), - (10000, 1), - (1000, 10), - (1000, 50), - ] - - results = [] - - for n_bars, n_assets in configs: - print(f"\nBenchmark: {n_bars} bars x {n_assets} assets") - try: - result = run_benchmark(n_bars, n_assets) - results.append(result) - - print( - f" BT: {result['bt_runtime']:.3f}s, {result['bt_trades']} trades, {result['bt_memory']:.1f} MB" - ) - print( - f" ML4T: {result['ml4t_runtime']:.3f}s, {result['ml4t_trades']} trades, {result['ml4t_memory']:.1f} MB" - ) - print( - f" Speedup: {result['speedup']:.2f}x {'(BT faster)' if result['speedup'] > 1 else '(ML4T faster)'}" - ) - except Exception as e: - print(f" ERROR: {e}") - import traceback - - traceback.print_exc() - - # Summary table - print("\n" + "=" * 70) - print("SUMMARY") - print("=" * 70) - print(f"{'Config':<20} {'BT (s)':<12} {'ML4T (s)':<12} {'Speedup':<12} {'Winner'}") - print("-" * 70) - - for r in results: - config = f"{r['n_bars']}x{r['n_assets']}" - winner = "BT" if r["speedup"] > 1 else "ML4T" - speedup_str = f"{r['speedup']:.2f}x" if r["speedup"] > 1 else f"{1/r['speedup']:.2f}x" - print( - f"{config:<20} {r['bt_runtime']:<12.3f} {r['ml4t_runtime']:<12.3f} {speedup_str:<12} {winner}" - ) - - print("=" * 70) - - return 0 +VALIDATION_DIR = Path(__file__).parents[1] +sys.path.insert(0, str(VALIDATION_DIR)) +from cross_framework_performance import main # noqa: E402 if __name__ == "__main__": - sys.exit(main()) + raise SystemExit(main()) diff --git a/validation/behavior_coverage.toml b/validation/behavior_coverage.toml new file mode 100644 index 00000000..8b1ed6c6 --- /dev/null +++ b/validation/behavior_coverage.toml @@ -0,0 +1,266 @@ +schema_version = 1 + +[[framework.vectorbt]] +name = "execution" +fields = ["execution.execution_price", "execution.execution_mode"] +native_checks = ["signal_timing_and_default_fill", "explicit_fill_price"] +scenarios = ["01", "17"] +published = true + +[[framework.vectorbt]] +name = "direction" +fields = ["account.allow_short_selling", "account.short_cash_policy", "account.lock_notional_update_mode"] +native_checks = ["short_cash", "lock_notional_update_arithmetic"] +scenarios = ["02", "11", "12"] +published = true + +[[framework.vectorbt]] +name = "stops" +fields = ["stops.stop_fill_mode", "stops.stop_level_basis", "stops.trail_hwm_source", "stops.initial_hwm_source", "stops.trail_stop_timing"] +native_checks = ["stop_fill", "trailing_stop_extreme_and_intrabar_fill"] +scenarios = ["03", "04", "09", "10", "12", "13", "14", "15"] +published = true + +[[framework.vectorbt]] +name = "costs" +fields = ["commission.model", "commission.rate", "slippage.model", "slippage.rate"] +native_checks = ["fees_and_slippage"] +scenarios = ["05", "07", "08"] +published = true + +[[framework.vectorbt]] +name = "sizing" +fields = ["position_sizing.share_type"] +native_checks = ["target_percent_sizing"] +scenarios = [] +published = false +reason = "The scenario matrix submits fixed integer quantities and does not test fractional target sizing." + +[[framework.vectorbt]] +name = "buying_power" +fields = ["account.allow_leverage", "orders.reject_on_insufficient_cash", "orders.partial_fills_allowed"] +native_checks = ["cash_sharing_short_collateral", "insufficient_cash_partial_fill"] +scenarios = [] +published = false +reason = "No cross-engine scenario currently reaches an insufficient-cash boundary." + +[[framework.vectorbt]] +name = "order_processing" +fields = ["orders.fill_ordering", "orders.entry_order_priority", "orders.immediate_fill", "orders.rebalance_mode"] +native_checks = ["cash_sharing_and_call_sequence", "accumulation", "long_signal_conflict"] +scenarios = [] +published = false +reason = "The single-asset scenario strategy does not submit competing same-session orders or targets." + +[[framework.vectorbt]] +name = "cash_and_target_headroom" +fields = ["cash.initial", "cash.buffer_pct", "orders.rebalance_headroom_pct"] +native_checks = ["target_percent_sizing"] +scenarios = [] +published = false +reason = "Initial cash is an explicit scenario input and target headroom is not exercised." + +[[framework.vectorbt]] +name = "data_continuity" +fields = ["orders.missing_price_policy", "orders.late_asset_policy", "orders.late_asset_min_bars"] +native_checks = ["missing_order_price"] +scenarios = [] +published = false +reason = "The scenario matrix has one complete asset history and cannot test late assets." + +[[framework.backtrader]] +name = "execution" +fields = ["execution.execution_price", "execution.execution_mode"] +native_checks = ["next_bar_open_and_gap", "final_bar_market_order"] +scenarios = ["01", "17"] +published = true + +[[framework.backtrader]] +name = "direction" +fields = ["account.allow_short_selling", "account.short_cash_policy"] +native_checks = ["short_cash"] +scenarios = ["02", "11", "12"] +published = true + +[[framework.backtrader]] +name = "stops" +fields = ["stops.stop_fill_mode", "stops.stop_level_basis", "stops.trail_hwm_source", "stops.initial_hwm_source", "stops.trail_stop_timing"] +native_checks = ["signal_price_stop_basis", "trailing_stop_signal_close_and_lagged"] +scenarios = ["03", "04", "09", "10", "12", "13", "14", "15"] +published = true + +[[framework.backtrader]] +name = "costs" +fields = ["commission.model", "commission.rate", "slippage.model", "slippage.rate"] +native_checks = ["defaults", "commission_headroom"] +scenarios = ["05", "06", "07", "08"] +published = true + +[[framework.backtrader]] +name = "sizing" +fields = ["position_sizing.share_type", "position_sizing.share_rounding"] +native_checks = ["integer_target_percent"] +scenarios = [] +published = false +reason = "The scenario matrix submits fixed integer quantities and does not test target-percent sizing." + +[[framework.backtrader]] +name = "buying_power" +fields = ["account.allow_leverage", "orders.reject_on_insufficient_cash", "orders.partial_fills_allowed"] +native_checks = ["cash_rejection_and_configured_leverage", "losing_short_cover_submission_rejection", "gap_reversal_executes_close_leg_despite_margin"] +scenarios = [] +published = false +reason = "Native checks cover submission and gap boundaries, but the scenario matrix does not reach an insufficient-cash boundary." + +[[framework.backtrader]] +name = "order_processing" +fields = ["orders.fill_ordering", "orders.entry_order_priority", "orders.rebalance_mode"] +native_checks = ["submission_sequence"] +scenarios = [] +published = false +reason = "The single-asset scenario strategy does not submit competing same-session orders or targets." + +[[framework.backtrader]] +name = "cash_and_target_headroom" +fields = ["cash.initial", "cash.buffer_pct", "orders.rebalance_headroom_pct"] +native_checks = ["commission_headroom"] +scenarios = [] +published = false +reason = "Initial cash is an explicit scenario input and target headroom is not exercised." + +[[framework.backtrader]] +name = "data_continuity" +fields = ["orders.missing_price_policy", "orders.late_asset_policy", "orders.late_asset_min_bars"] +native_checks = ["missing_bar_uses_last_value", "late_feed_start"] +scenarios = [] +published = false +reason = "The scenario matrix has one complete asset history and cannot test late assets." + +[[framework.zipline]] +name = "execution" +fields = ["execution.execution_price", "execution.execution_mode"] +native_checks = ["configured_next_bar_open_fill", "final_bar_market_order"] +scenarios = ["01", "17"] +published = true + +[[framework.zipline]] +name = "direction" +fields = ["account.allow_short_selling", "account.short_cash_policy"] +native_checks = ["cash_and_short_proceeds"] +scenarios = ["02", "11", "12"] +published = true + +[[framework.zipline]] +name = "risk_adapter" +fields = ["stops.stop_fill_mode", "stops.stop_level_basis", "stops.trail_hwm_source", "stops.trail_stop_timing"] +native_checks = ["configured_next_bar_open_fill"] +scenarios = ["03", "04", "09", "12", "13", "14", "15"] +published = true + +[[framework.zipline]] +name = "costs" +fields = ["commission.model", "commission.rate", "commission.per_share", "commission.minimum", "slippage.model", "slippage.rate"] +native_checks = ["defaults", "explicit_minimum_commission"] +scenarios = ["05", "06", "07", "08"] +published = true + +[[framework.zipline]] +name = "sizing" +fields = ["position_sizing.share_type", "orders.rebalance_mode"] +native_checks = ["integer_target_percent", "target_percent_snapshot"] +scenarios = [] +published = false +reason = "The scenario matrix submits fixed quantities and does not call target-percent APIs." + +[[framework.zipline]] +name = "buying_power" +fields = ["account.allow_leverage", "orders.reject_on_insufficient_cash", "orders.skip_cash_validation", "orders.partial_fills_allowed"] +native_checks = ["cash_and_short_proceeds", "volume_share_partial_fills"] +scenarios = [] +published = false +reason = "The comparison protocol overrides cash validation and fill volume, but no boundary scenario tests either behavior." + +[[framework.zipline]] +name = "order_processing" +fields = ["orders.fill_ordering", "orders.entry_order_priority", "orders.next_bar_queue_shadow_validation"] +native_checks = ["submission_sequence"] +scenarios = [] +published = false +reason = "The single-asset scenario strategy does not submit competing same-session orders." + +[[framework.zipline]] +name = "cash_and_target_headroom" +fields = ["cash.initial", "cash.buffer_pct", "orders.rebalance_headroom_pct"] +native_checks = ["integer_target_percent"] +scenarios = [] +published = false +reason = "Initial cash is explicit and target headroom is not exercised." + +[[framework.zipline]] +name = "data_continuity" +fields = ["orders.missing_price_policy", "orders.late_asset_policy", "orders.late_asset_min_bars"] +native_checks = ["session_calendar", "missing_bar"] +scenarios = [] +published = false +reason = "The scenario matrix has one complete asset history and cannot test late assets." + +[[framework.lean]] +name = "execution" +fields = ["execution.execution_price", "execution.execution_mode"] +native_checks = ["timing", "final_bar_order"] +scenarios = ["lean-case:chapter16_etfs", "lean-case:chapter16_sp500_equity_option_analytics", "lean-case:chapter16_us_equities_panel"] +published = true + +[[framework.lean]] +name = "account" +fields = ["account.allow_short_selling", "account.allow_leverage", "account.initial_margin", "account.long_maintenance_margin", "account.short_maintenance_margin", "account.short_cash_policy"] +native_checks = ["default_models", "buying_power_allowed", "buying_power_rejected"] +scenarios = ["lean-case:chapter16_etfs", "lean-case:chapter16_sp500_equity_option_analytics", "lean-case:chapter16_us_equities_panel"] +published = true + +[[framework.lean]] +name = "target_sizing" +fields = ["position_sizing.share_type", "orders.rebalance_mode", "orders.rebalance_headroom_pct"] +native_checks = ["target_sizing"] +scenarios = ["lean-case:chapter16_etfs", "lean-case:chapter16_sp500_equity_option_analytics", "lean-case:chapter16_us_equities_panel"] +published = true + +[[framework.lean]] +name = "costs" +fields = ["commission.model", "commission.rate", "commission.per_share", "commission.minimum", "slippage.model", "slippage.rate"] +native_checks = ["default_models", "explicit_costs"] +scenarios = [] +published = false +reason = "Chapter 16 uses a custom percentage fee model, not the profile's default brokerage fee model." + +[[framework.lean]] +name = "stops" +fields = ["stops.stop_fill_mode", "stops.stop_level_basis", "stops.trail_hwm_source", "stops.trail_stop_timing"] +native_checks = [] +scenarios = [] +published = false +reason = "The current LEAN oracle and case studies do not test stop-order semantics." + +[[framework.lean]] +name = "buying_power_and_ordering" +fields = ["orders.reject_on_insufficient_cash", "orders.partial_fills_allowed", "orders.fill_ordering", "orders.entry_order_priority", "orders.buying_power_reservation", "orders.next_bar_submission_precheck", "orders.next_bar_queue_shadow_validation"] +native_checks = ["submission_sequence", "buying_power_sequence", "default_full_fill"] +scenarios = [] +published = false +reason = "The Chapter 16 projects do not isolate rejection, competing-order, or partial-fill boundaries." + +[[framework.lean]] +name = "cash" +fields = ["cash.initial", "cash.buffer_pct"] +native_checks = ["target_sizing"] +scenarios = [] +published = false +reason = "Initial cash is an explicit project input, not an engine-default equivalence claim." + +[[framework.lean]] +name = "data_continuity" +fields = ["orders.missing_price_policy", "orders.late_asset_policy", "orders.late_asset_min_bars"] +native_checks = ["fill_forward"] +scenarios = [] +published = false +reason = "The Chapter 16 projects do not contain a controlled missing-bar or late-asset case." diff --git a/validation/benchmark_suite.py b/validation/benchmark_suite.py index 0e169980..2f5b1aa2 100644 --- a/validation/benchmark_suite.py +++ b/validation/benchmark_suite.py @@ -61,6 +61,9 @@ from ml4t.backtest._validation.backtrader_runner import ( # noqa: E402 run_backtrader_target_shares as shared_run_backtrader_target_shares, ) +from ml4t.backtest._validation.backtrader_runner import ( # noqa: E402 + transactions_to_trade_log as reconstruct_closed_trades, +) from ml4t.backtest._validation.lean_runner import ( # noqa: E402 build_sequential_ticker_map, check_lean_cli, @@ -105,6 +108,7 @@ from ml4t.backtest._validation.zipline_runner import ( # noqa: E402 run_zipline_target_shares as shared_run_zipline_target_shares, ) +from validation.common.framework_registry import load_framework_manifest # noqa: E402 _BENCHMARK_LOG_FILE = os.getenv("ML4T_BENCHMARK_LOG_FILE") DEFAULT_REAL_DATA_PATH = Path( @@ -225,6 +229,7 @@ class BenchmarkConfig: lean_security_leverage: float | None = None lean_force_zero_fee: bool | None = None lean_force_zero_slippage: bool | None = None + end_session: str = "2025-12-31" @property def data_points(self) -> int: @@ -446,7 +451,7 @@ def generate_benchmark_data(config: BenchmarkConfig, seed: int = 42) -> tuple: current += timedelta(days=1) dates = pd.DatetimeIndex(dates) else: - dates = _get_trailing_nyse_sessions(config.n_bars) + dates = _get_trailing_nyse_sessions(config.n_bars, end_date=config.end_session) if len(dates) < config.n_bars: raise ValueError( f"Requested {config.n_bars} bars, but only {len(dates)} NYSE sessions are available" @@ -705,9 +710,9 @@ def build_canonical_target_trace(target_shares: pd.DataFrame) -> pd.DataFrame: delta = target_shares - prev changed = delta != 0.0 - trace_targets = target_shares.where(changed).stack() - trace_prev = prev.where(changed).stack() - trace_delta = delta.where(changed).stack() + trace_targets = target_shares.where(changed).stack().dropna() + trace_prev = prev.where(changed).stack().dropna() + trace_delta = delta.where(changed).stack().dropna() if len(trace_targets) == 0: return pd.DataFrame( @@ -791,15 +796,29 @@ def to_dict(self) -> dict: } -def _timestamp_value(value: object) -> str | None: +def _timestamp_value(value: object, timestamp_domain: str = "timestamp") -> str | None: if value is None or pd.isna(value): return None timestamp = pd.Timestamp(value) if timestamp.tz is not None: timestamp = timestamp.tz_convert("UTC").tz_localize(None) + if timestamp_domain == "session_date": + return timestamp.date().isoformat() + if timestamp_domain != "timestamp": + raise ValueError(f"Unknown timestamp domain: {timestamp_domain}") return timestamp.isoformat() +def _asset_value(value: object) -> str: + symbol = getattr(value, "symbol", None) + if isinstance(symbol, str) and symbol: + return symbol + text = str(value) + if " [" in text and text.endswith("])"): + return text.rsplit(" [", 1)[1][:-2] + return text + + def _canonical_float(value: object, quantum: Decimal = CANONICAL_QUANTUM) -> float: canonical = float(Decimal(str(value)).quantize(quantum, rounding=ROUND_HALF_EVEN)) return 0.0 if canonical == 0.0 else canonical @@ -830,7 +849,11 @@ def _frame_with_index(frame: pd.DataFrame) -> pd.DataFrame: return work -def canonical_fill_records(frame: pd.DataFrame | None) -> list[dict[str, object]] | None: +def canonical_fill_records( + frame: pd.DataFrame | None, + *, + timestamp_domain: str = "timestamp", +) -> list[dict[str, object]] | None: """Normalize a framework fill log without applying numeric tolerances.""" if frame is None: return None @@ -845,9 +868,10 @@ def canonical_fill_records(frame: pd.DataFrame | None) -> list[dict[str, object] records.append( { "timestamp": _timestamp_value( - _row_value(row, ("timestamp", "dt", "date", "index", "filled_at")) + _row_value(row, ("timestamp", "dt", "date", "index", "filled_at")), + timestamp_domain, ), - "asset": str( + "asset": _asset_value( _row_value(row, ("asset", "symbol", "instrument_id", "sid"), "unknown") ), "side": _side_value(_row_value(row, ("side", "order_side"), ""), signed_quantity), @@ -858,10 +882,37 @@ def canonical_fill_records(frame: pd.DataFrame | None) -> list[dict[str, object] ), } ) - return records + return sorted( + records, + key=lambda record: ( + record["timestamp"] or "", + record["asset"], + record["side"], + record["quantity"], + record["price"], + ), + ) -def canonical_trade_records(frame: pd.DataFrame | None) -> list[dict[str, object]] | None: +def closed_trades_from_fills(frame: pd.DataFrame | None) -> pd.DataFrame | None: + """Reconstruct fill-backed closed round trips on a framework-neutral ledger.""" + records = canonical_fill_records(frame) + if not records: + return None + transactions = pd.DataFrame(records) + transactions["amount"] = transactions["quantity"].where( + transactions["side"] == "buy", -transactions["quantity"] + ) + transactions["symbol"] = transactions["asset"] + transactions = transactions.set_index("timestamp") + return reconstruct_closed_trades(transactions[["amount", "price", "symbol"]]) + + +def canonical_trade_records( + frame: pd.DataFrame | None, + *, + timestamp_domain: str = "timestamp", +) -> list[dict[str, object]] | None: """Normalize a framework round-trip trade log without applying numeric tolerances.""" if frame is None: return None @@ -879,10 +930,15 @@ def canonical_trade_records(frame: pd.DataFrame | None) -> list[dict[str, object records.append( { "entry_time": _timestamp_value( - _row_value(row, ("entry_time", "entry_date", "timestamp", "index")) + _row_value(row, ("entry_time", "entry_date", "timestamp", "index")), + timestamp_domain, + ), + "exit_time": _timestamp_value( + _row_value(row, ("exit_time", "exit_date")), timestamp_domain + ), + "asset": _asset_value( + _row_value(row, ("asset", "symbol", "instrument_id"), "unknown") ), - "exit_time": _timestamp_value(_row_value(row, ("exit_time", "exit_date"))), - "asset": str(_row_value(row, ("asset", "symbol", "instrument_id"), "unknown")), "side": side, "quantity": _canonical_float(abs(quantity)), "entry_price": _canonical_float(_row_value(row, ("entry_price",), 0.0)), @@ -980,6 +1036,7 @@ def compare_benchmark_results_exact( actual: BenchmarkResult, *, initial_cash: float, + timestamp_domain: str = "timestamp", ) -> dict[str, object]: """Compare every release-covered benchmark surface using exact equality.""" checks = [ @@ -990,13 +1047,13 @@ def compare_benchmark_results_exact( ), _surface_check( "fills", - canonical_fill_records(expected.fills_df), - canonical_fill_records(actual.fills_df), + canonical_fill_records(expected.fills_df, timestamp_domain=timestamp_domain), + canonical_fill_records(actual.fills_df, timestamp_domain=timestamp_domain), ), _surface_check( "trades", - canonical_trade_records(expected.trades_df), - canonical_trade_records(actual.trades_df), + canonical_trade_records(expected.trades_df, timestamp_domain=timestamp_domain), + canonical_trade_records(actual.trades_df, timestamp_domain=timestamp_domain), ), _scalar_check("trade_count", expected.num_trades, actual.num_trades), _scalar_check( @@ -1010,6 +1067,7 @@ def compare_benchmark_results_exact( "schema_version": 1, "canonical_record_quantum": str(CANONICAL_QUANTUM), "canonical_money_quantum": str(CANONICAL_MONEY_QUANTUM), + "timestamp_domain": timestamp_domain, "scenario": expected.scenario, "expected_framework": expected.framework, "actual_framework": actual.framework, @@ -1233,7 +1291,13 @@ def benchmark_ml4t( # Convert price data to Polars format using vectorized DataFrame ops. price_frames: list[pd.DataFrame] = [] for asset_name, df in price_data.items(): - asset_frame = df.reset_index() + source_frame = df.copy() + if profile_name in {"zipline_strict", "lean"}: + decimals = 3 if profile_name == "zipline_strict" else 4 + source_frame.loc[:, ["open", "high", "low", "close"]] = source_frame[ + ["open", "high", "low", "close"] + ].round(decimals) + asset_frame = source_frame.reset_index() index_col = asset_frame.columns[0] asset_frame = asset_frame.rename(columns={index_col: "timestamp"}) asset_frame["asset"] = asset_name @@ -1338,9 +1402,8 @@ def _disable_commission(cfg: BacktestConfig) -> None: # Clear every direct commission field, not just type+rate. The broker # auto-activates a cost model whenever any direct field (per_share / # per_trade / rate) is non-zero, even when commission_type is NONE, so a - # partial reset would leave a preset's per-share/minimum commission live - # (e.g. zipline_strict carries per_share=0.005, minimum=1.0) and silently - # re-enable it — breaking parity against the zero-commission reference run. + # partial reset could leave direct per-share or per-trade values live and + # silently re-enable costs, breaking parity against a zero-cost reference. cfg.commission_type = CommissionType.NONE cfg.commission_rate = 0.0 cfg.commission_per_share = 0.0 @@ -1422,19 +1485,8 @@ def build_ml4t_config(no_costs: bool) -> BacktestConfig: fills_pl = results.to_fills_dataframe() fills_df = pd.DataFrame(fills_pl.to_dict(as_series=False)) trades_df = None - if profile_name == "lean": - if not fills_df.empty: - trades_df = fills_df.rename( - columns={ - "price": "fill_price", - "commission": "fee", - } - ) - if "quantity" in trades_df.columns: - trades_df["quantity"] = trades_df["quantity"].abs() - if "side" in trades_df.columns: - trades_df["side"] = trades_df["side"].astype(str).str.lower() - trades_df = trades_df.sort_values(["timestamp", "order_id"]).reset_index(drop=True) + if profile_name in {"backtrader_strict", "zipline_strict", "lean"}: + trades_df = closed_trades_from_fills(fills_df) elif results.get("trades"): trade_records = [] for t in results["trades"]: @@ -2053,6 +2105,17 @@ def benchmark_lean( memory_mb=0, error=f"LEAN config not found: {lean_config}", ) + lean_target = load_framework_manifest().targets["lean"] + if lean_target.artifact is None: + return BenchmarkResult( + framework="LEAN CLI", + scenario=config.name, + runtime_sec=0, + num_trades=0, + final_value=0, + memory_mb=0, + error="Frozen LEAN target is missing an engine image", + ) try: lean_cmd = resolve_lean_command() @@ -2159,6 +2222,13 @@ def benchmark_lean( first_date = pd.Timestamp(dates[0]).date() last_date = pd.Timestamp(dates[-1]).date() + following_sessions = _get_nyse_sessions( + pd.Timestamp(last_date) + pd.Timedelta(days=1), + pd.Timestamp(last_date) + pd.Timedelta(days=10), + ) + if len(following_sessions) == 0: + raise RuntimeError(f"Could not resolve the LEAN settlement session after {last_date}") + lean_end_date = pd.Timestamp(following_sessions[0]).date() main_code = f"""# region imports from AlgorithmImports import * # endregion @@ -2170,7 +2240,7 @@ def benchmark_lean( class Ml4tBenchmark(QCAlgorithm): def initialize(self): self.set_start_date({first_date.year}, {first_date.month}, {first_date.day}) - self.set_end_date({last_date.year}, {last_date.month}, {last_date.day}) + self.set_end_date({lean_end_date.year}, {lean_end_date.month}, {lean_end_date.day}) self.set_cash({float(config.initial_cash)}) {lean_account_stmt} self._targets = {{}} @@ -2289,7 +2359,10 @@ def on_order_event(self, order_event: OrderEvent): env = make_lean_env() try: - check_lean_cli(lean_cmd, PROJECT_ROOT, env) + observed_cli = check_lean_cli(lean_cmd, PROJECT_ROOT, env) + expected_cli = f"lean {lean_target.cli_version}" + if observed_cli != expected_cli: + raise RuntimeError(f"LEAN CLI differs: {observed_cli} != {expected_cli}") except RuntimeError as exc: return BenchmarkResult( framework="LEAN CLI", @@ -2341,6 +2414,7 @@ def on_order_event(self, order_event: OrderEvent): project_dir=project_dir, lean_config=lean_config, output_dir=output_dir, + image=lean_target.artifact, timeout=1800, env=env, ) @@ -2378,14 +2452,9 @@ def on_order_event(self, order_event: OrderEvent): target_trace_df=target_trace, ) - # Report the decoded fill count as num_trades for an apples-to-apples - # cross-engine comparison. load_lean_artifacts prefers LEAN's - # tradeStatistics.totalNumberOfTrades, which counts closed round-trip - # trades, whereas every other engine in this suite reports individual - # fills via len(trades_df). Using fills here keeps the parity surface - # consistent (LEAN fills == ml4t fills on the canonical benchmark). - if trades_df is not None: - num_trades = int(len(trades_df)) + fills_df = trades_df + trades_df = closed_trades_from_fills(fills_df) + num_trades = 0 if trades_df is None else len(trades_df) return BenchmarkResult( framework="LEAN CLI", @@ -2394,7 +2463,7 @@ def on_order_event(self, order_event: OrderEvent): num_trades=num_trades, final_value=final_value, memory_mb=0.0, - fills_df=trades_df, + fills_df=fills_df, trades_df=trades_df, equity_df=equity_df, order_events_df=order_events_df, diff --git a/validation/build_framework_env.py b/validation/build_framework_env.py new file mode 100644 index 00000000..3d70dc1b --- /dev/null +++ b/validation/build_framework_env.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python3 +"""Build and verify isolated, locked comparison-framework environments.""" + +from __future__ import annotations + +import argparse +import json +import os +import subprocess +import sys +import tomllib +from pathlib import Path +from typing import Any + +VALIDATION_DIR = Path(__file__).parent +PROJECT_ROOT = VALIDATION_DIR.parent +ENVIRONMENTS_DIR = VALIDATION_DIR / "environments" +sys.path.insert(0, str(VALIDATION_DIR)) + +from common.framework_registry import FrameworkTarget, load_framework_manifest # noqa: E402 + +PUBLIC_FRAMEWORKS = ("vectorbt_oss", "backtrader", "zipline") +BUILDABLE_FRAMEWORKS = (*PUBLIC_FRAMEWORKS, "vectorbt_pro", "lean") + + +def project_directory(framework: str) -> Path: + """Return the locked uv project for one framework.""" + return ENVIRONMENTS_DIR / framework + + +def environment_path(target: FrameworkTarget, root: Path = PROJECT_ROOT) -> Path: + """Resolve a target environment below an explicit root.""" + if target.environment is None: + raise ValueError(f"Framework has no environment path: {target.framework_id}") + return root / target.environment + + +def definition_failures(framework: str, target: FrameworkTarget) -> list[str]: + """Check that the lock input names the frozen target exactly.""" + project = project_directory(framework) + failures: list[str] = [] + lock_path = project / "uv.lock" + if not lock_path.is_file(): + failures.append(f"Missing lockfile: {lock_path}") + lock_text = "" + else: + lock_text = lock_path.read_text(encoding="utf-8") + try: + with (project / "pyproject.toml").open("rb") as file: + payload = tomllib.load(file) + dependencies = payload["project"]["dependencies"] + except (KeyError, OSError, tomllib.TOMLDecodeError) as error: + return [f"Invalid environment definition for {framework}: {error}"] + if not isinstance(dependencies, list) or not all( + isinstance(dependency, str) for dependency in dependencies + ): + return [f"Environment dependencies must be a string array: {framework}"] + normalized_package = target.package.lower().replace("_", "-") + matching = [ + dependency + for dependency in dependencies + if dependency.split("@", 1)[0].split("=", 1)[0].strip().lower().replace("_", "-") + == normalized_package + ] + if len(matching) != 1: + failures.append(f"Environment must define one {target.package} dependency: {framework}") + elif framework == "vectorbt_pro": + if target.source_commit is None or f"@{target.source_commit}" not in matching[0]: + failures.append("VectorBT Pro environment does not pin the manifest commit") + else: + expected_version = target.cli_version if framework == "lean" else target.version + if expected_version is None or f"=={expected_version}" not in matching[0]: + failures.append(f"Environment does not pin {target.package}=={expected_version}") + expected_lock_id = target.cli_immutable_id if framework == "lean" else target.immutable_id + if expected_lock_id is None: + failures.append(f"Manifest lacks an artifact identity: {framework}") + elif expected_lock_id.removeprefix("git:") not in lock_text: + failures.append(f"Lockfile does not contain the manifest artifact identity: {framework}") + return failures + + +def _probe(interpreter: Path, target: FrameworkTarget) -> dict[str, Any]: + code = """ +import importlib.metadata +import json +from pathlib import Path +import ml4t.backtest +import sys + +distribution = importlib.metadata.distribution(sys.argv[1]) +print(json.dumps({ + "version": distribution.version, + "direct_url": distribution.read_text("direct_url.json"), + "ml4t_path": str(Path(ml4t.backtest.__file__).resolve()), + "python": sys.version.split()[0], +}, sort_keys=True)) +""" + result = subprocess.run( + [str(interpreter), "-c", code, target.package], + cwd=PROJECT_ROOT, + check=True, + capture_output=True, + text=True, + ) + payload = json.loads(result.stdout) + if not isinstance(payload, dict): + raise ValueError("Environment probe did not return an object") + return payload + + +def verify_environment( + framework: str, + target: FrameworkTarget, + *, + root: Path = PROJECT_ROOT, +) -> dict[str, Any]: + """Verify installed package, source checkout, and private or engine identity.""" + failures = definition_failures(framework, target) + if failures: + raise ValueError("; ".join(failures)) + interpreter = environment_path(target, root) / "bin" / "python" + if not interpreter.is_file(): + raise ValueError(f"Environment interpreter is missing: {interpreter}") + payload = _probe(interpreter, target) + if payload.get("version") != target.version and framework != "lean": + raise ValueError( + f"Installed {target.package} version differs: {payload.get('version')} != {target.version}" + ) + ml4t_path = Path(str(payload.get("ml4t_path"))) + if not ml4t_path.is_relative_to(PROJECT_ROOT): + raise ValueError(f"Environment does not import the current checkout: {ml4t_path}") + + evidence: dict[str, Any] = { + "framework": framework, + "environment": str(environment_path(target, root)), + "python": payload.get("python"), + "package": target.package, + "version": payload.get("version"), + "immutable_id": target.immutable_id, + } + if framework == "vectorbt_pro": + direct_url = json.loads(payload.get("direct_url") or "{}") + commit = direct_url.get("vcs_info", {}).get("commit_id") + if commit != target.source_commit: + raise ValueError(f"Installed VectorBT Pro commit differs: {commit}") + evidence["source_commit"] = commit + if framework == "lean": + if payload.get("version") != target.cli_version: + raise ValueError( + f"Installed LEAN CLI differs: {payload.get('version')} != {target.cli_version}" + ) + if target.artifact is None: + raise ValueError("LEAN target lacks an immutable engine image") + subprocess.run( + ["docker", "buildx", "imagetools", "inspect", target.artifact], + check=True, + capture_output=True, + text=True, + ) + evidence = { + "framework": framework, + "data_preparation": { + "cli_package": target.package, + "cli_version": payload.get("version"), + "cli_immutable_id": target.cli_immutable_id, + "python": payload.get("python"), + }, + "engine_execution": { + "image": target.artifact, + "image_digest": target.immutable_id, + "platform_artifact": target.platform_artifact, + }, + } + return evidence + + +def build_environment( + framework: str, + target: FrameworkTarget, + *, + root: Path = PROJECT_ROOT, +) -> dict[str, Any]: + """Synchronize one locked environment and verify its installed identity.""" + failures = definition_failures(framework, target) + if failures: + raise ValueError("; ".join(failures)) + destination = environment_path(target, root) + command_environment = os.environ.copy() + command_environment["UV_PROJECT_ENVIRONMENT"] = str(destination) + command_environment["UV_NO_SOURCES"] = "0" + try: + subprocess.run( + ["uv", "sync", "--project", str(project_directory(framework)), "--locked", "--no-dev"], + cwd=PROJECT_ROOT, + check=True, + env=command_environment, + ) + except subprocess.CalledProcessError as error: + if framework == "vectorbt_pro": + raise RuntimeError( + "VectorBT Pro is unavailable. Authorized SSH access to the licensed source is " + "required; no credentials are stored in this repository." + ) from error + raise + return verify_environment(framework, target, root=root) + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + selection = parser.add_mutually_exclusive_group(required=True) + selection.add_argument("--framework", choices=BUILDABLE_FRAMEWORKS) + selection.add_argument("--all-public", action="store_true") + parser.add_argument("--verify-only", action="store_true") + parser.add_argument("--environment-root", type=Path, default=PROJECT_ROOT) + parser.add_argument("--evidence-output", type=Path) + args = parser.parse_args() + + manifest = load_framework_manifest() + frameworks = PUBLIC_FRAMEWORKS if args.all_public else (args.framework,) + evidence: list[dict[str, Any]] = [] + try: + for framework in frameworks: + if framework is None: + continue + target = manifest.targets[framework] + result = ( + verify_environment(framework, target, root=args.environment_root) + if args.verify_only + else build_environment(framework, target, root=args.environment_root) + ) + evidence.append(result) + print(f"Verified {framework}: {json.dumps(result, sort_keys=True)}") + except (OSError, RuntimeError, ValueError, subprocess.CalledProcessError) as error: + print(f"Environment validation failed: {error}", file=sys.stderr) + return 2 + + if args.evidence_output is not None: + args.evidence_output.parent.mkdir(parents=True, exist_ok=True) + args.evidence_output.write_text( + json.dumps({"schema_version": 1, "environments": evidence}, indent=2, sort_keys=True) + + "\n", + encoding="utf-8", + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/claim_inventory.toml b/validation/claim_inventory.toml new file mode 100644 index 00000000..6e7fd32d --- /dev/null +++ b/validation/claim_inventory.toml @@ -0,0 +1,178 @@ +[metadata] +schema_version = 1 +audit_date = "2026-08-13" + +[[claim]] +id = "library-synthetic-scenario-conformance" +repository = "ml4t/backtest" +paths = ["README.md", "docs/index.md", "docs/user-guide/profiles.md", "validation/README.md", "validation/METHODOLOGY.md", "validation/CORRECTNESS_RESULTS.json"] +type = "correctness" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline"] +required_evidence = ["executed_matrix", "canonical_trade_log", "canonical_fill_log", "equity_curve", "environment_identity"] +status = "verified" +issue = "ml4t/backtest-dev#3" + +[[claim]] +id = "library-real-strategy-equivalence" +repository = "ml4t/backtest" +paths = ["README.md", "docs/index.md", "docs/user-guide/profiles.md", "validation/README.md", "validation/METHODOLOGY.md", "validation/REAL_STRATEGY_RESULTS.json", "validation/real_strategy_applicability.toml"] +type = "correctness" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["frozen_real_strategy_inputs", "complete_canonical_fill_log", "equity_curve", "terminal_value", "negative_control", "environment_identity"] +status = "failed" +issue = "ml4t/backtest-dev#3" + +[[claim]] +id = "library-vectorbt-behavior" +repository = "ml4t/backtest" +paths = ["README.md", "docs/concepts/how-it-works.md", "docs/getting-started/quickstart.md", "docs/user-guide/accounts.md", "docs/user-guide/configuration.md", "docs/user-guide/execution-semantics.md", "docs/user-guide/profiles.md", "docs/user-guide/rebalancing.md", "validation/METHODOLOGY.md", "validation/frameworks/vectorbt_oss.py", "validation/frameworks/vectorbt_pro.py"] +type = "behavioral" +frameworks = ["vectorbt_pro", "vectorbt_oss"] +required_evidence = ["native_microtests", "upstream_source_reference", "adapter_contract"] +status = "verified" +issue = "ml4t/backtest-dev#5" + +[[claim]] +id = "library-backtrader-behavior" +repository = "ml4t/backtest" +paths = ["README.md", "docs/concepts/how-it-works.md", "docs/getting-started/quickstart.md", "docs/user-guide/accounts.md", "docs/user-guide/configuration.md", "docs/user-guide/execution-semantics.md", "docs/user-guide/profiles.md", "docs/user-guide/rebalancing.md", "validation/METHODOLOGY.md", "validation/frameworks/backtrader.py"] +type = "behavioral" +frameworks = ["backtrader"] +required_evidence = ["native_microtests", "upstream_source_reference", "adapter_contract"] +status = "verified" +issue = "ml4t/backtest-dev#6" + +[[claim]] +id = "library-zipline-behavior" +repository = "ml4t/backtest" +paths = ["README.md", "docs/concepts/how-it-works.md", "docs/getting-started/quickstart.md", "docs/user-guide/accounts.md", "docs/user-guide/configuration.md", "docs/user-guide/execution-semantics.md", "docs/user-guide/profiles.md", "validation/METHODOLOGY.md", "validation/frameworks/zipline.py"] +type = "behavioral" +frameworks = ["zipline"] +required_evidence = ["native_microtests", "upstream_source_reference", "adapter_contract"] +status = "verified" +issue = "ml4t/backtest-dev#7" + +[[claim]] +id = "library-lean-behavior" +repository = "ml4t/backtest" +paths = ["README.md", "docs/concepts/how-it-works.md", "docs/user-guide/accounts.md", "docs/user-guide/configuration.md", "docs/user-guide/execution-semantics.md", "docs/user-guide/profiles.md", "validation/lean/README.md", "validation/benchmark_suite.py"] +type = "behavioral" +frameworks = ["lean"] +required_evidence = ["native_microtests", "upstream_source_reference", "adapter_contract"] +status = "verified" +issue = "ml4t/backtest-dev#8" + +[[claim]] +id = "library-synthetic-scale-conformance" +repository = "ml4t/backtest" +paths = ["README.md", "docs/index.md", "docs/user-guide/profiles.md", "validation/README.md", "validation/METHODOLOGY.md", "validation/LARGE_SCALE_RESULTS.json"] +type = "correctness" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["public_workload", "canonical_trade_log", "canonical_fill_log", "equity_curve", "environment_identity"] +status = "verified" +issue = "ml4t/backtest-dev#10" + +[[claim]] +id = "library-controlled-performance" +repository = "ml4t/backtest" +paths = ["validation/cross_framework_performance.py", "validation/PERFORMANCE_RESULTS.json", "validation/run_all_benchmarks.py"] +type = "performance" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["controlled_workload", "warmup_policy", "repetitions", "machine_identity", "raw_timings"] +status = "verified" +issue = "ml4t/backtest-dev#11" + +[[claim]] +id = "library-real-strategy-performance" +repository = "ml4t/backtest" +paths = ["validation/real_strategy_benchmark.py", "validation/REAL_STRATEGY_PERFORMANCE.json", "validation/REAL_STRATEGY_RESULTS.json"] +type = "performance" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["correctness_passing_workload", "engine_only_timer", "warmup_policy", "repetitions", "machine_identity", "raw_timings", "output_identity"] +status = "verified" +issue = "ml4t/backtest-dev#11" + +[[claim]] +id = "library-idiomatic-performance" +repository = "ml4t/backtest" +paths = ["validation/cross_framework_performance.py", "validation/PERFORMANCE_RESULTS.json", "validation/vectorbt_pro/benchmark_performance.py", "validation/backtrader/benchmark_performance.py", "validation/zipline/benchmark_performance.py"] +type = "performance" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["idiomatic_workload", "declared_scope", "warmup_policy", "repetitions", "machine_identity", "raw_timings"] +status = "verified" +issue = "ml4t/backtest-dev#12" + +[[claim]] +id = "library-qualitative-comparison" +repository = "ml4t/backtest" +paths = ["README.md", "docs/index.md", "docs/user-guide/profiles.md", "validation/README.md", "validation/METHODOLOGY.md"] +type = "qualitative" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["upstream_source_reference", "scope_qualification"] +status = "verified" +issue = "ml4t/backtest-dev#13" + +[[claim]] +id = "book-framework-equivalence" +repository = "ml4t/public" +paths = ["16_strategy_simulation/06_framework_parity.py", "16_strategy_simulation/15_lean_engine_parity.py", "16_strategy_simulation/16_case_study_lean_parity.py", "16_strategy_simulation/17_backtrader_zipline_engine_parity.py", "16_strategy_simulation/18_vectorbt_engine_parity.py", "16_strategy_simulation/validation/_library_validation.py", "16_strategy_simulation/validation/adapters/lean_adapter.py", "16_strategy_simulation/validation/adapters/ml4t_adapter.py", "16_strategy_simulation/validation/adapters/vectorbt_adapter.py"] +type = "correctness" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["executed_notebook", "canonical_trade_log", "canonical_fill_log", "equity_curve", "environment_identity"] +status = "unresolved" +issue = "ml4t/backtest-dev#14" + +[[claim]] +id = "book-performance-comparison" +repository = "ml4t/public" +paths = ["16_strategy_simulation/03_single_asset_vectorbt.py", "16_strategy_simulation/04_single_asset_ml4t_backtest.py", "16_strategy_simulation/README.md"] +type = "performance" +frameworks = ["vectorbt_oss"] +required_evidence = ["executed_notebook", "retained_benchmark", "workload_definition", "raw_timings"] +status = "unresolved" +issue = "ml4t/backtest-dev#14" + +[[claim]] +id = "book-framework-tradeoffs" +repository = "ml4t/public" +paths = ["16_strategy_simulation/06_framework_parity.py", "16_strategy_simulation/07_engine_divergence_anatomy.py", "16_strategy_simulation/README.md"] +type = "qualitative" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["executed_notebook", "upstream_source_reference", "scope_qualification"] +status = "unresolved" +issue = "ml4t/backtest-dev#14" + +[[claim]] +id = "content-marketing-correctness" +repository = "ml4t/content-marketing" +paths = ["insights/issues/issue_022/derivatives/hacker-news.md", "insights/issues/issue_022/derivatives/reddit-post.md", "insights/issues/issue_022/reviews/parity-claims-audit.md"] +type = "correctness" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["published_library_evidence", "canonical_comparison", "environment_identity"] +status = "unresolved" +issue = "ml4t/backtest-dev#15" + +[[claim]] +id = "content-marketing-performance" +repository = "ml4t/content-marketing" +paths = ["insights/issues/issue_022/derivatives/hacker-news.md", "insights/issues/issue_022/derivatives/reddit-post.md"] +type = "performance" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["published_library_evidence", "workload_definition", "raw_timings", "scope_qualification"] +status = "unresolved" +issue = "ml4t/backtest-dev#15" + +[[claim]] +id = "content-marketing-qualitative" +repository = "ml4t/content-marketing" +paths = ["insights/issues/issue_022/derivatives/hacker-news.md", "insights/issues/issue_022/derivatives/reddit-post.md", "insights/issues/issue_022/reviews/parity-claims-audit.md"] +type = "qualitative" +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +required_evidence = ["published_library_evidence", "upstream_source_reference", "scope_qualification"] +status = "unresolved" +issue = "ml4t/backtest-dev#15" + +[[unresolved]] +id = "performance-publication-decision" +finding = "Whether to publish dated cross-framework runtime or memory ratios is deferred until the audit results are reviewed." +issue = "ml4t/backtest-dev#15" diff --git a/validation/common/canonical_records.py b/validation/common/canonical_records.py new file mode 100644 index 00000000..f4f20388 --- /dev/null +++ b/validation/common/canonical_records.py @@ -0,0 +1,92 @@ +"""Canonical record extraction shared by scenario adapters.""" + +from __future__ import annotations + +from typing import Any + +import pandas as pd + + +def _first(record: dict[str, Any], *names: str) -> Any: + for name in names: + if name in record: + return record[name] + raise KeyError(f"Record lacks all expected fields: {names}") + + +def vectorbt_fills(order_records: list[dict[str, Any]], *, asset: str) -> list[dict[str, Any]]: + """Convert VectorBT's native filled-order records to the canonical fill surface.""" + return [ + { + "timestamp": _first(record, "Fill Index", "Timestamp"), + "asset": asset, + "side": str(record["Side"]).lower(), + "quantity": abs(float(record["Size"])), + "price": float(record["Price"]), + "commission": abs(float(record.get("Fees", 0.0))), + } + for record in order_records + ] + + +def vectorbt_trades( + trade_records: list[dict[str, Any]], + *, + asset: str, +) -> list[dict[str, Any]]: + """Convert VectorBT's native closed-trade records to the canonical trade surface.""" + normalized: list[dict[str, Any]] = [] + for record in trade_records: + status = str(record.get("Status", "Closed")).lower() + if status != "closed": + continue + entry_price = float(_first(record, "Avg Entry Price", "Entry Price")) + exit_price = float(_first(record, "Avg Exit Price", "Exit Price")) + size = abs(float(record.get("Size", 0.0))) + direction = str(record.get("Direction", "Long")) + commission = abs(float(record.get("Entry Fees", 0.0))) + abs( + float(record.get("Exit Fees", 0.0)) + ) + direction_sign = -1.0 if direction.lower() == "short" else 1.0 + normalized.append( + { + "entry_time": _first(record, "Entry Index", "Entry Timestamp"), + "exit_time": _first(record, "Exit Index", "Exit Timestamp"), + "asset": asset, + "entry_price": entry_price, + "exit_price": exit_price, + "pnl": (exit_price - entry_price) * size * direction_sign - commission, + "size": size, + "direction": direction, + "commission": commission, + } + ) + return normalized + + +def zipline_fills( + transactions: pd.DataFrame, + *, + asset: str, + commission_rate: float = 0.0, + per_share_rate: float = 0.0, +) -> list[dict[str, Any]]: + """Convert Zipline transactions and the configured fee model to canonical fills.""" + if transactions.empty: + return [] + records: list[dict[str, Any]] = [] + for _, transaction in transactions.sort_values("dt").iterrows(): + amount = float(transaction["amount"]) + price = float(transaction["price"]) + commission = abs(amount) * (price * commission_rate + per_share_rate) + records.append( + { + "timestamp": transaction["dt"], + "asset": asset, + "side": "buy" if amount > 0 else "sell", + "quantity": abs(amount), + "price": price, + "commission": commission, + } + ) + return records diff --git a/validation/common/capabilities.py b/validation/common/capabilities.py new file mode 100644 index 00000000..39b53ee1 --- /dev/null +++ b/validation/common/capabilities.py @@ -0,0 +1,74 @@ +"""Declared result surfaces for the scenario comparison adapters.""" + +from __future__ import annotations + +from common.types import CAPABILITY_KEYS + +ML4T_CAPABILITIES = { + "intents": "input_only", + "orders": "unavailable", + "rejections": "unavailable", + "fills": "native", + "positions": "unavailable", + "cash_flows": "aggregate_only", + "open_trades": "unavailable", + "closed_trades": "native", + "exit_reason": "native", + "terminal": "native", +} + +FRAMEWORK_CAPABILITIES = { + "vectorbt_pro": { + "intents": "input_only", + "orders": "native_filled_only", + "rejections": "unavailable", + "fills": "native", + "positions": "unavailable", + "cash_flows": "aggregate_only", + "open_trades": "unavailable", + "closed_trades": "native", + "exit_reason": "unavailable", + "terminal": "native", + }, + "vectorbt_oss": { + "intents": "input_only", + "orders": "native_filled_only", + "rejections": "unavailable", + "fills": "native", + "positions": "unavailable", + "cash_flows": "aggregate_only", + "open_trades": "unavailable", + "closed_trades": "native", + "exit_reason": "unavailable", + "terminal": "native", + }, + "backtrader": { + "intents": "input_only", + "orders": "native_filled_only", + "rejections": "unavailable", + "fills": "native", + "positions": "unavailable", + "cash_flows": "aggregate_only", + "open_trades": "unavailable", + "closed_trades": "native", + "exit_reason": "unavailable", + "terminal": "native", + }, + "zipline": { + "intents": "input_only", + "orders": "native_filled_only", + "rejections": "unavailable", + "fills": "reconstructed", + "positions": "unavailable", + "cash_flows": "aggregate_only", + "open_trades": "unavailable", + "closed_trades": "reconstructed", + "exit_reason": "unavailable", + "terminal": "native", + }, +} + +assert set(ML4T_CAPABILITIES) == set(CAPABILITY_KEYS) +assert all( + set(capabilities) == set(CAPABILITY_KEYS) for capabilities in FRAMEWORK_CAPABILITIES.values() +) diff --git a/validation/common/comparator.py b/validation/common/comparator.py index 1635d51f..f61cf295 100644 --- a/validation/common/comparator.py +++ b/validation/common/comparator.py @@ -2,11 +2,29 @@ from __future__ import annotations +from datetime import date, datetime from decimal import ROUND_HALF_EVEN, Decimal +from typing import Any from .types import CheckResult, ComparisonResult, FrameworkResult, ScenarioConfig, Tolerance CANONICAL_QUANTUM = Decimal("0.00000001") +CANONICAL_QUANTUM_TEXT = format(CANONICAL_QUANTUM, "f") +TRADE_FIELDS = ( + "entry_time", + "exit_time", + "asset", + "direction", + "size", + "entry_price", + "exit_price", + "pnl", + "commission", +) +FILL_FIELDS = ("timestamp", "asset", "side", "quantity", "price", "commission") +_TIMESTAMP_FIELDS = {"entry_time", "exit_time", "timestamp"} +_CASE_INSENSITIVE_FIELDS = {"direction", "side"} +_STRING_FIELDS = {"asset", *_CASE_INSENSITIVE_FIELDS} def _canonical_number(value: int | float) -> Decimal: @@ -14,6 +32,83 @@ def _canonical_number(value: int | float) -> Decimal: return Decimal(str(value)).quantize(CANONICAL_QUANTUM, rounding=ROUND_HALF_EVEN) +def _canonical_session(value: object) -> str: + """Normalize a daily event timestamp to its ISO session date.""" + if isinstance(value, datetime): + return value.date().isoformat() + if isinstance(value, date): + return value.isoformat() + if isinstance(value, str): + session = value[:10] + date.fromisoformat(session) + return session + isoformat = getattr(value, "isoformat", None) + if callable(isoformat): + session = str(isoformat())[:10] + date.fromisoformat(session) + return session + raise TypeError(f"unsupported timestamp type {type(value).__name__}") + + +def _canonical_field(field: str, value: Any) -> Decimal | str: + if field in _TIMESTAMP_FIELDS: + return _canonical_session(value) + if field in _STRING_FIELDS: + if not isinstance(value, str) or not value: + raise TypeError("must be a nonempty string") + return value.lower() if field in _CASE_INSENSITIVE_FIELDS else value + if not isinstance(value, (int, float)) or isinstance(value, bool): + raise TypeError("must be numeric") + return _canonical_number(value) + + +def _compare_records( + *, + name: str, + expected_records: list[dict[str, Any]], + actual_records: list[dict[str, Any]], + fields: tuple[str, ...], +) -> CheckResult: + detail = "exact ordered match" + passed = len(expected_records) == len(actual_records) + if not passed: + detail = f"record_count expected={len(expected_records)}, actual={len(actual_records)}" + else: + for index, (expected_record, actual_record) in enumerate( + zip(expected_records, actual_records, strict=True) + ): + for field in fields: + if field not in expected_record or field not in actual_record: + passed = False + detail = f"record {index} missing required field {field}" + break + try: + expected = _canonical_field(field, expected_record[field]) + actual = _canonical_field(field, actual_record[field]) + except (ArithmeticError, TypeError, ValueError) as error: + passed = False + detail = f"record {index} field {field} is malformed: {error}" + break + if expected != actual: + passed = False + detail = ( + f"record {index} field {field}: expected={expected!r}, actual={actual!r}" + ) + break + if not passed: + break + return CheckResult( + name=name, + passed=passed, + message=detail, + expected=expected_records, + actual=actual_records, + difference=None if passed else detail, + canonical_quantum=CANONICAL_QUANTUM_TEXT, + diagnostic_limit=None, + ) + + def compare_results( scenario: ScenarioConfig, framework_result: FrameworkResult, @@ -55,6 +150,9 @@ def compare_results( ), expected=framework_result.num_trades, actual=ml4t_result.num_trades, + difference=trade_diff, + canonical_quantum="1", + diagnostic_limit=tolerance.trade_count, ) ) @@ -74,6 +172,9 @@ def compare_results( ), expected=fw_value, actual=ml4t_value, + difference=value_diff, + canonical_quantum=CANONICAL_QUANTUM_TEXT, + diagnostic_limit=tolerance.value_pct, ) ) @@ -92,6 +193,9 @@ def compare_results( ), expected=fw_pnl, actual=ml4t_pnl, + difference=pnl_diff, + canonical_quantum=CANONICAL_QUANTUM_TEXT, + diagnostic_limit=tolerance.pnl_abs, ) ) @@ -107,6 +211,9 @@ def compare_results( message="Required commission output is missing", expected=fw_comm, actual=ml4t_comm, + difference="missing", + canonical_quantum=CANONICAL_QUANTUM_TEXT, + diagnostic_limit=tolerance.commission_abs, ) ) else: @@ -122,6 +229,9 @@ def compare_results( ), expected=fw_comm, actual=ml4t_comm, + difference=comm_diff, + canonical_quantum=CANONICAL_QUANTUM_TEXT, + diagnostic_limit=tolerance.commission_abs, ) ) @@ -136,6 +246,9 @@ def compare_results( message="Required exit-price output is missing", expected=fw_exit, actual=ml4t_exit, + difference="missing", + canonical_quantum=CANONICAL_QUANTUM_TEXT, + diagnostic_limit=tolerance.exit_price_abs, ) ) else: @@ -151,51 +264,26 @@ def compare_results( ), expected=fw_exit, actual=ml4t_exit, + difference=exit_diff, + canonical_quantum=CANONICAL_QUANTUM_TEXT, + diagnostic_limit=tolerance.exit_price_abs, ) ) - # Exact trade-by-trade release surface. Timestamps are excluded until every adapter exposes - # them consistently; prices, size, direction, and PnL are mandatory for every reported trade. - required_trade_fields = ("entry_price", "exit_price", "pnl", "size", "direction") - trade_detail = "exact match" - trade_level_passed = len(framework_result.trades) == len(ml4t_result.trades) - if trade_level_passed: - for index, (fw_trade, ml4t_trade) in enumerate( - zip(framework_result.trades, ml4t_result.trades, strict=True) - ): - for field in required_trade_fields: - if field not in fw_trade or field not in ml4t_trade: - trade_level_passed = False - trade_detail = f"trade {index} missing required field {field}" - break - expected = fw_trade[field] - actual = ml4t_trade[field] - if field == "direction": - expected = str(expected).lower() - actual = str(actual).lower() - else: - expected = _canonical_number(expected) - actual = _canonical_number(actual) - if expected != actual: - trade_level_passed = False - trade_detail = ( - f"trade {index} field {field}: expected={expected!r}, actual={actual!r}" - ) - break - if not trade_level_passed: - break - else: - trade_detail = ( - f"record_count expected={len(framework_result.trades)}, " - f"actual={len(ml4t_result.trades)}" - ) checks.append( - CheckResult( + _compare_records( name="trade_level_match", - passed=trade_level_passed, - message=trade_detail, - expected=framework_result.trades, - actual=ml4t_result.trades, + expected_records=framework_result.trades, + actual_records=ml4t_result.trades, + fields=TRADE_FIELDS, + ) + ) + checks.append( + _compare_records( + name="fill_level_match", + expected_records=framework_result.fills, + actual_records=ml4t_result.fills, + fields=FILL_FIELDS, ) ) diff --git a/validation/common/correctness_evidence.py b/validation/common/correctness_evidence.py new file mode 100644 index 00000000..88b19c98 --- /dev/null +++ b/validation/common/correctness_evidence.py @@ -0,0 +1,308 @@ +"""Schema validation, staleness checks, and atomic correctness-evidence promotion.""" + +from __future__ import annotations + +import json +import os +import tempfile +from collections import Counter +from datetime import UTC, datetime +from pathlib import Path +from typing import Any, cast + +from scenarios.definitions import SCENARIOS + +from common.capabilities import FRAMEWORK_CAPABILITIES, ML4T_CAPABILITIES +from common.comparator import CANONICAL_QUANTUM_TEXT, compare_results +from common.framework_registry import FrameworkManifest, load_framework_manifest +from common.provenance import generate_inputs, input_digest, static_digests +from common.types import ValidationRecord, ValidationStatus + +SCHEMA_VERSION = 3 + + +def _framework_metadata(manifest: FrameworkManifest) -> dict[str, dict[str, object]]: + return { + framework_id: manifest.targets[framework_id].evidence_metadata() + for framework_id in manifest.scenario_framework_ids + } + + +def build_report( + records: list[ValidationRecord], + *, + manifest: FrameworkManifest | None = None, +) -> dict[str, object]: + """Build a correctness candidate without deciding whether it can be accepted.""" + target_manifest = manifest or load_framework_manifest() + counts = Counter(record.status.value for record in records) + required = [record for record in records if record.required] + release_passed = bool(required) and all(record.passed for record in required) + return { + "schema_version": SCHEMA_VERSION, + "generated_at": datetime.now(UTC).isoformat(), + "comparison_policy": { + "canonical_quantum": CANONICAL_QUANTUM_TEXT, + "rounding": "ROUND_HALF_EVEN", + "meaning": "equality after canonical quantization, not bit identity", + "record_order": "significant", + "timestamp_domain": "daily session date", + "surfaces": ["terminal", "closed_trades", "fills"], + }, + "frameworks": _framework_metadata(target_manifest), + "release_gate_passed": release_passed, + "summary": {status.value: counts[status.value] for status in ValidationStatus}, + "records": [record.to_dict() for record in records], + } + + +def _mapping(value: object, *, label: str, failures: list[str]) -> dict[str, Any] | None: + if not isinstance(value, dict) or not all(isinstance(key, str) for key in value): + failures.append(f"{label} must be an object") + return None + return cast(dict[str, Any], value) + + +def _expected_pairs(manifest: FrameworkManifest) -> dict[tuple[str, str], tuple[bool, str]]: + return { + (framework, scenario_id): ( + framework in scenario.supported_frameworks, + scenario.name, + ) + for framework in manifest.scenario_framework_ids + for scenario_id, scenario in SCENARIOS.items() + } + + +def _record_evidence_failures( + record: ValidationRecord, + *, + manifest: FrameworkManifest, +) -> list[str]: + identity = f"{record.framework}/{record.scenario_id}" + failures: list[str] = [] + if record.duration_seconds is None or record.duration_seconds < 0: + failures.append(f"{identity} lacks a valid runtime") + if ( + record.provenance is None + or record.framework_result is None + or record.ml4t_result is None + or record.comparison is None + ): + failures.append(f"{identity} lacks complete comparison evidence") + return failures + + scenario = SCENARIOS[record.scenario_id] + target = manifest.targets[record.framework] + provenance = record.provenance + framework_target = _mapping( + provenance.get("framework_target"), label=f"{identity} framework_target", failures=failures + ) + ml4t = _mapping(provenance.get("ml4t"), label=f"{identity} ml4t", failures=failures) + python = _mapping(provenance.get("python"), label=f"{identity} python", failures=failures) + adapter = _mapping(provenance.get("adapter"), label=f"{identity} adapter", failures=failures) + digests = _mapping(provenance.get("digests"), label=f"{identity} digests", failures=failures) + counts = _mapping( + provenance.get("record_counts"), label=f"{identity} record_counts", failures=failures + ) + capabilities = _mapping( + provenance.get("capabilities"), label=f"{identity} capabilities", failures=failures + ) + if framework_target is not None: + expected_target = { + "version": target.version, + "actual_version": target.version, + "immutable_id": target.immutable_id, + } + if framework_target != expected_target: + failures.append(f"{identity} framework target identity differs from the manifest") + if ml4t is not None: + if ml4t.get("dirty") is not False: + failures.append(f"{identity} was produced from a dirty ML4T tree") + commit = ml4t.get("commit") + if not isinstance(commit, str) or len(commit) != 40: + failures.append(f"{identity} lacks a full ML4T commit") + if python is not None and ( + not isinstance(python.get("version"), str) + or not isinstance(python.get("implementation"), str) + ): + failures.append(f"{identity} lacks Python runtime identity") + expected_adapter = { + "module": f"frameworks.{record.framework}", + "path": f"validation/frameworks/{record.framework}.py", + } + if adapter is not None and adapter != expected_adapter: + failures.append(f"{identity} adapter identity differs") + expected_capabilities = { + "framework": FRAMEWORK_CAPABILITIES[record.framework], + "ml4t": ML4T_CAPABILITIES, + } + if capabilities != expected_capabilities: + failures.append(f"{identity} capability declaration differs") + if record.framework_result.capabilities != FRAMEWORK_CAPABILITIES[record.framework]: + failures.append(f"{identity} framework result capabilities differ") + if record.ml4t_result.capabilities != ML4T_CAPABILITIES: + failures.append(f"{identity} ML4T result capabilities differ") + + expected_digests = static_digests(scenario, record.framework) + if digests is not None: + for name, expected in expected_digests.items(): + if digests.get(name) != expected: + failures.append(f"{identity} {name} digest is stale") + + prices, entries, exits = generate_inputs(scenario, record.framework) + expected_input_digest = input_digest(prices, entries, exits) + if provenance.get("input_digest") != expected_input_digest: + failures.append(f"{identity} generated-input digest is stale") + + expected_counts = { + "bars": len(prices), + "entry_signals": int(entries.sum()), + "exit_signals": int(exits.sum()) if exits is not None else 0, + "framework_intents": int(entries.sum()) + (int(exits.sum()) if exits is not None else 0), + "ml4t_intents": int(entries.sum()) + (int(exits.sum()) if exits is not None else 0), + "framework_orders": None, + "ml4t_orders": None, + "framework_fills": len(record.framework_result.fills), + "ml4t_fills": len(record.ml4t_result.fills), + "framework_closed_trades": record.framework_result.num_trades, + "ml4t_closed_trades": record.ml4t_result.num_trades, + } + if counts is not None and counts != expected_counts: + failures.append(f"{identity} record counts differ from retained inputs or outputs") + + expected_comparison = compare_results( + scenario, + record.framework_result, + record.ml4t_result, + ) + if record.comparison.to_dict() != expected_comparison.to_dict(): + failures.append(f"{identity} comparison checks differ from retained outputs") + expected_passed = record.status is ValidationStatus.PASS + if record.comparison.passed is not expected_passed: + failures.append(f"{identity} status conflicts with its comparison verdict") + return failures + + +def correctness_report_failures( + report: dict[str, object], + *, + manifest: FrameworkManifest | None = None, +) -> list[str]: + """Return every reason a candidate cannot replace accepted evidence.""" + target_manifest = manifest or load_framework_manifest() + failures: list[str] = [] + if report.get("schema_version") != SCHEMA_VERSION: + failures.append(f"Unsupported correctness schema: {report.get('schema_version')!r}") + return failures + if not isinstance(report.get("generated_at"), str): + failures.append("Correctness report lacks a generation timestamp") + expected_policy = { + "canonical_quantum": CANONICAL_QUANTUM_TEXT, + "rounding": "ROUND_HALF_EVEN", + "meaning": "equality after canonical quantization, not bit identity", + "record_order": "significant", + "timestamp_domain": "daily session date", + "surfaces": ["terminal", "closed_trades", "fills"], + } + if report.get("comparison_policy") != expected_policy: + failures.append("Correctness comparison policy differs") + if report.get("frameworks") != _framework_metadata(target_manifest): + failures.append("Correctness framework targets differ from the frozen manifest") + if report.get("release_gate_passed") is not True: + failures.append("Correctness release gate did not pass") + + raw_records = report.get("records") + if not isinstance(raw_records, list): + failures.append("Correctness records must be a list") + return failures + + records: dict[tuple[str, str], ValidationRecord] = {} + for index, payload in enumerate(raw_records): + if not isinstance(payload, dict): + failures.append(f"Correctness record {index} must be an object") + continue + try: + record = ValidationRecord.from_dict(cast(dict[str, Any], payload)) + except (KeyError, TypeError, ValueError) as error: + failures.append(f"Correctness record {index} is invalid: {error}") + continue + key = (record.framework, record.scenario_id) + if key in records: + failures.append( + f"Duplicate correctness record: {record.framework}/{record.scenario_id}" + ) + records[key] = record + + expected_pairs = _expected_pairs(target_manifest) + missing = sorted(set(expected_pairs) - set(records)) + unexpected = sorted(set(records) - set(expected_pairs)) + if missing: + failures.append(f"Correctness matrix is missing pairs: {missing}") + if unexpected: + failures.append(f"Correctness matrix has unknown pairs: {unexpected}") + + for key in sorted(set(expected_pairs) & set(records)): + required, scenario_name = expected_pairs[key] + record = records[key] + identity = f"{record.framework}/{record.scenario_id}" + if record.scenario_name != scenario_name: + failures.append(f"{identity} scenario name differs from its definition") + if record.required is not required: + failures.append(f"{identity} required flag differs from the scenario matrix") + expected_status = ValidationStatus.PASS if required else ValidationStatus.UNSUPPORTED + if record.status is not expected_status: + failures.append( + f"{identity} has status {record.status.value}, expected {expected_status.value}" + ) + if required and record.status is ValidationStatus.PASS: + failures.extend(_record_evidence_failures(record, manifest=target_manifest)) + elif not required and not record.detail: + failures.append(f"{identity} unsupported record lacks a reason") + expected_summary = Counter(record.status.value for record in records.values()) + summary = report.get("summary") + if not isinstance(summary, dict) or any( + summary.get(status.value) != expected_summary[status.value] for status in ValidationStatus + ): + failures.append("Correctness summary differs from retained records") + return failures + + +def write_candidate(path: Path, records: list[ValidationRecord]) -> dict[str, object]: + """Write a complete diagnostic candidate, whether it passes or fails.""" + report = build_report(records) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(report, indent=2, sort_keys=True) + "\n", encoding="utf-8") + return report + + +def load_report(path: Path) -> dict[str, object]: + """Load a correctness report with an object root.""" + payload = json.loads(path.read_text(encoding="utf-8")) + if not isinstance(payload, dict): + raise ValueError(f"Correctness report must be an object: {path}") + return cast(dict[str, object], payload) + + +def promote_candidate(candidate: Path, accepted: Path) -> list[str]: + """Atomically copy a valid candidate over accepted evidence.""" + report = load_report(candidate) + failures = correctness_report_failures(report) + if failures: + return failures + accepted.parent.mkdir(parents=True, exist_ok=True) + with tempfile.NamedTemporaryFile( + mode="wb", + dir=accepted.parent, + prefix=f".{accepted.name}.", + suffix=".tmp", + delete=False, + ) as temporary: + temporary.write(candidate.read_bytes()) + temporary_path = Path(temporary.name) + try: + os.replace(temporary_path, accepted) + finally: + if temporary_path.exists(): + temporary_path.unlink() + return [] diff --git a/validation/common/data_generators.py b/validation/common/data_generators.py index 85a7f557..9c8b7b9f 100644 --- a/validation/common/data_generators.py +++ b/validation/common/data_generators.py @@ -459,7 +459,7 @@ def generate_stress_data( n_bars: int = 1500, seed: int = 42, ) -> tuple[pd.DataFrame, np.ndarray]: - """Extended market with multiple regimes for stress testing. + """Extended market with multiple regimes for sparse path coverage. Used by: scenario 16. 9 regime transitions, 9 entry signals. @@ -515,3 +515,17 @@ def generate_stress_data( entries[b] = True return df, entries + + +def generate_high_event_data( + n_bars: int = 1800, + seed: int = 7, +) -> tuple[pd.DataFrame, np.ndarray, np.ndarray]: + """Generate hundreds of completed round trips for event-surface validation.""" + return generate_random_walk( + n_bars=n_bars, + seed=seed, + hold_bars=1, + trade_spacing=3, + daily_vol=0.002, + ) diff --git a/validation/common/framework_registry.py b/validation/common/framework_registry.py new file mode 100644 index 00000000..69f06565 --- /dev/null +++ b/validation/common/framework_registry.py @@ -0,0 +1,299 @@ +"""Validated framework targets and comparison-claim inventory.""" + +from __future__ import annotations + +import re +import tomllib +from dataclasses import dataclass +from pathlib import Path +from typing import Any + +VALIDATION_DIR = Path(__file__).parents[1] +DEFAULT_MANIFEST_PATH = VALIDATION_DIR / "framework_targets.toml" +DEFAULT_CLAIM_INVENTORY_PATH = VALIDATION_DIR / "claim_inventory.toml" +_EXACT_VERSION = re.compile(r"^[0-9][0-9A-Za-z._+-]*$") +_IMMUTABLE_ID = re.compile(r"^(?:git:[0-9a-f]{7,40}|sha256:[0-9a-f]{64})$") +_CLAIM_TYPES = {"behavioral", "correctness", "performance", "qualitative"} +_ACCESS_TYPES = {"public", "licensed"} + + +class ManifestError(ValueError): + """A framework or claim manifest violates its schema.""" + + +@dataclass(frozen=True) +class FrameworkTarget: + """One immutable comparison target.""" + + framework_id: str + display_name: str + package: str + version: str + profile: str + python: str + license: str + access: str + source: str + immutable_id: str + scenario_matrix: bool + required_scenarios: int + unsupported_scenarios: int + source_commit: str | None = None + artifact: str | None = None + environment: str | None = None + python_env_var: str | None = None + platform_artifact: str | None = None + cli_version: str | None = None + cli_immutable_id: str | None = None + + def evidence_metadata(self) -> dict[str, object]: + """Return complete target identity for retained evidence.""" + metadata: dict[str, object] = { + "display_name": self.display_name, + "profile": self.profile, + "package": self.package, + "version": self.version, + "python": self.python, + "license": self.license, + "access": self.access, + "source": self.source, + "immutable_id": self.immutable_id, + } + optional = { + "commit": self.source_commit, + "artifact": self.artifact, + "platform_artifact": self.platform_artifact, + "cli_version": self.cli_version, + "cli_immutable_id": self.cli_immutable_id, + } + metadata.update({key: value for key, value in optional.items() if value is not None}) + return metadata + + +@dataclass(frozen=True) +class FrameworkManifest: + """Frozen comparison target set.""" + + schema_version: int + freeze_date: str + scenario_framework_ids: tuple[str, ...] + targets: dict[str, FrameworkTarget] + + +@dataclass(frozen=True) +class Claim: + """One externally visible comparison claim surface.""" + + claim_id: str + repository: str + paths: tuple[str, ...] + claim_type: str + frameworks: tuple[str, ...] + required_evidence: tuple[str, ...] + status: str + issue: str + + +@dataclass(frozen=True) +class UnresolvedFinding: + """One known audit finding routed to an implementation issue.""" + + finding_id: str + finding: str + issue: str + + +@dataclass(frozen=True) +class ClaimInventory: + """Dated inventory of claims and unresolved findings.""" + + schema_version: int + audit_date: str + claims: tuple[Claim, ...] + unresolved: tuple[UnresolvedFinding, ...] + + +def _load_toml(path: Path) -> dict[str, Any]: + try: + with path.open("rb") as file: + payload = tomllib.load(file) + except tomllib.TOMLDecodeError as error: + raise ManifestError(f"Invalid TOML in {path}: {error}") from error + if not isinstance(payload, dict): + raise ManifestError(f"Manifest must be a TOML table: {path}") + return payload + + +def _required(table: dict[str, Any], field: str, *, context: str) -> Any: + if field not in table: + raise ManifestError(f"{context} missing required field '{field}'") + return table[field] + + +def _string(table: dict[str, Any], field: str, *, context: str) -> str: + value = _required(table, field, context=context) + if not isinstance(value, str) or not value.strip(): + raise ManifestError(f"{context} field '{field}' must be a non-empty string") + return value + + +def _strings(table: dict[str, Any], field: str, *, context: str) -> tuple[str, ...]: + value = _required(table, field, context=context) + if not isinstance(value, list) or not value or not all(isinstance(item, str) for item in value): + raise ManifestError(f"{context} field '{field}' must be a non-empty string array") + return tuple(value) + + +def load_framework_manifest(path: Path = DEFAULT_MANIFEST_PATH) -> FrameworkManifest: + """Load and validate frozen comparison targets.""" + payload = _load_toml(path) + metadata = payload.get("metadata") + frameworks = payload.get("framework") + if not isinstance(metadata, dict) or not isinstance(frameworks, dict) or not frameworks: + raise ManifestError("Framework manifest requires metadata and framework tables") + + schema_version = _required(metadata, "schema_version", context="metadata") + if schema_version != 1: + raise ManifestError(f"Unsupported framework manifest schema: {schema_version}") + freeze_date = _string(metadata, "freeze_date", context="metadata") + scenario_frameworks = _strings(metadata, "scenario_frameworks", context="metadata") + + targets: dict[str, FrameworkTarget] = {} + for framework_id, raw_target in frameworks.items(): + context = f"framework.{framework_id}" + if not isinstance(raw_target, dict): + raise ManifestError(f"{context} must be a table") + version = _string(raw_target, "version", context=context) + if not _EXACT_VERSION.fullmatch(version): + raise ManifestError(f"{context} version must be an exact version: {version!r}") + immutable_id = _string(raw_target, "immutable_id", context=context) + if not _IMMUTABLE_ID.fullmatch(immutable_id): + raise ManifestError(f"{context} immutable_id is not an immutable Git or SHA-256 ID") + access = _string(raw_target, "access", context=context) + if access not in _ACCESS_TYPES: + raise ManifestError(f"{context} access must be one of {sorted(_ACCESS_TYPES)}") + scenario_matrix = _required(raw_target, "scenario_matrix", context=context) + if not isinstance(scenario_matrix, bool): + raise ManifestError(f"{context} scenario_matrix must be a boolean") + required_scenarios = _required(raw_target, "required_scenarios", context=context) + unsupported_scenarios = _required(raw_target, "unsupported_scenarios", context=context) + if ( + not isinstance(required_scenarios, int) + or isinstance(required_scenarios, bool) + or required_scenarios < 0 + or not isinstance(unsupported_scenarios, int) + or isinstance(unsupported_scenarios, bool) + or unsupported_scenarios < 0 + ): + raise ManifestError(f"{context} scenario counts must be nonnegative integers") + + target = FrameworkTarget( + framework_id=framework_id, + display_name=_string(raw_target, "display_name", context=context), + package=_string(raw_target, "package", context=context), + version=version, + profile=_string(raw_target, "profile", context=context), + python=_string(raw_target, "python", context=context), + license=_string(raw_target, "license", context=context), + access=access, + source=_string(raw_target, "source", context=context), + immutable_id=immutable_id, + scenario_matrix=scenario_matrix, + required_scenarios=required_scenarios, + unsupported_scenarios=unsupported_scenarios, + source_commit=raw_target.get("source_commit"), + artifact=raw_target.get("artifact"), + environment=raw_target.get("environment"), + python_env_var=raw_target.get("python_env_var"), + platform_artifact=raw_target.get("platform_artifact"), + cli_version=raw_target.get("cli_version"), + cli_immutable_id=raw_target.get("cli_immutable_id"), + ) + if scenario_matrix and (not target.environment or not target.python_env_var): + raise ManifestError(f"{context} scenario target lacks interpreter configuration") + targets[framework_id] = target + + if len(set(scenario_frameworks)) != len(scenario_frameworks): + raise ManifestError("metadata scenario_frameworks contains duplicates") + unknown = set(scenario_frameworks) - set(targets) + if unknown: + raise ManifestError( + f"metadata scenario_frameworks names unknown targets: {sorted(unknown)}" + ) + declared = {key for key, target in targets.items() if target.scenario_matrix} + if set(scenario_frameworks) != declared: + raise ManifestError("metadata scenario_frameworks disagrees with target declarations") + + return FrameworkManifest(schema_version, freeze_date, scenario_frameworks, targets) + + +def load_claim_inventory( + path: Path = DEFAULT_CLAIM_INVENTORY_PATH, + *, + manifest: FrameworkManifest | None = None, +) -> ClaimInventory: + """Load and validate the dated comparison-claim inventory.""" + target_manifest = manifest or load_framework_manifest() + payload = _load_toml(path) + metadata = payload.get("metadata") + raw_claims = payload.get("claim") + raw_unresolved = payload.get("unresolved") + if not isinstance(metadata, dict) or not isinstance(raw_claims, list) or not raw_claims: + raise ManifestError("Claim inventory requires metadata and claim tables") + if not isinstance(raw_unresolved, list): + raise ManifestError("Claim inventory requires unresolved tables") + + schema_version = _required(metadata, "schema_version", context="metadata") + if schema_version != 1: + raise ManifestError(f"Unsupported claim inventory schema: {schema_version}") + audit_date = _string(metadata, "audit_date", context="metadata") + + claims: list[Claim] = [] + claim_ids: set[str] = set() + for index, raw_claim in enumerate(raw_claims): + context = f"claim[{index}]" + if not isinstance(raw_claim, dict): + raise ManifestError(f"{context} must be a table") + claim_id = _string(raw_claim, "id", context=context) + if claim_id in claim_ids: + raise ManifestError(f"Duplicate claim id: {claim_id}") + claim_ids.add(claim_id) + claim_type = _string(raw_claim, "type", context=context) + if claim_type not in _CLAIM_TYPES: + raise ManifestError(f"{context} has unknown claim type: {claim_type}") + frameworks = _strings(raw_claim, "frameworks", context=context) + unknown = set(frameworks) - set(target_manifest.targets) + if unknown: + raise ManifestError(f"{context} names unknown framework targets: {sorted(unknown)}") + claims.append( + Claim( + claim_id=claim_id, + repository=_string(raw_claim, "repository", context=context), + paths=_strings(raw_claim, "paths", context=context), + claim_type=claim_type, + frameworks=frameworks, + required_evidence=_strings(raw_claim, "required_evidence", context=context), + status=_string(raw_claim, "status", context=context), + issue=_string(raw_claim, "issue", context=context), + ) + ) + + unresolved: list[UnresolvedFinding] = [] + finding_ids: set[str] = set() + for index, raw_finding in enumerate(raw_unresolved): + context = f"unresolved[{index}]" + if not isinstance(raw_finding, dict): + raise ManifestError(f"{context} must be a table") + finding_id = _string(raw_finding, "id", context=context) + if finding_id in finding_ids: + raise ManifestError(f"Duplicate unresolved finding id: {finding_id}") + finding_ids.add(finding_id) + unresolved.append( + UnresolvedFinding( + finding_id=finding_id, + finding=_string(raw_finding, "finding", context=context), + issue=_string(raw_finding, "issue", context=context), + ) + ) + + return ClaimInventory(schema_version, audit_date, tuple(claims), tuple(unresolved)) diff --git a/validation/common/ml4t_runner.py b/validation/common/ml4t_runner.py index 403fa995..59cbc040 100644 --- a/validation/common/ml4t_runner.py +++ b/validation/common/ml4t_runner.py @@ -16,6 +16,7 @@ PROJECT_ROOT = Path(__file__).parent.parent.parent sys.path.insert(0, str(PROJECT_ROOT / "src")) +from common.capabilities import ML4T_CAPABILITIES # noqa: E402 from common.types import FrameworkResult, ScenarioConfig # noqa: E402 @@ -110,9 +111,12 @@ def run_ml4t( trade_dict: dict[str, Any] = { "entry_time": t.entry_time, "exit_time": t.exit_time, + "asset": t.symbol, "entry_price": t.entry_price, "exit_price": t.exit_price, "pnl": t.pnl, + "commission": t.commission, + "exit_reason": t.exit_reason, } if hasattr(t, "quantity"): trade_dict["size"] = abs(t.quantity) @@ -121,6 +125,19 @@ def run_ml4t( trade_dict["commission"] = t.commission trade_list.append(trade_dict) + fill_list = [ + { + "timestamp": fill.timestamp, + "asset": fill.asset, + "side": fill.side.value, + "quantity": abs(fill.quantity), + "price": fill.price, + "commission": fill.commission, + "exit_reason": fill.exit_reason, + } + for fill in results["fills"] + ] + extra = {} if "commission" in scenario.extra_checks: extra["total_commission"] = sum(f.commission for f in results["fills"]) @@ -133,6 +150,8 @@ def run_ml4t( total_pnl=results["final_value"] - scenario.initial_cash, num_trades=results["num_trades"], trades=trade_list, + fills=fill_list, + capabilities=ML4T_CAPABILITIES, extra=extra, ) diff --git a/validation/common/provenance.py b/validation/common/provenance.py new file mode 100644 index 00000000..374f93cf --- /dev/null +++ b/validation/common/provenance.py @@ -0,0 +1,266 @@ +"""Content-derived provenance for cross-framework correctness evidence.""" + +from __future__ import annotations + +import hashlib +import importlib.metadata +import json +import subprocess +import sys +from dataclasses import asdict +from functools import cache +from pathlib import Path +from typing import Any + +import numpy as np +import pandas as pd + +from common import data_generators +from common.framework_registry import DEFAULT_MANIFEST_PATH, FrameworkTarget +from common.types import FrameworkResult, ScenarioConfig + +VALIDATION_DIR = Path(__file__).parents[1] +PROJECT_ROOT = VALIDATION_DIR.parent +SOURCE_DIR = PROJECT_ROOT / "src" / "ml4t" / "backtest" + + +def _sha256_bytes(value: bytes) -> str: + return hashlib.sha256(value).hexdigest() + + +def file_digest(path: Path) -> str: + """Return a file's SHA-256 digest.""" + return _sha256_bytes(path.read_bytes()) + + +def _json_digest(value: object) -> str: + payload = json.dumps(value, sort_keys=True, separators=(",", ":"), default=str) + return _sha256_bytes(payload.encode("utf-8")) + + +@cache +def _tree_digest(root: Path) -> str: + try: + git_root = Path( + subprocess.run( + ["git", "-C", str(root), "rev-parse", "--show-toplevel"], + check=True, + capture_output=True, + text=True, + ).stdout.strip() + ) + relative_root = root.resolve().relative_to(git_root.resolve()) + tracked = subprocess.run( + ["git", "-C", str(git_root), "ls-files", "-z", "--", relative_root.as_posix()], + check=True, + capture_output=True, + ).stdout + paths = sorted( + git_root / value.decode("utf-8") + for value in tracked.split(b"\0") + if value and value.endswith(b".py") + ) + except (OSError, subprocess.CalledProcessError, ValueError): + paths = sorted(root.rglob("*.py")) + + digest = hashlib.sha256() + for path in paths: + digest.update(path.relative_to(root).as_posix().encode("utf-8")) + digest.update(b"\0") + digest.update(path.read_bytes()) + digest.update(b"\0") + return digest.hexdigest() + + +def generate_inputs( + scenario: ScenarioConfig, + framework: str, +) -> tuple[pd.DataFrame, np.ndarray, np.ndarray | None]: + """Generate and framework-align one scenario input set.""" + generator = getattr(data_generators, scenario.data_generator) + data_result = generator(**scenario.data_kwargs) + if len(data_result) == 3: + prices, entries, exits = data_result + else: + prices, entries = data_result + exits = None + + if framework == "zipline": + import exchange_calendars as xcals + + calendar = xcals.get_calendar("XNYS") + start = prices.index[0] + end = prices.index[-1] + if start.tz is not None: + start = start.tz_convert(None) + end = end.tz_convert(None) + sessions = calendar.sessions_in_range(start, end) + index = prices.index.tz_localize(None) if prices.index.tz else prices.index + valid = index.isin(sessions) + prices = prices[valid].copy() + entries = entries[valid] + if exits is not None: + exits = exits[valid] + return prices, np.asarray(entries), None if exits is None else np.asarray(exits) + + +def input_digest( + prices: pd.DataFrame, + entries: np.ndarray, + exits: np.ndarray | None, +) -> str: + """Hash generated prices and signals independently of pandas hashing internals.""" + if not isinstance(prices.index, pd.DatetimeIndex): + raise TypeError("validation prices must use a DatetimeIndex") + + digest = hashlib.sha256() + frame_identity = { + "columns": [str(column) for column in prices.columns], + "dtypes": [str(dtype) for dtype in prices.dtypes], + "index": { + "dtype": "datetime64[ns]", + "name": prices.index.name, + "timezone": str(prices.index.tz) if prices.index.tz is not None else None, + }, + "shape": prices.shape, + } + digest.update(json.dumps(frame_identity, sort_keys=True).encode("utf-8")) + normalized_index = ( + prices.index.tz_convert("UTC").tz_localize(None) + if prices.index.tz is not None + else prices.index + ) + index_values = np.ascontiguousarray( + normalized_index.to_numpy(dtype="datetime64[ns]").view(" str: + """Hash one declarative scenario definition.""" + return _json_digest(asdict(scenario)) + + +def static_digests(scenario: ScenarioConfig, framework: str) -> dict[str, str]: + """Return behavior-relevant source digests for one comparison pair.""" + adapter_path = VALIDATION_DIR / "frameworks" / f"{framework}.py" + profile_inputs = { + "profile_source": file_digest(SOURCE_DIR / "profiles.py"), + "base": scenario.ml4t_config, + "override": scenario.ml4t_overrides.get(framework, {}), + } + return { + "adapter": file_digest(adapter_path), + "canonical_records": file_digest(VALIDATION_DIR / "common" / "canonical_records.py"), + "capabilities": file_digest(VALIDATION_DIR / "common" / "capabilities.py"), + "comparator": file_digest(VALIDATION_DIR / "common" / "comparator.py"), + "engine": _tree_digest(SOURCE_DIR), + "manifest": file_digest(DEFAULT_MANIFEST_PATH), + "ml4t_runner": file_digest(VALIDATION_DIR / "common" / "ml4t_runner.py"), + "profile": _json_digest(profile_inputs), + "scenario": scenario_digest(scenario), + } + + +def _git_identity() -> dict[str, object]: + commit = subprocess.run( + ["git", "rev-parse", "HEAD"], + cwd=PROJECT_ROOT, + check=True, + capture_output=True, + text=True, + ).stdout.strip() + status = subprocess.run( + ["git", "status", "--porcelain", "--untracked-files=no"], + cwd=PROJECT_ROOT, + check=True, + capture_output=True, + text=True, + ).stdout + return {"commit": commit, "dirty": bool(status.strip())} + + +def installed_framework_version(target: FrameworkTarget) -> str: + """Return the version imported by the isolated scenario environment.""" + return importlib.metadata.version(target.package) + + +def comparison_protocol_metadata(scenario: ScenarioConfig, framework: str) -> dict[str, str]: + """Identify native and adapter-emulated portions of a comparison.""" + if framework != "zipline": + return {"risk_rules": "framework_adapter"} + return { + "commission": "explicit scenario model or NoCommission", + "execution": "custom next-session open-price slippage model", + "fills": "native transactions with fees reconstructed from the configured model", + "risk_rules": "adapter_emulated_daily_ohlc" if scenario.risk_rules else "none", + "trade_records": "adapter_reconstructed_from_native_transactions", + } + + +def build_record_provenance( + *, + scenario: ScenarioConfig, + framework: str, + target: FrameworkTarget, + prices: pd.DataFrame, + entries: np.ndarray, + exits: np.ndarray | None, + framework_result: FrameworkResult, + ml4t_result: FrameworkResult, +) -> dict[str, Any]: + """Build complete provenance for one executed comparison.""" + adapter_path = VALIDATION_DIR / "frameworks" / f"{framework}.py" + return { + "framework_target": { + "version": target.version, + "actual_version": installed_framework_version(target), + "immutable_id": target.immutable_id, + }, + "ml4t": _git_identity(), + "python": { + "version": sys.version.split()[0], + "implementation": sys.implementation.name, + }, + "adapter": { + "module": f"frameworks.{framework}", + "path": adapter_path.relative_to(PROJECT_ROOT).as_posix(), + }, + "comparison_protocol": comparison_protocol_metadata(scenario, framework), + "capabilities": { + "framework": framework_result.capabilities, + "ml4t": ml4t_result.capabilities, + }, + "digests": static_digests(scenario, framework), + "input_digest": input_digest(prices, entries, exits), + "record_counts": { + "bars": len(prices), + "entry_signals": int(entries.sum()), + "exit_signals": int(exits.sum()) if exits is not None else 0, + "framework_intents": int(entries.sum()) + + (int(exits.sum()) if exits is not None else 0), + "ml4t_intents": int(entries.sum()) + (int(exits.sum()) if exits is not None else 0), + "framework_orders": None, + "ml4t_orders": None, + "framework_fills": len(framework_result.fills), + "ml4t_fills": len(ml4t_result.fills), + "framework_closed_trades": framework_result.num_trades, + "ml4t_closed_trades": ml4t_result.num_trades, + }, + } diff --git a/validation/common/types.py b/validation/common/types.py index 324c4ac1..f02cd2a2 100644 --- a/validation/common/types.py +++ b/validation/common/types.py @@ -2,10 +2,55 @@ from __future__ import annotations +import math from dataclasses import dataclass, field +from decimal import Decimal from enum import StrEnum from typing import Any +from common.framework_registry import load_framework_manifest + + +def _scenario_frameworks() -> list[str]: + return list(load_framework_manifest().scenario_framework_ids) + + +def _json_value(value: Any) -> Any: + if value is None or isinstance(value, (bool, int, float, str)): + return value + if isinstance(value, Decimal): + return str(value) + if isinstance(value, dict): + return {str(key): _json_value(item) for key, item in value.items()} + if isinstance(value, (list, tuple)): + return [_json_value(item) for item in value] + if hasattr(value, "item"): + return _json_value(value.item()) + if hasattr(value, "isoformat"): + return value.isoformat() + raise TypeError(f"Value is not JSON serializable: {type(value).__name__}") + + +def _required_string(value: object, label: str) -> str: + if not isinstance(value, str) or not value: + raise TypeError(f"{label} must be a nonempty string") + return value + + +def _required_bool(value: object, label: str) -> bool: + if not isinstance(value, bool): + raise TypeError(f"{label} must be a boolean") + return value + + +def _required_number(value: object, label: str) -> float: + if not isinstance(value, (int, float)) or isinstance(value, bool): + raise TypeError(f"{label} must be numeric") + number = float(value) + if not math.isfinite(number): + raise ValueError(f"{label} must be finite") + return number + class ValidationStatus(StrEnum): """Terminal status for one framework/scenario validation attempt.""" @@ -34,6 +79,11 @@ class ValidationRecord: status: ValidationStatus required: bool detail: str | None = None + duration_seconds: float | None = None + provenance: dict[str, Any] | None = None + framework_result: FrameworkResult | None = None + ml4t_result: FrameworkResult | None = None + comparison: ComparisonResult | None = None @property def passed(self) -> bool: @@ -47,7 +97,7 @@ def release_blocking(self) -> bool: def to_dict(self) -> dict[str, Any]: """Return a JSON-serializable record.""" - return { + payload = { "framework": self.framework, "scenario_id": self.scenario_id, "scenario_name": self.scenario_name, @@ -55,7 +105,15 @@ def to_dict(self) -> dict[str, Any]: "required": self.required, "release_blocking": self.release_blocking, "detail": self.detail, + "duration_seconds": self.duration_seconds, + "provenance": _json_value(self.provenance), + "framework_result": ( + self.framework_result.to_dict() if self.framework_result is not None else None + ), + "ml4t_result": self.ml4t_result.to_dict() if self.ml4t_result is not None else None, + "comparison": self.comparison.to_dict() if self.comparison is not None else None, } + return payload @classmethod def from_dict(cls, payload: dict[str, Any]) -> ValidationRecord: @@ -70,20 +128,66 @@ def from_dict(cls, payload: dict[str, Any]) -> ValidationRecord: scenario_name = payload["scenario_name"] required = payload["required"] detail = payload.get("detail") + duration_seconds = payload.get("duration_seconds") + provenance = payload.get("provenance") if not all(isinstance(value, str) for value in (framework, scenario_id, scenario_name)): raise TypeError("Validation record identifiers must be strings") if not isinstance(required, bool): raise TypeError("Validation record required must be a boolean") if detail is not None and not isinstance(detail, str): raise TypeError("Validation record detail must be a string or null") + if duration_seconds is not None and ( + not isinstance(duration_seconds, (int, float)) or isinstance(duration_seconds, bool) + ): + raise TypeError("Validation record duration_seconds must be numeric or null") + if provenance is not None and not isinstance(provenance, dict): + raise TypeError("Validation record provenance must be an object or null") + + framework_result_payload = payload.get("framework_result") + ml4t_result_payload = payload.get("ml4t_result") + comparison_payload = payload.get("comparison") + framework_result = ( + FrameworkResult.from_dict(framework_result_payload) + if isinstance(framework_result_payload, dict) + else None + ) + ml4t_result = ( + FrameworkResult.from_dict(ml4t_result_payload) + if isinstance(ml4t_result_payload, dict) + else None + ) + comparison = ( + ComparisonResult.from_dict(comparison_payload) + if isinstance(comparison_payload, dict) + else None + ) + evidence_fields = (framework_result_payload, ml4t_result_payload, comparison_payload) + if any(value is not None for value in evidence_fields) and any( + value is None for value in evidence_fields + ): + raise ValueError("Validation record comparison evidence must be complete") + status = ValidationStatus(payload["status"]) + if status in {ValidationStatus.PASS, ValidationStatus.COMPARISON_FAILURE} and ( + provenance is None + or duration_seconds is None + or framework_result is None + or ml4t_result is None + or comparison is None + ): + raise ValueError("Compared validation record lacks complete evidence") return cls( framework=framework, scenario_id=scenario_id, scenario_name=scenario_name, - status=ValidationStatus(payload["status"]), + status=status, required=required, detail=detail, + duration_seconds=float(duration_seconds) if duration_seconds is not None else None, + provenance=provenance, + framework_result=framework_result, + ml4t_result=ml4t_result, + comparison=comparison, ) @@ -91,11 +195,38 @@ class ValidationSkipped(RuntimeError): """Raised by an adapter that elects not to execute a required scenario.""" +CAPABILITY_KEYS = ( + "intents", + "orders", + "rejections", + "fills", + "positions", + "cash_flows", + "open_trades", + "closed_trades", + "exit_reason", + "terminal", +) +CAPABILITY_VALUES = { + "native", + "native_filled_only", + "reconstructed", + "input_only", + "aggregate_only", + "unavailable", +} + + +def unavailable_capabilities() -> dict[str, str]: + """Return an explicit declaration that no optional result surface is available.""" + return dict.fromkeys(CAPABILITY_KEYS, "unavailable") + + @dataclass class ScenarioConfig: """Declarative definition of a validation scenario.""" - id: str # "01", "02", ..., "16" + id: str # "01", "02", ..., "17" name: str # Human-readable name description: str @@ -122,9 +253,7 @@ class ScenarioConfig: default_tolerance: Tolerance | None = None # Which frameworks support this scenario - supported_frameworks: list[str] = field( - default_factory=lambda: ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline"] - ) + supported_frameworks: list[str] = field(default_factory=_scenario_frameworks) # Extra comparison checks beyond standard (trade count, final value, pnl) extra_checks: list[str] = field(default_factory=list) @@ -162,8 +291,67 @@ class FrameworkResult: total_pnl: float num_trades: int trades: list[dict[str, Any]] = field(default_factory=list) + fills: list[dict[str, Any]] = field(default_factory=list) + capabilities: dict[str, str] = field(default_factory=unavailable_capabilities) extra: dict[str, Any] = field(default_factory=dict) + def to_dict(self) -> dict[str, Any]: + return { + "framework": self.framework, + "final_value": self.final_value, + "total_pnl": self.total_pnl, + "num_trades": self.num_trades, + "trades": _json_value(self.trades), + "fills": _json_value(self.fills), + "capabilities": _json_value(self.capabilities), + "extra": _json_value(self.extra), + } + + @classmethod + def from_dict(cls, payload: dict[str, Any]) -> FrameworkResult: + required = { + "framework", + "final_value", + "total_pnl", + "num_trades", + "trades", + "fills", + "capabilities", + "extra", + } + missing = sorted(required - payload.keys()) + if missing: + raise ValueError(f"Framework result missing fields: {', '.join(missing)}") + trades = payload["trades"] + fills = payload["fills"] + capabilities = payload["capabilities"] + extra = payload["extra"] + num_trades = payload["num_trades"] + if not isinstance(trades, list) or not all(isinstance(trade, dict) for trade in trades): + raise TypeError("Framework result trades must be an object array") + if not isinstance(fills, list) or not all(isinstance(fill, dict) for fill in fills): + raise TypeError("Framework result fills must be an object array") + if not isinstance(capabilities, dict) or set(capabilities) != set(CAPABILITY_KEYS): + raise TypeError("Framework result capabilities must declare every canonical surface") + if not all( + isinstance(value, str) and value in CAPABILITY_VALUES for value in capabilities.values() + ): + raise ValueError("Framework result capabilities contain an unsupported declaration") + if not isinstance(extra, dict): + raise TypeError("Framework result trades and extra have invalid types") + if not isinstance(num_trades, int) or isinstance(num_trades, bool) or num_trades < 0: + raise TypeError("Framework result num_trades must be a nonnegative integer") + return cls( + framework=_required_string(payload["framework"], "Framework result framework"), + final_value=_required_number(payload["final_value"], "Framework result final_value"), + total_pnl=_required_number(payload["total_pnl"], "Framework result total_pnl"), + num_trades=num_trades, + trades=trades, + fills=fills, + capabilities=capabilities, + extra=extra, + ) + @dataclass class ComparisonResult: @@ -174,6 +362,30 @@ class ComparisonResult: passed: bool checks: list[CheckResult] = field(default_factory=list) + def to_dict(self) -> dict[str, Any]: + return { + "scenario_id": self.scenario_id, + "framework": self.framework, + "passed": self.passed, + "checks": [check.to_dict() for check in self.checks], + } + + @classmethod + def from_dict(cls, payload: dict[str, Any]) -> ComparisonResult: + required = {"scenario_id", "framework", "passed", "checks"} + missing = sorted(required - payload.keys()) + if missing: + raise ValueError(f"Comparison result missing fields: {', '.join(missing)}") + checks = payload.get("checks") + if not isinstance(checks, list) or not all(isinstance(check, dict) for check in checks): + raise TypeError("Comparison checks must be an object array") + return cls( + scenario_id=_required_string(payload["scenario_id"], "Comparison scenario_id"), + framework=_required_string(payload["framework"], "Comparison framework"), + passed=_required_bool(payload["passed"], "Comparison passed"), + checks=[CheckResult.from_dict(check) for check in checks], + ) + @property def summary(self) -> str: status = "PASS" if self.passed else "FAIL" @@ -193,3 +405,46 @@ class CheckResult: message: str expected: Any = None actual: Any = None + difference: Any = None + canonical_quantum: str | None = None + diagnostic_limit: Any = None + + def to_dict(self) -> dict[str, Any]: + return { + "name": self.name, + "passed": self.passed, + "canonical_quantum": self.canonical_quantum, + "expected": _json_value(self.expected), + "actual": _json_value(self.actual), + "difference": _json_value(self.difference), + "diagnostic_limit": _json_value(self.diagnostic_limit), + "message": self.message, + } + + @classmethod + def from_dict(cls, payload: dict[str, Any]) -> CheckResult: + required = { + "name", + "passed", + "canonical_quantum", + "expected", + "actual", + "difference", + "diagnostic_limit", + "message", + } + missing = sorted(required - payload.keys()) + if missing: + raise ValueError(f"Comparison check missing fields: {', '.join(missing)}") + return cls( + name=_required_string(payload["name"], "Comparison check name"), + passed=_required_bool(payload["passed"], "Comparison check passed"), + message=_required_string(payload["message"], "Comparison check message"), + expected=payload["expected"], + actual=payload["actual"], + difference=payload["difference"], + canonical_quantum=_required_string( + payload["canonical_quantum"], "Comparison check canonical_quantum" + ), + diagnostic_limit=payload["diagnostic_limit"], + ) diff --git a/validation/cross_framework_performance.py b/validation/cross_framework_performance.py new file mode 100644 index 00000000..ba8b101b --- /dev/null +++ b/validation/cross_framework_performance.py @@ -0,0 +1,949 @@ +#!/usr/bin/env python3 +"""Generate controlled and idiomatic cross-framework performance evidence.""" + +from __future__ import annotations + +import argparse +import hashlib +import http.client +import json +import os +import platform +import random +import socket +import subprocess +import sys +import tempfile +import urllib.parse +from contextlib import redirect_stdout +from dataclasses import asdict, dataclass +from datetime import UTC, datetime +from io import StringIO +from pathlib import Path +from statistics import median +from time import perf_counter, sleep +from typing import Any, cast + +VALIDATION_DIR = Path(__file__).parent +PROJECT_ROOT = VALIDATION_DIR.parent +sys.path.insert(0, str(PROJECT_ROOT)) +sys.path.insert(0, str(PROJECT_ROOT / "src")) +sys.path.insert(0, str(VALIDATION_DIR)) + +import benchmark_suite as suite # noqa: E402 +import large_scale_evidence as scale # noqa: E402 +from common.framework_registry import load_framework_manifest # noqa: E402 + +SCHEMA_VERSION = 1 +MIN_SAMPLES = 10 +BOOTSTRAP_RESAMPLES = 10_000 +BOOTSTRAP_CONFIDENCE = 0.95 +WORKER_TIMEOUT_SECONDS = 900 +ACCEPTED_PATH = VALIDATION_DIR / "PERFORMANCE_RESULTS.json" +CANDIDATE_PATH = VALIDATION_DIR / "candidates" / "PERFORMANCE_RESULTS.candidate.json" +THREAD_ENVIRONMENT = { + "MKL_NUM_THREADS": "1", + "NUMBA_NUM_THREADS": "1", + "OMP_NUM_THREADS": "1", + "OPENBLAS_NUM_THREADS": "1", + "POLARS_MAX_THREADS": "1", + "PYTHONHASHSEED": "0", +} +MEASUREMENT_PROTOCOL = { + "process_isolation": "one fresh child process per warm-up and measured repetition", + "warmup": "one unmeasured isolated process per runner before measured repetitions", + "runtime_primary": ( + "parent perf_counter around the complete child process, including interpreter startup, " + "imports, deterministic input generation, adapter setup, engine execution, output " + "extraction, canonical validation, and process teardown" + ), + "runtime_secondary": "adapter-reported engine interval and worker stage intervals", + "memory": "child resource.getrusage(RUSAGE_SELF).ru_maxrss over the complete process", + "cache_policy": ( + "installed packages and compiled framework caches persist; inputs and framework state are " + "rebuilt in every child; Zipline uses a new bundle root for every child" + ), + "thread_environment": THREAD_ENVIRONMENT, + "uncertainty": { + "method": "deterministic percentile bootstrap of the sample median", + "confidence": BOOTSTRAP_CONFIDENCE, + "resamples": BOOTSTRAP_RESAMPLES, + }, +} + + +@dataclass(frozen=True) +class RunnerSpec: + """One framework side measured in its locked environment.""" + + runner_id: str + framework: str + side: str + profile: str + + +WORKLOAD = scale.ScaleWorkload( + name="performance_50_assets_252_sessions", + seed=42, + bars=252, + assets=50, + top_n=5, + bottom_n=5, + rebalance_frequency=1, + end_session="2025-12-31", +) + +RUNNERS = tuple( + runner + for framework, profile in ( + ("vectorbt_pro", "vectorbt_strict"), + ("vectorbt_oss", "vectorbt_oss_strict"), + ("backtrader", "backtrader_strict"), + ("zipline", "zipline_strict"), + ("lean", "lean"), + ) + for runner in ( + RunnerSpec(f"{framework}:external", framework, "external", profile), + RunnerSpec(f"{framework}:ml4t", framework, "ml4t", profile), + ) +) +RUNNERS_BY_ID = {runner.runner_id: runner for runner in RUNNERS} + +IDIOMATIC_RUNNERS = { + "ml4t_backtest": "vectorbt_oss:ml4t", + "vectorbt_pro": "vectorbt_pro:external", + "vectorbt_oss": "vectorbt_oss:external", + "backtrader": "backtrader:external", + "zipline": "zipline:external", + "lean": "lean:external", +} +IDIOMATIC_DISCLOSURES = { + "ml4t_backtest": ( + "Event-driven Strategy and Engine API with the vectorbt_oss_strict profile; this is one " + "documented ML4T configuration, not a framework-wide default-performance claim." + ), + "vectorbt_pro": ( + "Vectorized Portfolio.from_orders target-amount API with cash sharing, same-bar close " + "execution, zero costs, and locked short collateral." + ), + "vectorbt_oss": ( + "Vectorized Portfolio.from_orders target-amount API with cash sharing, same-bar close " + "execution, zero costs, and lock_cash enabled." + ), + "backtrader": ( + "Native Cerebro and Strategy callbacks with target orders, next-session open fills, " + "integer shares, zero commission, and enabled submission cash checks." + ), + "zipline": ( + "Native run_algorithm callback and order_target API with daily bundle ingestion, a custom " + "open-price slippage model, and zero commission. Bundle creation is included." + ), + "lean": ( + "Native QCAlgorithm daily callback and market-order API in the frozen LEAN image with the " + "declared margin account, zero fee, and zero slippage models." + ), +} + + +def _json_digest(value: object) -> str: + return hashlib.sha256( + json.dumps(value, sort_keys=True, separators=(",", ":"), default=str).encode() + ).hexdigest() + + +def _source_digests() -> dict[str, str]: + paths = { + "benchmark_suite": VALIDATION_DIR / "benchmark_suite.py", + "framework_manifest": VALIDATION_DIR / "framework_targets.toml", + "performance_runner": Path(__file__), + "profiles": PROJECT_ROOT / "src" / "ml4t" / "backtest" / "profiles.py", + } + return {name: hashlib.sha256(path.read_bytes()).hexdigest() for name, path in paths.items()} + + +def _git_identity() -> dict[str, object]: + commit = subprocess.run( + ["git", "rev-parse", "HEAD"], + cwd=PROJECT_ROOT, + check=True, + capture_output=True, + text=True, + ).stdout.strip() + status = subprocess.run( + ["git", "status", "--porcelain", "--untracked-files=no"], + cwd=PROJECT_ROOT, + check=True, + capture_output=True, + text=True, + ).stdout.strip() + return {"commit": commit, "dirty": bool(status)} + + +def _peak_rss_mb() -> float: + import resource + + peak = float(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss) + return peak / (1024 * 1024) if sys.platform == "darwin" else peak / 1024 + + +def _process_tree_rss_bytes(root_pid: int) -> int: + """Return current RSS for a Linux process and all current descendants.""" + pending = [root_pid] + observed: set[int] = set() + total = 0 + while pending: + pid = pending.pop() + if pid in observed: + continue + observed.add(pid) + try: + status = Path(f"/proc/{pid}/status").read_text(encoding="utf-8") + rss_line = next( + (line for line in status.splitlines() if line.startswith("VmRSS:")), + "VmRSS: 0 kB", + ) + total += int(rss_line.split()[1]) * 1024 + children = Path(f"/proc/{pid}/task/{pid}/children").read_text(encoding="utf-8") + pending.extend(int(child) for child in children.split()) + except (FileNotFoundError, PermissionError, ProcessLookupError, ValueError): + continue + return total + + +class _DockerConnection(http.client.HTTPConnection): + def connect(self) -> None: + self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + self.sock.connect("/var/run/docker.sock") + + +def _docker_json(path: str) -> Any: + connection = _DockerConnection("localhost", timeout=1.0) + try: + connection.request("GET", path) + response = connection.getresponse() + payload = response.read() + if response.status != 200: + raise RuntimeError(f"Docker API {path} returned {response.status}") + return json.loads(payload) + finally: + connection.close() + + +def _docker_container_ids(ancestor: str) -> set[str]: + filters = urllib.parse.quote(json.dumps({"ancestor": [ancestor]}, separators=(",", ":"))) + payload = _docker_json(f"/containers/json?filters={filters}") + if not isinstance(payload, list): + raise RuntimeError("Docker container list was not an array") + return {str(container["Id"]) for container in payload if isinstance(container, dict)} + + +def _docker_container_pid(container_id: str) -> int | None: + payload = _docker_json(f"/containers/{container_id}/json") + if not isinstance(payload, dict) or not isinstance(payload.get("State"), dict): + return None + pid = payload["State"].get("Pid") + return int(pid) if isinstance(pid, int) and pid > 0 else None + + +def _container_cgroup_memory_path(pid: int) -> Path | None: + try: + entries = Path(f"/proc/{pid}/cgroup").read_text(encoding="utf-8").splitlines() + except (FileNotFoundError, PermissionError, ProcessLookupError): + return None + for entry in entries: + parts = entry.split(":", 2) + if len(parts) == 3 and parts[0] == "0": + path = Path("/sys/fs/cgroup") / parts[2].lstrip("/") / "memory.current" + return path if path.is_file() else None + return None + + +def _execute_with_memory_monitor( + command: list[str], + *, + cwd: Path, + env: dict[str, str], + timeout: float, + docker_ancestor: str | None = None, +) -> tuple[subprocess.CompletedProcess[str], float, float, bool]: + """Execute a worker while sampling its process tree and optional container cgroup.""" + existing_containers = ( + _docker_container_ids(docker_ancestor) if docker_ancestor is not None else set() + ) + started = perf_counter() + process = subprocess.Popen( + command, + cwd=cwd, + env=env, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + peak_bytes = 0 + container_path: Path | None = None + container_observed = docker_ancestor is None + next_docker_poll = started + deadline = started + timeout + while process.poll() is None: + if perf_counter() > deadline: + process.kill() + stdout, stderr = process.communicate() + raise RuntimeError( + f"Performance worker exceeded {timeout:.0f}s: {(stderr or stdout).strip()[-2_000:]}" + ) + tree_bytes = _process_tree_rss_bytes(process.pid) + container_bytes = 0 + if ( + docker_ancestor is not None + and container_path is None + and perf_counter() >= next_docker_poll + ): + next_docker_poll = perf_counter() + 0.1 + current = _docker_container_ids(docker_ancestor) - existing_containers + if current: + container_id = sorted(current)[0] + container_pid = _docker_container_pid(container_id) + if container_pid is not None: + container_path = _container_cgroup_memory_path(container_pid) + container_observed = container_path is not None + if container_path is not None: + try: + container_bytes = int(container_path.read_text(encoding="utf-8").strip()) + except (FileNotFoundError, PermissionError, ProcessLookupError, ValueError): + container_path = None + peak_bytes = max(peak_bytes, tree_bytes + container_bytes) + sleep(0.02) + peak_bytes = max(peak_bytes, _process_tree_rss_bytes(process.pid)) + stdout, stderr = process.communicate() + completed = subprocess.CompletedProcess(command, process.returncode, stdout, stderr) + return completed, perf_counter() - started, peak_bytes / (1024 * 1024), container_observed + + +def _run_external( + framework: str, + config: suite.BenchmarkConfig, + price_data: dict[str, Any], + signals: Any, + dates: Any, +) -> suite.BenchmarkResult: + runners = { + "vectorbt_pro": suite.benchmark_vectorbt_pro, + "vectorbt_oss": suite.benchmark_vectorbt_oss, + "backtrader": suite.benchmark_backtrader, + "zipline": suite.benchmark_zipline, + "lean": suite.benchmark_lean, + } + return runners[framework](config, price_data, signals, dates) + + +def _run_ml4t( + runner: RunnerSpec, + config: suite.BenchmarkConfig, + price_data: dict[str, Any], + signals: Any, + dates: Any, +) -> suite.BenchmarkResult: + execution_mode = "same_bar" if runner.framework.startswith("vectorbt") else "next_bar" + return suite.benchmark_ml4t( + config, + price_data, + signals, + dates, + execution_mode=execution_mode, + profile_override=runner.profile, + ) + + +def _surface_signature(result: suite.BenchmarkResult, effective_prices: dict[str, Any]) -> dict: + result.trades_df = suite.closed_trades_from_fills(result.fills_df) + trade_records = suite.canonical_trade_records(result.trades_df, timestamp_domain="session_date") + result.num_trades = len(trade_records) if trade_records is not None else 0 + intents = suite.canonical_target_records(result.target_trace_df) + fills = suite.canonical_fill_records(result.fills_df, timestamp_domain="session_date") + trades = trade_records + if intents is None or fills is None or trades is None: + raise RuntimeError("Performance runner did not expose every controlled output surface") + terminal = scale._terminal_state(result, effective_prices, WORKLOAD.initial_cash) + return { + "order_intents": {"count": len(intents), "sha256": suite._records_hash(intents)}, + "fills": {"count": len(fills), "sha256": suite._records_hash(fills)}, + "trades": {"count": len(trades), "sha256": suite._records_hash(trades)}, + "trade_count": len(trades), + "total_pnl": scale._canonical_money(result.final_value - WORKLOAD.initial_cash), + "final_value": scale._canonical_money(result.final_value), + "terminal_state_sha256": terminal["sha256"], + } + + +def run_worker(runner: RunnerSpec) -> dict[str, Any]: + """Run one measured framework side and return its validated output signature.""" + started = perf_counter() + manifest = load_framework_manifest() + target = manifest.targets[runner.framework] + actual_target = scale._actual_target(target) + config = WORKLOAD.benchmark_config() + + input_started = perf_counter() + price_data, signals, dates = suite.generate_benchmark_data(config, seed=WORKLOAD.seed) + raw_input_sha256 = scale.input_digest(price_data, signals, dates) + effective_prices = scale._effective_prices(runner.framework, price_data) + effective_input_sha256 = scale.input_digest(effective_prices, signals, dates) + input_seconds = perf_counter() - input_started + + framework_started = perf_counter() + output_log = StringIO() + with redirect_stdout(output_log): + if runner.framework == "zipline": + with tempfile.TemporaryDirectory(prefix="ml4t-performance-zipline-") as root: + previous_root = os.environ.get("ZIPLINE_ROOT") + os.environ["ZIPLINE_ROOT"] = root + try: + result = ( + _run_external(runner.framework, config, price_data, signals, dates) + if runner.side == "external" + else _run_ml4t(runner, config, price_data, signals, dates) + ) + finally: + if previous_root is None: + os.environ.pop("ZIPLINE_ROOT", None) + else: + os.environ["ZIPLINE_ROOT"] = previous_root + else: + result = ( + _run_external(runner.framework, config, price_data, signals, dates) + if runner.side == "external" + else _run_ml4t(runner, config, price_data, signals, dates) + ) + framework_call_seconds = perf_counter() - framework_started + if result.error is not None: + raise RuntimeError(f"{runner.runner_id} failed: {result.error}") + + validation_started = perf_counter() + signature = _surface_signature(result, effective_prices) + validation_seconds = perf_counter() - validation_started + return { + "runner_id": runner.runner_id, + "framework": runner.framework, + "side": runner.side, + "profile": runner.profile, + "target": actual_target, + "python": { + "implementation": sys.implementation.name, + "version": platform.python_version(), + }, + "ml4t": _git_identity(), + "input": { + "raw_sha256": raw_input_sha256, + "effective_sha256": effective_input_sha256, + }, + "stages_seconds": { + "input_generation": input_seconds, + "framework_call": framework_call_seconds, + "adapter_reported_engine": result.runtime_sec, + "output_validation": validation_seconds, + "worker_total": perf_counter() - started, + }, + "process_peak_rss_mb": _peak_rss_mb(), + "thread_environment": {key: os.environ.get(key) for key in sorted(THREAD_ENVIRONMENT)}, + "output": signature, + "output_sha256": _json_digest(signature), + "captured_log_tail": output_log.getvalue()[-2_000:], + } + + +def run_calibration_worker() -> dict[str, Any]: + """Exercise wall-time and peak-RSS instrumentation with known work.""" + started = perf_counter() + allocation = bytearray(32 * 1024 * 1024) + allocation[0] = 1 + sleep(0.025) + return { + "worker_seconds": perf_counter() - started, + "process_peak_rss_mb": _peak_rss_mb(), + "allocated_bytes": len(allocation), + } + + +def _resolve_python(runner: RunnerSpec) -> Path: + target = load_framework_manifest().targets[runner.framework] + override = os.getenv(target.python_env_var or "") + if override: + return Path(override).expanduser().resolve() + if target.environment is None: + raise RuntimeError(f"No environment configured for {runner.framework}") + return PROJECT_ROOT / target.environment / "bin" / "python" + + +def _write_json(path: Path, payload: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n", encoding="utf-8") + + +def _write_json_atomic(path: Path, payload: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + serialized = json.dumps(payload, indent=2, sort_keys=True) + "\n" + with tempfile.NamedTemporaryFile( + mode="w", + encoding="utf-8", + dir=path.parent, + prefix=f".{path.name}.", + delete=False, + ) as handle: + temporary = Path(handle.name) + handle.write(serialized) + handle.flush() + os.fsync(handle.fileno()) + os.replace(temporary, path) + + +def _run_process(runner: RunnerSpec) -> dict[str, Any]: + interpreter = _resolve_python(runner) + if not interpreter.is_file(): + raise RuntimeError(f"Missing interpreter for {runner.runner_id}: {interpreter}") + with tempfile.TemporaryDirectory(prefix="ml4t-performance-worker-") as directory: + output = Path(directory) / "sample.json" + command = [ + str(interpreter), + str(Path(__file__).resolve()), + "--worker", + runner.runner_id, + "--output", + str(output), + ] + environment = os.environ.copy() + environment.update(THREAD_ENVIRONMENT) + paths = [str(PROJECT_ROOT / "src"), str(VALIDATION_DIR)] + sibling_specs = PROJECT_ROOT.parent / "ml4t-specs" / "src" + if sibling_specs.is_dir(): + paths.append(str(sibling_specs)) + environment["PYTHONPATH"] = os.pathsep.join( + paths + ([environment["PYTHONPATH"]] if environment.get("PYTHONPATH") else []) + ) + docker_ancestor = None + if runner.runner_id == "lean:external": + docker_ancestor = load_framework_manifest().targets["lean"].artifact + if docker_ancestor is None: + raise RuntimeError("LEAN target lacks an immutable engine image") + completed, process_wall_seconds, monitored_peak_rss_mb, container_observed = ( + _execute_with_memory_monitor( + command, + cwd=PROJECT_ROOT, + env=environment, + timeout=WORKER_TIMEOUT_SECONDS, + docker_ancestor=docker_ancestor, + ) + ) + if completed.returncode != 0 or not output.is_file(): + details = "\n".join( + value.strip() for value in (completed.stdout, completed.stderr) if value.strip() + ) + raise RuntimeError( + f"Performance worker {runner.runner_id} exited {completed.returncode}: " + f"{details[-10_000:]}" + ) + sample = cast(dict[str, Any], json.loads(output.read_text(encoding="utf-8"))) + sample["process_wall_seconds"] = process_wall_seconds + sample["worker_self_peak_rss_mb"] = sample.pop("process_peak_rss_mb") + sample["process_peak_rss_mb"] = monitored_peak_rss_mb + sample["lean_container_observed"] = container_observed + return sample + + +def run_calibration_process() -> dict[str, Any]: + with tempfile.TemporaryDirectory(prefix="ml4t-performance-calibration-") as directory: + output = Path(directory) / "calibration.json" + command = [ + sys.executable, + str(Path(__file__).resolve()), + "--calibration-worker", + "--output", + str(output), + ] + started = perf_counter() + completed = subprocess.run(command, check=False, timeout=60) + wall_seconds = perf_counter() - started + if completed.returncode != 0 or not output.is_file(): + raise RuntimeError("Performance instrumentation calibration failed") + result = cast(dict[str, Any], json.loads(output.read_text(encoding="utf-8"))) + result["process_wall_seconds"] = wall_seconds + return result + + +def _percentile(values: list[float], probability: float) -> float: + position = probability * (len(values) - 1) + lower = int(position) + upper = min(lower + 1, len(values) - 1) + fraction = position - lower + return values[lower] * (1.0 - fraction) + values[upper] * fraction + + +def bootstrap_median_interval(values: list[float], *, seed: int) -> list[float]: + """Return a deterministic percentile-bootstrap 95 percent median interval.""" + if len(values) < MIN_SAMPLES: + raise ValueError(f"At least {MIN_SAMPLES} samples are required") + generator = random.Random(seed) + estimates = sorted( + median(generator.choices(values, k=len(values))) for _ in range(BOOTSTRAP_RESAMPLES) + ) + tail = (1.0 - BOOTSTRAP_CONFIDENCE) / 2.0 + return [_percentile(estimates, tail), _percentile(estimates, 1.0 - tail)] + + +def _summary(samples: list[dict[str, Any]], key: str, *, seed: int) -> dict[str, Any]: + values = [float(sample[key]) for sample in samples] + return { + "median": median(values), + "ci95": bootstrap_median_interval(values, seed=seed), + "minimum": min(values), + "maximum": max(values), + } + + +def _runner_evidence( + runner: RunnerSpec, + warmup: dict[str, Any], + samples: list[dict[str, Any]], +) -> dict[str, Any]: + seed = int(hashlib.sha256(runner.runner_id.encode()).hexdigest()[:8], 16) + output_sha256 = str(warmup["output_sha256"]) + passed = all(sample.get("output_sha256") == output_sha256 for sample in samples) + return { + "runner": asdict(runner), + "target": warmup["target"], + "python": warmup["python"], + "warmup": { + "output_sha256": output_sha256, + "process_wall_seconds": warmup["process_wall_seconds"], + }, + "output": warmup["output"], + "output_sha256": output_sha256, + "process_wall_seconds": _summary(samples, "process_wall_seconds", seed=seed), + "process_peak_rss_mb": _summary(samples, "process_peak_rss_mb", seed=seed + 1), + "adapter_engine_seconds": _summary( + [{"value": sample["stages_seconds"]["adapter_reported_engine"]} for sample in samples], + "value", + seed=seed + 2, + ), + "samples": samples, + "passed": passed, + } + + +def _host_metadata() -> dict[str, Any]: + cpu_model = "" + cpuinfo = Path("/proc/cpuinfo") + if cpuinfo.is_file(): + for line in cpuinfo.read_text(encoding="utf-8", errors="replace").splitlines(): + if line.lower().startswith("model name"): + cpu_model = line.split(":", 1)[1].strip() + break + return { + "platform": platform.platform(), + "machine": platform.machine(), + "processor": platform.processor(), + "cpu_model": cpu_model, + "logical_cpu_count": os.cpu_count(), + "python": platform.python_version(), + } + + +def _capability_matrix() -> list[dict[str, Any]]: + return [ + { + "workload": WORKLOAD.name, + "dimensions": f"{WORKLOAD.assets} assets x {WORKLOAD.bars} daily sessions", + "coverage": list(scale.FRAMEWORKS), + "use": "controlled and idiomatic repeated performance evidence", + }, + { + "workload": scale.WORKLOAD.name, + "dimensions": f"{scale.WORKLOAD.assets} assets x {scale.WORKLOAD.bars} daily sessions", + "coverage": list(scale.FRAMEWORKS), + "use": "large-scale equivalence only; recorded runtimes are not performance claims", + }, + { + "workload": "historical_real_250_assets_5040_sessions", + "dimensions": "250 assets x 5,040 daily sessions", + "coverage": ["vectorbt_oss", "backtrader", "zipline", "lean"], + "use": ( + "superseded audit input; single samples, inconsistent setup boundaries, missing " + "peak RSS for LEAN, and a non-reconstructable temporary data path" + ), + }, + { + "workload": "performance_baselines.json workloads", + "dimensions": "single-asset, 250-asset, quote, rebalance, and partial-fill workloads", + "coverage": ["ml4t_backtest"], + "use": "internal regression evidence; not a cross-framework comparison", + }, + ] + + +def collect_evidence(samples: int) -> dict[str, Any]: + """Warm every runner, interleave measured repetitions, and build both tracks.""" + if samples < MIN_SAMPLES: + raise ValueError(f"At least {MIN_SAMPLES} measured samples are required") + calibration = run_calibration_process() + if ( + calibration["allocated_bytes"] != 32 * 1024 * 1024 + or calibration["worker_seconds"] < 0.02 + or calibration["process_wall_seconds"] < calibration["worker_seconds"] + or calibration["process_peak_rss_mb"] < 20 + ): + raise RuntimeError(f"Performance instrumentation calibration failed: {calibration}") + + warmups: dict[str, dict[str, Any]] = {} + measured: dict[str, list[dict[str, Any]]] = {runner.runner_id: [] for runner in RUNNERS} + for runner in RUNNERS: + print(f"Warming {runner.runner_id}...", flush=True) + warmups[runner.runner_id] = _run_process(runner) + for repetition in range(samples): + offset = repetition % len(RUNNERS) + ordered = RUNNERS[offset:] + RUNNERS[:offset] + for runner in ordered: + print( + f"Measuring {runner.runner_id} sample {repetition + 1}/{samples}...", + flush=True, + ) + measured[runner.runner_id].append(_run_process(runner)) + + runners = { + runner.runner_id: _runner_evidence( + runner, + warmups[runner.runner_id], + measured[runner.runner_id], + ) + for runner in RUNNERS + } + pairs: dict[str, dict[str, Any]] = {} + for framework in scale.FRAMEWORKS: + external = runners[f"{framework}:external"] + ml4t = runners[f"{framework}:ml4t"] + exact = external["output"] == ml4t["output"] + pairs[framework] = { + "external_runner": f"{framework}:external", + "ml4t_runner": f"{framework}:ml4t", + "exact_output": exact, + "passed": bool(exact and external["passed"] and ml4t["passed"]), + } + + idiomatic = { + name: { + "sample_source": runner_id, + "semantic_disclosure": IDIOMATIC_DISCLOSURES[name], + "invariants_passed": runners[runner_id]["passed"], + } + for name, runner_id in IDIOMATIC_RUNNERS.items() + } + controlled_passed = all(pair["passed"] for pair in pairs.values()) + idiomatic_passed = all(entry["invariants_passed"] for entry in idiomatic.values()) + return { + "schema_version": SCHEMA_VERSION, + "generated_at": datetime.now(UTC).isoformat(), + "workload": { + "recipe": asdict(WORKLOAD), + "recipe_sha256": _json_digest(asdict(WORKLOAD)), + "data_points": WORKLOAD.data_points, + }, + "measurement_protocol": MEASUREMENT_PROTOCOL, + "protocol_sha256": _json_digest(MEASUREMENT_PROTOCOL), + "samples_per_runner": samples, + "host": _host_metadata(), + "calibration": calibration, + "source_digests": _source_digests(), + "runners": runners, + "controlled": { + "equivalence_required": True, + "pairs": pairs, + "passed": controlled_passed, + }, + "idiomatic": { + "equivalence_claim": False, + "runners": idiomatic, + "passed": idiomatic_passed, + }, + "capability_matrix": _capability_matrix(), + "historical_assessment": { + "comparable_to_current_measurements": False, + "reason": ( + "The 2026-02-28 artifacts used one sample, inconsistent setup boundaries, old " + "framework revisions, different hardware provenance, and incomplete memory data." + ), + }, + "release_gate_passed": controlled_passed and idiomatic_passed, + } + + +def report_failures(report: dict[str, Any]) -> list[str]: + """Return every reason performance evidence cannot be accepted.""" + failures: list[str] = [] + if report.get("schema_version") != SCHEMA_VERSION: + return [f"Unsupported performance schema: {report.get('schema_version')!r}"] + workload = report.get("workload") + if not isinstance(workload, dict) or workload.get("recipe") != asdict(WORKLOAD): + failures.append("Performance workload recipe differs") + elif workload.get("recipe_sha256") != _json_digest(asdict(WORKLOAD)): + failures.append("Performance workload recipe digest differs") + if report.get("measurement_protocol") != MEASUREMENT_PROTOCOL: + failures.append("Performance measurement protocol differs") + if report.get("protocol_sha256") != _json_digest(MEASUREMENT_PROTOCOL): + failures.append("Performance protocol digest differs") + samples_per_runner = report.get("samples_per_runner") + if not isinstance(samples_per_runner, int) or samples_per_runner < MIN_SAMPLES: + failures.append("Performance evidence has too few measured samples") + samples_per_runner = 0 + if report.get("source_digests") != _source_digests(): + failures.append("Performance source digests differ") + + raw_runners = report.get("runners") + if not isinstance(raw_runners, dict) or set(raw_runners) != set(RUNNERS_BY_ID): + return failures + ["Performance runner coverage differs"] + runners = cast(dict[str, dict[str, Any]], raw_runners) + manifest = load_framework_manifest() + reconstructed_input = scale._expected_input_digest(WORKLOAD) + for runner_id, runner in runners.items(): + samples = runner.get("samples") + if not isinstance(samples, list) or len(samples) != samples_per_runner: + failures.append(f"{runner_id} sample count differs") + continue + if any(not isinstance(sample, dict) for sample in samples): + failures.append(f"{runner_id} contains a malformed sample") + continue + runner_spec = RUNNERS_BY_ID[runner_id] + expected_target = manifest.targets[runner_spec.framework].evidence_metadata() + target = runner.get("target") + if ( + not isinstance(target, dict) + or scale._declared_target_metadata(target) != expected_target + or target.get("actual_version") != expected_target["version"] + or any(sample.get("target") != target for sample in samples) + ): + failures.append(f"{runner_id} target identity differs") + elif runner_spec.framework == "vectorbt_pro" and ( + target.get("actual_commit") != expected_target["commit"] + or target.get("actual_immutable_id") != expected_target["immutable_id"] + ): + failures.append(f"{runner_id} installed source identity differs") + output_sha256 = runner.get("output_sha256") + if not isinstance(output_sha256, str) or any( + sample.get("output_sha256") != output_sha256 + or sample.get("ml4t", {}).get("dirty") is not False + or not isinstance(sample.get("ml4t", {}).get("commit"), str) + or len(sample["ml4t"]["commit"]) != 40 + for sample in samples + ): + failures.append(f"{runner_id} output checksum or clean-tree identity differs") + if runner.get("output") is None or _json_digest(runner["output"]) != output_sha256: + failures.append(f"{runner_id} retained output digest differs") + if any( + sample.get("input", {}).get("raw_sha256") != reconstructed_input + or sample.get("input") != samples[0].get("input") + or sample.get("thread_environment") != THREAD_ENVIRONMENT + for sample in samples + ): + failures.append(f"{runner_id} input or thread environment differs") + if any( + float(sample.get("process_wall_seconds", 0)) <= 0 + or float(sample.get("process_peak_rss_mb", 0)) <= 0 + or (runner_id == "lean:external" and sample.get("lean_container_observed") is not True) + for sample in samples + ): + failures.append(f"{runner_id} wall-time or full-process memory evidence is missing") + for key, source_key, seed_offset in ( + ("process_wall_seconds", "process_wall_seconds", 0), + ("process_peak_rss_mb", "process_peak_rss_mb", 1), + ): + seed = int(hashlib.sha256(runner_id.encode()).hexdigest()[:8], 16) + seed_offset + if runner.get(key) != _summary(samples, source_key, seed=seed): + failures.append(f"{runner_id} {key} summary differs") + engine_samples = [ + {"value": sample["stages_seconds"]["adapter_reported_engine"]} for sample in samples + ] + seed = int(hashlib.sha256(runner_id.encode()).hexdigest()[:8], 16) + 2 + if runner.get("adapter_engine_seconds") != _summary(engine_samples, "value", seed=seed): + failures.append(f"{runner_id} engine summary differs") + if runner.get("passed") is not True: + failures.append(f"{runner_id} did not pass") + + controlled = report.get("controlled") + pairs = controlled.get("pairs") if isinstance(controlled, dict) else None + if not isinstance(pairs, dict) or set(pairs) != set(scale.FRAMEWORKS): + failures.append("Controlled performance pair coverage differs") + else: + for framework, pair in pairs.items(): + external = runners[f"{framework}:external"] + ml4t = runners[f"{framework}:ml4t"] + if ( + pair.get("passed") is not True + or pair.get("exact_output") is not True + or external.get("output") != ml4t.get("output") + ): + failures.append(f"{framework} controlled performance output differs") + if not isinstance(controlled, dict) or controlled.get("passed") is not True: + failures.append("Controlled performance track did not pass") + + idiomatic = report.get("idiomatic") + idiomatic_runners = idiomatic.get("runners") if isinstance(idiomatic, dict) else None + if ( + not isinstance(idiomatic, dict) + or idiomatic.get("equivalence_claim") is not False + or idiomatic.get("passed") is not True + or not isinstance(idiomatic_runners, dict) + or set(idiomatic_runners) != set(IDIOMATIC_RUNNERS) + ): + failures.append("Idiomatic performance track is incomplete") + else: + for name, runner_id in IDIOMATIC_RUNNERS.items(): + entry = idiomatic_runners[name] + if ( + entry.get("sample_source") != runner_id + or entry.get("semantic_disclosure") != IDIOMATIC_DISCLOSURES[name] + or entry.get("invariants_passed") is not True + ): + failures.append(f"{name} idiomatic disclosure differs") + if report.get("capability_matrix") != _capability_matrix(): + failures.append("Performance capability matrix differs") + if report.get("release_gate_passed") is not True: + failures.append("Performance release gate did not pass") + return failures + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--worker", choices=tuple(RUNNERS_BY_ID)) + parser.add_argument("--calibration-worker", action="store_true") + parser.add_argument("--output", type=Path) + parser.add_argument("--samples", type=int, default=MIN_SAMPLES) + parser.add_argument("--check", action="store_true") + args = parser.parse_args() + if args.worker: + if args.output is None: + parser.error("--worker requires --output") + _write_json(args.output, run_worker(RUNNERS_BY_ID[args.worker])) + return 0 + if args.calibration_worker: + if args.output is None: + parser.error("--calibration-worker requires --output") + _write_json(args.output, run_calibration_worker()) + return 0 + if args.check: + report = cast(dict[str, Any], json.loads(ACCEPTED_PATH.read_text(encoding="utf-8"))) + failures = report_failures(report) + for failure in failures: + print(f"- {failure}") + return 1 if failures else 0 + candidate = collect_evidence(args.samples) + _write_json(CANDIDATE_PATH, candidate) + failures = report_failures(candidate) + if failures: + print("Accepted performance evidence unchanged:") + for failure in failures: + print(f"- {failure}") + return 1 + _write_json_atomic(ACCEPTED_PATH, candidate) + print(f"Accepted performance evidence: {ACCEPTED_PATH}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/environments/backtrader/pyproject.toml b/validation/environments/backtrader/pyproject.toml new file mode 100644 index 00000000..0d85ce03 --- /dev/null +++ b/validation/environments/backtrader/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "ml4t-backtest-validation-backtrader" +version = "0.0.0" +requires-python = ">=3.12,<3.13" +dependencies = ["backtrader==1.9.78.123", "ml4t-backtest"] + +[tool.uv] +package = false + +[tool.uv.sources] +ml4t-backtest = { path = "../../..", editable = true } diff --git a/validation/environments/backtrader/uv.lock b/validation/environments/backtrader/uv.lock new file mode 100644 index 00000000..d900298e --- /dev/null +++ b/validation/environments/backtrader/uv.lock @@ -0,0 +1,306 @@ +version = 1 +revision = 3 +requires-python = "==3.12.*" +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", + "sys_platform != 'emscripten' and sys_platform != 'win32'", +] + +[[package]] +name = "backtrader" +version = "1.9.78.123" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/ef/328c6ec332435f63b3e18febd263686b8ba07e990676a862cc8522ba38f5/backtrader-1.9.78.123-py2.py3-none-any.whl", hash = "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", size = 419517, upload-time = "2023-04-19T14:13:18.842Z" }, +] + +[[package]] +name = "exchange-calendars" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "korean-lunar-calendar" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyluach" }, + { name = "toolz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/73/460b0ece4e7444e3098b7738974c822787e134578d069d3a88b4be17d50a/exchange_calendars-4.13.2.tar.gz", hash = "sha256:a9459425dd64142cd54fbc639847403c7e0c33d60fbc326c94fc1d6bd127f002", size = 4137321, upload-time = "2026-03-10T03:24:38.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/4c/0469b40057bc9f8d9594dcc6024202626b981ae4b52dfcd304552e8e1c3a/exchange_calendars-4.13.2-py3-none-any.whl", hash = "sha256:fc5a2ad0d61b5c3a6539a3061cd4cbb55c59f4a903455cec7926e4b798919996", size = 213306, upload-time = "2026-03-10T03:24:37.055Z" }, +] + +[[package]] +name = "korean-lunar-calendar" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/9f/6160e95f3934026194dc7a0b5c78fe5c6e74761830ddea3e9cfc38e3f983/korean_lunar_calendar-0.4.0.tar.gz", hash = "sha256:be56f27bc0594fdbbdf7bbe00f504a9f929a31e311bd7d9bb93561b645afade7", size = 13425, upload-time = "2026-06-15T14:19:57.163Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/88/f56033b09fdca5c8c5e5fc2f3513950a05cd62caa9bd8e6d2750a887c86e/korean_lunar_calendar-0.4.0-py3-none-any.whl", hash = "sha256:c042e20de0bb702add6bec8d0f6da1ea8d3b170838e63846f70420cf341fe4e7", size = 11323, upload-time = "2026-06-15T14:19:56.089Z" }, +] + +[[package]] +name = "ml4t-backtest" +source = { editable = "../../../" } +dependencies = [ + { name = "ml4t-specs" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pandas-market-calendars" }, + { name = "polars" }, + { name = "pyyaml" }, +] + +[package.metadata] +requires-dist = [ + { name = "backtrader", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=1.9.0" }, + { name = "cvxpy", marker = "extra == 'advanced'", specifier = ">=1.3.0" }, + { name = "cvxpy", marker = "extra == 'all'", specifier = ">=1.3.0" }, + { name = "dash", marker = "extra == 'all'", specifier = ">=2.11.0" }, + { name = "dash", marker = "extra == 'viz'", specifier = ">=2.11.0" }, + { name = "hypothesis", marker = "extra == 'all'", specifier = ">=6.80.0" }, + { name = "hypothesis", marker = "extra == 'dev'", specifier = ">=6.80.0" }, + { name = "matplotlib", marker = "extra == 'all'", specifier = ">=3.7.0" }, + { name = "matplotlib", marker = "extra == 'viz'", specifier = ">=3.7.0" }, + { name = "mkdocs", marker = "extra == 'all'", specifier = ">=1.6,<2" }, + { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.6,<2" }, + { name = "mkdocs-material", marker = "extra == 'all'", specifier = ">=9.5.0" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'all'", specifier = ">=0.24.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'", specifier = ">=0.24.0" }, + { name = "ml4t-diagnostic", marker = "extra == 'all'", specifier = ">=0.1.0b4" }, + { name = "ml4t-diagnostic", marker = "extra == 'dev'", specifier = ">=0.1.0b4" }, + { name = "ml4t-specs", specifier = ">=0.1.2,<0.2" }, + { name = "networkx", marker = "extra == 'advanced'", specifier = ">=3.0" }, + { name = "networkx", marker = "extra == 'all'", specifier = ">=3.0" }, + { name = "numpy", specifier = ">=2.3.2" }, + { name = "pandas", marker = "python_full_version < '3.15'", specifier = ">=2.3.3" }, + { name = "pandas", marker = "python_full_version >= '3.15'", specifier = ">=3.0.5" }, + { name = "pandas-market-calendars", specifier = ">=5.2.4" }, + { name = "plotly", marker = "extra == 'all'", specifier = ">=5.15.0" }, + { name = "plotly", marker = "extra == 'viz'", specifier = ">=5.15.0" }, + { name = "polars", specifier = ">=1.36.1" }, + { name = "pre-commit", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pre-commit", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyfolio-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.9.9" }, + { name = "pytest", marker = "extra == 'all'", specifier = ">=7.4.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.4.0" }, + { name = "pytest-asyncio", marker = "extra == 'all'", specifier = ">=0.21.0" }, + { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" }, + { name = "pytest-benchmark", marker = "extra == 'all'", specifier = ">=4.0.0" }, + { name = "pytest-benchmark", marker = "extra == 'dev'", specifier = ">=4.0.0" }, + { name = "pytest-cov", marker = "extra == 'all'", specifier = ">=4.1.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0" }, + { name = "pytest-timeout", marker = "extra == 'all'", specifier = ">=2.1.0" }, + { name = "pytest-timeout", marker = "extra == 'dev'", specifier = ">=2.1.0" }, + { name = "pytest-xdist", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pytest-xdist", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyyaml", specifier = ">=6.0.3" }, + { name = "ruff", marker = "extra == 'all'", specifier = ">=0.8.0" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8.0" }, + { name = "ty", marker = "extra == 'all'" }, + { name = "ty", marker = "extra == 'dev'" }, + { name = "vectorbt", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.24.0" }, + { name = "zipline-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=2.4.0" }, +] +provides-extras = ["advanced", "all", "comparison", "dev", "docs", "viz"] + +[package.metadata.requires-dev] +dev = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "ml4t-diagnostic", specifier = ">=0.1.0b4" }, + { name = "pre-commit", specifier = ">=3.3.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, + { name = "ruff", specifier = ">=0.8.0" }, + { name = "twine", specifier = ">=6.0.0" }, + { name = "ty" }, +] +test = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, +] + +[[package]] +name = "ml4t-backtest-validation-backtrader" +version = "0.0.0" +source = { virtual = "." } +dependencies = [ + { name = "backtrader" }, + { name = "ml4t-backtest" }, +] + +[package.metadata] +requires-dist = [ + { name = "backtrader", specifier = "==1.9.78.123" }, + { name = "ml4t-backtest", editable = "../../../" }, +] + +[[package]] +name = "ml4t-specs" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/ca/aba7ea1f4e9a1da0b4f465dea03d3e4320d63db348245a2a9976096407ac/ml4t_specs-0.1.3.tar.gz", hash = "sha256:9578038af96d59cd50317e78f8781772833b308076da13ad24c0b304bb20961d", size = 50758, upload-time = "2026-08-12T02:27:14.366Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/6c/0a35ee16313441a68a14d811ffa8b79eb63a013d548b6bbb50dfd208c6b1/ml4t_specs-0.1.3-py3-none-any.whl", hash = "sha256:2b9302d27746f5859b62c6748bf217ca4eae76d4842c783575c58f4880d1568f", size = 33860, upload-time = "2026-08-12T02:27:12.929Z" }, +] + +[[package]] +name = "numpy" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/80/db0b4559e57ec36362bedbb05530a87fafbcb6067708c946967a41d449e7/numpy-2.5.2.tar.gz", hash = "sha256:d482d171c406ae88c5b19cad3b6a1c4c5209f886ab74bc44c2c865c23f52d860", size = 20773161, upload-time = "2026-08-09T13:48:27.962Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/72/dccb0aaf40972777283303919f613964227266d0c13adebb79ac124f1c3e/numpy-2.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:14e373cfc6387177e8409dac3c7159be8eb05cd77096cd7c950268b86f62831c", size = 16891693, upload-time = "2026-08-09T13:44:51.702Z" }, + { url = "https://files.pythonhosted.org/packages/60/2e/b5aee50a1f74ac815cf8331812cb8251e29024025de462e0c047641c614c/numpy-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4bbd96c833ecc8cc069ce518078fc8c60cb9cbfb0fea5b7a803ad65035596d03", size = 11903109, upload-time = "2026-08-09T13:44:55.501Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f4/29e78102a80601cf034d4e9767022cffeca2c3b4c926e1754572ca95593d/numpy-2.5.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:6e8172ddfcf5cf74b811d372b570b83c60bd2de87a6fbfbebdadb4a9bd9c6cbb", size = 5350202, upload-time = "2026-08-09T13:44:58.401Z" }, + { url = "https://files.pythonhosted.org/packages/11/4b/dcd3b7eadaf4035d2c7a4289d232523a6964f602598ef7674e4bd7291f93/numpy-2.5.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:65f188481f1669e26f62b701e8205d19e460fa4a9b52a1414ba382330e4a3414", size = 6687736, upload-time = "2026-08-09T13:45:00.813Z" }, + { url = "https://files.pythonhosted.org/packages/e5/21/4947e0e9d6c9fc2e2ff15b8949049ee44f63adb9cacc729ab8793f97e712/numpy-2.5.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8ee9c4eeb8454b3660a8b53493563c3e121c2fc94fbd72b848ef814ed7b676a9", size = 15612696, upload-time = "2026-08-09T13:45:04.151Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5f/62d28cf019460c7f1394105b4d49d9911a9c444cb77ab0bd95a204c5a6de/numpy-2.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3cdec01fa790a186d430433fdd4d4ffb70eed6f0eeb4bf05c8dbe2dce0a9bcb8", size = 16722264, upload-time = "2026-08-09T13:45:07.714Z" }, + { url = "https://files.pythonhosted.org/packages/14/25/3f0be4c1b9fdf5dd5e708a6806978564d7c46a055c000496309ff2a2f8af/numpy-2.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7999d4ddb0c4025018373fd787510d46e04c769467af22869707b3c1cfd459ab", size = 16974396, upload-time = "2026-08-09T13:45:11.316Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/6262cbdeeb45da9d971e40715f579d791603ba8ec0b5e2db1ac55454421d/numpy-2.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1f017dc0875c9209d219f97feceb7d54c2661bb243deb4114478e1295808af7", size = 18476044, upload-time = "2026-08-09T13:45:14.869Z" }, + { url = "https://files.pythonhosted.org/packages/36/33/29208b8b075bde62d26a81d14b358c42b0f69b6cabd98d4ff97f37f22b05/numpy-2.5.2-cp312-cp312-win32.whl", hash = "sha256:d6a48072864e3324e194a8fbb3c657bcc5b5c869dbc64c9537b1d5c862572c0a", size = 6072817, upload-time = "2026-08-09T13:45:17.867Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/87fea2769fe1c47c1b5b01d8310772c9d1a85d485de7cf386ef7a3332b02/numpy-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:28ac63476ec7651484215ee7fa15a1f78b57c14621f01e392afe17b9a1390ce4", size = 12464674, upload-time = "2026-08-09T13:45:20.734Z" }, + { url = "https://files.pythonhosted.org/packages/14/52/032b97e00461ab0809bbe4c588b035620e5a14b8cdee47ecddefc7b17d33/numpy-2.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:27650bb0e7140fa3d37b9923b4803645e0b125d190f326eecfd3f4dad8e8ade1", size = 10397131, upload-time = "2026-08-09T13:45:23.73Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/4f/5f3422a2afec5ffc46308b79e53291365a93748b498ac2e58bead0197916/pandas-3.0.5.tar.gz", hash = "sha256:dca3734d6ab7c906e6730f0788b0a1dbb9f2467731f9711f77995c8e9d62d712", size = 4658219, upload-time = "2026-07-22T22:19:28.819Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/54/1dc810ea558d1320b597aa140a514f2fdf1d2ea09c38cf556f13ea712ec9/pandas-3.0.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fa290c16964d4963fbfbc358928239cf3bd755b20e988ce944877def2f44471d", size = 10411717, upload-time = "2026-07-22T22:18:08.307Z" }, + { url = "https://files.pythonhosted.org/packages/68/56/fbe81c09195924d8b7b8d4461a20458fe80a6a5ed6b24f0314da684277e1/pandas-3.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2e26bb46934b8a2ca0c3de1d3d606fc5f6746584791b2db264d58cf370e08dc", size = 9957095, upload-time = "2026-07-22T22:18:10.6Z" }, + { url = "https://files.pythonhosted.org/packages/e0/51/fac252f4a913ed5eabf3c11b880a9e8d5a6c10f0b2129d0462212d238b4d/pandas-3.0.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73fa87b08a7ef706f8aafda39ddaccf2a99047bea62d8c88a0361bcafb2237bc", size = 10485458, upload-time = "2026-07-22T22:18:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/12/98/e976540c1addf70442be7842a18cf70884a964abbf69442504f4d2939989/pandas-3.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d373ce03ffd84010ed9839fa73672a9c8256990532e158440c0085db7d914b34", size = 10998091, upload-time = "2026-07-22T22:18:15.209Z" }, + { url = "https://files.pythonhosted.org/packages/a4/8c/1f29b5be8d3fc47dd7567eb167fabba2085879b31e0287ce7cba6d3d2ff4/pandas-3.0.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2a29c53d85ea98c5e792c59ef82ee9fbe6ca902c0d0adb6b23f45ef894cd7bf6", size = 11499501, upload-time = "2026-07-22T22:18:17.689Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e2/bd9c98ad2df7b38bde002adde4cdf353519da51881634323b126c55997f9/pandas-3.0.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a5ad3b02ed6bc7d7ae9b70804b2c6aa31827489d150f8e623ce82491b82085d7", size = 12060559, upload-time = "2026-07-22T22:18:20.147Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9a/ffbd852d58bd74a617fe2f8ee6a58a96982271ce41cf981eab22190b4a4b/pandas-3.0.5-cp312-cp312-pyemscripten_2024_0_wasm32.whl", hash = "sha256:b2acb4650527eec6822c3dadb2b771277b65e7dae7a267d4bccf65fd1bb3fbce", size = 7197652, upload-time = "2026-07-22T22:18:22.502Z" }, + { url = "https://files.pythonhosted.org/packages/70/b5/d2d3e9ae73362ba4229651b0ee1455cf78073a1ce585f6ff693782ce263e/pandas-3.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:80a611068e8a3ac23f7398c6c14eb46dc974e5cc9997f653e2dcfd1da74edd41", size = 9831691, upload-time = "2026-07-22T22:18:24.534Z" }, + { url = "https://files.pythonhosted.org/packages/52/51/dea1e89d6a6796b9c43f85a09b484ee03edb8a4c4842e73e200a8c11301c/pandas-3.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:25ff585b972a18ef1fe9ffa3ac6544d9950508aa76832e5147640b6022821e49", size = 9105796, upload-time = "2026-07-22T22:18:27.064Z" }, +] + +[[package]] +name = "pandas-market-calendars" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exchange-calendars" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/4c/98067cb91b37a137389f978f52410975915268d394c09cf941c490565297/pandas_market_calendars-5.4.0.tar.gz", hash = "sha256:b02f3a0e9bcb4b9e82a5060bf260ef0060ccd398f989b5e6f8208f4352967806", size = 175213, upload-time = "2026-05-27T02:42:05.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/d3/59b999f7f6a1d173572d3e8f8b07ded7e256c691d02b3b5cacb26479895a/pandas_market_calendars-5.4.0-py3-none-any.whl", hash = "sha256:bb2b93b28d496cab173b41c7d120fd5cd9d506b31f3bb0ad3d1d9f2b60d9d9e3", size = 134904, upload-time = "2026-05-27T02:42:06.35Z" }, +] + +[[package]] +name = "polars" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "polars-runtime-32" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/13/3873f213304bcbaaf39e63c8b905ceb460a0524448d57f86a829f6d4d0fd/polars-1.43.2.tar.gz", hash = "sha256:c699671b99eb71ff53334d237917aaa3db5ad4dda480abcb6c80e0eaee7b677b", size = 750312, upload-time = "2026-08-01T06:28:30.872Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/fe/0888040a24e4504098b85d8ad486b14cb01cf6b030bbe479dfc2dcffc2ac/polars-1.43.2-py3-none-any.whl", hash = "sha256:22aa0cb92a1ee2d60d6a15a638b2e8e0dd99aea21ac0cd8fb29da8e382e075a9", size = 847150, upload-time = "2026-08-01T06:27:15.543Z" }, +] + +[[package]] +name = "polars-runtime-32" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/06/11b578eeef05f867e3ee31b2a2fdd8e7684c2aa47822c49935d1be789c38/polars_runtime_32-1.43.2.tar.gz", hash = "sha256:d7b7c486bccee75a6af0158b87077da3d054657e3c60036b28644f4e1c7fdbf7", size = 3095669, upload-time = "2026-08-01T06:28:32.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/fc/12e6d4ca34d820297651134cfa35f86c33e898539fc6629cbb35d0089697/polars_runtime_32-1.43.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:91abf205d4ec93f92ba95386b7f8776559ae3dfce425ed2e527efa75d117d04a", size = 53088908, upload-time = "2026-08-01T06:27:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/32/81/833b0853551deb810854f96b43dea342b6e6c9b0ea1afcccf774157d519d/polars_runtime_32-1.43.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:2cc3ff96fd44789b02eb5c15b98dfcb000101636b177d3034fae2feec19b118f", size = 47540529, upload-time = "2026-08-01T06:27:21.391Z" }, + { url = "https://files.pythonhosted.org/packages/83/55/7b2a75af14c9294d97f3bec132dd3018ddcd988bef32b5d28322150b8c11/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10ed36e615ab362feb7406e6d084e124b445ad284caa73bd93ae7e65745ed894", size = 51366340, upload-time = "2026-08-01T06:27:24.776Z" }, + { url = "https://files.pythonhosted.org/packages/62/60/64deacb3abc70c52e2d88a808a052d1621c86a48fe9194f2c065579ab1cd/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d5a7ae004a2723ebf4427f6d6a639f30f86af4cf077075f6b35d04711154fc3", size = 57304599, upload-time = "2026-08-01T06:27:27.875Z" }, + { url = "https://files.pythonhosted.org/packages/52/95/d6e3a236d7630e17c40d0ddee839bf2be9acf548fdc0e5ad65ed9ff0cac6/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:09339eacc6d392206e78aabbaaa37d7276eb969b798f46cb1f367fd718798c60", size = 51520580, upload-time = "2026-08-01T06:27:30.913Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5a/2deb8eac70e9a2ac26d88a66ae7cf52612865026f4f4a5e7ab11ad9d52bf/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:452b400e59e7f56e4c6437f435e796903272a9388feee12de2bea049ae87025e", size = 55204471, upload-time = "2026-08-01T06:27:33.886Z" }, + { url = "https://files.pythonhosted.org/packages/29/9e/647401ae8a607bc0cc40ed7b8592d5b1be90ded0dc9b9d6d3aeb03f9524b/polars_runtime_32-1.43.2-cp310-abi3-win_amd64.whl", hash = "sha256:00e33c28e321410c8d66e814a90043101e3bdd9ed2c6dabda07565aa8adbbdf1", size = 52572176, upload-time = "2026-08-01T06:27:37.048Z" }, + { url = "https://files.pythonhosted.org/packages/96/8d/60a50c3f36c85218a7ffcb48c6fe2ce1f7bec799152d68b8658ebed2179c/polars_runtime_32-1.43.2-cp310-abi3-win_arm64.whl", hash = "sha256:350a4868cae85bf8b3f81b33ba47927c15256bd9264dfc8c0753f1b927eac9d3", size = 46582513, upload-time = "2026-08-01T06:27:40.025Z" }, +] + +[[package]] +name = "pyluach" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/11/42568c1568a75f8803c59f26d29af01a0890352b7a8e03d41ecda8bfb5dd/pyluach-2.3.0.tar.gz", hash = "sha256:ec6e30669d1df50c9ca160486da44a8195bb4c7a5d3d533990d0c5b03accd281", size = 26910, upload-time = "2025-09-09T20:24:39.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/c8/f96208ade3ca4c23b372497d0788bcf0f2e0ff4310e5ee693366bc33fdf0/pyluach-2.3.0-py3-none-any.whl", hash = "sha256:4497b731aef59508b079dbf5f00bc5bf4329ac45090a6cd37b5a83756f0e69ab", size = 25914, upload-time = "2025-09-09T20:24:37.831Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "toolz" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b", size = 52613, upload-time = "2025-10-17T04:03:21.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", size = 58093, upload-time = "2025-10-17T04:03:20.435Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/ff/5a28bdfd8c3ebec42564ac7d0e54ca3db65044a9314a97f9564fa7a1e926/tzdata-2026.3.tar.gz", hash = "sha256:4a1518b8993086a7982523e071643f3c0e5f213e75b21318e78bcabfff9d1415", size = 198674, upload-time = "2026-07-10T08:50:37.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl", hash = "sha256:dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931", size = 348168, upload-time = "2026-07-10T08:50:36.46Z" }, +] diff --git a/validation/environments/lean/pyproject.toml b/validation/environments/lean/pyproject.toml new file mode 100644 index 00000000..63d1ed41 --- /dev/null +++ b/validation/environments/lean/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "ml4t-backtest-validation-lean" +version = "0.0.0" +requires-python = ">=3.12,<3.13" +dependencies = ["lean==1.0.228", "ml4t-backtest"] + +[tool.uv] +package = false + +[tool.uv.sources] +ml4t-backtest = { path = "../../..", editable = true } diff --git a/validation/environments/lean/uv.lock b/validation/environments/lean/uv.lock new file mode 100644 index 00000000..665b7854 --- /dev/null +++ b/validation/environments/lean/uv.lock @@ -0,0 +1,829 @@ +version = 1 +revision = 3 +requires-python = "==3.12.*" +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", + "sys_platform != 'emscripten' and sys_platform != 'win32'", +] + +[[package]] +name = "annotated-types" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/56/a8120250d128bed162cd73c76d45f6ef9991f3e068f62a8ee060afa3104a/annotated_types-0.8.0.tar.gz", hash = "sha256:13b2beaad985e05e2d6407ee4c4f35590b11f8d693a258a561055cac8f64cab7", size = 15893, upload-time = "2026-07-23T20:16:13.995Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl", hash = "sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0", size = 13427, upload-time = "2026-07-23T20:16:12.938Z" }, +] + +[[package]] +name = "certifi" +version = "2026.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" }, +] + +[[package]] +name = "cffi" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/ef/008a1939e372c06329a3fce4279c02f328488f3526744906eeec3da7ad5f/cffi-2.1.1.tar.gz", hash = "sha256:dd31f52ea1086513bb9df30f8fcee9b8918323ae067a3d5b78bc826a000712be", size = 530807, upload-time = "2026-08-03T21:21:18.939Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/69/43965eccfdead3b9220015fd1320e117be8c6ed01a62ffab76eeb752f5d5/cffi-2.1.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:c8c69575568085ba0b1b10c0249d779a214aea6f6522e949a0fc9fb0fcb449d0", size = 184821, upload-time = "2026-08-03T21:19:44.887Z" }, + { url = "https://files.pythonhosted.org/packages/54/7d/16e5a096677b5e313ca80cd5e5170efa3ea44624a82bb111925522da64b1/cffi-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f81b3b8f3d4e343550fa4baa0e479bba9f2d29ce9c2e9b51d1ce1718d7442fcf", size = 184719, upload-time = "2026-08-03T21:19:46.129Z" }, + { url = "https://files.pythonhosted.org/packages/56/e6/8941622732edec876dd17d0453dce07317ae96db34f2ec1436c9d3785986/cffi-2.1.1-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:811bd1e21d32de12efca32393a0ab3f5133b54fce9bd44b8bd77ab07da14bf6a", size = 214799, upload-time = "2026-08-03T21:19:47.218Z" }, + { url = "https://files.pythonhosted.org/packages/44/de/f98430906df1545ffde0d543dd124a7a439bc2cd32b36b9c53f805df7333/cffi-2.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:68e62fe11f30d5ca8289242866f0a5291402d8529ca2178ab8afc5c9694ae890", size = 222389, upload-time = "2026-08-03T21:19:48.331Z" }, + { url = "https://files.pythonhosted.org/packages/6a/5b/717f1526b9957b34456313c31645c5b82b8fb5c3fe9e4752999be7128bfc/cffi-2.1.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:4a7c934f7360e8cd64fe9efadcbd10c7c6364f531e432b9a4bf5ccbc9e0e8b50", size = 210249, upload-time = "2026-08-03T21:19:49.543Z" }, + { url = "https://files.pythonhosted.org/packages/64/b3/f8aa4f3e34986c7e4ec45072d1b1b9dd295b6b18007b45518d79726dd725/cffi-2.1.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:3143d81e29e1e20a9ce10901ec369012947876596f75a222235965f2b7ae832e", size = 208775, upload-time = "2026-08-03T21:19:50.918Z" }, + { url = "https://files.pythonhosted.org/packages/b1/db/dceb9dd5b231e1da801793f8acc9f3c52a7e1afe40bb1aae37e02b0faad5/cffi-2.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c1453022f490d2459a11819d83ad1d586e9ff65a12ac3e705ffebd46d3685dcf", size = 221822, upload-time = "2026-08-03T21:19:52.054Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d2/6cd24ae3be000a634109c247d1475d62e5616d0dc78c82770942ec384248/cffi-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:208f941bb9d18e768138677f0a6d2ce01f590df56043dda1df1535ac57c88517", size = 225232, upload-time = "2026-08-03T21:19:53.109Z" }, + { url = "https://files.pythonhosted.org/packages/cb/52/3fa190537004dd7f0ab860a6dc7c0175b8667f68d1e618a46f5498d30250/cffi-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:210019b6c7cf07f081b4c54635c8cf744377001350e29cc0f81c4377b4797735", size = 223597, upload-time = "2026-08-03T21:19:54.515Z" }, + { url = "https://files.pythonhosted.org/packages/80/fb/0bb75b7039588c074b37ae99f40d9bfddf990ecb2fbc346ebccd2e56b9be/cffi-2.1.1-cp312-cp312-win32.whl", hash = "sha256:046bfc24911b37851ee1b51aab8bffe713d89c68c6a057b09484ce9fd5f69b4e", size = 175292, upload-time = "2026-08-03T21:19:55.566Z" }, + { url = "https://files.pythonhosted.org/packages/d9/79/615cc094e2fb508cade7de88d3b4f6c4ec2bab695c97bce9153dc65aadf5/cffi-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f53e442b08449d42821fa4a4fba000095af9f62742a500f978a9f557ec44339a", size = 185919, upload-time = "2026-08-03T21:19:56.89Z" }, + { url = "https://files.pythonhosted.org/packages/70/c6/d0ea84713fe46b243a436a18fcd47d639732747e21635c8a27191b06dc30/cffi-2.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:7bde5e4cc5c10140859842b9d383af292b22639a4dffb725314baf45968cef80", size = 180093, upload-time = "2026-08-03T21:19:58.155Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/31/4971872b3ed8715346231fb6eb4da8fcba65a4143c189db151ee28a2812b/charset_normalizer-3.5.0.tar.gz", hash = "sha256:49bd5feb59b0bf3cbf6ebcf4352e371c95b9da9bacd4449f8b64d0ad2c10a26e", size = 169295, upload-time = "2026-08-12T14:35:31.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/3c/045ea64ea5a550870dd8ab60b2242870328d53f17d2be593b4f9f3121474/charset_normalizer-3.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:98820e1ceb25c6df7a80c4fd8efa59cb121f99bc7c4c1693ad94a2caff5b311d", size = 343861, upload-time = "2026-08-12T14:32:27.254Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1b/7502be709db899d5b4801509829188b3a5a10969411da9c846115a5f1b70/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:608553f476fca509537e804c4a71f5eb166ce63b75141f89c2c686ce1aa36956", size = 237550, upload-time = "2026-08-12T14:32:28.385Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ce/66392661375148d9455c17bee25509a54e28c39969e34befa48ec8777936/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6753de11eef42f1c321b26d682957d92c7f7bbce6530f34bbe0f9291dd37cc6f", size = 229673, upload-time = "2026-08-12T14:32:29.668Z" }, + { url = "https://files.pythonhosted.org/packages/6a/64/f58c32a8d4ecf55b82ee61ee9aa6a664d4afcd36c72feb4c926fd6fe9af8/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f76dc0a47f94cb9b69d86f01e477f4b0371ca70208b9ccea7e063c41eed9046", size = 260768, upload-time = "2026-08-12T14:32:30.891Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ea/36c90e59a96386174377e855479ec154221ef001e96637e0b23be92489c4/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c387c6bf91b4774e359a48a179e2872b8e8bf741e4fde06ba8d1665eb9a4760a", size = 257880, upload-time = "2026-08-12T14:32:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/23/35/5b85772eb82528ef22ba29487ad544a7049dfd27f35b1a5a55dbc0843048/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14f6904a3cf870abf044df3a8c4924ac6c8ef77e9896586fd37e73ae96cff2af", size = 247547, upload-time = "2026-08-12T14:32:33.495Z" }, + { url = "https://files.pythonhosted.org/packages/b6/14/ba11a99c2a22ab04c2d5383a700b378cb463a78ab15f36444cabc10cd671/charset_normalizer-3.5.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0cce46dd29d73e135e8087b96eb62a4aca6d69391b7f97808c6588ebed3178f3", size = 243326, upload-time = "2026-08-12T14:32:34.794Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4a/cadba3f2400b45aa1d62a4ae0298bf58a3b30b1158baf15c338c7ce5b601/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b476cdb63df22da2b91837593380be3ddbe406f36c506c1c91d80e7196b66288", size = 238820, upload-time = "2026-08-12T14:32:35.984Z" }, + { url = "https://files.pythonhosted.org/packages/47/41/d5188b9342d75b72c2b05d3ee373f01a691397e770f001ee05e3b37925f5/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1f56ce84b317ef2a59d7d3461891c7597c79247d2192bb8114c68a1a1debfcc0", size = 231661, upload-time = "2026-08-12T14:32:37.191Z" }, + { url = "https://files.pythonhosted.org/packages/13/5f/df38fa972c4e945c3d8cee2bc4e610613af522fd359c7dc7a74c419f0278/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9ce0f885239357379d92fd9a5fddbe20f0e30e0527c29ba69f8e99eeb1304a76", size = 261459, upload-time = "2026-08-12T14:32:38.369Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d7/043ff7720067a3beee05523465ac9c1c846c68b7884930dd483f72ee5ab6/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:96ae7ab5d8155fde927aa0864fbc8ba3cc4fde6d41ab0c7cea9d6012b4978603", size = 242300, upload-time = "2026-08-12T14:32:39.505Z" }, + { url = "https://files.pythonhosted.org/packages/19/f6/33980b7b802a048e546a6d9ad2ea783a6cf6b10a86aaccd10db462d8b913/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf91921009025e96ce57a03ced6d14604fc3baf0530351638e9504a55da6fa3b", size = 259101, upload-time = "2026-08-12T14:32:41.02Z" }, + { url = "https://files.pythonhosted.org/packages/a6/b7/0d19bde844bff9165377c1da9ef3c4792a4c24bd49b5b7094d9e6f6ab58b/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0b2e44e6d42d1a4ff78ccc219a93c5449105d10b16198d1aea581080df8073f9", size = 249246, upload-time = "2026-08-12T14:32:42.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/cc/2c34fdfaacdf0e96e880ef562cbf80a9b5f8ea97e0dd9e57ba348a9c65cf/charset_normalizer-3.5.0-cp312-cp312-win32.whl", hash = "sha256:deb99535e9bf0bea8e274c6413eb939a21be35a3f492678dba4d5b1f4d70f142", size = 178025, upload-time = "2026-08-12T14:32:43.909Z" }, + { url = "https://files.pythonhosted.org/packages/76/d0/c34dbd1df23bcbdc1b5d2f48256340d72fa747f1eb03924a9d2fa35ed85b/charset_normalizer-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e54dd1a66fa4bce0ccaf0db9dde336e49b3eec646dc4c1c0991279369d373a14", size = 200143, upload-time = "2026-08-12T14:32:45.254Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ea/4e6bf1465d60c3d8f488d5bde140d0cb91cd23ccab0dc2895cc6c6982047/charset_normalizer-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:b8ea208b304587d47931b36481342d20336e0d338ab052f8b4305926482598d6", size = 180046, upload-time = "2026-08-12T14:32:46.545Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f3/7b523d807cb5e73562ef8acf21d39cdb9d704955327362c781bc3478a73d/charset_normalizer-3.5.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:5a4ee37248dfac25107c758bda99d545ce73e60b44d2dd39e4a2bb9f2831e9f5", size = 330840, upload-time = "2026-08-12T14:34:45.06Z" }, + { url = "https://files.pythonhosted.org/packages/f0/de/fc68978fe78ca97063c96d764e41ff92ca639948f319271e0ff450e577a2/charset_normalizer-3.5.0-cp37-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a864bdcacd8bff58bb4845304e031f821a3ec64b2b7259f2d409cd49c9e59ca3", size = 251862, upload-time = "2026-08-12T14:34:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/a9/cb/82b41a0ab7fb1a88065f1d78ad32696ad88ea3fe8e25b8189d08833938de/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:84b736e3b391601bc47b86da381c749c0f894e9191aaca9f31f30c2632206df3", size = 239484, upload-time = "2026-08-12T14:34:47.869Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0c/19608b631f4538f908098d4a2d56a8f79a665e27cc58e9d90479761a9227/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6abb1f356fb865baeb6ebc3fadd843e9a96fbf49b9adcca55037f3cceccb7438", size = 230602, upload-time = "2026-08-12T14:34:49.265Z" }, + { url = "https://files.pythonhosted.org/packages/29/db/f648eb30e14eba301aed61e11672156f137905c1bdbb530151abe8065943/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d366548d2ee28a8cfdcc4296363978cc644a728333be9824d2de4652e83df0a", size = 259208, upload-time = "2026-08-12T14:34:50.632Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e0/ed2c8bdbac484d69614d6993143aeb6cb0f4dd1561c883402517b623c8ef/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d672f329ae504ee240eb39b6effb3318aa8e7e8924c0ce8eee5760b3fad98539", size = 253659, upload-time = "2026-08-12T14:34:52.11Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/b4907cb9ec5b521d9d024ced13611240b86ef065c2eb15b3ad2334dc9940/charset_normalizer-3.5.0-cp37-abi3-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c54036a518748b6c02e666f6d46c3817561998fb904c3be25b56fb4fe3dc5706", size = 248821, upload-time = "2026-08-12T14:34:53.399Z" }, + { url = "https://files.pythonhosted.org/packages/12/b2/e2d1abcfbc05822f0030869efb4e9f8a3658e13b4821796d4b62da917327/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:22a1889f1c9b752c63c36758a0c2145458e3cadb20fced7a0790002e9dd12b26", size = 240271, upload-time = "2026-08-12T14:34:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f9/4ba127ad610542fa3eabfa41c45bf12d357860a815b3566374ec0188e213/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:b7eb3eab5c646d3de7dcb14a7c9caebace5249c5767da39e1761cb1576e521a3", size = 232155, upload-time = "2026-08-12T14:34:56.543Z" }, + { url = "https://files.pythonhosted.org/packages/01/68/40613182366d00bd6dbd5f6c84a926cbd120960e038a8269e9ae7d782762/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_ppc64le.whl", hash = "sha256:2080aa129a28267984cdc902898993d788c995c384e285d0d19199f56760d52e", size = 259674, upload-time = "2026-08-12T14:34:57.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/53/4574a14fa4c9de4a6c9f31725354bfa40b67f653e6d594ce1654f9a41b32/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_riscv64.whl", hash = "sha256:fd68c825548a611158230e2f9222e210ceb2e3391995c0aa5865cbdf3ab4bd49", size = 246122, upload-time = "2026-08-12T14:34:59.337Z" }, + { url = "https://files.pythonhosted.org/packages/5a/02/bd8030d13d92c058ca7b2b9615bbb3169569e144db64d65c149cd45abf5e/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_s390x.whl", hash = "sha256:d8a9316f4da85e937242642b537c6d55d7e9287dd38e5634732f8233932aff45", size = 255221, upload-time = "2026-08-12T14:35:00.71Z" }, + { url = "https://files.pythonhosted.org/packages/77/9d/10ecd3bcbe2666b3d4d4026c97b48f73990682815db516052a1e8f4a31c5/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d90254c8f609338c53ec180fcd4c4f9c16502e238e3fc88ca7fd4c2f38d445b8", size = 253450, upload-time = "2026-08-12T14:35:02.217Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0f/d044c4872c0938a84f87b5027a698c0e61bacfc5c3551a4e749ca9b7bc5c/charset_normalizer-3.5.0-cp37-abi3-win32.whl", hash = "sha256:8b3e9e29b8b07cc461b9ce7768db7693a93979d0dadf22046f6f3555ded2f516", size = 173594, upload-time = "2026-08-12T14:35:03.845Z" }, + { url = "https://files.pythonhosted.org/packages/10/6b/6046773901f1944b9a89436351529811ee958afc7b774563be9d74a6f0c3/charset_normalizer-3.5.0-cp37-abi3-win_amd64.whl", hash = "sha256:0c8953d9d1617794cfc40d81179571c9ba3805dd029623a15c93f1fb70e60a74", size = 198959, upload-time = "2026-08-12T14:35:05.187Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a6/b57708ac92aefc8e8389d51d5178129b81f03196da61ee2c23e687b8178a/charset_normalizer-3.5.0-cp37-abi3-win_arm64.whl", hash = "sha256:562d24ca7797c1af8852994950c2e623a907b201fc4b0ed29e92af173d3828ca", size = 267055, upload-time = "2026-08-12T14:35:06.533Z" }, + { url = "https://files.pythonhosted.org/packages/22/c7/754d09943a616937df61e4ba367c409ded2a987e872972098d51a6fcf73b/charset_normalizer-3.5.0-py3-none-any.whl", hash = "sha256:993dfcbe75a85a3784abb5084f2c41b915767c90546fcc92803cffa28611baea", size = 67943, upload-time = "2026-08-12T14:35:30.363Z" }, +] + +[[package]] +name = "click" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6", size = 338000, upload-time = "2026-06-24T17:45:15.148Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl", hash = "sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76", size = 119243, upload-time = "2026-06-24T17:45:13.73Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, +] + +[[package]] +name = "cryptography" +version = "50.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/41/6cbdcf9142d00fe82836fbb51e503e58088575cf7a0fe1dbff6695bf0840/cryptography-50.0.0.tar.gz", hash = "sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9", size = 880201, upload-time = "2026-07-31T14:25:10.11Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/5c/59086b4aac5e879d38ddbcf74e4be7ade89cebc3eb199a55da998c3bb46a/cryptography-50.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03", size = 4001252, upload-time = "2026-07-31T14:23:33.331Z" }, + { url = "https://files.pythonhosted.org/packages/57/ef/8f2df13c7216bcad3e1c74e07f6e193d93e998e114f524a53877c9af27ad/cryptography-50.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd9192b7b70c573d7f214eb1ae35e00d359f6f5e4b27c7e21e30de1fc6204645", size = 4719554, upload-time = "2026-07-31T14:23:35.611Z" }, + { url = "https://files.pythonhosted.org/packages/d9/41/029086c34d91052fc3b88bcc8056f709a7c915c7a23b235a54eb800b1c97/cryptography-50.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:06a32a980526a6ab9a4b9bf8f7385800791e2bb960903cb6b530e4817509a3b7", size = 4702130, upload-time = "2026-07-31T14:23:37.635Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ff/b6ce0954962e7f7b969f850a883744197bb3910bdfd7b6da162eab7d9f68/cryptography-50.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a1b30560f2acc95aa8b2e06e716a13dbfc97314747b80d9707e307f77b40d6b3", size = 4725244, upload-time = "2026-07-31T14:23:39.471Z" }, + { url = "https://files.pythonhosted.org/packages/06/1e/63a1027cb7fec360a182208e1b7767d5aa1fe57be3d6aa856e69a321edc0/cryptography-50.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:8d89f3976b10b4ce31118de72329025f70d2c6ead14a8217c5514dd2c6d5a78f", size = 5342265, upload-time = "2026-07-31T14:23:41.286Z" }, + { url = "https://files.pythonhosted.org/packages/6b/72/a1116d683a6d7ece94590013882515de087edf9ef0e6292aae615a44df73/cryptography-50.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b42a28c1844fd9de8f3f7d540e36b66f3a9c83fceac7170ebc7a6a19edd9dcae", size = 4734609, upload-time = "2026-07-31T14:23:43.139Z" }, + { url = "https://files.pythonhosted.org/packages/15/37/36a9c479bbe49acea2636c7fd3360d20f7b7e079c300352011c44850b181/cryptography-50.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:900131fafd8aead39ac7dd3a7e833be754c17a95cfd91221636949fe4eb0aa8a", size = 4356517, upload-time = "2026-07-31T14:23:44.939Z" }, + { url = "https://files.pythonhosted.org/packages/32/98/8a151d64367204cbc63ec65d37502f1d9c53cf4bfc6ec3c532614dbec60d/cryptography-50.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:07949c449a1abcf60d1ee6e88956d89404c7df3c8258f46589e912988e551987", size = 4724529, upload-time = "2026-07-31T14:23:46.93Z" }, + { url = "https://files.pythonhosted.org/packages/22/f6/ec13b470172126464a86bf54d2294a46d29837fc51ba3e45d4047946fb5e/cryptography-50.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:f89831ef99dd7dd169ab06d63a831adb9e20a87aac6d380266bbda5823349169", size = 5299852, upload-time = "2026-07-31T14:23:48.851Z" }, + { url = "https://files.pythonhosted.org/packages/da/3a/f05e32c99d440c9bb891ea0e36c9091891e36be5a9a87ab2ee6ea20729f6/cryptography-50.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:82148ec5bddac30b51a5b3c1945075f896fa022cb93f8e4a01e9f6ee95292c5f", size = 4734462, upload-time = "2026-07-31T14:23:50.861Z" }, + { url = "https://files.pythonhosted.org/packages/ca/dc/bd72b26be8953f80625f63151efd38eee71c76ca6cf591c08ff34615a79e/cryptography-50.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1489e263a8048bb8b6a8bac662eb2d402ea5d2b7b4699b72f385f1e2772db105", size = 4852708, upload-time = "2026-07-31T14:23:52.715Z" }, + { url = "https://files.pythonhosted.org/packages/27/20/c930314a2ab476d15dec966ec87e2e9637bb02b06106b12c0396c57bb603/cryptography-50.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7cec5b856506da6defb290f30c9ee687d5f5e8cb0bd3f6459dde43b0b4fa40ef", size = 5004179, upload-time = "2026-07-31T14:23:54.887Z" }, + { url = "https://files.pythonhosted.org/packages/32/2e/c9db68a0c4bfa28e310707527c0ee3a2bd254104d2e02e68f368e197aa4c/cryptography-50.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:bd1c592e4d5974f0d08d4888e432157adba757c66da0246918e43677fafa2d30", size = 3840395, upload-time = "2026-07-31T14:23:56.677Z" }, + { url = "https://files.pythonhosted.org/packages/03/37/73d005be173aff344af30e9fd2a576575cb2391a7101d9cd3842e1fa8cce/cryptography-50.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ccdc4a71a4dabae05de219404f9f4abc38e3b58422177ff93d0da05967dafa07", size = 4036009, upload-time = "2026-07-31T14:24:24.122Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c6/7a6202a534e32103a285b7834a120869557fe198d51d7cfe59754c8bda9c/cryptography-50.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:910e1d2668e7de9648f2bcee30e180db2a6b15c30f887d7c4c93ddf96e3992e3", size = 4745252, upload-time = "2026-07-31T14:24:26.118Z" }, + { url = "https://files.pythonhosted.org/packages/85/4f/0fa8c2f4428198f15d9ff8d63400e27afbf94ce833f6108da1eb3753f945/cryptography-50.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a91296cb61e8df6f86d0c19cc4068228da256bf59bf86049fbd821084565327f", size = 4728939, upload-time = "2026-07-31T14:24:27.994Z" }, + { url = "https://files.pythonhosted.org/packages/d1/63/54dd723490ba2dc09b299682c10b38db38f159728bcaae8c591b8af2f22d/cryptography-50.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e722f16708d854fe924790e051061f6704a472c3bac347b6fd88033ea8dd0dc5", size = 4748483, upload-time = "2026-07-31T14:24:30.254Z" }, + { url = "https://files.pythonhosted.org/packages/1d/dd/7c77d26285cc7f6991efce64a0f5b4f9383bfa5dd8c5033003eaf7db4cdb/cryptography-50.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d764dcf130c428ef66786f866dd750f53182bc608813489915e9fc106bb0c82f", size = 5367599, upload-time = "2026-07-31T14:24:32.457Z" }, + { url = "https://files.pythonhosted.org/packages/46/c9/f60aed34c013f317f92817b6c171c2d22a78270fa41109bd4b08af26b194/cryptography-50.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:105110f43a471dbd0060b9c9516cb8a6a79233631a04cc2ba16f28323ac6e025", size = 4762647, upload-time = "2026-07-31T14:24:34.599Z" }, + { url = "https://files.pythonhosted.org/packages/be/f3/f9a0173b139372c3a48ed98154b45cc6b9de17c789d5ab552e621c293609/cryptography-50.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:828743d939e9629bc267b8e2d08d8bb67cd4319c771a33d4b18b22dd8fb7440a", size = 4385197, upload-time = "2026-07-31T14:24:36.647Z" }, + { url = "https://files.pythonhosted.org/packages/d8/36/83bb81f6e569bc38e1e4a7bc80f29b46bb9601920bc455fc8e888f5d5742/cryptography-50.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a8183b489dc1f7f80f135780fadc1108f14b31b8a40411c7a5b17425f65f28b", size = 4748095, upload-time = "2026-07-31T14:24:39.493Z" }, + { url = "https://files.pythonhosted.org/packages/6b/16/d3008eff98c764979865834c3d386d4fd041b5f52e7f34fc29ac1a5eb515/cryptography-50.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6e7d61120573a7f2cd94cc095f9e81f6967c61ccdf194285aa143ecec8e0b708", size = 5325948, upload-time = "2026-07-31T14:24:41.556Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f8/d97f9603efda3888187bfdb893f26c41be4735c10631d05d284ee6b047c4/cryptography-50.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:37fdb0d0111f1e2ff07139dfb79f1b49531f8e213c46f1163dd7642979b58c47", size = 4762400, upload-time = "2026-07-31T14:24:43.636Z" }, + { url = "https://files.pythonhosted.org/packages/64/a2/4615c8f7d81a00b1d6e6afe19f694e1543582349fb5f4076f6cb5dc36485/cryptography-50.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87f62a3d3b9888ed0fdde100ec06aa61ca9cd44bad9057d1dff9a516b5f5bb9", size = 4878208, upload-time = "2026-07-31T14:24:45.522Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1a/efcfb02f91407149a0dacffffab791f7e19bf6385f63b3666dc8b5e5c9c8/cryptography-50.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:65c2c3add92b45fd0709db8594536aea39c2a67af0e27ffcf049c498501140b7", size = 5037050, upload-time = "2026-07-31T14:24:47.697Z" }, + { url = "https://files.pythonhosted.org/packages/57/30/4a22984d4f1bdfb8c054f07a92bc176b97a3134cc1d6c4b3bffb1f3688b4/cryptography-50.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:d24fead1d4d076e1bfb006dcec392074a3cd8d7b4fc8a595aa64073b2b7a96ba", size = 3874135, upload-time = "2026-07-31T14:24:50.085Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "docker" +version = "7.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/7f/731ff914b0255d3d065f45fd4e626d4b8c95dbcbaada049f337a6ac16410/docker-7.2.0.tar.gz", hash = "sha256:cebb93773d334f778e023a7ee352a8d6e13ab1bd3b863a4d4a59dec897df43ac", size = 118731, upload-time = "2026-07-09T14:53:46.39Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/23/529140fe1aab80fc6992f93a706deec709140a6397439139a054e1515c45/docker-7.2.0-py3-none-any.whl", hash = "sha256:a3f45fdeb9165e2d25d9a1d02ddf3bc70fb572cf5ebbf9b58558c22caf29b71f", size = 148775, upload-time = "2026-07-09T14:53:45.224Z" }, +] + +[[package]] +name = "exchange-calendars" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "korean-lunar-calendar" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyluach" }, + { name = "toolz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/73/460b0ece4e7444e3098b7738974c822787e134578d069d3a88b4be17d50a/exchange_calendars-4.13.2.tar.gz", hash = "sha256:a9459425dd64142cd54fbc639847403c7e0c33d60fbc326c94fc1d6bd127f002", size = 4137321, upload-time = "2026-03-10T03:24:38.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/4c/0469b40057bc9f8d9594dcc6024202626b981ae4b52dfcd304552e8e1c3a/exchange_calendars-4.13.2-py3-none-any.whl", hash = "sha256:fc5a2ad0d61b5c3a6539a3061cd4cbb55c59f4a903455cec7926e4b798919996", size = 213306, upload-time = "2026-03-10T03:24:37.055Z" }, +] + +[[package]] +name = "fonttools" +version = "4.63.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/69/c97f2c18e0db87d2c7b15da1974dace76ae938f1cfa22e2727a648b7ed43/fonttools-4.63.0.tar.gz", hash = "sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0", size = 3597189, upload-time = "2026-05-14T12:04:30.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:37dd23e621e3b0aef1baa70a303b80aaf38449632cfc8fd2a55fb285bbccfc02", size = 2881131, upload-time = "2026-05-14T12:03:13.386Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0", size = 2426704, upload-time = "2026-05-14T12:03:15.801Z" }, + { url = "https://files.pythonhosted.org/packages/44/04/0b91d8e916e92ad1fac9e4624760baf0fd5ff2ead614c2f68fb21373f03f/fonttools-4.63.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef3048ef05dbb552b89817713d9cac912e00d0fde4a3105c00d29e52e10c89af", size = 5044298, upload-time = "2026-05-14T12:03:18.085Z" }, + { url = "https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58dc6bb86a78d782f00f9190ca02c119cf5bbe2807536e361e18d42019f877d8", size = 4999800, upload-time = "2026-05-14T12:03:20.161Z" }, + { url = "https://files.pythonhosted.org/packages/e6/6d/67fe16c48d7ce050979b33f47e0d28a318f02da030602e944c34f7a16ef3/fonttools-4.63.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee08ebfa58f6e1aeff5697ab9582105bb620008c1caafb681e4c557e7483027b", size = 4982666, upload-time = "2026-05-14T12:03:22.87Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/3bbab338c07c71fa56269953845e92c951a61457bbbb0f1022551ea266d9/fonttools-4.63.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:27fdc65af8da6f88b9c6121c47a464cbe359fcfff7ff6fc2d37a1f395d755b78", size = 5133598, upload-time = "2026-05-14T12:03:25.168Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/aa27c7f98db5b064883dadcc5283947e81e034de42e22a33675878d98b54/fonttools-4.63.0-cp312-cp312-win32.whl", hash = "sha256:af2fd1664d00a397d75f806985ddb36282091c2131a73a6485c23b4a34722263", size = 2292575, upload-time = "2026-05-14T12:03:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:59ac449f8cca9b4ffa08d2e7bbadad87ce710d69d1eda5c3c1ce579baa987272", size = 2343211, upload-time = "2026-05-14T12:03:30.057Z" }, + { url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + +[[package]] +name = "json5" +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/7d/05c46a96a78147ae3bf99c2f4169ce144a70220b8d6fcd56f6ec368b8ce9/json5-0.15.0.tar.gz", hash = "sha256:7424d1f1eb1d56da6e3d70643f53619862b4ce81440bdb8ecfd6f875e5ba4a71", size = 53278, upload-time = "2026-06-19T20:08:27.716Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/be/59527c99478aade6bb33a68d72e6e18dd4e6ff6eacfc7d01bdb15bc76912/json5-0.15.0-py3-none-any.whl", hash = "sha256:56636a30c0e8a4665fe2179c0212f32eae3796dea89ea6f649b9436ecdb39618", size = 36570, upload-time = "2026-06-19T20:08:26.748Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/67/9c61eccb13f0bdca9307614e782fec49ffdde0f7a2314935d489fa93cd9c/kiwisolver-1.5.0.tar.gz", hash = "sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a", size = 103482, upload-time = "2026-03-09T13:15:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/b2/818b74ebea34dabe6d0c51cb1c572e046730e64844da6ed646d5298c40ce/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9", size = 123158, upload-time = "2026-03-09T13:13:23.127Z" }, + { url = "https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588", size = 66388, upload-time = "2026-03-09T13:13:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/99/9f/795fedf35634f746151ca8839d05681ceb6287fbed6cc1c9bf235f7887c2/kiwisolver-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819", size = 64068, upload-time = "2026-03-09T13:13:25.878Z" }, + { url = "https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f", size = 1477934, upload-time = "2026-03-09T13:13:27.166Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2f/cebfcdb60fd6a9b0f6b47a9337198bcbad6fbe15e68189b7011fd914911f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf", size = 1278537, upload-time = "2026-03-09T13:13:28.707Z" }, + { url = "https://files.pythonhosted.org/packages/f2/0d/9b782923aada3fafb1d6b84e13121954515c669b18af0c26e7d21f579855/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d", size = 1296685, upload-time = "2026-03-09T13:13:30.528Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/83241b6634b04fe44e892688d5208332bde130f38e610c0418f9ede47ded/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083", size = 1346024, upload-time = "2026-03-09T13:13:32.818Z" }, + { url = "https://files.pythonhosted.org/packages/e4/db/30ed226fb271ae1a6431fc0fe0edffb2efe23cadb01e798caeb9f2ceae8f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6", size = 987241, upload-time = "2026-03-09T13:13:34.435Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bd/c314595208e4c9587652d50959ead9e461995389664e490f4dce7ff0f782/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1", size = 2227742, upload-time = "2026-03-09T13:13:36.4Z" }, + { url = "https://files.pythonhosted.org/packages/c1/43/0499cec932d935229b5543d073c2b87c9c22846aab48881e9d8d6e742a2d/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0", size = 2323966, upload-time = "2026-03-09T13:13:38.204Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6f/79b0d760907965acfd9d61826a3d41f8f093c538f55cd2633d3f0db269f6/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15", size = 1977417, upload-time = "2026-03-09T13:13:39.966Z" }, + { url = "https://files.pythonhosted.org/packages/ab/31/01d0537c41cb75a551a438c3c7a80d0c60d60b81f694dac83dd436aec0d0/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314", size = 2491238, upload-time = "2026-03-09T13:13:41.698Z" }, + { url = "https://files.pythonhosted.org/packages/e4/34/8aefdd0be9cfd00a44509251ba864f5caf2991e36772e61c408007e7f417/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9", size = 2294947, upload-time = "2026-03-09T13:13:43.343Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384", size = 73569, upload-time = "2026-03-09T13:13:45.792Z" }, + { url = "https://files.pythonhosted.org/packages/28/26/192b26196e2316e2bd29deef67e37cdf9870d9af8e085e521afff0fed526/kiwisolver-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7", size = 64997, upload-time = "2026-03-09T13:13:46.878Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fa/2910df836372d8761bb6eff7d8bdcb1613b5c2e03f260efe7abe34d388a7/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_10_13_x86_64.whl", hash = "sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797", size = 130262, upload-time = "2026-03-09T13:15:35.629Z" }, + { url = "https://files.pythonhosted.org/packages/0f/41/c5f71f9f00aabcc71fee8b7475e3f64747282580c2fe748961ba29b18385/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203", size = 138036, upload-time = "2026-03-09T13:15:36.894Z" }, + { url = "https://files.pythonhosted.org/packages/fa/06/7399a607f434119c6e1fdc8ec89a8d51ccccadf3341dee4ead6bd14caaf5/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7", size = 194295, upload-time = "2026-03-09T13:15:38.22Z" }, + { url = "https://files.pythonhosted.org/packages/b5/91/53255615acd2a1eaca307ede3c90eb550bae9c94581f8c00081b6b1c8f44/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57", size = 75987, upload-time = "2026-03-09T13:15:39.65Z" }, +] + +[[package]] +name = "korean-lunar-calendar" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/9f/6160e95f3934026194dc7a0b5c78fe5c6e74761830ddea3e9cfc38e3f983/korean_lunar_calendar-0.4.0.tar.gz", hash = "sha256:be56f27bc0594fdbbdf7bbe00f504a9f929a31e311bd7d9bb93561b645afade7", size = 13425, upload-time = "2026-06-15T14:19:57.163Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/88/f56033b09fdca5c8c5e5fc2f3513950a05cd62caa9bd8e6d2750a887c86e/korean_lunar_calendar-0.4.0-py3-none-any.whl", hash = "sha256:c042e20de0bb702add6bec8d0f6da1ea8d3b170838e63846f70420cf341fe4e7", size = 11323, upload-time = "2026-06-15T14:19:56.089Z" }, +] + +[[package]] +name = "lean" +version = "1.0.228" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "cryptography" }, + { name = "docker" }, + { name = "joblib" }, + { name = "json5" }, + { name = "lxml" }, + { name = "packaging" }, + { name = "pydantic" }, + { name = "python-dateutil" }, + { name = "quantconnect-stubs" }, + { name = "requests" }, + { name = "rich" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/fe/78ca8cbe7cf725a2a3733201757a9c1f5062a1406ed6d8f8179e814c20b8/lean-1.0.228.tar.gz", hash = "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", size = 250308, upload-time = "2026-08-12T21:06:08.688Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/30/927d761921cb82745589975b5df71aa0bf3509d7014888cb36e99f4b8e9b/lean-1.0.228-py3-none-any.whl", hash = "sha256:4684bafbbb24df22fbbabd6f490bc321f09f24258866e69ef7b8059c0afcace1", size = 332862, upload-time = "2026-08-12T21:06:07.234Z" }, +] + +[[package]] +name = "lxml" +version = "6.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/3b/aab6728cae887456f409b4d75e8a01856e4f04bd510de38052a47768b680/lxml-6.1.1.tar.gz", hash = "sha256:ba96ae44888e0185281e937633a743ea90d5a196c6000f82565ebb0580012d40", size = 4197430, upload-time = "2026-05-18T19:19:06.424Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/6e/c4add832b6fc1e887125b96f880d7b9b70aae5248718e046b1704bcac4b9/lxml-6.1.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:104c09bda8d2a562824c0e319d0768ce26a779b7601e0931d33b09b53c392ef7", size = 8570821, upload-time = "2026-05-18T19:17:42.068Z" }, + { url = "https://files.pythonhosted.org/packages/22/00/ff3009c88e65de8011630acf8ab5a09cb2becd2aaf47fba2f3449f6224e9/lxml-6.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:25c6997a9a534e016695a0ba06b2f07945de682731ff01065b6d5a4474179da1", size = 4624252, upload-time = "2026-05-18T19:17:47.897Z" }, + { url = "https://files.pythonhosted.org/packages/42/95/bb63f0fd62e554fe078e1fb3c8fe9083c14ddc7ad7fa178d10e57e071ac7/lxml-6.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c921ba5c51e4e9f63b8b00267d06566e1f63407408a0496da2d1d0bfc819c7fc", size = 4930746, upload-time = "2026-05-18T19:18:29.637Z" }, + { url = "https://files.pythonhosted.org/packages/eb/99/0013e8d9b5960f4f041cf0b73e2f80c23eb5205b1f7bfb20203243651359/lxml-6.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:54a7f95e4de5fb94e2f9f4b9055c6ba33bf3d628fd77a1d647c5923caa2cdcdc", size = 5093723, upload-time = "2026-05-18T19:18:34.168Z" }, + { url = "https://files.pythonhosted.org/packages/29/91/317b332636bfc7bddcff828d41b3307f50043f4b237e40849c333d80fa1a/lxml-6.1.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f2ec43df44b1f76249ee0a615334f9b5b060e1c8bd90e706dad2d14d02f383", size = 5005557, upload-time = "2026-05-18T19:18:39.798Z" }, + { url = "https://files.pythonhosted.org/packages/42/2f/cc9bf06afe70f9c9093ae60855d9759da9db601ec4080f7473319666ffd7/lxml-6.1.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:70ef8a7e102a1508f8121aae5b0867abd663f72c14f0a9c937e6554cb4587b7b", size = 5631036, upload-time = "2026-05-18T19:18:44.858Z" }, + { url = "https://files.pythonhosted.org/packages/08/f6/af32e23e563971ffb0fb86be52bc5be5c2c118858ffc119bf6a9039b173d/lxml-6.1.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ebe6af670449830d6d9b752c256a983291c766a1365ba5d5460048f9e33a7818", size = 5240367, upload-time = "2026-05-18T19:18:49.217Z" }, + { url = "https://files.pythonhosted.org/packages/78/83/8555d40948b09ce86f1bd0c68a7ac31d07b1929f92cc1b074006c97ef2d2/lxml-6.1.1-cp312-cp312-manylinux_2_28_i686.whl", hash = "sha256:27acc820660aaffa4f7c087f29120e12980f7779d56d8492d263170111284740", size = 5350171, upload-time = "2026-05-18T19:18:52.779Z" }, + { url = "https://files.pythonhosted.org/packages/63/75/5d92da93729b7bad783689e6496049fa40927b45bec7bf183c981de3ca70/lxml-6.1.1-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:1db753c9115ec7100d073b744d17e25e88a8f90f5c39b2f5dd878149af59671f", size = 4694874, upload-time = "2026-05-18T19:18:55.139Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b5/3aad415a9a25b822e783f15deeb4dffccf5113030f1afa2222dd929313d9/lxml-6.1.1-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c4f469aebd783bb741c2ecb2a681008fd26bfe5c16a9a72ed5467f834e810df2", size = 5244492, upload-time = "2026-05-18T19:19:01.28Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a1/5fcf7eb9904b80086aa47dcf0027de07b1bb990afad2e6823144c368ae04/lxml-6.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:766b010012d59470072c1816b5b6c69f1d243e5db36ea5968e94accf430a4635", size = 5048232, upload-time = "2026-05-18T19:18:12.67Z" }, + { url = "https://files.pythonhosted.org/packages/77/74/1f601b63c7a69fcdf10fa9b148c81da8442204194f6c55509cc485c786b9/lxml-6.1.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b8d812c6011c08b8111a15e54dd990b8923692d80adf35488bee34026c35accf", size = 4777023, upload-time = "2026-05-18T19:18:15.928Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b9/7a78f51aec95b1bf780d78e12705a9f6533284f8693dc5c0e6724fa53d3f/lxml-6.1.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:fe0306bd29505a9177aac19f1877174b0e7422c222a59f70b2cd41633448c3dc", size = 5645773, upload-time = "2026-05-18T19:18:23.223Z" }, + { url = "https://files.pythonhosted.org/packages/a5/6e/98a7b7ad54e4e74fa1f20fff776913980619d0ebe5558232d7da6580bdd8/lxml-6.1.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5ba186ad207446c65d3bb3d3e0412b032b1d9f595e59861e2354798c5703d955", size = 5233088, upload-time = "2026-05-18T19:18:31.433Z" }, + { url = "https://files.pythonhosted.org/packages/65/d1/bc0ed2427bf609f2ee10da303a6a226f9c8bce94f945dc29a32ce55de6e4/lxml-6.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aa366a1e55b8ebfe8ca8ddc3cfe75c8ebade181aeb0f661d0cb05986b647f72a", size = 5260995, upload-time = "2026-05-18T19:18:37.091Z" }, + { url = "https://files.pythonhosted.org/packages/69/8b/6772e1a4b513fc50a8d931f19edde0e13ae6918510a1e13ff67864f3e5ed/lxml-6.1.1-cp312-cp312-win32.whl", hash = "sha256:126c93f7f56f0eda92f6d8c619edc463a4f23d9252f1c9d0405a76f25fa9f11a", size = 3596382, upload-time = "2026-05-18T19:17:18.37Z" }, + { url = "https://files.pythonhosted.org/packages/1b/89/45198e9624762af2dfd2cb8782598477ceb29f6e59caab560388ae1f4ec1/lxml-6.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:26e6eda8d38c1fcab1090dd196ee87cbd13788e531937610e2589085de074e77", size = 3997255, upload-time = "2026-05-18T19:17:56.781Z" }, + { url = "https://files.pythonhosted.org/packages/90/a9/7a54b6834088d9ae528a7b780584ba6a39a9457b0ac330479f20ffbc9449/lxml-6.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:6540377fbd53fe1b629172288c464fb18db11ce1fa7dc15891da10aa9dcc3e7f", size = 3659610, upload-time = "2026-05-19T19:22:50.843Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/64/f9a391af28f518b11ad45a8a712353c94a0aefce09d3703200e5c54b610a/matplotlib-3.11.1.tar.gz", hash = "sha256:69647db5746941c793d6e445a4cd349323ffb87d9cc958c2ad84a659b4832d30", size = 32612045, upload-time = "2026-07-18T03:39:46.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/6c/7ef7ebcb2bd9739b2b66b18b076e077f44bb46fdbe28ca0506edb3c62c79/matplotlib-3.11.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e15ef41507f3d525f46154ac9e3ae785dacde9f20e593a25de8986267892ef74", size = 9453849, upload-time = "2026-07-18T03:38:19.593Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f8/6d0c312c8d9738e7d9677f09fe5c986b3239e651a7b73a2deb38b65e4a71/matplotlib-3.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:21a67b961a6d597bca54fae826cd20695ba4a6e4d05424a08da6e13e3176fd6b", size = 9283113, upload-time = "2026-07-18T03:38:21.95Z" }, + { url = "https://files.pythonhosted.org/packages/c9/cf/b4ad2cc81b6672ea29ea04e64e350a9f9b493b0908ccd884c67eeff8f7b2/matplotlib-3.11.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ba8f811b8ddfac493734d6af0b2dff96919d0c28ca0d641858dab4262777c6ea", size = 10035615, upload-time = "2026-07-18T03:38:24.315Z" }, + { url = "https://files.pythonhosted.org/packages/88/90/4e10e033d9b66589d8ed98b84c95cdbb57033d57c1f41339d7393dbd2f2e/matplotlib-3.11.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c52f7ad20ef476806ed212380b1d54d20310c8b86bdc2c9a68b51f0024a44472", size = 10842559, upload-time = "2026-07-18T03:38:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/88/eb/799612d0f8cd3e816a10fec59329fca52cd2353264df80378dfc541ae855/matplotlib-3.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8b14eb22961fe865efb0e4ff167e333e428908b00115a8d800ccb65ee108e481", size = 10927532, upload-time = "2026-07-18T03:38:28.532Z" }, + { url = "https://files.pythonhosted.org/packages/88/89/56649bbaa2fd12e20f3be03dbcc135b0c8676d88bac17977599e3eb442a0/matplotlib-3.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:88a2a27dd9691ae448dfae4b26f59036be90c3c28757edd3553a29559d00859f", size = 9333886, upload-time = "2026-07-18T03:38:30.477Z" }, + { url = "https://files.pythonhosted.org/packages/c1/11/4d124efbbad677b7b7552f6f85a3bd432d4232f95400cea98fcd2ae36ef3/matplotlib-3.11.1-cp312-cp312-win_arm64.whl", hash = "sha256:480194afceca4df2f137c2721227d3cba67121fbf4397b69cee7f83714b0a58a", size = 9007545, upload-time = "2026-07-18T03:38:32.833Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "ml4t-backtest" +source = { editable = "../../../" } +dependencies = [ + { name = "ml4t-specs" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pandas-market-calendars" }, + { name = "polars" }, + { name = "pyyaml" }, +] + +[package.metadata] +requires-dist = [ + { name = "backtrader", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=1.9.0" }, + { name = "cvxpy", marker = "extra == 'advanced'", specifier = ">=1.3.0" }, + { name = "cvxpy", marker = "extra == 'all'", specifier = ">=1.3.0" }, + { name = "dash", marker = "extra == 'all'", specifier = ">=2.11.0" }, + { name = "dash", marker = "extra == 'viz'", specifier = ">=2.11.0" }, + { name = "hypothesis", marker = "extra == 'all'", specifier = ">=6.80.0" }, + { name = "hypothesis", marker = "extra == 'dev'", specifier = ">=6.80.0" }, + { name = "matplotlib", marker = "extra == 'all'", specifier = ">=3.7.0" }, + { name = "matplotlib", marker = "extra == 'viz'", specifier = ">=3.7.0" }, + { name = "mkdocs", marker = "extra == 'all'", specifier = ">=1.6,<2" }, + { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.6,<2" }, + { name = "mkdocs-material", marker = "extra == 'all'", specifier = ">=9.5.0" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'all'", specifier = ">=0.24.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'", specifier = ">=0.24.0" }, + { name = "ml4t-diagnostic", marker = "extra == 'all'", specifier = ">=0.1.0b4" }, + { name = "ml4t-diagnostic", marker = "extra == 'dev'", specifier = ">=0.1.0b4" }, + { name = "ml4t-specs", specifier = ">=0.1.2,<0.2" }, + { name = "networkx", marker = "extra == 'advanced'", specifier = ">=3.0" }, + { name = "networkx", marker = "extra == 'all'", specifier = ">=3.0" }, + { name = "numpy", specifier = ">=2.3.2" }, + { name = "pandas", marker = "python_full_version < '3.15'", specifier = ">=2.3.3" }, + { name = "pandas", marker = "python_full_version >= '3.15'", specifier = ">=3.0.5" }, + { name = "pandas-market-calendars", specifier = ">=5.2.4" }, + { name = "plotly", marker = "extra == 'all'", specifier = ">=5.15.0" }, + { name = "plotly", marker = "extra == 'viz'", specifier = ">=5.15.0" }, + { name = "polars", specifier = ">=1.36.1" }, + { name = "pre-commit", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pre-commit", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyfolio-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.9.9" }, + { name = "pytest", marker = "extra == 'all'", specifier = ">=7.4.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.4.0" }, + { name = "pytest-asyncio", marker = "extra == 'all'", specifier = ">=0.21.0" }, + { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" }, + { name = "pytest-benchmark", marker = "extra == 'all'", specifier = ">=4.0.0" }, + { name = "pytest-benchmark", marker = "extra == 'dev'", specifier = ">=4.0.0" }, + { name = "pytest-cov", marker = "extra == 'all'", specifier = ">=4.1.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0" }, + { name = "pytest-timeout", marker = "extra == 'all'", specifier = ">=2.1.0" }, + { name = "pytest-timeout", marker = "extra == 'dev'", specifier = ">=2.1.0" }, + { name = "pytest-xdist", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pytest-xdist", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyyaml", specifier = ">=6.0.3" }, + { name = "ruff", marker = "extra == 'all'", specifier = ">=0.8.0" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8.0" }, + { name = "ty", marker = "extra == 'all'" }, + { name = "ty", marker = "extra == 'dev'" }, + { name = "vectorbt", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.24.0" }, + { name = "zipline-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=2.4.0" }, +] +provides-extras = ["advanced", "all", "comparison", "dev", "docs", "viz"] + +[package.metadata.requires-dev] +dev = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "ml4t-diagnostic", specifier = ">=0.1.0b4" }, + { name = "pre-commit", specifier = ">=3.3.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, + { name = "ruff", specifier = ">=0.8.0" }, + { name = "twine", specifier = ">=6.0.0" }, + { name = "ty" }, +] +test = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, +] + +[[package]] +name = "ml4t-backtest-validation-lean" +version = "0.0.0" +source = { virtual = "." } +dependencies = [ + { name = "lean" }, + { name = "ml4t-backtest" }, +] + +[package.metadata] +requires-dist = [ + { name = "lean", specifier = "==1.0.228" }, + { name = "ml4t-backtest", editable = "../../../" }, +] + +[[package]] +name = "ml4t-specs" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/ca/aba7ea1f4e9a1da0b4f465dea03d3e4320d63db348245a2a9976096407ac/ml4t_specs-0.1.3.tar.gz", hash = "sha256:9578038af96d59cd50317e78f8781772833b308076da13ad24c0b304bb20961d", size = 50758, upload-time = "2026-08-12T02:27:14.366Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/6c/0a35ee16313441a68a14d811ffa8b79eb63a013d548b6bbb50dfd208c6b1/ml4t_specs-0.1.3-py3-none-any.whl", hash = "sha256:2b9302d27746f5859b62c6748bf217ca4eae76d4842c783575c58f4880d1568f", size = 33860, upload-time = "2026-08-12T02:27:12.929Z" }, +] + +[[package]] +name = "numpy" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/80/db0b4559e57ec36362bedbb05530a87fafbcb6067708c946967a41d449e7/numpy-2.5.2.tar.gz", hash = "sha256:d482d171c406ae88c5b19cad3b6a1c4c5209f886ab74bc44c2c865c23f52d860", size = 20773161, upload-time = "2026-08-09T13:48:27.962Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/72/dccb0aaf40972777283303919f613964227266d0c13adebb79ac124f1c3e/numpy-2.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:14e373cfc6387177e8409dac3c7159be8eb05cd77096cd7c950268b86f62831c", size = 16891693, upload-time = "2026-08-09T13:44:51.702Z" }, + { url = "https://files.pythonhosted.org/packages/60/2e/b5aee50a1f74ac815cf8331812cb8251e29024025de462e0c047641c614c/numpy-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4bbd96c833ecc8cc069ce518078fc8c60cb9cbfb0fea5b7a803ad65035596d03", size = 11903109, upload-time = "2026-08-09T13:44:55.501Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f4/29e78102a80601cf034d4e9767022cffeca2c3b4c926e1754572ca95593d/numpy-2.5.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:6e8172ddfcf5cf74b811d372b570b83c60bd2de87a6fbfbebdadb4a9bd9c6cbb", size = 5350202, upload-time = "2026-08-09T13:44:58.401Z" }, + { url = "https://files.pythonhosted.org/packages/11/4b/dcd3b7eadaf4035d2c7a4289d232523a6964f602598ef7674e4bd7291f93/numpy-2.5.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:65f188481f1669e26f62b701e8205d19e460fa4a9b52a1414ba382330e4a3414", size = 6687736, upload-time = "2026-08-09T13:45:00.813Z" }, + { url = "https://files.pythonhosted.org/packages/e5/21/4947e0e9d6c9fc2e2ff15b8949049ee44f63adb9cacc729ab8793f97e712/numpy-2.5.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8ee9c4eeb8454b3660a8b53493563c3e121c2fc94fbd72b848ef814ed7b676a9", size = 15612696, upload-time = "2026-08-09T13:45:04.151Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5f/62d28cf019460c7f1394105b4d49d9911a9c444cb77ab0bd95a204c5a6de/numpy-2.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3cdec01fa790a186d430433fdd4d4ffb70eed6f0eeb4bf05c8dbe2dce0a9bcb8", size = 16722264, upload-time = "2026-08-09T13:45:07.714Z" }, + { url = "https://files.pythonhosted.org/packages/14/25/3f0be4c1b9fdf5dd5e708a6806978564d7c46a055c000496309ff2a2f8af/numpy-2.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7999d4ddb0c4025018373fd787510d46e04c769467af22869707b3c1cfd459ab", size = 16974396, upload-time = "2026-08-09T13:45:11.316Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/6262cbdeeb45da9d971e40715f579d791603ba8ec0b5e2db1ac55454421d/numpy-2.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1f017dc0875c9209d219f97feceb7d54c2661bb243deb4114478e1295808af7", size = 18476044, upload-time = "2026-08-09T13:45:14.869Z" }, + { url = "https://files.pythonhosted.org/packages/36/33/29208b8b075bde62d26a81d14b358c42b0f69b6cabd98d4ff97f37f22b05/numpy-2.5.2-cp312-cp312-win32.whl", hash = "sha256:d6a48072864e3324e194a8fbb3c657bcc5b5c869dbc64c9537b1d5c862572c0a", size = 6072817, upload-time = "2026-08-09T13:45:17.867Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/87fea2769fe1c47c1b5b01d8310772c9d1a85d485de7cf386ef7a3332b02/numpy-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:28ac63476ec7651484215ee7fa15a1f78b57c14621f01e392afe17b9a1390ce4", size = 12464674, upload-time = "2026-08-09T13:45:20.734Z" }, + { url = "https://files.pythonhosted.org/packages/14/52/032b97e00461ab0809bbe4c588b035620e5a14b8cdee47ecddefc7b17d33/numpy-2.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:27650bb0e7140fa3d37b9923b4803645e0b125d190f326eecfd3f4dad8e8ade1", size = 10397131, upload-time = "2026-08-09T13:45:23.73Z" }, +] + +[[package]] +name = "packaging" +version = "26.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/4f/5f3422a2afec5ffc46308b79e53291365a93748b498ac2e58bead0197916/pandas-3.0.5.tar.gz", hash = "sha256:dca3734d6ab7c906e6730f0788b0a1dbb9f2467731f9711f77995c8e9d62d712", size = 4658219, upload-time = "2026-07-22T22:19:28.819Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/54/1dc810ea558d1320b597aa140a514f2fdf1d2ea09c38cf556f13ea712ec9/pandas-3.0.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fa290c16964d4963fbfbc358928239cf3bd755b20e988ce944877def2f44471d", size = 10411717, upload-time = "2026-07-22T22:18:08.307Z" }, + { url = "https://files.pythonhosted.org/packages/68/56/fbe81c09195924d8b7b8d4461a20458fe80a6a5ed6b24f0314da684277e1/pandas-3.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2e26bb46934b8a2ca0c3de1d3d606fc5f6746584791b2db264d58cf370e08dc", size = 9957095, upload-time = "2026-07-22T22:18:10.6Z" }, + { url = "https://files.pythonhosted.org/packages/e0/51/fac252f4a913ed5eabf3c11b880a9e8d5a6c10f0b2129d0462212d238b4d/pandas-3.0.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73fa87b08a7ef706f8aafda39ddaccf2a99047bea62d8c88a0361bcafb2237bc", size = 10485458, upload-time = "2026-07-22T22:18:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/12/98/e976540c1addf70442be7842a18cf70884a964abbf69442504f4d2939989/pandas-3.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d373ce03ffd84010ed9839fa73672a9c8256990532e158440c0085db7d914b34", size = 10998091, upload-time = "2026-07-22T22:18:15.209Z" }, + { url = "https://files.pythonhosted.org/packages/a4/8c/1f29b5be8d3fc47dd7567eb167fabba2085879b31e0287ce7cba6d3d2ff4/pandas-3.0.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2a29c53d85ea98c5e792c59ef82ee9fbe6ca902c0d0adb6b23f45ef894cd7bf6", size = 11499501, upload-time = "2026-07-22T22:18:17.689Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e2/bd9c98ad2df7b38bde002adde4cdf353519da51881634323b126c55997f9/pandas-3.0.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a5ad3b02ed6bc7d7ae9b70804b2c6aa31827489d150f8e623ce82491b82085d7", size = 12060559, upload-time = "2026-07-22T22:18:20.147Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9a/ffbd852d58bd74a617fe2f8ee6a58a96982271ce41cf981eab22190b4a4b/pandas-3.0.5-cp312-cp312-pyemscripten_2024_0_wasm32.whl", hash = "sha256:b2acb4650527eec6822c3dadb2b771277b65e7dae7a267d4bccf65fd1bb3fbce", size = 7197652, upload-time = "2026-07-22T22:18:22.502Z" }, + { url = "https://files.pythonhosted.org/packages/70/b5/d2d3e9ae73362ba4229651b0ee1455cf78073a1ce585f6ff693782ce263e/pandas-3.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:80a611068e8a3ac23f7398c6c14eb46dc974e5cc9997f653e2dcfd1da74edd41", size = 9831691, upload-time = "2026-07-22T22:18:24.534Z" }, + { url = "https://files.pythonhosted.org/packages/52/51/dea1e89d6a6796b9c43f85a09b484ee03edb8a4c4842e73e200a8c11301c/pandas-3.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:25ff585b972a18ef1fe9ffa3ac6544d9950508aa76832e5147640b6022821e49", size = 9105796, upload-time = "2026-07-22T22:18:27.064Z" }, +] + +[[package]] +name = "pandas-market-calendars" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exchange-calendars" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/4c/98067cb91b37a137389f978f52410975915268d394c09cf941c490565297/pandas_market_calendars-5.4.0.tar.gz", hash = "sha256:b02f3a0e9bcb4b9e82a5060bf260ef0060ccd398f989b5e6f8208f4352967806", size = 175213, upload-time = "2026-05-27T02:42:05.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/d3/59b999f7f6a1d173572d3e8f8b07ded7e256c691d02b3b5cacb26479895a/pandas_market_calendars-5.4.0-py3-none-any.whl", hash = "sha256:bb2b93b28d496cab173b41c7d120fd5cd9d506b31f3bb0ad3d1d9f2b60d9d9e3", size = 134904, upload-time = "2026-05-27T02:42:06.35Z" }, +] + +[[package]] +name = "pillow" +version = "12.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce", size = 47025035, upload-time = "2026-07-01T11:56:38.965Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965", size = 5345969, upload-time = "2026-07-01T11:54:06.397Z" }, + { url = "https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7", size = 4780323, upload-time = "2026-07-01T11:54:09.351Z" }, + { url = "https://files.pythonhosted.org/packages/25/27/ac8f99618ffd3dde21db0f4d4b1d2ab00c0880595bfd17df103f7f39fd0c/pillow-12.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9", size = 6266838, upload-time = "2026-07-01T11:54:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91", size = 6940830, upload-time = "2026-07-01T11:54:13.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/51/8b08617af3ad95e33ce6d7dd2c99ed6c8298f7fb131636303956be022e25/pillow-12.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c", size = 6344383, upload-time = "2026-07-01T11:54:15.756Z" }, + { url = "https://files.pythonhosted.org/packages/1d/72/cf78ac9780bb93c28328f408973845a309d4d145041665f734572ced1b52/pillow-12.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df", size = 7052934, upload-time = "2026-07-01T11:54:17.721Z" }, + { url = "https://files.pythonhosted.org/packages/20/20/25e0f4dc178a6bc0696793720055519a0de89e7661dae886992decbd2f81/pillow-12.3.0-cp312-cp312-win32.whl", hash = "sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f", size = 6472684, upload-time = "2026-07-01T11:54:19.839Z" }, + { url = "https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09", size = 7227137, upload-time = "2026-07-01T11:54:22.025Z" }, + { url = "https://files.pythonhosted.org/packages/de/47/4845a0a6c0dbf1db8456bd9fc791f13c5ced7ced20606d08a0aacfd25b49/pillow-12.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510", size = 2568267, upload-time = "2026-07-01T11:54:24.051Z" }, +] + +[[package]] +name = "polars" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "polars-runtime-32" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/13/3873f213304bcbaaf39e63c8b905ceb460a0524448d57f86a829f6d4d0fd/polars-1.43.2.tar.gz", hash = "sha256:c699671b99eb71ff53334d237917aaa3db5ad4dda480abcb6c80e0eaee7b677b", size = 750312, upload-time = "2026-08-01T06:28:30.872Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/fe/0888040a24e4504098b85d8ad486b14cb01cf6b030bbe479dfc2dcffc2ac/polars-1.43.2-py3-none-any.whl", hash = "sha256:22aa0cb92a1ee2d60d6a15a638b2e8e0dd99aea21ac0cd8fb29da8e382e075a9", size = 847150, upload-time = "2026-08-01T06:27:15.543Z" }, +] + +[[package]] +name = "polars-runtime-32" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/06/11b578eeef05f867e3ee31b2a2fdd8e7684c2aa47822c49935d1be789c38/polars_runtime_32-1.43.2.tar.gz", hash = "sha256:d7b7c486bccee75a6af0158b87077da3d054657e3c60036b28644f4e1c7fdbf7", size = 3095669, upload-time = "2026-08-01T06:28:32.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/fc/12e6d4ca34d820297651134cfa35f86c33e898539fc6629cbb35d0089697/polars_runtime_32-1.43.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:91abf205d4ec93f92ba95386b7f8776559ae3dfce425ed2e527efa75d117d04a", size = 53088908, upload-time = "2026-08-01T06:27:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/32/81/833b0853551deb810854f96b43dea342b6e6c9b0ea1afcccf774157d519d/polars_runtime_32-1.43.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:2cc3ff96fd44789b02eb5c15b98dfcb000101636b177d3034fae2feec19b118f", size = 47540529, upload-time = "2026-08-01T06:27:21.391Z" }, + { url = "https://files.pythonhosted.org/packages/83/55/7b2a75af14c9294d97f3bec132dd3018ddcd988bef32b5d28322150b8c11/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10ed36e615ab362feb7406e6d084e124b445ad284caa73bd93ae7e65745ed894", size = 51366340, upload-time = "2026-08-01T06:27:24.776Z" }, + { url = "https://files.pythonhosted.org/packages/62/60/64deacb3abc70c52e2d88a808a052d1621c86a48fe9194f2c065579ab1cd/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d5a7ae004a2723ebf4427f6d6a639f30f86af4cf077075f6b35d04711154fc3", size = 57304599, upload-time = "2026-08-01T06:27:27.875Z" }, + { url = "https://files.pythonhosted.org/packages/52/95/d6e3a236d7630e17c40d0ddee839bf2be9acf548fdc0e5ad65ed9ff0cac6/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:09339eacc6d392206e78aabbaaa37d7276eb969b798f46cb1f367fd718798c60", size = 51520580, upload-time = "2026-08-01T06:27:30.913Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5a/2deb8eac70e9a2ac26d88a66ae7cf52612865026f4f4a5e7ab11ad9d52bf/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:452b400e59e7f56e4c6437f435e796903272a9388feee12de2bea049ae87025e", size = 55204471, upload-time = "2026-08-01T06:27:33.886Z" }, + { url = "https://files.pythonhosted.org/packages/29/9e/647401ae8a607bc0cc40ed7b8592d5b1be90ded0dc9b9d6d3aeb03f9524b/polars_runtime_32-1.43.2-cp310-abi3-win_amd64.whl", hash = "sha256:00e33c28e321410c8d66e814a90043101e3bdd9ed2c6dabda07565aa8adbbdf1", size = 52572176, upload-time = "2026-08-01T06:27:37.048Z" }, + { url = "https://files.pythonhosted.org/packages/96/8d/60a50c3f36c85218a7ffcb48c6fe2ce1f7bec799152d68b8658ebed2179c/polars_runtime_32-1.43.2-cp310-abi3-win_arm64.whl", hash = "sha256:350a4868cae85bf8b3f81b33ba47927c15256bd9264dfc8c0753f1b927eac9d3", size = 46582513, upload-time = "2026-08-01T06:27:40.025Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyluach" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/11/42568c1568a75f8803c59f26d29af01a0890352b7a8e03d41ecda8bfb5dd/pyluach-2.3.0.tar.gz", hash = "sha256:ec6e30669d1df50c9ca160486da44a8195bb4c7a5d3d533990d0c5b03accd281", size = 26910, upload-time = "2025-09-09T20:24:39.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/c8/f96208ade3ca4c23b372497d0788bcf0f2e0ff4310e5ee693366bc33fdf0/pyluach-2.3.0-py3-none-any.whl", hash = "sha256:4497b731aef59508b079dbf5f00bc5bf4329ac45090a6cd37b5a83756f0e69ab", size = 25914, upload-time = "2025-09-09T20:24:37.831Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pywin32" +version = "312" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/ff/32aa7d2ed0ab12b323aaa64f9b75e6ad4f8fd09f9ccfc28c79414d46838d/pywin32-312-cp312-cp312-win32.whl", hash = "sha256:dab4f65ac9c4e48400a2a0530c46c3c579cd5905ecd11b80692373915269208b", size = 6371877, upload-time = "2026-06-04T07:49:28.836Z" }, + { url = "https://files.pythonhosted.org/packages/03/d9/77040d3b43df3f3be32ea289433d660d2727f5ba327bc73be835127d9d60/pywin32-312-cp312-cp312-win_amd64.whl", hash = "sha256:b457f6d628a47e8a7346ce22acb7e1a46a4a78b52e1d17e1af56871bd19a93bc", size = 6914841, upload-time = "2026-06-04T07:49:31.85Z" }, + { url = "https://files.pythonhosted.org/packages/e3/cc/7b1ec671775756020a0ee7f4feeaf3c568f0ab86bd3900088cf986937a92/pywin32-312-cp312-cp312-win_arm64.whl", hash = "sha256:6017c58e12f6809fbb0555b75df144c2922a9ffd18e4b9b5afa863b6c1a9d950", size = 6727901, upload-time = "2026-06-04T07:49:34.244Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, +] + +[[package]] +name = "quantconnect-stubs" +version = "18001" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/17/e8/9ed36cb373d28d2d01e2ffe9c271ac87fffb70c37d65935e2cfe540a37f7/quantconnect_stubs-18001.tar.gz", hash = "sha256:f30f412801687776abea66619db65d9bc7b1cbf11df15909f2eabd59211db83c", size = 1362280, upload-time = "2026-08-13T23:28:05.823Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/17/945ffdad1bf4e33f6cd395cabdf1c43f1f42f58ff909eba6fbd36eaf3d81/quantconnect_stubs-18001-py3-none-any.whl", hash = "sha256:02a51d98303d2b22e49b40c1cfb4c1b1da546d78b121e2c5c258ee317a7f4e85", size = 1571614, upload-time = "2026-08-13T23:28:03.013Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "rich" +version = "15.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "toolz" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b", size = 52613, upload-time = "2025-10-17T04:03:21.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", size = 58093, upload-time = "2025-10-17T04:03:20.435Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/26/b09b8010994eccc3c09092e6b34058f36a460eea2d4c3e8b910c695975a0/typing_inspection-0.4.4.tar.gz", hash = "sha256:547274fa6b0a561ccf549cc9524b999a578e737d015d8709d021f9d0d13bea47", size = 76928, upload-time = "2026-08-12T12:37:25.997Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl", hash = "sha256:65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147", size = 14750, upload-time = "2026-08-12T12:37:24.648Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/ff/5a28bdfd8c3ebec42564ac7d0e54ca3db65044a9314a97f9564fa7a1e926/tzdata-2026.3.tar.gz", hash = "sha256:4a1518b8993086a7982523e071643f3c0e5f213e75b21318e78bcabfff9d1415", size = 198674, upload-time = "2026-07-10T08:50:37.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl", hash = "sha256:dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931", size = 348168, upload-time = "2026-07-10T08:50:36.46Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] diff --git a/validation/environments/vectorbt_oss/pyproject.toml b/validation/environments/vectorbt_oss/pyproject.toml new file mode 100644 index 00000000..018c38cc --- /dev/null +++ b/validation/environments/vectorbt_oss/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "ml4t-backtest-validation-vectorbt-oss" +version = "0.0.0" +requires-python = ">=3.12,<3.13" +dependencies = ["ml4t-backtest", "vectorbt==1.1.0"] + +[tool.uv] +package = false + +[tool.uv.sources] +ml4t-backtest = { path = "../../..", editable = true } diff --git a/validation/environments/vectorbt_oss/uv.lock b/validation/environments/vectorbt_oss/uv.lock new file mode 100644 index 00000000..65c1f71e --- /dev/null +++ b/validation/environments/vectorbt_oss/uv.lock @@ -0,0 +1,1039 @@ +version = 1 +revision = 3 +requires-python = "==3.12.*" +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", + "sys_platform != 'emscripten' and sys_platform != 'win32'", +] + +[[package]] +name = "anywidget" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipywidgets" }, + { name = "psygnal" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/31/0491d707c674b34267f55d96d6a7148e55e7b6718a271686232cf295fbe2/anywidget-0.11.0.tar.gz", hash = "sha256:6695fbef9449cf8c27f421b96c5837aa37f909ec1f60cfa33add333e1b70b169", size = 426999, upload-time = "2026-04-27T23:42:09.576Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/c2/8fec8e8e2eb920cc2280f569144080cd58622a2eda83bfa4c0c354a63264/anywidget-0.11.0-py3-none-any.whl", hash = "sha256:c574d9acc6503ad27b37a9acea48f957a8ba7c9c9876cfcb37898931c098ce9d", size = 317341, upload-time = "2026-04-27T23:42:08.356Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/1e/faf0f247f6f881b98fc4d6d07e14085cb89d13665084e6d6ac1dc2c03d0b/asttokens-3.0.2.tar.gz", hash = "sha256:3ecdbd8f2cc195f53ccada3a613538bb5f9ef6f6869129f13e03c30a677b8fe2", size = 63136, upload-time = "2026-07-12T03:31:49.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl", hash = "sha256:9da13157f5b28becde0bd374fc677dcd3c290614264eff096f167c469cd9f933", size = 28702, upload-time = "2026-07-12T03:31:47.542Z" }, +] + +[[package]] +name = "certifi" +version = "2026.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/31/4971872b3ed8715346231fb6eb4da8fcba65a4143c189db151ee28a2812b/charset_normalizer-3.5.0.tar.gz", hash = "sha256:49bd5feb59b0bf3cbf6ebcf4352e371c95b9da9bacd4449f8b64d0ad2c10a26e", size = 169295, upload-time = "2026-08-12T14:35:31.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/3c/045ea64ea5a550870dd8ab60b2242870328d53f17d2be593b4f9f3121474/charset_normalizer-3.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:98820e1ceb25c6df7a80c4fd8efa59cb121f99bc7c4c1693ad94a2caff5b311d", size = 343861, upload-time = "2026-08-12T14:32:27.254Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1b/7502be709db899d5b4801509829188b3a5a10969411da9c846115a5f1b70/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:608553f476fca509537e804c4a71f5eb166ce63b75141f89c2c686ce1aa36956", size = 237550, upload-time = "2026-08-12T14:32:28.385Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ce/66392661375148d9455c17bee25509a54e28c39969e34befa48ec8777936/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6753de11eef42f1c321b26d682957d92c7f7bbce6530f34bbe0f9291dd37cc6f", size = 229673, upload-time = "2026-08-12T14:32:29.668Z" }, + { url = "https://files.pythonhosted.org/packages/6a/64/f58c32a8d4ecf55b82ee61ee9aa6a664d4afcd36c72feb4c926fd6fe9af8/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f76dc0a47f94cb9b69d86f01e477f4b0371ca70208b9ccea7e063c41eed9046", size = 260768, upload-time = "2026-08-12T14:32:30.891Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ea/36c90e59a96386174377e855479ec154221ef001e96637e0b23be92489c4/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c387c6bf91b4774e359a48a179e2872b8e8bf741e4fde06ba8d1665eb9a4760a", size = 257880, upload-time = "2026-08-12T14:32:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/23/35/5b85772eb82528ef22ba29487ad544a7049dfd27f35b1a5a55dbc0843048/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14f6904a3cf870abf044df3a8c4924ac6c8ef77e9896586fd37e73ae96cff2af", size = 247547, upload-time = "2026-08-12T14:32:33.495Z" }, + { url = "https://files.pythonhosted.org/packages/b6/14/ba11a99c2a22ab04c2d5383a700b378cb463a78ab15f36444cabc10cd671/charset_normalizer-3.5.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0cce46dd29d73e135e8087b96eb62a4aca6d69391b7f97808c6588ebed3178f3", size = 243326, upload-time = "2026-08-12T14:32:34.794Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4a/cadba3f2400b45aa1d62a4ae0298bf58a3b30b1158baf15c338c7ce5b601/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b476cdb63df22da2b91837593380be3ddbe406f36c506c1c91d80e7196b66288", size = 238820, upload-time = "2026-08-12T14:32:35.984Z" }, + { url = "https://files.pythonhosted.org/packages/47/41/d5188b9342d75b72c2b05d3ee373f01a691397e770f001ee05e3b37925f5/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1f56ce84b317ef2a59d7d3461891c7597c79247d2192bb8114c68a1a1debfcc0", size = 231661, upload-time = "2026-08-12T14:32:37.191Z" }, + { url = "https://files.pythonhosted.org/packages/13/5f/df38fa972c4e945c3d8cee2bc4e610613af522fd359c7dc7a74c419f0278/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9ce0f885239357379d92fd9a5fddbe20f0e30e0527c29ba69f8e99eeb1304a76", size = 261459, upload-time = "2026-08-12T14:32:38.369Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d7/043ff7720067a3beee05523465ac9c1c846c68b7884930dd483f72ee5ab6/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:96ae7ab5d8155fde927aa0864fbc8ba3cc4fde6d41ab0c7cea9d6012b4978603", size = 242300, upload-time = "2026-08-12T14:32:39.505Z" }, + { url = "https://files.pythonhosted.org/packages/19/f6/33980b7b802a048e546a6d9ad2ea783a6cf6b10a86aaccd10db462d8b913/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf91921009025e96ce57a03ced6d14604fc3baf0530351638e9504a55da6fa3b", size = 259101, upload-time = "2026-08-12T14:32:41.02Z" }, + { url = "https://files.pythonhosted.org/packages/a6/b7/0d19bde844bff9165377c1da9ef3c4792a4c24bd49b5b7094d9e6f6ab58b/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0b2e44e6d42d1a4ff78ccc219a93c5449105d10b16198d1aea581080df8073f9", size = 249246, upload-time = "2026-08-12T14:32:42.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/cc/2c34fdfaacdf0e96e880ef562cbf80a9b5f8ea97e0dd9e57ba348a9c65cf/charset_normalizer-3.5.0-cp312-cp312-win32.whl", hash = "sha256:deb99535e9bf0bea8e274c6413eb939a21be35a3f492678dba4d5b1f4d70f142", size = 178025, upload-time = "2026-08-12T14:32:43.909Z" }, + { url = "https://files.pythonhosted.org/packages/76/d0/c34dbd1df23bcbdc1b5d2f48256340d72fa747f1eb03924a9d2fa35ed85b/charset_normalizer-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e54dd1a66fa4bce0ccaf0db9dde336e49b3eec646dc4c1c0991279369d373a14", size = 200143, upload-time = "2026-08-12T14:32:45.254Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ea/4e6bf1465d60c3d8f488d5bde140d0cb91cd23ccab0dc2895cc6c6982047/charset_normalizer-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:b8ea208b304587d47931b36481342d20336e0d338ab052f8b4305926482598d6", size = 180046, upload-time = "2026-08-12T14:32:46.545Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f3/7b523d807cb5e73562ef8acf21d39cdb9d704955327362c781bc3478a73d/charset_normalizer-3.5.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:5a4ee37248dfac25107c758bda99d545ce73e60b44d2dd39e4a2bb9f2831e9f5", size = 330840, upload-time = "2026-08-12T14:34:45.06Z" }, + { url = "https://files.pythonhosted.org/packages/f0/de/fc68978fe78ca97063c96d764e41ff92ca639948f319271e0ff450e577a2/charset_normalizer-3.5.0-cp37-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a864bdcacd8bff58bb4845304e031f821a3ec64b2b7259f2d409cd49c9e59ca3", size = 251862, upload-time = "2026-08-12T14:34:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/a9/cb/82b41a0ab7fb1a88065f1d78ad32696ad88ea3fe8e25b8189d08833938de/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:84b736e3b391601bc47b86da381c749c0f894e9191aaca9f31f30c2632206df3", size = 239484, upload-time = "2026-08-12T14:34:47.869Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0c/19608b631f4538f908098d4a2d56a8f79a665e27cc58e9d90479761a9227/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6abb1f356fb865baeb6ebc3fadd843e9a96fbf49b9adcca55037f3cceccb7438", size = 230602, upload-time = "2026-08-12T14:34:49.265Z" }, + { url = "https://files.pythonhosted.org/packages/29/db/f648eb30e14eba301aed61e11672156f137905c1bdbb530151abe8065943/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d366548d2ee28a8cfdcc4296363978cc644a728333be9824d2de4652e83df0a", size = 259208, upload-time = "2026-08-12T14:34:50.632Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e0/ed2c8bdbac484d69614d6993143aeb6cb0f4dd1561c883402517b623c8ef/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d672f329ae504ee240eb39b6effb3318aa8e7e8924c0ce8eee5760b3fad98539", size = 253659, upload-time = "2026-08-12T14:34:52.11Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/b4907cb9ec5b521d9d024ced13611240b86ef065c2eb15b3ad2334dc9940/charset_normalizer-3.5.0-cp37-abi3-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c54036a518748b6c02e666f6d46c3817561998fb904c3be25b56fb4fe3dc5706", size = 248821, upload-time = "2026-08-12T14:34:53.399Z" }, + { url = "https://files.pythonhosted.org/packages/12/b2/e2d1abcfbc05822f0030869efb4e9f8a3658e13b4821796d4b62da917327/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:22a1889f1c9b752c63c36758a0c2145458e3cadb20fced7a0790002e9dd12b26", size = 240271, upload-time = "2026-08-12T14:34:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f9/4ba127ad610542fa3eabfa41c45bf12d357860a815b3566374ec0188e213/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:b7eb3eab5c646d3de7dcb14a7c9caebace5249c5767da39e1761cb1576e521a3", size = 232155, upload-time = "2026-08-12T14:34:56.543Z" }, + { url = "https://files.pythonhosted.org/packages/01/68/40613182366d00bd6dbd5f6c84a926cbd120960e038a8269e9ae7d782762/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_ppc64le.whl", hash = "sha256:2080aa129a28267984cdc902898993d788c995c384e285d0d19199f56760d52e", size = 259674, upload-time = "2026-08-12T14:34:57.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/53/4574a14fa4c9de4a6c9f31725354bfa40b67f653e6d594ce1654f9a41b32/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_riscv64.whl", hash = "sha256:fd68c825548a611158230e2f9222e210ceb2e3391995c0aa5865cbdf3ab4bd49", size = 246122, upload-time = "2026-08-12T14:34:59.337Z" }, + { url = "https://files.pythonhosted.org/packages/5a/02/bd8030d13d92c058ca7b2b9615bbb3169569e144db64d65c149cd45abf5e/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_s390x.whl", hash = "sha256:d8a9316f4da85e937242642b537c6d55d7e9287dd38e5634732f8233932aff45", size = 255221, upload-time = "2026-08-12T14:35:00.71Z" }, + { url = "https://files.pythonhosted.org/packages/77/9d/10ecd3bcbe2666b3d4d4026c97b48f73990682815db516052a1e8f4a31c5/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d90254c8f609338c53ec180fcd4c4f9c16502e238e3fc88ca7fd4c2f38d445b8", size = 253450, upload-time = "2026-08-12T14:35:02.217Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0f/d044c4872c0938a84f87b5027a698c0e61bacfc5c3551a4e749ca9b7bc5c/charset_normalizer-3.5.0-cp37-abi3-win32.whl", hash = "sha256:8b3e9e29b8b07cc461b9ce7768db7693a93979d0dadf22046f6f3555ded2f516", size = 173594, upload-time = "2026-08-12T14:35:03.845Z" }, + { url = "https://files.pythonhosted.org/packages/10/6b/6046773901f1944b9a89436351529811ee958afc7b774563be9d74a6f0c3/charset_normalizer-3.5.0-cp37-abi3-win_amd64.whl", hash = "sha256:0c8953d9d1617794cfc40d81179571c9ba3805dd029623a15c93f1fb70e60a74", size = 198959, upload-time = "2026-08-12T14:35:05.187Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a6/b57708ac92aefc8e8389d51d5178129b81f03196da61ee2c23e687b8178a/charset_normalizer-3.5.0-cp37-abi3-win_arm64.whl", hash = "sha256:562d24ca7797c1af8852994950c2e623a907b201fc4b0ed29e92af173d3828ca", size = 267055, upload-time = "2026-08-12T14:35:06.533Z" }, + { url = "https://files.pythonhosted.org/packages/22/c7/754d09943a616937df61e4ba367c409ded2a987e872972098d51a6fcf73b/charset_normalizer-3.5.0-py3-none-any.whl", hash = "sha256:993dfcbe75a85a3784abb5084f2c41b915767c90546fcc92803cffa28611baea", size = 67943, upload-time = "2026-08-12T14:35:30.363Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "dateparser" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "regex" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/6a/9f06999c4f27e9192c5eb38bfffadc2e6752df8178e97e88b10b9eb4c682/dateparser-1.4.2.tar.gz", hash = "sha256:bed2a3fd9bad8f2fb2d72b57748bada260b3a9349a264c22ffc23c3249d7049a", size = 338363, upload-time = "2026-08-04T12:11:03.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/1b/349e07ad184d64e81109e85a3557d7e05631fa3d05344169114ba743c4d3/dateparser-1.4.2-py3-none-any.whl", hash = "sha256:752f3d49d477cf7f60a7a9c8bcb19c882496ede0e377d5a3d80014cdfeca7050", size = 316546, upload-time = "2026-08-04T12:11:01.396Z" }, +] + +[[package]] +name = "dill" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/81/e1/56027a71e31b02ddc53c7d65b01e68edf64dea2932122fe7746a516f75d5/dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa", size = 187315, upload-time = "2026-01-19T02:36:56.85Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" }, +] + +[[package]] +name = "exchange-calendars" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "korean-lunar-calendar" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyluach" }, + { name = "toolz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/73/460b0ece4e7444e3098b7738974c822787e134578d069d3a88b4be17d50a/exchange_calendars-4.13.2.tar.gz", hash = "sha256:a9459425dd64142cd54fbc639847403c7e0c33d60fbc326c94fc1d6bd127f002", size = 4137321, upload-time = "2026-03-10T03:24:38.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/4c/0469b40057bc9f8d9594dcc6024202626b981ae4b52dfcd304552e8e1c3a/exchange_calendars-4.13.2-py3-none-any.whl", hash = "sha256:fc5a2ad0d61b5c3a6539a3061cd4cbb55c59f4a903455cec7926e4b798919996", size = 213306, upload-time = "2026-03-10T03:24:37.055Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + +[[package]] +name = "fonttools" +version = "4.63.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/69/c97f2c18e0db87d2c7b15da1974dace76ae938f1cfa22e2727a648b7ed43/fonttools-4.63.0.tar.gz", hash = "sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0", size = 3597189, upload-time = "2026-05-14T12:04:30.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/ef/b3c6b9b5be2f82416d73fe2ed2e96e2793cd80e7510bd6a17ca79cdd88ec/fonttools-4.63.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:37dd23e621e3b0aef1baa70a303b80aaf38449632cfc8fd2a55fb285bbccfc02", size = 2881131, upload-time = "2026-05-14T12:03:13.386Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0", size = 2426704, upload-time = "2026-05-14T12:03:15.801Z" }, + { url = "https://files.pythonhosted.org/packages/44/04/0b91d8e916e92ad1fac9e4624760baf0fd5ff2ead614c2f68fb21373f03f/fonttools-4.63.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef3048ef05dbb552b89817713d9cac912e00d0fde4a3105c00d29e52e10c89af", size = 5044298, upload-time = "2026-05-14T12:03:18.085Z" }, + { url = "https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58dc6bb86a78d782f00f9190ca02c119cf5bbe2807536e361e18d42019f877d8", size = 4999800, upload-time = "2026-05-14T12:03:20.161Z" }, + { url = "https://files.pythonhosted.org/packages/e6/6d/67fe16c48d7ce050979b33f47e0d28a318f02da030602e944c34f7a16ef3/fonttools-4.63.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee08ebfa58f6e1aeff5697ab9582105bb620008c1caafb681e4c557e7483027b", size = 4982666, upload-time = "2026-05-14T12:03:22.87Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/3bbab338c07c71fa56269953845e92c951a61457bbbb0f1022551ea266d9/fonttools-4.63.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:27fdc65af8da6f88b9c6121c47a464cbe359fcfff7ff6fc2d37a1f395d755b78", size = 5133598, upload-time = "2026-05-14T12:03:25.168Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/aa27c7f98db5b064883dadcc5283947e81e034de42e22a33675878d98b54/fonttools-4.63.0-cp312-cp312-win32.whl", hash = "sha256:af2fd1664d00a397d75f806985ddb36282091c2131a73a6485c23b4a34722263", size = 2292575, upload-time = "2026-05-14T12:03:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/87/36/cccb9bc2a6ab63d1b2980374f0dca72ce95ae267c9b4cfe77455bb70d0d4/fonttools-4.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:59ac449f8cca9b4ffa08d2e7bbadad87ce710d69d1eda5c3c1ce579baa987272", size = 2343211, upload-time = "2026-05-14T12:03:30.057Z" }, + { url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "imageio" +version = "2.37.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/62/aa770a9307508d2a2a2c62d536a49347bffe9e55322db27838d3c93d0b07/imageio-2.37.4.tar.gz", hash = "sha256:e45cbc5e83502047fb138f7f585f7f105a136a57eea5f4b3cfc6ce1b52720bd3", size = 390173, upload-time = "2026-07-20T05:26:11.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/2d/ca050652104bab2cf55e569db2a178b1b61cb041fef28307f2db383f6d9f/imageio-2.37.4-py3-none-any.whl", hash = "sha256:1ab2e22c8debf700f24c3ac43e8f95f3b3a8110c83b93411e97b4b0b2cd1c7e6", size = 318000, upload-time = "2026-07-20T05:26:09.874Z" }, +] + +[[package]] +name = "ipython" +version = "9.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "psutil", marker = "sys_platform != 'cygwin' and sys_platform != 'emscripten'" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/96/b150fe7e25a5a29ae9ac1374e71488639605d39a1ea4abb74c9ce33af235/ipython-9.16.1.tar.gz", hash = "sha256:5a3d1f9a47ff216d6cf9cf863124f6a2c1a198d1354c546a4d24a370a283b64c", size = 4515302, upload-time = "2026-08-03T08:36:15.571Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/8e/1239df488393d61076653bfb29f759d0f60cab8e030abdf7c17c31539b51/ipython-9.16.1-py3-none-any.whl", hash = "sha256:4acae635506f6d352d94c4899a19d5f85f8bc4d230932342dca556fdab1c69b4", size = 625974, upload-time = "2026-08-03T08:36:13.654Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4c/ae/c5ce1edc1afe042eadb445e95b0671b03cee61895264357956e61c0d2ac0/ipywidgets-8.1.8.tar.gz", hash = "sha256:61f969306b95f85fba6b6986b7fe45d73124d1d9e3023a8068710d47a22ea668", size = 116739, upload-time = "2025-11-01T21:18:12.393Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl", hash = "sha256:ecaca67aed704a338f88f67b1181b58f821ab5dc89c1f0f5ef99db43c1c2921e", size = 139808, upload-time = "2025-11-01T21:18:10.956Z" }, +] + +[[package]] +name = "jedi" +version = "0.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/b7/a3635f6a2d7cf5b5dd98064fc1d5fbbafcb25477bcea204a3a92145d158b/jedi-0.20.0.tar.gz", hash = "sha256:c3f4ccbd276696f4b19c54618d4fb18f9fc24b0aef02acf704b23f487daa1011", size = 3119416, upload-time = "2026-05-01T23:38:47.814Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/93/242e2eab5fe682ffcb8b0084bde703a41d51e17ee0f3a31ff0d9d813620a/jedi-0.20.0-py2.py3-none-any.whl", hash = "sha256:7bdd9c2634f56713299976f4cbd59cb3fa92165cc5e05ea811fb253480728b67", size = 4884812, upload-time = "2026-05-01T23:38:43.919Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/2d/ef58fed122b268c69c0aa099da20bc67657cdfb2e222688d5731bd5b971d/jupyterlab_widgets-3.0.16.tar.gz", hash = "sha256:423da05071d55cf27a9e602216d35a3a65a3e41cdf9c5d3b643b814ce38c19e0", size = 897423, upload-time = "2025-11-01T21:11:29.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/b5/36c712098e6191d1b4e349304ef73a8d06aed77e56ceaac8c0a306c7bda1/jupyterlab_widgets-3.0.16-py3-none-any.whl", hash = "sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8", size = 914926, upload-time = "2025-11-01T21:11:28.008Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/67/9c61eccb13f0bdca9307614e782fec49ffdde0f7a2314935d489fa93cd9c/kiwisolver-1.5.0.tar.gz", hash = "sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a", size = 103482, upload-time = "2026-03-09T13:15:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/b2/818b74ebea34dabe6d0c51cb1c572e046730e64844da6ed646d5298c40ce/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9", size = 123158, upload-time = "2026-03-09T13:13:23.127Z" }, + { url = "https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588", size = 66388, upload-time = "2026-03-09T13:13:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/99/9f/795fedf35634f746151ca8839d05681ceb6287fbed6cc1c9bf235f7887c2/kiwisolver-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819", size = 64068, upload-time = "2026-03-09T13:13:25.878Z" }, + { url = "https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f", size = 1477934, upload-time = "2026-03-09T13:13:27.166Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2f/cebfcdb60fd6a9b0f6b47a9337198bcbad6fbe15e68189b7011fd914911f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf", size = 1278537, upload-time = "2026-03-09T13:13:28.707Z" }, + { url = "https://files.pythonhosted.org/packages/f2/0d/9b782923aada3fafb1d6b84e13121954515c669b18af0c26e7d21f579855/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d", size = 1296685, upload-time = "2026-03-09T13:13:30.528Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/83241b6634b04fe44e892688d5208332bde130f38e610c0418f9ede47ded/kiwisolver-1.5.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083", size = 1346024, upload-time = "2026-03-09T13:13:32.818Z" }, + { url = "https://files.pythonhosted.org/packages/e4/db/30ed226fb271ae1a6431fc0fe0edffb2efe23cadb01e798caeb9f2ceae8f/kiwisolver-1.5.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6", size = 987241, upload-time = "2026-03-09T13:13:34.435Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bd/c314595208e4c9587652d50959ead9e461995389664e490f4dce7ff0f782/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1", size = 2227742, upload-time = "2026-03-09T13:13:36.4Z" }, + { url = "https://files.pythonhosted.org/packages/c1/43/0499cec932d935229b5543d073c2b87c9c22846aab48881e9d8d6e742a2d/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0", size = 2323966, upload-time = "2026-03-09T13:13:38.204Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6f/79b0d760907965acfd9d61826a3d41f8f093c538f55cd2633d3f0db269f6/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15", size = 1977417, upload-time = "2026-03-09T13:13:39.966Z" }, + { url = "https://files.pythonhosted.org/packages/ab/31/01d0537c41cb75a551a438c3c7a80d0c60d60b81f694dac83dd436aec0d0/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314", size = 2491238, upload-time = "2026-03-09T13:13:41.698Z" }, + { url = "https://files.pythonhosted.org/packages/e4/34/8aefdd0be9cfd00a44509251ba864f5caf2991e36772e61c408007e7f417/kiwisolver-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9", size = 2294947, upload-time = "2026-03-09T13:13:43.343Z" }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0348374369ca588f8fe9c338fae49fa4e16eeb10ffb3d012f23a54578a9e/kiwisolver-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384", size = 73569, upload-time = "2026-03-09T13:13:45.792Z" }, + { url = "https://files.pythonhosted.org/packages/28/26/192b26196e2316e2bd29deef67e37cdf9870d9af8e085e521afff0fed526/kiwisolver-1.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7", size = 64997, upload-time = "2026-03-09T13:13:46.878Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fa/2910df836372d8761bb6eff7d8bdcb1613b5c2e03f260efe7abe34d388a7/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_10_13_x86_64.whl", hash = "sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797", size = 130262, upload-time = "2026-03-09T13:15:35.629Z" }, + { url = "https://files.pythonhosted.org/packages/0f/41/c5f71f9f00aabcc71fee8b7475e3f64747282580c2fe748961ba29b18385/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203", size = 138036, upload-time = "2026-03-09T13:15:36.894Z" }, + { url = "https://files.pythonhosted.org/packages/fa/06/7399a607f434119c6e1fdc8ec89a8d51ccccadf3341dee4ead6bd14caaf5/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7", size = 194295, upload-time = "2026-03-09T13:15:38.22Z" }, + { url = "https://files.pythonhosted.org/packages/b5/91/53255615acd2a1eaca307ede3c90eb550bae9c94581f8c00081b6b1c8f44/kiwisolver-1.5.0-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57", size = 75987, upload-time = "2026-03-09T13:15:39.65Z" }, +] + +[[package]] +name = "korean-lunar-calendar" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/9f/6160e95f3934026194dc7a0b5c78fe5c6e74761830ddea3e9cfc38e3f983/korean_lunar_calendar-0.4.0.tar.gz", hash = "sha256:be56f27bc0594fdbbdf7bbe00f504a9f929a31e311bd7d9bb93561b645afade7", size = 13425, upload-time = "2026-06-15T14:19:57.163Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/88/f56033b09fdca5c8c5e5fc2f3513950a05cd62caa9bd8e6d2750a887c86e/korean_lunar_calendar-0.4.0-py3-none-any.whl", hash = "sha256:c042e20de0bb702add6bec8d0f6da1ea8d3b170838e63846f70420cf341fe4e7", size = 11323, upload-time = "2026-06-15T14:19:56.089Z" }, +] + +[[package]] +name = "llvmlite" +version = "0.49.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/27/72ae94ea5c8f7349ec1c229d4cd058feb799cbd0833ad6d1b47c919b37b7/llvmlite-0.49.0.tar.gz", hash = "sha256:00f16db782f4a13c78c5804aedc434e46794a77e89999a168f9401106270e50a", size = 194467, upload-time = "2026-08-11T16:26:00.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/ae/3f699ebe3590e15e023a6372dd147526fd8ec398aacf9ceb844e854964a8/llvmlite-0.49.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b541c8fac3450db7574d1f53cf9dff83f285bfed9d69bf81fe71fc2a7d4f97fe", size = 40479231, upload-time = "2026-08-11T16:23:56.773Z" }, + { url = "https://files.pythonhosted.org/packages/be/3c/e97f69c62a2d972066d9a2612ce1f3de313035ac897a5b9f787cad8b55f7/llvmlite-0.49.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6acba646d88abbc87d5c113a3d62c1fbf8b8fee11c6493f516803e30f21ae870", size = 59890658, upload-time = "2026-08-11T16:24:05.451Z" }, + { url = "https://files.pythonhosted.org/packages/69/e6/e942ee08605fc0526ff3854260c384d8315a5830e16c4c2a5aebc14dc9bf/llvmlite-0.49.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4ec8ad805e7515cb8440a690eb3cef4d34acb29eef80b705ec4e1c1ad3c43c68", size = 58344481, upload-time = "2026-08-11T16:24:13.503Z" }, + { url = "https://files.pythonhosted.org/packages/84/49/2a44871cac6b5a2fd4aabd68cfdaf6de9a5c7edb36dee5d47b77bda4b50f/llvmlite-0.49.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a9c9e3af4e214acfefa4f73ebe7bc3fb35854a62b654edb3953f5ae33c08ba3", size = 41865543, upload-time = "2026-08-11T16:24:20.41Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/64/f9a391af28f518b11ad45a8a712353c94a0aefce09d3703200e5c54b610a/matplotlib-3.11.1.tar.gz", hash = "sha256:69647db5746941c793d6e445a4cd349323ffb87d9cc958c2ad84a659b4832d30", size = 32612045, upload-time = "2026-07-18T03:39:46.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/6c/7ef7ebcb2bd9739b2b66b18b076e077f44bb46fdbe28ca0506edb3c62c79/matplotlib-3.11.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e15ef41507f3d525f46154ac9e3ae785dacde9f20e593a25de8986267892ef74", size = 9453849, upload-time = "2026-07-18T03:38:19.593Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f8/6d0c312c8d9738e7d9677f09fe5c986b3239e651a7b73a2deb38b65e4a71/matplotlib-3.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:21a67b961a6d597bca54fae826cd20695ba4a6e4d05424a08da6e13e3176fd6b", size = 9283113, upload-time = "2026-07-18T03:38:21.95Z" }, + { url = "https://files.pythonhosted.org/packages/c9/cf/b4ad2cc81b6672ea29ea04e64e350a9f9b493b0908ccd884c67eeff8f7b2/matplotlib-3.11.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ba8f811b8ddfac493734d6af0b2dff96919d0c28ca0d641858dab4262777c6ea", size = 10035615, upload-time = "2026-07-18T03:38:24.315Z" }, + { url = "https://files.pythonhosted.org/packages/88/90/4e10e033d9b66589d8ed98b84c95cdbb57033d57c1f41339d7393dbd2f2e/matplotlib-3.11.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c52f7ad20ef476806ed212380b1d54d20310c8b86bdc2c9a68b51f0024a44472", size = 10842559, upload-time = "2026-07-18T03:38:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/88/eb/799612d0f8cd3e816a10fec59329fca52cd2353264df80378dfc541ae855/matplotlib-3.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8b14eb22961fe865efb0e4ff167e333e428908b00115a8d800ccb65ee108e481", size = 10927532, upload-time = "2026-07-18T03:38:28.532Z" }, + { url = "https://files.pythonhosted.org/packages/88/89/56649bbaa2fd12e20f3be03dbcc135b0c8676d88bac17977599e3eb442a0/matplotlib-3.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:88a2a27dd9691ae448dfae4b26f59036be90c3c28757edd3553a29559d00859f", size = 9333886, upload-time = "2026-07-18T03:38:30.477Z" }, + { url = "https://files.pythonhosted.org/packages/c1/11/4d124efbbad677b7b7552f6f85a3bd432d4232f95400cea98fcd2ae36ef3/matplotlib-3.11.1-cp312-cp312-win_arm64.whl", hash = "sha256:480194afceca4df2f137c2721227d3cba67121fbf4397b69cee7f83714b0a58a", size = 9007545, upload-time = "2026-07-18T03:38:32.833Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/c0/9f7c9a46090390368a4d7bcb76bb87a4a36c421e4c0792cdb53486ffac7a/matplotlib_inline-0.2.2.tar.gz", hash = "sha256:72f3fe8fce36b70d4a5b612f899090cd0401deddc4ea90e1572b9f4bfb058c79", size = 8150, upload-time = "2026-05-08T17:33:33.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl", hash = "sha256:3c821cf1c209f59fb2d2d64abbf5b23b67bcb2210d663f9918dd851c6da1fcf6", size = 9534, upload-time = "2026-05-08T17:33:32.055Z" }, +] + +[[package]] +name = "ml4t-backtest" +source = { editable = "../../../" } +dependencies = [ + { name = "ml4t-specs" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pandas-market-calendars" }, + { name = "polars" }, + { name = "pyyaml" }, +] + +[package.metadata] +requires-dist = [ + { name = "backtrader", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=1.9.0" }, + { name = "cvxpy", marker = "extra == 'advanced'", specifier = ">=1.3.0" }, + { name = "cvxpy", marker = "extra == 'all'", specifier = ">=1.3.0" }, + { name = "dash", marker = "extra == 'all'", specifier = ">=2.11.0" }, + { name = "dash", marker = "extra == 'viz'", specifier = ">=2.11.0" }, + { name = "hypothesis", marker = "extra == 'all'", specifier = ">=6.80.0" }, + { name = "hypothesis", marker = "extra == 'dev'", specifier = ">=6.80.0" }, + { name = "matplotlib", marker = "extra == 'all'", specifier = ">=3.7.0" }, + { name = "matplotlib", marker = "extra == 'viz'", specifier = ">=3.7.0" }, + { name = "mkdocs", marker = "extra == 'all'", specifier = ">=1.6,<2" }, + { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.6,<2" }, + { name = "mkdocs-material", marker = "extra == 'all'", specifier = ">=9.5.0" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'all'", specifier = ">=0.24.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'", specifier = ">=0.24.0" }, + { name = "ml4t-diagnostic", marker = "extra == 'all'", specifier = ">=0.1.0b4" }, + { name = "ml4t-diagnostic", marker = "extra == 'dev'", specifier = ">=0.1.0b4" }, + { name = "ml4t-specs", specifier = ">=0.1.2,<0.2" }, + { name = "networkx", marker = "extra == 'advanced'", specifier = ">=3.0" }, + { name = "networkx", marker = "extra == 'all'", specifier = ">=3.0" }, + { name = "numpy", specifier = ">=2.3.2" }, + { name = "pandas", marker = "python_full_version < '3.15'", specifier = ">=2.3.3" }, + { name = "pandas", marker = "python_full_version >= '3.15'", specifier = ">=3.0.5" }, + { name = "pandas-market-calendars", specifier = ">=5.2.4" }, + { name = "plotly", marker = "extra == 'all'", specifier = ">=5.15.0" }, + { name = "plotly", marker = "extra == 'viz'", specifier = ">=5.15.0" }, + { name = "polars", specifier = ">=1.36.1" }, + { name = "pre-commit", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pre-commit", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyfolio-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.9.9" }, + { name = "pytest", marker = "extra == 'all'", specifier = ">=7.4.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.4.0" }, + { name = "pytest-asyncio", marker = "extra == 'all'", specifier = ">=0.21.0" }, + { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" }, + { name = "pytest-benchmark", marker = "extra == 'all'", specifier = ">=4.0.0" }, + { name = "pytest-benchmark", marker = "extra == 'dev'", specifier = ">=4.0.0" }, + { name = "pytest-cov", marker = "extra == 'all'", specifier = ">=4.1.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0" }, + { name = "pytest-timeout", marker = "extra == 'all'", specifier = ">=2.1.0" }, + { name = "pytest-timeout", marker = "extra == 'dev'", specifier = ">=2.1.0" }, + { name = "pytest-xdist", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pytest-xdist", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyyaml", specifier = ">=6.0.3" }, + { name = "ruff", marker = "extra == 'all'", specifier = ">=0.8.0" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8.0" }, + { name = "ty", marker = "extra == 'all'" }, + { name = "ty", marker = "extra == 'dev'" }, + { name = "vectorbt", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.24.0" }, + { name = "zipline-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=2.4.0" }, +] +provides-extras = ["advanced", "all", "comparison", "dev", "docs", "viz"] + +[package.metadata.requires-dev] +dev = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "ml4t-diagnostic", specifier = ">=0.1.0b4" }, + { name = "pre-commit", specifier = ">=3.3.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, + { name = "ruff", specifier = ">=0.8.0" }, + { name = "twine", specifier = ">=6.0.0" }, + { name = "ty" }, +] +test = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, +] + +[[package]] +name = "ml4t-backtest-validation-vectorbt-oss" +version = "0.0.0" +source = { virtual = "." } +dependencies = [ + { name = "ml4t-backtest" }, + { name = "vectorbt" }, +] + +[package.metadata] +requires-dist = [ + { name = "ml4t-backtest", editable = "../../../" }, + { name = "vectorbt", specifier = "==1.1.0" }, +] + +[[package]] +name = "ml4t-specs" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/ca/aba7ea1f4e9a1da0b4f465dea03d3e4320d63db348245a2a9976096407ac/ml4t_specs-0.1.3.tar.gz", hash = "sha256:9578038af96d59cd50317e78f8781772833b308076da13ad24c0b304bb20961d", size = 50758, upload-time = "2026-08-12T02:27:14.366Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/6c/0a35ee16313441a68a14d811ffa8b79eb63a013d548b6bbb50dfd208c6b1/ml4t_specs-0.1.3-py3-none-any.whl", hash = "sha256:2b9302d27746f5859b62c6748bf217ca4eae76d4842c783575c58f4880d1568f", size = 33860, upload-time = "2026-08-12T02:27:12.929Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "narwhals" +version = "2.24.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/1d/58946e5aab18393e793bd4add6985b95d0e01c3a2d832f38f54468b10dcd/narwhals-2.24.0.tar.gz", hash = "sha256:b5c0f684ccd9d7475b564111e319a4964abcf2baf79d3cf6b1003d06ac9b828d", size = 661143, upload-time = "2026-07-13T10:49:19.086Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl", hash = "sha256:42fdedf44e5b2ca7505630d45b4ac3058f38d8485cba9fe1652ca23152df7489", size = 461030, upload-time = "2026-07-13T10:49:17.571Z" }, +] + +[[package]] +name = "numba" +version = "0.67.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/90/2544f4e3a61e501d6c9a5418fd4b905323222693d54a02cab0106a0af865/numba-0.67.0.tar.gz", hash = "sha256:cd75aa535b33fa05d9d930b1ae8af9f97a2881e96d72dfb38ec9b78284d9f851", size = 2836515, upload-time = "2026-08-11T23:04:00.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/58/915cddba90010348ed0444451132fdde9b000bcbaff1582029b5bf115d11/numba-0.67.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:6004d8d5f28d4028687fb2d972d629295b13685943bd2ed5cd8810c3b848e219", size = 2745050, upload-time = "2026-08-11T23:03:25.607Z" }, + { url = "https://files.pythonhosted.org/packages/bb/38/926757caaac18a66f057d7544a63620bf360a07d281c9f7ecadd2aa83963/numba-0.67.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f63d43db06b4756424d6d2484737c902e0ae944a0eec3e8b0b4de2c695b15caa", size = 3884596, upload-time = "2026-08-11T23:03:27.688Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6d/58291dc58da39d98b32db7f044729f6d8d4920cd9622fbab3179b54ff4c4/numba-0.67.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76d3335aaeffb9dc88309420890e73497a00be08a7530441bc2b58ffe025bfa5", size = 3585290, upload-time = "2026-08-11T23:03:29.684Z" }, + { url = "https://files.pythonhosted.org/packages/6e/63/ab21828b4056afed71f9ecb40f4de26c2c19de731cc001961aca74b79464/numba-0.67.0-cp312-cp312-win_amd64.whl", hash = "sha256:50e2b72406c18cda5dd7431b0082cb85ea94e06c64c33607248fc8bef92cfb81", size = 2815645, upload-time = "2026-08-11T23:03:31.732Z" }, +] + +[[package]] +name = "numpy" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/80/db0b4559e57ec36362bedbb05530a87fafbcb6067708c946967a41d449e7/numpy-2.5.2.tar.gz", hash = "sha256:d482d171c406ae88c5b19cad3b6a1c4c5209f886ab74bc44c2c865c23f52d860", size = 20773161, upload-time = "2026-08-09T13:48:27.962Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/72/dccb0aaf40972777283303919f613964227266d0c13adebb79ac124f1c3e/numpy-2.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:14e373cfc6387177e8409dac3c7159be8eb05cd77096cd7c950268b86f62831c", size = 16891693, upload-time = "2026-08-09T13:44:51.702Z" }, + { url = "https://files.pythonhosted.org/packages/60/2e/b5aee50a1f74ac815cf8331812cb8251e29024025de462e0c047641c614c/numpy-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4bbd96c833ecc8cc069ce518078fc8c60cb9cbfb0fea5b7a803ad65035596d03", size = 11903109, upload-time = "2026-08-09T13:44:55.501Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f4/29e78102a80601cf034d4e9767022cffeca2c3b4c926e1754572ca95593d/numpy-2.5.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:6e8172ddfcf5cf74b811d372b570b83c60bd2de87a6fbfbebdadb4a9bd9c6cbb", size = 5350202, upload-time = "2026-08-09T13:44:58.401Z" }, + { url = "https://files.pythonhosted.org/packages/11/4b/dcd3b7eadaf4035d2c7a4289d232523a6964f602598ef7674e4bd7291f93/numpy-2.5.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:65f188481f1669e26f62b701e8205d19e460fa4a9b52a1414ba382330e4a3414", size = 6687736, upload-time = "2026-08-09T13:45:00.813Z" }, + { url = "https://files.pythonhosted.org/packages/e5/21/4947e0e9d6c9fc2e2ff15b8949049ee44f63adb9cacc729ab8793f97e712/numpy-2.5.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8ee9c4eeb8454b3660a8b53493563c3e121c2fc94fbd72b848ef814ed7b676a9", size = 15612696, upload-time = "2026-08-09T13:45:04.151Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5f/62d28cf019460c7f1394105b4d49d9911a9c444cb77ab0bd95a204c5a6de/numpy-2.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3cdec01fa790a186d430433fdd4d4ffb70eed6f0eeb4bf05c8dbe2dce0a9bcb8", size = 16722264, upload-time = "2026-08-09T13:45:07.714Z" }, + { url = "https://files.pythonhosted.org/packages/14/25/3f0be4c1b9fdf5dd5e708a6806978564d7c46a055c000496309ff2a2f8af/numpy-2.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7999d4ddb0c4025018373fd787510d46e04c769467af22869707b3c1cfd459ab", size = 16974396, upload-time = "2026-08-09T13:45:11.316Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/6262cbdeeb45da9d971e40715f579d791603ba8ec0b5e2db1ac55454421d/numpy-2.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1f017dc0875c9209d219f97feceb7d54c2661bb243deb4114478e1295808af7", size = 18476044, upload-time = "2026-08-09T13:45:14.869Z" }, + { url = "https://files.pythonhosted.org/packages/36/33/29208b8b075bde62d26a81d14b358c42b0f69b6cabd98d4ff97f37f22b05/numpy-2.5.2-cp312-cp312-win32.whl", hash = "sha256:d6a48072864e3324e194a8fbb3c657bcc5b5c869dbc64c9537b1d5c862572c0a", size = 6072817, upload-time = "2026-08-09T13:45:17.867Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/87fea2769fe1c47c1b5b01d8310772c9d1a85d485de7cf386ef7a3332b02/numpy-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:28ac63476ec7651484215ee7fa15a1f78b57c14621f01e392afe17b9a1390ce4", size = 12464674, upload-time = "2026-08-09T13:45:20.734Z" }, + { url = "https://files.pythonhosted.org/packages/14/52/032b97e00461ab0809bbe4c588b035620e5a14b8cdee47ecddefc7b17d33/numpy-2.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:27650bb0e7140fa3d37b9923b4803645e0b125d190f326eecfd3f4dad8e8ade1", size = 10397131, upload-time = "2026-08-09T13:45:23.73Z" }, +] + +[[package]] +name = "packaging" +version = "26.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/4f/5f3422a2afec5ffc46308b79e53291365a93748b498ac2e58bead0197916/pandas-3.0.5.tar.gz", hash = "sha256:dca3734d6ab7c906e6730f0788b0a1dbb9f2467731f9711f77995c8e9d62d712", size = 4658219, upload-time = "2026-07-22T22:19:28.819Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/54/1dc810ea558d1320b597aa140a514f2fdf1d2ea09c38cf556f13ea712ec9/pandas-3.0.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fa290c16964d4963fbfbc358928239cf3bd755b20e988ce944877def2f44471d", size = 10411717, upload-time = "2026-07-22T22:18:08.307Z" }, + { url = "https://files.pythonhosted.org/packages/68/56/fbe81c09195924d8b7b8d4461a20458fe80a6a5ed6b24f0314da684277e1/pandas-3.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2e26bb46934b8a2ca0c3de1d3d606fc5f6746584791b2db264d58cf370e08dc", size = 9957095, upload-time = "2026-07-22T22:18:10.6Z" }, + { url = "https://files.pythonhosted.org/packages/e0/51/fac252f4a913ed5eabf3c11b880a9e8d5a6c10f0b2129d0462212d238b4d/pandas-3.0.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73fa87b08a7ef706f8aafda39ddaccf2a99047bea62d8c88a0361bcafb2237bc", size = 10485458, upload-time = "2026-07-22T22:18:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/12/98/e976540c1addf70442be7842a18cf70884a964abbf69442504f4d2939989/pandas-3.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d373ce03ffd84010ed9839fa73672a9c8256990532e158440c0085db7d914b34", size = 10998091, upload-time = "2026-07-22T22:18:15.209Z" }, + { url = "https://files.pythonhosted.org/packages/a4/8c/1f29b5be8d3fc47dd7567eb167fabba2085879b31e0287ce7cba6d3d2ff4/pandas-3.0.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2a29c53d85ea98c5e792c59ef82ee9fbe6ca902c0d0adb6b23f45ef894cd7bf6", size = 11499501, upload-time = "2026-07-22T22:18:17.689Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e2/bd9c98ad2df7b38bde002adde4cdf353519da51881634323b126c55997f9/pandas-3.0.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a5ad3b02ed6bc7d7ae9b70804b2c6aa31827489d150f8e623ce82491b82085d7", size = 12060559, upload-time = "2026-07-22T22:18:20.147Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9a/ffbd852d58bd74a617fe2f8ee6a58a96982271ce41cf981eab22190b4a4b/pandas-3.0.5-cp312-cp312-pyemscripten_2024_0_wasm32.whl", hash = "sha256:b2acb4650527eec6822c3dadb2b771277b65e7dae7a267d4bccf65fd1bb3fbce", size = 7197652, upload-time = "2026-07-22T22:18:22.502Z" }, + { url = "https://files.pythonhosted.org/packages/70/b5/d2d3e9ae73362ba4229651b0ee1455cf78073a1ce585f6ff693782ce263e/pandas-3.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:80a611068e8a3ac23f7398c6c14eb46dc974e5cc9997f653e2dcfd1da74edd41", size = 9831691, upload-time = "2026-07-22T22:18:24.534Z" }, + { url = "https://files.pythonhosted.org/packages/52/51/dea1e89d6a6796b9c43f85a09b484ee03edb8a4c4842e73e200a8c11301c/pandas-3.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:25ff585b972a18ef1fe9ffa3ac6544d9950508aa76832e5147640b6022821e49", size = 9105796, upload-time = "2026-07-22T22:18:27.064Z" }, +] + +[[package]] +name = "pandas-market-calendars" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exchange-calendars" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/4c/98067cb91b37a137389f978f52410975915268d394c09cf941c490565297/pandas_market_calendars-5.4.0.tar.gz", hash = "sha256:b02f3a0e9bcb4b9e82a5060bf260ef0060ccd398f989b5e6f8208f4352967806", size = 175213, upload-time = "2026-05-27T02:42:05.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/d3/59b999f7f6a1d173572d3e8f8b07ded7e256c691d02b3b5cacb26479895a/pandas_market_calendars-5.4.0-py3-none-any.whl", hash = "sha256:bb2b93b28d496cab173b41c7d120fd5cd9d506b31f3bb0ad3d1d9f2b60d9d9e3", size = 134904, upload-time = "2026-05-27T02:42:06.35Z" }, +] + +[[package]] +name = "parso" +version = "0.8.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/4b/90c937815137d43ce71ba043cd3566221e9df6b9c805f24b5d138c9d40a7/parso-0.8.7.tar.gz", hash = "sha256:eaaac4c9fdd5e9e8852dc778d2d7405897ec510f2a298071453e5e3a07914bb1", size = 401824, upload-time = "2026-05-01T23:13:02.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl", hash = "sha256:a8926eb2a1b915486941fdbd31e86a4baf88fe8c210f25f2f35ecec5b574ca1c", size = 107025, upload-time = "2026-05-01T23:12:58.867Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "12.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce", size = 47025035, upload-time = "2026-07-01T11:56:38.965Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965", size = 5345969, upload-time = "2026-07-01T11:54:06.397Z" }, + { url = "https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7", size = 4780323, upload-time = "2026-07-01T11:54:09.351Z" }, + { url = "https://files.pythonhosted.org/packages/25/27/ac8f99618ffd3dde21db0f4d4b1d2ab00c0880595bfd17df103f7f39fd0c/pillow-12.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9", size = 6266838, upload-time = "2026-07-01T11:54:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91", size = 6940830, upload-time = "2026-07-01T11:54:13.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/51/8b08617af3ad95e33ce6d7dd2c99ed6c8298f7fb131636303956be022e25/pillow-12.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c", size = 6344383, upload-time = "2026-07-01T11:54:15.756Z" }, + { url = "https://files.pythonhosted.org/packages/1d/72/cf78ac9780bb93c28328f408973845a309d4d145041665f734572ced1b52/pillow-12.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df", size = 7052934, upload-time = "2026-07-01T11:54:17.721Z" }, + { url = "https://files.pythonhosted.org/packages/20/20/25e0f4dc178a6bc0696793720055519a0de89e7661dae886992decbd2f81/pillow-12.3.0-cp312-cp312-win32.whl", hash = "sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f", size = 6472684, upload-time = "2026-07-01T11:54:19.839Z" }, + { url = "https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09", size = 7227137, upload-time = "2026-07-01T11:54:22.025Z" }, + { url = "https://files.pythonhosted.org/packages/de/47/4845a0a6c0dbf1db8456bd9fc791f13c5ced7ced20606d08a0aacfd25b49/pillow-12.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510", size = 2568267, upload-time = "2026-07-01T11:54:24.051Z" }, +] + +[[package]] +name = "plotly" +version = "6.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "narwhals" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/07/795c79dbce40c39bece88e69d049babbd23ffa95b5d117f248db8ea03abb/plotly-6.9.0.tar.gz", hash = "sha256:967ad33e8c704fed051800d11d985eb206a9c795c14206b30a6f463ed9c67d0d", size = 6919903, upload-time = "2026-07-09T14:55:59.982Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/18/d8544811ab076f876c4892b3714f5b0dad335e1dc33aef826df431b8325d/plotly-6.9.0-py3-none-any.whl", hash = "sha256:36bebe2f1bb13884774fe61689c329071446f6ce4a8927fb1f0d6fb24f581236", size = 9909646, upload-time = "2026-07-09T14:55:55.421Z" }, +] + +[[package]] +name = "polars" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "polars-runtime-32" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/13/3873f213304bcbaaf39e63c8b905ceb460a0524448d57f86a829f6d4d0fd/polars-1.43.2.tar.gz", hash = "sha256:c699671b99eb71ff53334d237917aaa3db5ad4dda480abcb6c80e0eaee7b677b", size = 750312, upload-time = "2026-08-01T06:28:30.872Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/fe/0888040a24e4504098b85d8ad486b14cb01cf6b030bbe479dfc2dcffc2ac/polars-1.43.2-py3-none-any.whl", hash = "sha256:22aa0cb92a1ee2d60d6a15a638b2e8e0dd99aea21ac0cd8fb29da8e382e075a9", size = 847150, upload-time = "2026-08-01T06:27:15.543Z" }, +] + +[[package]] +name = "polars-runtime-32" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/06/11b578eeef05f867e3ee31b2a2fdd8e7684c2aa47822c49935d1be789c38/polars_runtime_32-1.43.2.tar.gz", hash = "sha256:d7b7c486bccee75a6af0158b87077da3d054657e3c60036b28644f4e1c7fdbf7", size = 3095669, upload-time = "2026-08-01T06:28:32.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/fc/12e6d4ca34d820297651134cfa35f86c33e898539fc6629cbb35d0089697/polars_runtime_32-1.43.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:91abf205d4ec93f92ba95386b7f8776559ae3dfce425ed2e527efa75d117d04a", size = 53088908, upload-time = "2026-08-01T06:27:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/32/81/833b0853551deb810854f96b43dea342b6e6c9b0ea1afcccf774157d519d/polars_runtime_32-1.43.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:2cc3ff96fd44789b02eb5c15b98dfcb000101636b177d3034fae2feec19b118f", size = 47540529, upload-time = "2026-08-01T06:27:21.391Z" }, + { url = "https://files.pythonhosted.org/packages/83/55/7b2a75af14c9294d97f3bec132dd3018ddcd988bef32b5d28322150b8c11/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10ed36e615ab362feb7406e6d084e124b445ad284caa73bd93ae7e65745ed894", size = 51366340, upload-time = "2026-08-01T06:27:24.776Z" }, + { url = "https://files.pythonhosted.org/packages/62/60/64deacb3abc70c52e2d88a808a052d1621c86a48fe9194f2c065579ab1cd/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d5a7ae004a2723ebf4427f6d6a639f30f86af4cf077075f6b35d04711154fc3", size = 57304599, upload-time = "2026-08-01T06:27:27.875Z" }, + { url = "https://files.pythonhosted.org/packages/52/95/d6e3a236d7630e17c40d0ddee839bf2be9acf548fdc0e5ad65ed9ff0cac6/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:09339eacc6d392206e78aabbaaa37d7276eb969b798f46cb1f367fd718798c60", size = 51520580, upload-time = "2026-08-01T06:27:30.913Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5a/2deb8eac70e9a2ac26d88a66ae7cf52612865026f4f4a5e7ab11ad9d52bf/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:452b400e59e7f56e4c6437f435e796903272a9388feee12de2bea049ae87025e", size = 55204471, upload-time = "2026-08-01T06:27:33.886Z" }, + { url = "https://files.pythonhosted.org/packages/29/9e/647401ae8a607bc0cc40ed7b8592d5b1be90ded0dc9b9d6d3aeb03f9524b/polars_runtime_32-1.43.2-cp310-abi3-win_amd64.whl", hash = "sha256:00e33c28e321410c8d66e814a90043101e3bdd9ed2c6dabda07565aa8adbbdf1", size = 52572176, upload-time = "2026-08-01T06:27:37.048Z" }, + { url = "https://files.pythonhosted.org/packages/96/8d/60a50c3f36c85218a7ffcb48c6fe2ce1f7bec799152d68b8658ebed2179c/polars_runtime_32-1.43.2-cp310-abi3-win_arm64.whl", hash = "sha256:350a4868cae85bf8b3f81b33ba47927c15256bd9264dfc8c0753f1b927eac9d3", size = 46582513, upload-time = "2026-08-01T06:27:40.025Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.53" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/ea/39b988c938f75cb75d7045b5c69f8bfed47ee2152c8837fb403de29d6fb8/prompt_toolkit-3.0.53.tar.gz", hash = "sha256:9ec8a0ad96d5c56148b3f914aa79c1564c3fde5d2e6b876e7bc327e353cf8fa6", size = 435492, upload-time = "2026-07-26T20:56:14.758Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/6f/84908cad2d6aa5144abcf7b42709fe4fdb459bc640ec7ac5786e7693dabc/prompt_toolkit-3.0.53-py3-none-any.whl", hash = "sha256:01c0891d7f9237d5e339f7d3e42cdae80b7534abb1c7c0e3352efba6231492f2", size = 392288, upload-time = "2026-07-26T20:56:12.512Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "psygnal" +version = "0.15.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/79/20c3e23e75272e9ddf018097cf872ab088bccba978888472656629efa4a3/psygnal-0.15.1.tar.gz", hash = "sha256:f64f62dee2306fc1c22050a59b6c6cdad126e04b0cf50e393ff858a1da719096", size = 123147, upload-time = "2026-01-04T16:38:41.959Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/65/b7bbca96bc477aa9ac2264e5907b2f4ccfcd1319f776dd1f35eec06cc2f4/psygnal-0.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d56f0f35eaf4a21f660de76885222faf9e8c7112454528d3394d464f3d4d1a3", size = 598340, upload-time = "2026-01-04T16:38:19.752Z" }, + { url = "https://files.pythonhosted.org/packages/40/f2/56577465a1b42a5e6780bb5fab53fb68f8bfd72f0131ed397576529af724/psygnal-0.15.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0febcf757a1323d9b8bd75735ee3569213d8110012a7bf0f478e85c5ab459fc6", size = 575311, upload-time = "2026-01-04T16:38:21.137Z" }, + { url = "https://files.pythonhosted.org/packages/79/81/f642ac08104049383076f83480ed412c9626e068769a1c34873c595bec0e/psygnal-0.15.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b5e4837dfbfa4974dabe0795e32be9aadcd87603adf734738ce1114f72238a05", size = 889770, upload-time = "2026-01-04T16:38:22.629Z" }, + { url = "https://files.pythonhosted.org/packages/de/43/e571fa40b72780abed080ef829e5ad98017b6fe48d28c15a2404e006b676/psygnal-0.15.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:07b4c4e03bbf4e8cad7e25f4fbc1ba9575fb9c3d14991bc7edfeb8b09c8d6d54", size = 881105, upload-time = "2026-01-04T16:38:23.896Z" }, + { url = "https://files.pythonhosted.org/packages/e3/26/ef3ab825eb08eaecbbceeeb56383694fe64ce399dbfd1d0767bb85688785/psygnal-0.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:4f0ce91b9c18e92281bf2c3fc4bb4e808d90f0b023d0a37b302d354188520338", size = 418969, upload-time = "2026-01-04T16:38:25.731Z" }, + { url = "https://files.pythonhosted.org/packages/46/49/7742544684bee728ec123515d2694cee859aa2a705951a461230b00f18cc/psygnal-0.15.1-py3-none-any.whl", hash = "sha256:4221140e633e45b076953c64bcb9b41a744833527f9a037c1ca98bc270798cbf", size = 90638, upload-time = "2026-01-04T16:38:40.841Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyluach" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/11/42568c1568a75f8803c59f26d29af01a0890352b7a8e03d41ecda8bfb5dd/pyluach-2.3.0.tar.gz", hash = "sha256:ec6e30669d1df50c9ca160486da44a8195bb4c7a5d3d533990d0c5b03accd281", size = 26910, upload-time = "2025-09-09T20:24:39.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/c8/f96208ade3ca4c23b372497d0788bcf0f2e0ff4310e5ee693366bc33fdf0/pyluach-2.3.0-py3-none-any.whl", hash = "sha256:4497b731aef59508b079dbf5f00bc5bf4329ac45090a6cd37b5a83756f0e69ab", size = 25914, upload-time = "2025-09-09T20:24:37.831Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytz" +version = "2026.3.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/48/fb042503b6ca6cd271261dc559fd6432f7d8c713153e9ec5c591af4dfc1c/pytz-2026.3.post1.tar.gz", hash = "sha256:2211d3fcf9a797d3405cac96ac7f61d80e6a644f72a3309607282fe8a2010c5d", size = 319745, upload-time = "2026-07-25T15:12:07.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/7b/39c34ca613b0b198cb866466651b26b045e2009864c5183c979a3b83f383/pytz-2026.3.post1-py2.py3-none-any.whl", hash = "sha256:dd95840dd199baea12d9cc096a1d452caa6596a1c1e4b5f3dbd1541855d5e815", size = 508283, upload-time = "2026-07-25T15:12:05.782Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, +] + +[[package]] +name = "regex" +version = "2026.7.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/98/04b13f1ddfb63158025291c02e03eb42fbb7acb51d091d541050eb4e35e8/regex-2026.7.19.tar.gz", hash = "sha256:7e77b324909c1617cbb4c668677e2c6ae13f44d7c1de0d4f15f2e3c10f3315b5", size = 416440, upload-time = "2026-07-19T00:19:48.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/b9/d11d7e501ac8fd7d617684423ebb9561e0b998481c1e4cbc0cb212c5d74a/regex-2026.7.19-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2cc3460cedf7579948486eab03bc9ad7089df4d7281c0f47f4afe03e8d13f02d", size = 496778, upload-time = "2026-07-19T00:17:05.677Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a9/a5ab6f312f24318019170dc485d5421fe4f89e43a98640da50d95a8a7041/regex-2026.7.19-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0e9554c8785eac5cffe6300f69a91f58ba72bc88a5f8d661235ad7c6aa5b8ccd", size = 297122, upload-time = "2026-07-19T00:17:07.59Z" }, + { url = "https://files.pythonhosted.org/packages/b3/63/4cab4d7f2d384a144d420b763d97674cb70619c878ea6fcd7640d0e62143/regex-2026.7.19-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d7da47a0f248977f08e2cb659ff3c17ddc13a4d39b3a7baa0a81bf5b415430f6", size = 292009, upload-time = "2026-07-19T00:17:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/22/85/102a81b218298957d4ea7d2f084fae537a71add9d6ff93c8e67284c5f45e/regex-2026.7.19-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93db40c8de0815baab96a06e08a984bac71f989d13bab789e382158c5d426797", size = 796708, upload-time = "2026-07-19T00:17:11.542Z" }, + { url = "https://files.pythonhosted.org/packages/78/b5/dc136af5629938a037cd2b304c12240e132ec92f38be8ff9cc89af2a1f2d/regex-2026.7.19-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:66bd62c59a5427746e8c44becae1d9b99d22fb13f30f492083dfb9ad7c45cc18", size = 865651, upload-time = "2026-07-19T00:17:13.312Z" }, + { url = "https://files.pythonhosted.org/packages/e0/75/67402ae3cd9c8c988a4c805d15ee3eef015e7ca4cb112cf3e640fc1f4153/regex-2026.7.19-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1649eb39fcc9ea80c4d2f110fde2b8ab2aef3877b98f02ab9b14e961f418c511", size = 911756, upload-time = "2026-07-19T00:17:15.015Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8e/096d00c7c480ef2ff4265349b14e2261d4ab787ba1f74e2e80d1c58079c3/regex-2026.7.19-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dce8ec9695f531a1b8a6f314fd4b393adcccf2ea861db480cdf97a301d01a68", size = 801798, upload-time = "2026-07-19T00:17:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/f0/41/e7ecac6edb5722417f85cc67eaf386322fbe8acf6918ec2fdc37c20dd9d0/regex-2026.7.19-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3080a7fd38ef049bd489e01c970c97dd84ff446a885b0f1f6b26d9b1ad13ce11", size = 776933, upload-time = "2026-07-19T00:17:19.347Z" }, + { url = "https://files.pythonhosted.org/packages/6f/69/03c9b3f058d66403e0ca2c938696e81d51cd4c6d47ec5265f02f96948d9a/regex-2026.7.19-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1d793a7988e04fcb1e2e135567443d82173225d657419ec09414a9b5a145b986", size = 784338, upload-time = "2026-07-19T00:17:21.057Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f7/b38ab3d43f284afbb618fcd15d0e77eb786ae461ce1f6bc7494619ddc0f2/regex-2026.7.19-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e8b0abe7d870f53ca5143895fef7d1041a0c831a140d3dc2c760dd7ba25d4a8b", size = 860452, upload-time = "2026-07-19T00:17:23.119Z" }, + { url = "https://files.pythonhosted.org/packages/15/5c/ff60ef0571121714f3cf9920bc183071e384a10b556d042e0fdb06cc07a5/regex-2026.7.19-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:4e5413bd5f13d3a4e3539ca98f70f75e7fca92518dd7f117f030ebedd10b60cb", size = 765958, upload-time = "2026-07-19T00:17:24.81Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0f/bd34021162c0ab47f9a315bd56cd5642e920c8e5668a75ef6c6a6fca590d/regex-2026.7.19-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:73b133a9e6fb512858e7f065e96f1180aa46646bc74a83aea62f1d314f3dd035", size = 851765, upload-time = "2026-07-19T00:17:26.993Z" }, + { url = "https://files.pythonhosted.org/packages/2a/20/a2ca43edade0595cccfdc98636739f536d9e26898e7dbddc2b9e98898953/regex-2026.7.19-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbe6493fbd27321b1d1f2dd4f5c7e5bd4d8b1d7cab7f32fd67db3d0b2ed8248a", size = 789714, upload-time = "2026-07-19T00:17:28.699Z" }, + { url = "https://files.pythonhosted.org/packages/5d/47/e02db4015d424fc83c00ea0ac8c5e5ec14397943de9abf909d5ce3a25931/regex-2026.7.19-cp312-cp312-win32.whl", hash = "sha256:ddd67571c10869f65a5d7dde536d1e066e306cc90de57d7de4d5f34802428bb5", size = 267157, upload-time = "2026-07-19T00:17:31.051Z" }, + { url = "https://files.pythonhosted.org/packages/08/8e/c780c131f79b42ed22d1bd7da4096c2c35f813e835acd02ef0f018bd892c/regex-2026.7.19-cp312-cp312-win_amd64.whl", hash = "sha256:e30d40268a28d54ce0437031750497004c22602b8e3ab891f759b795a003b312", size = 277777, upload-time = "2026-07-19T00:17:32.848Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4c/e4d7e086449bdf379d89774bf1f89dc4a41943f3c5a6125a03905b34b5fb/regex-2026.7.19-cp312-cp312-win_arm64.whl", hash = "sha256:de9208bb427130c82a5dbfd104f92c8876fc9559278c880b3002755bbbe9c83d", size = 277136, upload-time = "2026-07-19T00:17:34.803Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "schedule" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0c/91/b525790063015759f34447d4cf9d2ccb52cdee0f1dd6ff8764e863bcb74c/schedule-1.2.2.tar.gz", hash = "sha256:15fe9c75fe5fd9b9627f3f19cc0ef1420508f9f9a46f45cd0769ef75ede5f0b7", size = 26452, upload-time = "2024-06-18T20:03:14.633Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/a7/84c96b61fd13205f2cafbe263cdb2745965974bdf3e0078f121dfeca5f02/schedule-1.2.2-py3-none-any.whl", hash = "sha256:5bef4a2a0183abf44046ae0d164cadcac21b1db011bdd8102e4a0c1e91e06a7d", size = 12220, upload-time = "2024-05-25T18:41:59.121Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "narwhals" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/20/75f915ff375d6249e6550ac740fdbbd66159a068fd3af1400ff62036b07a/scikit_learn-1.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2bd41b0d201bc81575531b96b713d3eb5e5f50fb0b82101ff0f92294fdc236ac", size = 8741122, upload-time = "2026-06-02T11:53:24.08Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d5/2b5148f2279196775e1db2aeb85d14b70ac80e7e32b3b28e7ebeafb0901d/scikit_learn-1.9.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5be45aa4a42a68a533913a6ed736cf309de2226411c79ef8d609a5456f1939b1", size = 8261512, upload-time = "2026-06-02T11:53:27.183Z" }, + { url = "https://files.pythonhosted.org/packages/a0/ee/5adbc77656b71f9456a2f5a7a9fdb4bcf9207a6b962889f1c2f9323afa4e/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e50ed4da51974e86e940690e9a3d82e729b62b5a49f7c9bac534d515d39d86f", size = 8837603, upload-time = "2026-06-02T11:53:30.328Z" }, + { url = "https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:056c92bb67ad4c28463c2f2653d9701449201e7e7a9e94e321be0f71c4fef2b8", size = 9132097, upload-time = "2026-06-02T11:53:33.456Z" }, + { url = "https://files.pythonhosted.org/packages/83/a4/c8e67227c680e2259c8864ae72ff48b06e16a6f51253a22167aa02a8aa4e/scikit_learn-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:4306775fad04cc4b472a1b15af1ae9cede1540fbfcc17fbce3767cd8dc7ae283", size = 8211173, upload-time = "2026-06-02T11:53:36.602Z" }, + { url = "https://files.pythonhosted.org/packages/cf/fd/3c0863792e98e67e9184aa4029288a175935eb65443afcd30d4f143450cf/scikit_learn-1.9.0-cp312-cp312-win_arm64.whl", hash = "sha256:26e22435f63bcdcf396b574273f29f13dd531f5ea035801f5be10ba1540a4e60", size = 7867451, upload-time = "2026-06-02T11:53:39.075Z" }, +] + +[[package]] +name = "scipy" +version = "1.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7bd21faaf5a1a3b2eff922d02db5f191b99a6518db9078a8fb23169f6d22259a", size = 31056519, upload-time = "2026-06-19T14:59:45.203Z" }, + { url = "https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:265915e79107de9f946b855e50d7470d5893ec3f54b342e1aa6201cbdcd8bb6b", size = 28681889, upload-time = "2026-06-19T14:59:48.103Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2d/11dd93d21e147a73ba22bd75c0b9208d3a2e0ec76d53170ce7d9029b1015/scipy-1.18.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9ab7b758be6940954a713ee466e2043e9f6e2ed965c1fce5c91039f4be3d90a9", size = 20423580, upload-time = "2026-06-19T14:59:50.665Z" }, + { url = "https://files.pythonhosted.org/packages/9c/01/93552f75e0d2a7dd115a45e59209c51e8d514daff02fc887d2623be06fe1/scipy-1.18.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:97b6cddaaee0a779ef6b5ca83c9604b27cc16b2b8fc22c142652df8793319fb8", size = 23054441, upload-time = "2026-06-19T14:59:53.564Z" }, + { url = "https://files.pythonhosted.org/packages/3c/23/21f5e703643d66f21faa6b4c73195bfcad70c55efcb4f1ab327cd7c4101a/scipy-1.18.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:52a96e21517c7292375c0e27dd796a811f03fcea5fd4d108fdfea8145dcf17ab", size = 33968720, upload-time = "2026-06-19T14:59:56.415Z" }, + { url = "https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f55797419e16e7f30cf88ffb3113ce0467f00cfe3f70d5c281730b21769bfc2", size = 35287115, upload-time = "2026-06-19T14:59:59.411Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ff/eec46be7e9234208f801062b53e1983085eddebd693f6c9bfb03b459830d/scipy-1.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ad033410e2e0672ffdc1042110cef20e1c46f8fd0616cee1d44d8d58fad8fc11", size = 35577989, upload-time = "2026-06-19T15:00:02.235Z" }, + { url = "https://files.pythonhosted.org/packages/84/ca/210d4759c7210bb7d269437421959b39a33434e2776b60c5cb8a763bb30a/scipy-1.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a55985d54c769c872e64b7f4c8a81cc30ef700cc04296abbbf3705439c126de", size = 37421717, upload-time = "2026-06-19T15:00:05.102Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/9a9edb45345bd6744da5ddfb6628e5d5185920494c6a67ec45b6381004cb/scipy-1.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:71ccc8faa2dd16ac310233203474a8b5cb67f10dedd54a3116d34943f4b19132", size = 36597428, upload-time = "2026-06-19T15:00:08.112Z" }, + { url = "https://files.pythonhosted.org/packages/99/0e/33f32a2a58987e26aec0f7df252cbbad1e90ae77bdbc76f40dd4ed0cf0ea/scipy-1.18.0-cp312-cp312-win_arm64.whl", hash = "sha256:d88363fd9d8fbd3511bd273f1a49efb2a540773ddf92a91d57498ce7dd7f3e76", size = 24351481, upload-time = "2026-06-19T15:00:11.103Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "toolz" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b", size = 52613, upload-time = "2025-10-17T04:03:21.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", size = 58093, upload-time = "2025-10-17T04:03:20.435Z" }, +] + +[[package]] +name = "tqdm" +version = "4.70.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/3b/6c24bec5be5e743ffd99576daa5cc077722fc7d5bbc00bd133fa0c698dc6/tqdm-4.70.0.tar.gz", hash = "sha256:55b0b0dbd97462d06ebee91e4dac24ed4d4702be82b24f07e6c1d27e08cea220", size = 795438, upload-time = "2026-07-27T11:33:15.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl", hash = "sha256:7f585706bfddbdebf89daac705b2dfcc16890130727d3197ca62c732b4310953", size = 80184, upload-time = "2026-07-27T11:33:13.167Z" }, +] + +[[package]] +name = "traitlets" +version = "5.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/2e/a7fbfe268c8a3b32546930c0297c101d65a4a14c304ad5790a9f478f0e4e/traitlets-5.16.1.tar.gz", hash = "sha256:ed900c2b631aa3a112811139fa97b8d2c3bad5e989656bba4b7e52c7852c18c1", size = 166137, upload-time = "2026-08-03T08:32:36.848Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/66/0d785f0bc5e4315a96c989bb476d0fc07ea4f85132550c7b156ca2035d52/traitlets-5.16.1-py3-none-any.whl", hash = "sha256:f775618166caa0396c8e337099240f2bd3e5e917d203b2e6fbe21a58d3cb1f6b", size = 86211, upload-time = "2026-08-03T08:32:34.48Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/ff/5a28bdfd8c3ebec42564ac7d0e54ca3db65044a9314a97f9564fa7a1e926/tzdata-2026.3.tar.gz", hash = "sha256:4a1518b8993086a7982523e071643f3c0e5f213e75b21318e78bcabfff9d1415", size = 198674, upload-time = "2026-07-10T08:50:37.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl", hash = "sha256:dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931", size = 348168, upload-time = "2026-07-10T08:50:36.46Z" }, +] + +[[package]] +name = "tzlocal" +version = "5.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/5b/879b2f932adfa7a053c360d50bc896c977fa6426109185f7c12ebdd0cb9d/tzlocal-5.4.4.tar.gz", hash = "sha256:8dbb8660838688a7b6ba4fed31d18dedf842afb4d47ca050d6d891c2c15f3be4", size = 31170, upload-time = "2026-06-29T08:03:40.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/a4/017a7a6cbe387d961a688ec31364ae60a5c4e22c96ae9921b79a947c855d/tzlocal-5.4.4-py3-none-any.whl", hash = "sha256:aae09f0126a8a86fa736be266eb4a471380d26a0de3bc14844e7821fee3e2a15", size = 18115, upload-time = "2026-06-29T08:03:38.666Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "vectorbt" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anywidget" }, + { name = "dateparser" }, + { name = "dill" }, + { name = "imageio" }, + { name = "ipywidgets" }, + { name = "matplotlib" }, + { name = "mypy-extensions" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "plotly" }, + { name = "pytz" }, + { name = "requests" }, + { name = "schedule" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3b/3f/45e6620b63cf0c7ce7728b387eb2ab1d81e280afd31efb669880fdfa7950/vectorbt-1.1.0.tar.gz", hash = "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b", size = 551935, upload-time = "2026-07-05T17:21:10.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/45/0e74e23845d5f1d48f33fca84ec7f01add3caad6d91af473cc8bcf946ca1/vectorbt-1.1.0-py3-none-any.whl", hash = "sha256:7fa055ccdb16a266b349e7b322410525c2923b119e13ac292b99bc4a9a5b2885", size = 455305, upload-time = "2026-07-05T17:21:08.372Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.8.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/74/c6428f875774288bec1396f5bfcbc2d925700a4dad61727fd5f2b12f249d/wcwidth-0.8.2.tar.gz", hash = "sha256:91fbef97204b96a3d4d421609b80340b760cf33e26da123ff243d76b1fda8dda", size = 1466253, upload-time = "2026-06-29T18:11:11.601Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl", hash = "sha256:d63947694a0539a1d51e01eda7caf800c291020e6cdd7e28ad7b14dd33ad4f85", size = 323166, upload-time = "2026-06-29T18:11:09.888Z" }, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/f4/c67440c7fb409a71b7404b7aefcd7569a9c0d6bd071299bf4198ae7a5d95/widgetsnbextension-4.0.15.tar.gz", hash = "sha256:de8610639996f1567952d763a5a41af8af37f2575a41f9852a38f947eb82a3b9", size = 1097402, upload-time = "2025-11-01T21:15:55.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl", hash = "sha256:8156704e4346a571d9ce73b84bee86a29906c9abfd7223b7228a28899ccf3366", size = 2196503, upload-time = "2025-11-01T21:15:53.565Z" }, +] diff --git a/validation/environments/vectorbt_pro/pyproject.toml b/validation/environments/vectorbt_pro/pyproject.toml new file mode 100644 index 00000000..a546f1de --- /dev/null +++ b/validation/environments/vectorbt_pro/pyproject.toml @@ -0,0 +1,14 @@ +[project] +name = "ml4t-backtest-validation-vectorbt-pro" +version = "0.0.0" +requires-python = ">=3.12,<3.13" +dependencies = [ + "ml4t-backtest", + "vectorbtpro @ git+ssh://git@github.com/polakowo/vectorbt.pro.git@6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", +] + +[tool.uv] +package = false + +[tool.uv.sources] +ml4t-backtest = { path = "../../..", editable = true } diff --git a/validation/environments/vectorbt_pro/uv.lock b/validation/environments/vectorbt_pro/uv.lock new file mode 100644 index 00000000..0d0e0671 --- /dev/null +++ b/validation/environments/vectorbt_pro/uv.lock @@ -0,0 +1,743 @@ +version = 1 +revision = 3 +requires-python = "==3.12.*" +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", + "sys_platform != 'emscripten' and sys_platform != 'win32'", +] + +[[package]] +name = "annotated-doc" +version = "0.0.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/8e/38aa427ed5402449e226975b649c5dc73ccadfefeb95e6aecb8f8ea4b6b6/annotated_doc-0.0.5.tar.gz", hash = "sha256:c7e58ce09192557605d8bbd92836d7e1d520ac9580096042c0bfd197efacf1bb", size = 10758, upload-time = "2026-07-28T13:50:58.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/30/e900b21425a860e195f32e37657aa1f7c7f2b1bfb26f03ca209b90933c06/annotated_doc-0.0.5-py3-none-any.whl", hash = "sha256:117bac03a25ede5df5440e855b32d556049ca169ead221505badf432fed4b101", size = 5302, upload-time = "2026-07-28T13:50:57.239Z" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "certifi" +version = "2026.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/31/4971872b3ed8715346231fb6eb4da8fcba65a4143c189db151ee28a2812b/charset_normalizer-3.5.0.tar.gz", hash = "sha256:49bd5feb59b0bf3cbf6ebcf4352e371c95b9da9bacd4449f8b64d0ad2c10a26e", size = 169295, upload-time = "2026-08-12T14:35:31.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/3c/045ea64ea5a550870dd8ab60b2242870328d53f17d2be593b4f9f3121474/charset_normalizer-3.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:98820e1ceb25c6df7a80c4fd8efa59cb121f99bc7c4c1693ad94a2caff5b311d", size = 343861, upload-time = "2026-08-12T14:32:27.254Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1b/7502be709db899d5b4801509829188b3a5a10969411da9c846115a5f1b70/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:608553f476fca509537e804c4a71f5eb166ce63b75141f89c2c686ce1aa36956", size = 237550, upload-time = "2026-08-12T14:32:28.385Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ce/66392661375148d9455c17bee25509a54e28c39969e34befa48ec8777936/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6753de11eef42f1c321b26d682957d92c7f7bbce6530f34bbe0f9291dd37cc6f", size = 229673, upload-time = "2026-08-12T14:32:29.668Z" }, + { url = "https://files.pythonhosted.org/packages/6a/64/f58c32a8d4ecf55b82ee61ee9aa6a664d4afcd36c72feb4c926fd6fe9af8/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f76dc0a47f94cb9b69d86f01e477f4b0371ca70208b9ccea7e063c41eed9046", size = 260768, upload-time = "2026-08-12T14:32:30.891Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ea/36c90e59a96386174377e855479ec154221ef001e96637e0b23be92489c4/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c387c6bf91b4774e359a48a179e2872b8e8bf741e4fde06ba8d1665eb9a4760a", size = 257880, upload-time = "2026-08-12T14:32:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/23/35/5b85772eb82528ef22ba29487ad544a7049dfd27f35b1a5a55dbc0843048/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14f6904a3cf870abf044df3a8c4924ac6c8ef77e9896586fd37e73ae96cff2af", size = 247547, upload-time = "2026-08-12T14:32:33.495Z" }, + { url = "https://files.pythonhosted.org/packages/b6/14/ba11a99c2a22ab04c2d5383a700b378cb463a78ab15f36444cabc10cd671/charset_normalizer-3.5.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0cce46dd29d73e135e8087b96eb62a4aca6d69391b7f97808c6588ebed3178f3", size = 243326, upload-time = "2026-08-12T14:32:34.794Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4a/cadba3f2400b45aa1d62a4ae0298bf58a3b30b1158baf15c338c7ce5b601/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b476cdb63df22da2b91837593380be3ddbe406f36c506c1c91d80e7196b66288", size = 238820, upload-time = "2026-08-12T14:32:35.984Z" }, + { url = "https://files.pythonhosted.org/packages/47/41/d5188b9342d75b72c2b05d3ee373f01a691397e770f001ee05e3b37925f5/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1f56ce84b317ef2a59d7d3461891c7597c79247d2192bb8114c68a1a1debfcc0", size = 231661, upload-time = "2026-08-12T14:32:37.191Z" }, + { url = "https://files.pythonhosted.org/packages/13/5f/df38fa972c4e945c3d8cee2bc4e610613af522fd359c7dc7a74c419f0278/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9ce0f885239357379d92fd9a5fddbe20f0e30e0527c29ba69f8e99eeb1304a76", size = 261459, upload-time = "2026-08-12T14:32:38.369Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d7/043ff7720067a3beee05523465ac9c1c846c68b7884930dd483f72ee5ab6/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:96ae7ab5d8155fde927aa0864fbc8ba3cc4fde6d41ab0c7cea9d6012b4978603", size = 242300, upload-time = "2026-08-12T14:32:39.505Z" }, + { url = "https://files.pythonhosted.org/packages/19/f6/33980b7b802a048e546a6d9ad2ea783a6cf6b10a86aaccd10db462d8b913/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf91921009025e96ce57a03ced6d14604fc3baf0530351638e9504a55da6fa3b", size = 259101, upload-time = "2026-08-12T14:32:41.02Z" }, + { url = "https://files.pythonhosted.org/packages/a6/b7/0d19bde844bff9165377c1da9ef3c4792a4c24bd49b5b7094d9e6f6ab58b/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0b2e44e6d42d1a4ff78ccc219a93c5449105d10b16198d1aea581080df8073f9", size = 249246, upload-time = "2026-08-12T14:32:42.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/cc/2c34fdfaacdf0e96e880ef562cbf80a9b5f8ea97e0dd9e57ba348a9c65cf/charset_normalizer-3.5.0-cp312-cp312-win32.whl", hash = "sha256:deb99535e9bf0bea8e274c6413eb939a21be35a3f492678dba4d5b1f4d70f142", size = 178025, upload-time = "2026-08-12T14:32:43.909Z" }, + { url = "https://files.pythonhosted.org/packages/76/d0/c34dbd1df23bcbdc1b5d2f48256340d72fa747f1eb03924a9d2fa35ed85b/charset_normalizer-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e54dd1a66fa4bce0ccaf0db9dde336e49b3eec646dc4c1c0991279369d373a14", size = 200143, upload-time = "2026-08-12T14:32:45.254Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ea/4e6bf1465d60c3d8f488d5bde140d0cb91cd23ccab0dc2895cc6c6982047/charset_normalizer-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:b8ea208b304587d47931b36481342d20336e0d338ab052f8b4305926482598d6", size = 180046, upload-time = "2026-08-12T14:32:46.545Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f3/7b523d807cb5e73562ef8acf21d39cdb9d704955327362c781bc3478a73d/charset_normalizer-3.5.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:5a4ee37248dfac25107c758bda99d545ce73e60b44d2dd39e4a2bb9f2831e9f5", size = 330840, upload-time = "2026-08-12T14:34:45.06Z" }, + { url = "https://files.pythonhosted.org/packages/f0/de/fc68978fe78ca97063c96d764e41ff92ca639948f319271e0ff450e577a2/charset_normalizer-3.5.0-cp37-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a864bdcacd8bff58bb4845304e031f821a3ec64b2b7259f2d409cd49c9e59ca3", size = 251862, upload-time = "2026-08-12T14:34:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/a9/cb/82b41a0ab7fb1a88065f1d78ad32696ad88ea3fe8e25b8189d08833938de/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:84b736e3b391601bc47b86da381c749c0f894e9191aaca9f31f30c2632206df3", size = 239484, upload-time = "2026-08-12T14:34:47.869Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0c/19608b631f4538f908098d4a2d56a8f79a665e27cc58e9d90479761a9227/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6abb1f356fb865baeb6ebc3fadd843e9a96fbf49b9adcca55037f3cceccb7438", size = 230602, upload-time = "2026-08-12T14:34:49.265Z" }, + { url = "https://files.pythonhosted.org/packages/29/db/f648eb30e14eba301aed61e11672156f137905c1bdbb530151abe8065943/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d366548d2ee28a8cfdcc4296363978cc644a728333be9824d2de4652e83df0a", size = 259208, upload-time = "2026-08-12T14:34:50.632Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e0/ed2c8bdbac484d69614d6993143aeb6cb0f4dd1561c883402517b623c8ef/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d672f329ae504ee240eb39b6effb3318aa8e7e8924c0ce8eee5760b3fad98539", size = 253659, upload-time = "2026-08-12T14:34:52.11Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/b4907cb9ec5b521d9d024ced13611240b86ef065c2eb15b3ad2334dc9940/charset_normalizer-3.5.0-cp37-abi3-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c54036a518748b6c02e666f6d46c3817561998fb904c3be25b56fb4fe3dc5706", size = 248821, upload-time = "2026-08-12T14:34:53.399Z" }, + { url = "https://files.pythonhosted.org/packages/12/b2/e2d1abcfbc05822f0030869efb4e9f8a3658e13b4821796d4b62da917327/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:22a1889f1c9b752c63c36758a0c2145458e3cadb20fced7a0790002e9dd12b26", size = 240271, upload-time = "2026-08-12T14:34:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f9/4ba127ad610542fa3eabfa41c45bf12d357860a815b3566374ec0188e213/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:b7eb3eab5c646d3de7dcb14a7c9caebace5249c5767da39e1761cb1576e521a3", size = 232155, upload-time = "2026-08-12T14:34:56.543Z" }, + { url = "https://files.pythonhosted.org/packages/01/68/40613182366d00bd6dbd5f6c84a926cbd120960e038a8269e9ae7d782762/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_ppc64le.whl", hash = "sha256:2080aa129a28267984cdc902898993d788c995c384e285d0d19199f56760d52e", size = 259674, upload-time = "2026-08-12T14:34:57.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/53/4574a14fa4c9de4a6c9f31725354bfa40b67f653e6d594ce1654f9a41b32/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_riscv64.whl", hash = "sha256:fd68c825548a611158230e2f9222e210ceb2e3391995c0aa5865cbdf3ab4bd49", size = 246122, upload-time = "2026-08-12T14:34:59.337Z" }, + { url = "https://files.pythonhosted.org/packages/5a/02/bd8030d13d92c058ca7b2b9615bbb3169569e144db64d65c149cd45abf5e/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_s390x.whl", hash = "sha256:d8a9316f4da85e937242642b537c6d55d7e9287dd38e5634732f8233932aff45", size = 255221, upload-time = "2026-08-12T14:35:00.71Z" }, + { url = "https://files.pythonhosted.org/packages/77/9d/10ecd3bcbe2666b3d4d4026c97b48f73990682815db516052a1e8f4a31c5/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d90254c8f609338c53ec180fcd4c4f9c16502e238e3fc88ca7fd4c2f38d445b8", size = 253450, upload-time = "2026-08-12T14:35:02.217Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0f/d044c4872c0938a84f87b5027a698c0e61bacfc5c3551a4e749ca9b7bc5c/charset_normalizer-3.5.0-cp37-abi3-win32.whl", hash = "sha256:8b3e9e29b8b07cc461b9ce7768db7693a93979d0dadf22046f6f3555ded2f516", size = 173594, upload-time = "2026-08-12T14:35:03.845Z" }, + { url = "https://files.pythonhosted.org/packages/10/6b/6046773901f1944b9a89436351529811ee958afc7b774563be9d74a6f0c3/charset_normalizer-3.5.0-cp37-abi3-win_amd64.whl", hash = "sha256:0c8953d9d1617794cfc40d81179571c9ba3805dd029623a15c93f1fb70e60a74", size = 198959, upload-time = "2026-08-12T14:35:05.187Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a6/b57708ac92aefc8e8389d51d5178129b81f03196da61ee2c23e687b8178a/charset_normalizer-3.5.0-cp37-abi3-win_arm64.whl", hash = "sha256:562d24ca7797c1af8852994950c2e623a907b201fc4b0ed29e92af173d3828ca", size = 267055, upload-time = "2026-08-12T14:35:06.533Z" }, + { url = "https://files.pythonhosted.org/packages/22/c7/754d09943a616937df61e4ba367c409ded2a987e872972098d51a6fcf73b/charset_normalizer-3.5.0-py3-none-any.whl", hash = "sha256:993dfcbe75a85a3784abb5084f2c41b915767c90546fcc92803cffa28611baea", size = 67943, upload-time = "2026-08-12T14:35:30.363Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "dateparser" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "regex" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/6a/9f06999c4f27e9192c5eb38bfffadc2e6752df8178e97e88b10b9eb4c682/dateparser-1.4.2.tar.gz", hash = "sha256:bed2a3fd9bad8f2fb2d72b57748bada260b3a9349a264c22ffc23c3249d7049a", size = 338363, upload-time = "2026-08-04T12:11:03.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/1b/349e07ad184d64e81109e85a3557d7e05631fa3d05344169114ba743c4d3/dateparser-1.4.2-py3-none-any.whl", hash = "sha256:752f3d49d477cf7f60a7a9c8bcb19c882496ede0e377d5a3d80014cdfeca7050", size = 316546, upload-time = "2026-08-04T12:11:01.396Z" }, +] + +[[package]] +name = "exchange-calendars" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "korean-lunar-calendar" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyluach" }, + { name = "toolz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/73/460b0ece4e7444e3098b7738974c822787e134578d069d3a88b4be17d50a/exchange_calendars-4.13.2.tar.gz", hash = "sha256:a9459425dd64142cd54fbc639847403c7e0c33d60fbc326c94fc1d6bd127f002", size = 4137321, upload-time = "2026-03-10T03:24:38.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/4c/0469b40057bc9f8d9594dcc6024202626b981ae4b52dfcd304552e8e1c3a/exchange_calendars-4.13.2-py3-none-any.whl", hash = "sha256:fc5a2ad0d61b5c3a6539a3061cd4cbb55c59f4a903455cec7926e4b798919996", size = 213306, upload-time = "2026-03-10T03:24:37.055Z" }, +] + +[[package]] +name = "humanize" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/ea/13a1ef3c12d12662905801495283530251918b70d62d368f1d2e0272c70d/humanize-4.16.0.tar.gz", hash = "sha256:7dc2244a2f84a4bfb1d36c37bac80cd78e35cdc5c119206d87b018e1445f3a3f", size = 89515, upload-time = "2026-06-30T16:17:29.859Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/aa/0b7365d30fed43e7a3449aba1fe20a0a7174d9cf13e282af4e69ac825441/humanize-4.16.0-py3-none-any.whl", hash = "sha256:353eb2f34c09d098b2880eee8bef21832eae6d174f48c5762fff7e5fcb74d01d", size = 137209, upload-time = "2026-06-30T16:17:28.36Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "imageio" +version = "2.37.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/62/aa770a9307508d2a2a2c62d536a49347bffe9e55322db27838d3c93d0b07/imageio-2.37.4.tar.gz", hash = "sha256:e45cbc5e83502047fb138f7f585f7f105a136a57eea5f4b3cfc6ce1b52720bd3", size = 390173, upload-time = "2026-07-20T05:26:11.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/2d/ca050652104bab2cf55e569db2a178b1b61cb041fef28307f2db383f6d9f/imageio-2.37.4-py3-none-any.whl", hash = "sha256:1ab2e22c8debf700f24c3ac43e8f95f3b3a8110c83b93411e97b4b0b2cd1c7e6", size = 318000, upload-time = "2026-07-20T05:26:09.874Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + +[[package]] +name = "korean-lunar-calendar" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/9f/6160e95f3934026194dc7a0b5c78fe5c6e74761830ddea3e9cfc38e3f983/korean_lunar_calendar-0.4.0.tar.gz", hash = "sha256:be56f27bc0594fdbbdf7bbe00f504a9f929a31e311bd7d9bb93561b645afade7", size = 13425, upload-time = "2026-06-15T14:19:57.163Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/88/f56033b09fdca5c8c5e5fc2f3513950a05cd62caa9bd8e6d2750a887c86e/korean_lunar_calendar-0.4.0-py3-none-any.whl", hash = "sha256:c042e20de0bb702add6bec8d0f6da1ea8d3b170838e63846f70420cf341fe4e7", size = 11323, upload-time = "2026-06-15T14:19:56.089Z" }, +] + +[[package]] +name = "llvmlite" +version = "0.49.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/27/72ae94ea5c8f7349ec1c229d4cd058feb799cbd0833ad6d1b47c919b37b7/llvmlite-0.49.0.tar.gz", hash = "sha256:00f16db782f4a13c78c5804aedc434e46794a77e89999a168f9401106270e50a", size = 194467, upload-time = "2026-08-11T16:26:00.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/ae/3f699ebe3590e15e023a6372dd147526fd8ec398aacf9ceb844e854964a8/llvmlite-0.49.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b541c8fac3450db7574d1f53cf9dff83f285bfed9d69bf81fe71fc2a7d4f97fe", size = 40479231, upload-time = "2026-08-11T16:23:56.773Z" }, + { url = "https://files.pythonhosted.org/packages/be/3c/e97f69c62a2d972066d9a2612ce1f3de313035ac897a5b9f787cad8b55f7/llvmlite-0.49.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6acba646d88abbc87d5c113a3d62c1fbf8b8fee11c6493f516803e30f21ae870", size = 59890658, upload-time = "2026-08-11T16:24:05.451Z" }, + { url = "https://files.pythonhosted.org/packages/69/e6/e942ee08605fc0526ff3854260c384d8315a5830e16c4c2a5aebc14dc9bf/llvmlite-0.49.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4ec8ad805e7515cb8440a690eb3cef4d34acb29eef80b705ec4e1c1ad3c43c68", size = 58344481, upload-time = "2026-08-11T16:24:13.503Z" }, + { url = "https://files.pythonhosted.org/packages/84/49/2a44871cac6b5a2fd4aabd68cfdaf6de9a5c7edb36dee5d47b77bda4b50f/llvmlite-0.49.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a9c9e3af4e214acfefa4f73ebe7bc3fb35854a62b654edb3953f5ae33c08ba3", size = 41865543, upload-time = "2026-08-11T16:24:20.41Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "ml4t-backtest" +source = { editable = "../../../" } +dependencies = [ + { name = "ml4t-specs" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pandas-market-calendars" }, + { name = "polars" }, + { name = "pyyaml" }, +] + +[package.metadata] +requires-dist = [ + { name = "backtrader", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=1.9.0" }, + { name = "cvxpy", marker = "extra == 'advanced'", specifier = ">=1.3.0" }, + { name = "cvxpy", marker = "extra == 'all'", specifier = ">=1.3.0" }, + { name = "dash", marker = "extra == 'all'", specifier = ">=2.11.0" }, + { name = "dash", marker = "extra == 'viz'", specifier = ">=2.11.0" }, + { name = "hypothesis", marker = "extra == 'all'", specifier = ">=6.80.0" }, + { name = "hypothesis", marker = "extra == 'dev'", specifier = ">=6.80.0" }, + { name = "matplotlib", marker = "extra == 'all'", specifier = ">=3.7.0" }, + { name = "matplotlib", marker = "extra == 'viz'", specifier = ">=3.7.0" }, + { name = "mkdocs", marker = "extra == 'all'", specifier = ">=1.6,<2" }, + { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.6,<2" }, + { name = "mkdocs-material", marker = "extra == 'all'", specifier = ">=9.5.0" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'all'", specifier = ">=0.24.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'", specifier = ">=0.24.0" }, + { name = "ml4t-diagnostic", marker = "extra == 'all'", specifier = ">=0.1.0b4" }, + { name = "ml4t-diagnostic", marker = "extra == 'dev'", specifier = ">=0.1.0b4" }, + { name = "ml4t-specs", specifier = ">=0.1.2,<0.2" }, + { name = "networkx", marker = "extra == 'advanced'", specifier = ">=3.0" }, + { name = "networkx", marker = "extra == 'all'", specifier = ">=3.0" }, + { name = "numpy", specifier = ">=2.3.2" }, + { name = "pandas", marker = "python_full_version < '3.15'", specifier = ">=2.3.3" }, + { name = "pandas", marker = "python_full_version >= '3.15'", specifier = ">=3.0.5" }, + { name = "pandas-market-calendars", specifier = ">=5.2.4" }, + { name = "plotly", marker = "extra == 'all'", specifier = ">=5.15.0" }, + { name = "plotly", marker = "extra == 'viz'", specifier = ">=5.15.0" }, + { name = "polars", specifier = ">=1.36.1" }, + { name = "pre-commit", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pre-commit", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyfolio-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.9.9" }, + { name = "pytest", marker = "extra == 'all'", specifier = ">=7.4.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.4.0" }, + { name = "pytest-asyncio", marker = "extra == 'all'", specifier = ">=0.21.0" }, + { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" }, + { name = "pytest-benchmark", marker = "extra == 'all'", specifier = ">=4.0.0" }, + { name = "pytest-benchmark", marker = "extra == 'dev'", specifier = ">=4.0.0" }, + { name = "pytest-cov", marker = "extra == 'all'", specifier = ">=4.1.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0" }, + { name = "pytest-timeout", marker = "extra == 'all'", specifier = ">=2.1.0" }, + { name = "pytest-timeout", marker = "extra == 'dev'", specifier = ">=2.1.0" }, + { name = "pytest-xdist", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pytest-xdist", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyyaml", specifier = ">=6.0.3" }, + { name = "ruff", marker = "extra == 'all'", specifier = ">=0.8.0" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8.0" }, + { name = "ty", marker = "extra == 'all'" }, + { name = "ty", marker = "extra == 'dev'" }, + { name = "vectorbt", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.24.0" }, + { name = "zipline-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=2.4.0" }, +] +provides-extras = ["advanced", "all", "comparison", "dev", "docs", "viz"] + +[package.metadata.requires-dev] +dev = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "ml4t-diagnostic", specifier = ">=0.1.0b4" }, + { name = "pre-commit", specifier = ">=3.3.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, + { name = "ruff", specifier = ">=0.8.0" }, + { name = "twine", specifier = ">=6.0.0" }, + { name = "ty" }, +] +test = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, +] + +[[package]] +name = "ml4t-backtest-validation-vectorbt-pro" +version = "0.0.0" +source = { virtual = "." } +dependencies = [ + { name = "ml4t-backtest" }, + { name = "vectorbtpro" }, +] + +[package.metadata] +requires-dist = [ + { name = "ml4t-backtest", editable = "../../../" }, + { name = "vectorbtpro", git = "ssh://git@github.com/polakowo/vectorbt.pro.git?rev=6e18cf0aa37849cfc20848f40f1d26ecfdc771b4" }, +] + +[[package]] +name = "ml4t-specs" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/ca/aba7ea1f4e9a1da0b4f465dea03d3e4320d63db348245a2a9976096407ac/ml4t_specs-0.1.3.tar.gz", hash = "sha256:9578038af96d59cd50317e78f8781772833b308076da13ad24c0b304bb20961d", size = 50758, upload-time = "2026-08-12T02:27:14.366Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/6c/0a35ee16313441a68a14d811ffa8b79eb63a013d548b6bbb50dfd208c6b1/ml4t_specs-0.1.3-py3-none-any.whl", hash = "sha256:2b9302d27746f5859b62c6748bf217ca4eae76d4842c783575c58f4880d1568f", size = 33860, upload-time = "2026-08-12T02:27:12.929Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "narwhals" +version = "2.24.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/1d/58946e5aab18393e793bd4add6985b95d0e01c3a2d832f38f54468b10dcd/narwhals-2.24.0.tar.gz", hash = "sha256:b5c0f684ccd9d7475b564111e319a4964abcf2baf79d3cf6b1003d06ac9b828d", size = 661143, upload-time = "2026-07-13T10:49:19.086Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl", hash = "sha256:42fdedf44e5b2ca7505630d45b4ac3058f38d8485cba9fe1652ca23152df7489", size = 461030, upload-time = "2026-07-13T10:49:17.571Z" }, +] + +[[package]] +name = "numba" +version = "0.67.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/90/2544f4e3a61e501d6c9a5418fd4b905323222693d54a02cab0106a0af865/numba-0.67.0.tar.gz", hash = "sha256:cd75aa535b33fa05d9d930b1ae8af9f97a2881e96d72dfb38ec9b78284d9f851", size = 2836515, upload-time = "2026-08-11T23:04:00.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/58/915cddba90010348ed0444451132fdde9b000bcbaff1582029b5bf115d11/numba-0.67.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:6004d8d5f28d4028687fb2d972d629295b13685943bd2ed5cd8810c3b848e219", size = 2745050, upload-time = "2026-08-11T23:03:25.607Z" }, + { url = "https://files.pythonhosted.org/packages/bb/38/926757caaac18a66f057d7544a63620bf360a07d281c9f7ecadd2aa83963/numba-0.67.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f63d43db06b4756424d6d2484737c902e0ae944a0eec3e8b0b4de2c695b15caa", size = 3884596, upload-time = "2026-08-11T23:03:27.688Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6d/58291dc58da39d98b32db7f044729f6d8d4920cd9622fbab3179b54ff4c4/numba-0.67.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76d3335aaeffb9dc88309420890e73497a00be08a7530441bc2b58ffe025bfa5", size = 3585290, upload-time = "2026-08-11T23:03:29.684Z" }, + { url = "https://files.pythonhosted.org/packages/6e/63/ab21828b4056afed71f9ecb40f4de26c2c19de731cc001961aca74b79464/numba-0.67.0-cp312-cp312-win_amd64.whl", hash = "sha256:50e2b72406c18cda5dd7431b0082cb85ea94e06c64c33607248fc8bef92cfb81", size = 2815645, upload-time = "2026-08-11T23:03:31.732Z" }, +] + +[[package]] +name = "numpy" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/80/db0b4559e57ec36362bedbb05530a87fafbcb6067708c946967a41d449e7/numpy-2.5.2.tar.gz", hash = "sha256:d482d171c406ae88c5b19cad3b6a1c4c5209f886ab74bc44c2c865c23f52d860", size = 20773161, upload-time = "2026-08-09T13:48:27.962Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/72/dccb0aaf40972777283303919f613964227266d0c13adebb79ac124f1c3e/numpy-2.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:14e373cfc6387177e8409dac3c7159be8eb05cd77096cd7c950268b86f62831c", size = 16891693, upload-time = "2026-08-09T13:44:51.702Z" }, + { url = "https://files.pythonhosted.org/packages/60/2e/b5aee50a1f74ac815cf8331812cb8251e29024025de462e0c047641c614c/numpy-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4bbd96c833ecc8cc069ce518078fc8c60cb9cbfb0fea5b7a803ad65035596d03", size = 11903109, upload-time = "2026-08-09T13:44:55.501Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f4/29e78102a80601cf034d4e9767022cffeca2c3b4c926e1754572ca95593d/numpy-2.5.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:6e8172ddfcf5cf74b811d372b570b83c60bd2de87a6fbfbebdadb4a9bd9c6cbb", size = 5350202, upload-time = "2026-08-09T13:44:58.401Z" }, + { url = "https://files.pythonhosted.org/packages/11/4b/dcd3b7eadaf4035d2c7a4289d232523a6964f602598ef7674e4bd7291f93/numpy-2.5.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:65f188481f1669e26f62b701e8205d19e460fa4a9b52a1414ba382330e4a3414", size = 6687736, upload-time = "2026-08-09T13:45:00.813Z" }, + { url = "https://files.pythonhosted.org/packages/e5/21/4947e0e9d6c9fc2e2ff15b8949049ee44f63adb9cacc729ab8793f97e712/numpy-2.5.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8ee9c4eeb8454b3660a8b53493563c3e121c2fc94fbd72b848ef814ed7b676a9", size = 15612696, upload-time = "2026-08-09T13:45:04.151Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5f/62d28cf019460c7f1394105b4d49d9911a9c444cb77ab0bd95a204c5a6de/numpy-2.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3cdec01fa790a186d430433fdd4d4ffb70eed6f0eeb4bf05c8dbe2dce0a9bcb8", size = 16722264, upload-time = "2026-08-09T13:45:07.714Z" }, + { url = "https://files.pythonhosted.org/packages/14/25/3f0be4c1b9fdf5dd5e708a6806978564d7c46a055c000496309ff2a2f8af/numpy-2.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7999d4ddb0c4025018373fd787510d46e04c769467af22869707b3c1cfd459ab", size = 16974396, upload-time = "2026-08-09T13:45:11.316Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/6262cbdeeb45da9d971e40715f579d791603ba8ec0b5e2db1ac55454421d/numpy-2.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1f017dc0875c9209d219f97feceb7d54c2661bb243deb4114478e1295808af7", size = 18476044, upload-time = "2026-08-09T13:45:14.869Z" }, + { url = "https://files.pythonhosted.org/packages/36/33/29208b8b075bde62d26a81d14b358c42b0f69b6cabd98d4ff97f37f22b05/numpy-2.5.2-cp312-cp312-win32.whl", hash = "sha256:d6a48072864e3324e194a8fbb3c657bcc5b5c869dbc64c9537b1d5c862572c0a", size = 6072817, upload-time = "2026-08-09T13:45:17.867Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/87fea2769fe1c47c1b5b01d8310772c9d1a85d485de7cf386ef7a3332b02/numpy-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:28ac63476ec7651484215ee7fa15a1f78b57c14621f01e392afe17b9a1390ce4", size = 12464674, upload-time = "2026-08-09T13:45:20.734Z" }, + { url = "https://files.pythonhosted.org/packages/14/52/032b97e00461ab0809bbe4c588b035620e5a14b8cdee47ecddefc7b17d33/numpy-2.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:27650bb0e7140fa3d37b9923b4803645e0b125d190f326eecfd3f4dad8e8ade1", size = 10397131, upload-time = "2026-08-09T13:45:23.73Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/4f/5f3422a2afec5ffc46308b79e53291365a93748b498ac2e58bead0197916/pandas-3.0.5.tar.gz", hash = "sha256:dca3734d6ab7c906e6730f0788b0a1dbb9f2467731f9711f77995c8e9d62d712", size = 4658219, upload-time = "2026-07-22T22:19:28.819Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/54/1dc810ea558d1320b597aa140a514f2fdf1d2ea09c38cf556f13ea712ec9/pandas-3.0.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fa290c16964d4963fbfbc358928239cf3bd755b20e988ce944877def2f44471d", size = 10411717, upload-time = "2026-07-22T22:18:08.307Z" }, + { url = "https://files.pythonhosted.org/packages/68/56/fbe81c09195924d8b7b8d4461a20458fe80a6a5ed6b24f0314da684277e1/pandas-3.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2e26bb46934b8a2ca0c3de1d3d606fc5f6746584791b2db264d58cf370e08dc", size = 9957095, upload-time = "2026-07-22T22:18:10.6Z" }, + { url = "https://files.pythonhosted.org/packages/e0/51/fac252f4a913ed5eabf3c11b880a9e8d5a6c10f0b2129d0462212d238b4d/pandas-3.0.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73fa87b08a7ef706f8aafda39ddaccf2a99047bea62d8c88a0361bcafb2237bc", size = 10485458, upload-time = "2026-07-22T22:18:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/12/98/e976540c1addf70442be7842a18cf70884a964abbf69442504f4d2939989/pandas-3.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d373ce03ffd84010ed9839fa73672a9c8256990532e158440c0085db7d914b34", size = 10998091, upload-time = "2026-07-22T22:18:15.209Z" }, + { url = "https://files.pythonhosted.org/packages/a4/8c/1f29b5be8d3fc47dd7567eb167fabba2085879b31e0287ce7cba6d3d2ff4/pandas-3.0.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2a29c53d85ea98c5e792c59ef82ee9fbe6ca902c0d0adb6b23f45ef894cd7bf6", size = 11499501, upload-time = "2026-07-22T22:18:17.689Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e2/bd9c98ad2df7b38bde002adde4cdf353519da51881634323b126c55997f9/pandas-3.0.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a5ad3b02ed6bc7d7ae9b70804b2c6aa31827489d150f8e623ce82491b82085d7", size = 12060559, upload-time = "2026-07-22T22:18:20.147Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9a/ffbd852d58bd74a617fe2f8ee6a58a96982271ce41cf981eab22190b4a4b/pandas-3.0.5-cp312-cp312-pyemscripten_2024_0_wasm32.whl", hash = "sha256:b2acb4650527eec6822c3dadb2b771277b65e7dae7a267d4bccf65fd1bb3fbce", size = 7197652, upload-time = "2026-07-22T22:18:22.502Z" }, + { url = "https://files.pythonhosted.org/packages/70/b5/d2d3e9ae73362ba4229651b0ee1455cf78073a1ce585f6ff693782ce263e/pandas-3.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:80a611068e8a3ac23f7398c6c14eb46dc974e5cc9997f653e2dcfd1da74edd41", size = 9831691, upload-time = "2026-07-22T22:18:24.534Z" }, + { url = "https://files.pythonhosted.org/packages/52/51/dea1e89d6a6796b9c43f85a09b484ee03edb8a4c4842e73e200a8c11301c/pandas-3.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:25ff585b972a18ef1fe9ffa3ac6544d9950508aa76832e5147640b6022821e49", size = 9105796, upload-time = "2026-07-22T22:18:27.064Z" }, +] + +[[package]] +name = "pandas-market-calendars" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exchange-calendars" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/4c/98067cb91b37a137389f978f52410975915268d394c09cf941c490565297/pandas_market_calendars-5.4.0.tar.gz", hash = "sha256:b02f3a0e9bcb4b9e82a5060bf260ef0060ccd398f989b5e6f8208f4352967806", size = 175213, upload-time = "2026-05-27T02:42:05.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/d3/59b999f7f6a1d173572d3e8f8b07ded7e256c691d02b3b5cacb26479895a/pandas_market_calendars-5.4.0-py3-none-any.whl", hash = "sha256:bb2b93b28d496cab173b41c7d120fd5cd9d506b31f3bb0ad3d1d9f2b60d9d9e3", size = 134904, upload-time = "2026-05-27T02:42:06.35Z" }, +] + +[[package]] +name = "pillow" +version = "12.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce", size = 47025035, upload-time = "2026-07-01T11:56:38.965Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965", size = 5345969, upload-time = "2026-07-01T11:54:06.397Z" }, + { url = "https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7", size = 4780323, upload-time = "2026-07-01T11:54:09.351Z" }, + { url = "https://files.pythonhosted.org/packages/25/27/ac8f99618ffd3dde21db0f4d4b1d2ab00c0880595bfd17df103f7f39fd0c/pillow-12.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9", size = 6266838, upload-time = "2026-07-01T11:54:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91", size = 6940830, upload-time = "2026-07-01T11:54:13.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/51/8b08617af3ad95e33ce6d7dd2c99ed6c8298f7fb131636303956be022e25/pillow-12.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c", size = 6344383, upload-time = "2026-07-01T11:54:15.756Z" }, + { url = "https://files.pythonhosted.org/packages/1d/72/cf78ac9780bb93c28328f408973845a309d4d145041665f734572ced1b52/pillow-12.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df", size = 7052934, upload-time = "2026-07-01T11:54:17.721Z" }, + { url = "https://files.pythonhosted.org/packages/20/20/25e0f4dc178a6bc0696793720055519a0de89e7661dae886992decbd2f81/pillow-12.3.0-cp312-cp312-win32.whl", hash = "sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f", size = 6472684, upload-time = "2026-07-01T11:54:19.839Z" }, + { url = "https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09", size = 7227137, upload-time = "2026-07-01T11:54:22.025Z" }, + { url = "https://files.pythonhosted.org/packages/de/47/4845a0a6c0dbf1db8456bd9fc791f13c5ced7ced20606d08a0aacfd25b49/pillow-12.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510", size = 2568267, upload-time = "2026-07-01T11:54:24.051Z" }, +] + +[[package]] +name = "polars" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "polars-runtime-32" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/13/3873f213304bcbaaf39e63c8b905ceb460a0524448d57f86a829f6d4d0fd/polars-1.43.2.tar.gz", hash = "sha256:c699671b99eb71ff53334d237917aaa3db5ad4dda480abcb6c80e0eaee7b677b", size = 750312, upload-time = "2026-08-01T06:28:30.872Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/fe/0888040a24e4504098b85d8ad486b14cb01cf6b030bbe479dfc2dcffc2ac/polars-1.43.2-py3-none-any.whl", hash = "sha256:22aa0cb92a1ee2d60d6a15a638b2e8e0dd99aea21ac0cd8fb29da8e382e075a9", size = 847150, upload-time = "2026-08-01T06:27:15.543Z" }, +] + +[[package]] +name = "polars-runtime-32" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/06/11b578eeef05f867e3ee31b2a2fdd8e7684c2aa47822c49935d1be789c38/polars_runtime_32-1.43.2.tar.gz", hash = "sha256:d7b7c486bccee75a6af0158b87077da3d054657e3c60036b28644f4e1c7fdbf7", size = 3095669, upload-time = "2026-08-01T06:28:32.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/fc/12e6d4ca34d820297651134cfa35f86c33e898539fc6629cbb35d0089697/polars_runtime_32-1.43.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:91abf205d4ec93f92ba95386b7f8776559ae3dfce425ed2e527efa75d117d04a", size = 53088908, upload-time = "2026-08-01T06:27:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/32/81/833b0853551deb810854f96b43dea342b6e6c9b0ea1afcccf774157d519d/polars_runtime_32-1.43.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:2cc3ff96fd44789b02eb5c15b98dfcb000101636b177d3034fae2feec19b118f", size = 47540529, upload-time = "2026-08-01T06:27:21.391Z" }, + { url = "https://files.pythonhosted.org/packages/83/55/7b2a75af14c9294d97f3bec132dd3018ddcd988bef32b5d28322150b8c11/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10ed36e615ab362feb7406e6d084e124b445ad284caa73bd93ae7e65745ed894", size = 51366340, upload-time = "2026-08-01T06:27:24.776Z" }, + { url = "https://files.pythonhosted.org/packages/62/60/64deacb3abc70c52e2d88a808a052d1621c86a48fe9194f2c065579ab1cd/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d5a7ae004a2723ebf4427f6d6a639f30f86af4cf077075f6b35d04711154fc3", size = 57304599, upload-time = "2026-08-01T06:27:27.875Z" }, + { url = "https://files.pythonhosted.org/packages/52/95/d6e3a236d7630e17c40d0ddee839bf2be9acf548fdc0e5ad65ed9ff0cac6/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:09339eacc6d392206e78aabbaaa37d7276eb969b798f46cb1f367fd718798c60", size = 51520580, upload-time = "2026-08-01T06:27:30.913Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5a/2deb8eac70e9a2ac26d88a66ae7cf52612865026f4f4a5e7ab11ad9d52bf/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:452b400e59e7f56e4c6437f435e796903272a9388feee12de2bea049ae87025e", size = 55204471, upload-time = "2026-08-01T06:27:33.886Z" }, + { url = "https://files.pythonhosted.org/packages/29/9e/647401ae8a607bc0cc40ed7b8592d5b1be90ded0dc9b9d6d3aeb03f9524b/polars_runtime_32-1.43.2-cp310-abi3-win_amd64.whl", hash = "sha256:00e33c28e321410c8d66e814a90043101e3bdd9ed2c6dabda07565aa8adbbdf1", size = 52572176, upload-time = "2026-08-01T06:27:37.048Z" }, + { url = "https://files.pythonhosted.org/packages/96/8d/60a50c3f36c85218a7ffcb48c6fe2ce1f7bec799152d68b8658ebed2179c/polars_runtime_32-1.43.2-cp310-abi3-win_arm64.whl", hash = "sha256:350a4868cae85bf8b3f81b33ba47927c15256bd9264dfc8c0753f1b927eac9d3", size = 46582513, upload-time = "2026-08-01T06:27:40.025Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyluach" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/11/42568c1568a75f8803c59f26d29af01a0890352b7a8e03d41ecda8bfb5dd/pyluach-2.3.0.tar.gz", hash = "sha256:ec6e30669d1df50c9ca160486da44a8195bb4c7a5d3d533990d0c5b03accd281", size = 26910, upload-time = "2025-09-09T20:24:39.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/c8/f96208ade3ca4c23b372497d0788bcf0f2e0ff4310e5ee693366bc33fdf0/pyluach-2.3.0-py3-none-any.whl", hash = "sha256:4497b731aef59508b079dbf5f00bc5bf4329ac45090a6cd37b5a83756f0e69ab", size = 25914, upload-time = "2025-09-09T20:24:37.831Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytz" +version = "2026.3.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/48/fb042503b6ca6cd271261dc559fd6432f7d8c713153e9ec5c591af4dfc1c/pytz-2026.3.post1.tar.gz", hash = "sha256:2211d3fcf9a797d3405cac96ac7f61d80e6a644f72a3309607282fe8a2010c5d", size = 319745, upload-time = "2026-07-25T15:12:07.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/7b/39c34ca613b0b198cb866466651b26b045e2009864c5183c979a3b83f383/pytz-2026.3.post1-py2.py3-none-any.whl", hash = "sha256:dd95840dd199baea12d9cc096a1d452caa6596a1c1e4b5f3dbd1541855d5e815", size = 508283, upload-time = "2026-07-25T15:12:05.782Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, +] + +[[package]] +name = "regex" +version = "2026.7.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/98/04b13f1ddfb63158025291c02e03eb42fbb7acb51d091d541050eb4e35e8/regex-2026.7.19.tar.gz", hash = "sha256:7e77b324909c1617cbb4c668677e2c6ae13f44d7c1de0d4f15f2e3c10f3315b5", size = 416440, upload-time = "2026-07-19T00:19:48.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/b9/d11d7e501ac8fd7d617684423ebb9561e0b998481c1e4cbc0cb212c5d74a/regex-2026.7.19-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2cc3460cedf7579948486eab03bc9ad7089df4d7281c0f47f4afe03e8d13f02d", size = 496778, upload-time = "2026-07-19T00:17:05.677Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a9/a5ab6f312f24318019170dc485d5421fe4f89e43a98640da50d95a8a7041/regex-2026.7.19-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0e9554c8785eac5cffe6300f69a91f58ba72bc88a5f8d661235ad7c6aa5b8ccd", size = 297122, upload-time = "2026-07-19T00:17:07.59Z" }, + { url = "https://files.pythonhosted.org/packages/b3/63/4cab4d7f2d384a144d420b763d97674cb70619c878ea6fcd7640d0e62143/regex-2026.7.19-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d7da47a0f248977f08e2cb659ff3c17ddc13a4d39b3a7baa0a81bf5b415430f6", size = 292009, upload-time = "2026-07-19T00:17:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/22/85/102a81b218298957d4ea7d2f084fae537a71add9d6ff93c8e67284c5f45e/regex-2026.7.19-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93db40c8de0815baab96a06e08a984bac71f989d13bab789e382158c5d426797", size = 796708, upload-time = "2026-07-19T00:17:11.542Z" }, + { url = "https://files.pythonhosted.org/packages/78/b5/dc136af5629938a037cd2b304c12240e132ec92f38be8ff9cc89af2a1f2d/regex-2026.7.19-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:66bd62c59a5427746e8c44becae1d9b99d22fb13f30f492083dfb9ad7c45cc18", size = 865651, upload-time = "2026-07-19T00:17:13.312Z" }, + { url = "https://files.pythonhosted.org/packages/e0/75/67402ae3cd9c8c988a4c805d15ee3eef015e7ca4cb112cf3e640fc1f4153/regex-2026.7.19-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1649eb39fcc9ea80c4d2f110fde2b8ab2aef3877b98f02ab9b14e961f418c511", size = 911756, upload-time = "2026-07-19T00:17:15.015Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8e/096d00c7c480ef2ff4265349b14e2261d4ab787ba1f74e2e80d1c58079c3/regex-2026.7.19-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dce8ec9695f531a1b8a6f314fd4b393adcccf2ea861db480cdf97a301d01a68", size = 801798, upload-time = "2026-07-19T00:17:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/f0/41/e7ecac6edb5722417f85cc67eaf386322fbe8acf6918ec2fdc37c20dd9d0/regex-2026.7.19-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3080a7fd38ef049bd489e01c970c97dd84ff446a885b0f1f6b26d9b1ad13ce11", size = 776933, upload-time = "2026-07-19T00:17:19.347Z" }, + { url = "https://files.pythonhosted.org/packages/6f/69/03c9b3f058d66403e0ca2c938696e81d51cd4c6d47ec5265f02f96948d9a/regex-2026.7.19-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1d793a7988e04fcb1e2e135567443d82173225d657419ec09414a9b5a145b986", size = 784338, upload-time = "2026-07-19T00:17:21.057Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f7/b38ab3d43f284afbb618fcd15d0e77eb786ae461ce1f6bc7494619ddc0f2/regex-2026.7.19-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e8b0abe7d870f53ca5143895fef7d1041a0c831a140d3dc2c760dd7ba25d4a8b", size = 860452, upload-time = "2026-07-19T00:17:23.119Z" }, + { url = "https://files.pythonhosted.org/packages/15/5c/ff60ef0571121714f3cf9920bc183071e384a10b556d042e0fdb06cc07a5/regex-2026.7.19-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:4e5413bd5f13d3a4e3539ca98f70f75e7fca92518dd7f117f030ebedd10b60cb", size = 765958, upload-time = "2026-07-19T00:17:24.81Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0f/bd34021162c0ab47f9a315bd56cd5642e920c8e5668a75ef6c6a6fca590d/regex-2026.7.19-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:73b133a9e6fb512858e7f065e96f1180aa46646bc74a83aea62f1d314f3dd035", size = 851765, upload-time = "2026-07-19T00:17:26.993Z" }, + { url = "https://files.pythonhosted.org/packages/2a/20/a2ca43edade0595cccfdc98636739f536d9e26898e7dbddc2b9e98898953/regex-2026.7.19-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbe6493fbd27321b1d1f2dd4f5c7e5bd4d8b1d7cab7f32fd67db3d0b2ed8248a", size = 789714, upload-time = "2026-07-19T00:17:28.699Z" }, + { url = "https://files.pythonhosted.org/packages/5d/47/e02db4015d424fc83c00ea0ac8c5e5ec14397943de9abf909d5ce3a25931/regex-2026.7.19-cp312-cp312-win32.whl", hash = "sha256:ddd67571c10869f65a5d7dde536d1e066e306cc90de57d7de4d5f34802428bb5", size = 267157, upload-time = "2026-07-19T00:17:31.051Z" }, + { url = "https://files.pythonhosted.org/packages/08/8e/c780c131f79b42ed22d1bd7da4096c2c35f813e835acd02ef0f018bd892c/regex-2026.7.19-cp312-cp312-win_amd64.whl", hash = "sha256:e30d40268a28d54ce0437031750497004c22602b8e3ab891f759b795a003b312", size = 277777, upload-time = "2026-07-19T00:17:32.848Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4c/e4d7e086449bdf379d89774bf1f89dc4a41943f3c5a6125a03905b34b5fb/regex-2026.7.19-cp312-cp312-win_arm64.whl", hash = "sha256:de9208bb427130c82a5dbfd104f92c8876fc9559278c880b3002755bbbe9c83d", size = 277136, upload-time = "2026-07-19T00:17:34.803Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "rich" +version = "15.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, +] + +[[package]] +name = "schedule" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0c/91/b525790063015759f34447d4cf9d2ccb52cdee0f1dd6ff8764e863bcb74c/schedule-1.2.2.tar.gz", hash = "sha256:15fe9c75fe5fd9b9627f3f19cc0ef1420508f9f9a46f45cd0769ef75ede5f0b7", size = 26452, upload-time = "2024-06-18T20:03:14.633Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/a7/84c96b61fd13205f2cafbe263cdb2745965974bdf3e0078f121dfeca5f02/schedule-1.2.2-py3-none-any.whl", hash = "sha256:5bef4a2a0183abf44046ae0d164cadcac21b1db011bdd8102e4a0c1e91e06a7d", size = 12220, upload-time = "2024-05-25T18:41:59.121Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "narwhals" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/20/75f915ff375d6249e6550ac740fdbbd66159a068fd3af1400ff62036b07a/scikit_learn-1.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2bd41b0d201bc81575531b96b713d3eb5e5f50fb0b82101ff0f92294fdc236ac", size = 8741122, upload-time = "2026-06-02T11:53:24.08Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d5/2b5148f2279196775e1db2aeb85d14b70ac80e7e32b3b28e7ebeafb0901d/scikit_learn-1.9.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5be45aa4a42a68a533913a6ed736cf309de2226411c79ef8d609a5456f1939b1", size = 8261512, upload-time = "2026-06-02T11:53:27.183Z" }, + { url = "https://files.pythonhosted.org/packages/a0/ee/5adbc77656b71f9456a2f5a7a9fdb4bcf9207a6b962889f1c2f9323afa4e/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e50ed4da51974e86e940690e9a3d82e729b62b5a49f7c9bac534d515d39d86f", size = 8837603, upload-time = "2026-06-02T11:53:30.328Z" }, + { url = "https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:056c92bb67ad4c28463c2f2653d9701449201e7e7a9e94e321be0f71c4fef2b8", size = 9132097, upload-time = "2026-06-02T11:53:33.456Z" }, + { url = "https://files.pythonhosted.org/packages/83/a4/c8e67227c680e2259c8864ae72ff48b06e16a6f51253a22167aa02a8aa4e/scikit_learn-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:4306775fad04cc4b472a1b15af1ae9cede1540fbfcc17fbce3767cd8dc7ae283", size = 8211173, upload-time = "2026-06-02T11:53:36.602Z" }, + { url = "https://files.pythonhosted.org/packages/cf/fd/3c0863792e98e67e9184aa4029288a175935eb65443afcd30d4f143450cf/scikit_learn-1.9.0-cp312-cp312-win_arm64.whl", hash = "sha256:26e22435f63bcdcf396b574273f29f13dd531f5ea035801f5be10ba1540a4e60", size = 7867451, upload-time = "2026-06-02T11:53:39.075Z" }, +] + +[[package]] +name = "scipy" +version = "1.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7bd21faaf5a1a3b2eff922d02db5f191b99a6518db9078a8fb23169f6d22259a", size = 31056519, upload-time = "2026-06-19T14:59:45.203Z" }, + { url = "https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:265915e79107de9f946b855e50d7470d5893ec3f54b342e1aa6201cbdcd8bb6b", size = 28681889, upload-time = "2026-06-19T14:59:48.103Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2d/11dd93d21e147a73ba22bd75c0b9208d3a2e0ec76d53170ce7d9029b1015/scipy-1.18.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9ab7b758be6940954a713ee466e2043e9f6e2ed965c1fce5c91039f4be3d90a9", size = 20423580, upload-time = "2026-06-19T14:59:50.665Z" }, + { url = "https://files.pythonhosted.org/packages/9c/01/93552f75e0d2a7dd115a45e59209c51e8d514daff02fc887d2623be06fe1/scipy-1.18.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:97b6cddaaee0a779ef6b5ca83c9604b27cc16b2b8fc22c142652df8793319fb8", size = 23054441, upload-time = "2026-06-19T14:59:53.564Z" }, + { url = "https://files.pythonhosted.org/packages/3c/23/21f5e703643d66f21faa6b4c73195bfcad70c55efcb4f1ab327cd7c4101a/scipy-1.18.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:52a96e21517c7292375c0e27dd796a811f03fcea5fd4d108fdfea8145dcf17ab", size = 33968720, upload-time = "2026-06-19T14:59:56.415Z" }, + { url = "https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f55797419e16e7f30cf88ffb3113ce0467f00cfe3f70d5c281730b21769bfc2", size = 35287115, upload-time = "2026-06-19T14:59:59.411Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ff/eec46be7e9234208f801062b53e1983085eddebd693f6c9bfb03b459830d/scipy-1.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ad033410e2e0672ffdc1042110cef20e1c46f8fd0616cee1d44d8d58fad8fc11", size = 35577989, upload-time = "2026-06-19T15:00:02.235Z" }, + { url = "https://files.pythonhosted.org/packages/84/ca/210d4759c7210bb7d269437421959b39a33434e2776b60c5cb8a763bb30a/scipy-1.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a55985d54c769c872e64b7f4c8a81cc30ef700cc04296abbbf3705439c126de", size = 37421717, upload-time = "2026-06-19T15:00:05.102Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/9a9edb45345bd6744da5ddfb6628e5d5185920494c6a67ec45b6381004cb/scipy-1.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:71ccc8faa2dd16ac310233203474a8b5cb67f10dedd54a3116d34943f4b19132", size = 36597428, upload-time = "2026-06-19T15:00:08.112Z" }, + { url = "https://files.pythonhosted.org/packages/99/0e/33f32a2a58987e26aec0f7df252cbbad1e90ae77bdbc76f40dd4ed0cf0ea/scipy-1.18.0-cp312-cp312-win_arm64.whl", hash = "sha256:d88363fd9d8fbd3511bd273f1a49efb2a540773ddf92a91d57498ce7dd7f3e76", size = 24351481, upload-time = "2026-06-19T15:00:11.103Z" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "toolz" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b", size = 52613, upload-time = "2025-10-17T04:03:21.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", size = 58093, upload-time = "2025-10-17T04:03:20.435Z" }, +] + +[[package]] +name = "tqdm" +version = "4.70.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/3b/6c24bec5be5e743ffd99576daa5cc077722fc7d5bbc00bd133fa0c698dc6/tqdm-4.70.0.tar.gz", hash = "sha256:55b0b0dbd97462d06ebee91e4dac24ed4d4702be82b24f07e6c1d27e08cea220", size = 795438, upload-time = "2026-07-27T11:33:15.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl", hash = "sha256:7f585706bfddbdebf89daac705b2dfcc16890130727d3197ca62c732b4310953", size = 80184, upload-time = "2026-07-27T11:33:13.167Z" }, +] + +[[package]] +name = "typer" +version = "0.27.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "rich" }, + { name = "shellingham" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/40/4a3db7990d1f62a53182aa96eaef57aeb2886a27f90a195bc66713565d31/typer-0.27.1.tar.gz", hash = "sha256:a79bef8469a79c45498e7b814ecf8d603cc7644e9acbd9e19cac0334240b18df", size = 203994, upload-time = "2026-08-03T14:41:03.438Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/89/9518bc0c3929bee36b3a4a8e3daddd6e03f92f9961c66d4983b837160543/typer-0.27.1-py3-none-any.whl", hash = "sha256:53150287edd11baeb4e4722c8e394fcdf8181c0ae89485cba8d25c778d5edd56", size = 122874, upload-time = "2026-08-03T14:41:04.391Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/ff/5a28bdfd8c3ebec42564ac7d0e54ca3db65044a9314a97f9564fa7a1e926/tzdata-2026.3.tar.gz", hash = "sha256:4a1518b8993086a7982523e071643f3c0e5f213e75b21318e78bcabfff9d1415", size = 198674, upload-time = "2026-07-10T08:50:37.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl", hash = "sha256:dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931", size = 348168, upload-time = "2026-07-10T08:50:36.46Z" }, +] + +[[package]] +name = "tzlocal" +version = "5.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/5b/879b2f932adfa7a053c360d50bc896c977fa6426109185f7c12ebdd0cb9d/tzlocal-5.4.4.tar.gz", hash = "sha256:8dbb8660838688a7b6ba4fed31d18dedf842afb4d47ca050d6d891c2c15f3be4", size = 31170, upload-time = "2026-06-29T08:03:40.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/a4/017a7a6cbe387d961a688ec31364ae60a5c4e22c96ae9921b79a947c855d/tzlocal-5.4.4-py3-none-any.whl", hash = "sha256:aae09f0126a8a86fa736be266eb4a471380d26a0de3bc14844e7821fee3e2a15", size = 18115, upload-time = "2026-06-29T08:03:38.666Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "vectorbtpro" +version = "2026.6.27" +source = { git = "ssh://git@github.com/polakowo/vectorbt.pro.git?rev=6e18cf0aa37849cfc20848f40f1d26ecfdc771b4#6e18cf0aa37849cfc20848f40f1d26ecfdc771b4" } +dependencies = [ + { name = "attrs" }, + { name = "dateparser" }, + { name = "humanize" }, + { name = "imageio" }, + { name = "mypy-extensions" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "python-dateutil" }, + { name = "requests" }, + { name = "schedule" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "tqdm" }, + { name = "typer" }, + { name = "typing-extensions" }, + { name = "websocket-client" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] diff --git a/validation/environments/vectorbt_pro_2025_12_31/pyproject.toml b/validation/environments/vectorbt_pro_2025_12_31/pyproject.toml new file mode 100644 index 00000000..813810c6 --- /dev/null +++ b/validation/environments/vectorbt_pro_2025_12_31/pyproject.toml @@ -0,0 +1,14 @@ +[project] +name = "ml4t-backtest-validation-vectorbt-pro-2025-12-31" +version = "0.0.0" +requires-python = ">=3.12,<3.13" +dependencies = [ + "ml4t-backtest", + "vectorbtpro @ git+ssh://git@github.com/polakowo/vectorbt.pro.git@1305a1e1974325db9382eaeacc6452e9b075ca71", +] + +[tool.uv] +package = false + +[tool.uv.sources] +ml4t-backtest = { path = "../../..", editable = true } diff --git a/validation/environments/vectorbt_pro_2025_12_31/uv.lock b/validation/environments/vectorbt_pro_2025_12_31/uv.lock new file mode 100644 index 00000000..a2256245 --- /dev/null +++ b/validation/environments/vectorbt_pro_2025_12_31/uv.lock @@ -0,0 +1,666 @@ +version = 1 +revision = 3 +requires-python = "==3.12.*" +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", + "sys_platform != 'emscripten' and sys_platform != 'win32'", +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "certifi" +version = "2026.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/31/4971872b3ed8715346231fb6eb4da8fcba65a4143c189db151ee28a2812b/charset_normalizer-3.5.0.tar.gz", hash = "sha256:49bd5feb59b0bf3cbf6ebcf4352e371c95b9da9bacd4449f8b64d0ad2c10a26e", size = 169295, upload-time = "2026-08-12T14:35:31.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/3c/045ea64ea5a550870dd8ab60b2242870328d53f17d2be593b4f9f3121474/charset_normalizer-3.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:98820e1ceb25c6df7a80c4fd8efa59cb121f99bc7c4c1693ad94a2caff5b311d", size = 343861, upload-time = "2026-08-12T14:32:27.254Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1b/7502be709db899d5b4801509829188b3a5a10969411da9c846115a5f1b70/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:608553f476fca509537e804c4a71f5eb166ce63b75141f89c2c686ce1aa36956", size = 237550, upload-time = "2026-08-12T14:32:28.385Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ce/66392661375148d9455c17bee25509a54e28c39969e34befa48ec8777936/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6753de11eef42f1c321b26d682957d92c7f7bbce6530f34bbe0f9291dd37cc6f", size = 229673, upload-time = "2026-08-12T14:32:29.668Z" }, + { url = "https://files.pythonhosted.org/packages/6a/64/f58c32a8d4ecf55b82ee61ee9aa6a664d4afcd36c72feb4c926fd6fe9af8/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f76dc0a47f94cb9b69d86f01e477f4b0371ca70208b9ccea7e063c41eed9046", size = 260768, upload-time = "2026-08-12T14:32:30.891Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ea/36c90e59a96386174377e855479ec154221ef001e96637e0b23be92489c4/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c387c6bf91b4774e359a48a179e2872b8e8bf741e4fde06ba8d1665eb9a4760a", size = 257880, upload-time = "2026-08-12T14:32:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/23/35/5b85772eb82528ef22ba29487ad544a7049dfd27f35b1a5a55dbc0843048/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14f6904a3cf870abf044df3a8c4924ac6c8ef77e9896586fd37e73ae96cff2af", size = 247547, upload-time = "2026-08-12T14:32:33.495Z" }, + { url = "https://files.pythonhosted.org/packages/b6/14/ba11a99c2a22ab04c2d5383a700b378cb463a78ab15f36444cabc10cd671/charset_normalizer-3.5.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0cce46dd29d73e135e8087b96eb62a4aca6d69391b7f97808c6588ebed3178f3", size = 243326, upload-time = "2026-08-12T14:32:34.794Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4a/cadba3f2400b45aa1d62a4ae0298bf58a3b30b1158baf15c338c7ce5b601/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b476cdb63df22da2b91837593380be3ddbe406f36c506c1c91d80e7196b66288", size = 238820, upload-time = "2026-08-12T14:32:35.984Z" }, + { url = "https://files.pythonhosted.org/packages/47/41/d5188b9342d75b72c2b05d3ee373f01a691397e770f001ee05e3b37925f5/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1f56ce84b317ef2a59d7d3461891c7597c79247d2192bb8114c68a1a1debfcc0", size = 231661, upload-time = "2026-08-12T14:32:37.191Z" }, + { url = "https://files.pythonhosted.org/packages/13/5f/df38fa972c4e945c3d8cee2bc4e610613af522fd359c7dc7a74c419f0278/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9ce0f885239357379d92fd9a5fddbe20f0e30e0527c29ba69f8e99eeb1304a76", size = 261459, upload-time = "2026-08-12T14:32:38.369Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d7/043ff7720067a3beee05523465ac9c1c846c68b7884930dd483f72ee5ab6/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:96ae7ab5d8155fde927aa0864fbc8ba3cc4fde6d41ab0c7cea9d6012b4978603", size = 242300, upload-time = "2026-08-12T14:32:39.505Z" }, + { url = "https://files.pythonhosted.org/packages/19/f6/33980b7b802a048e546a6d9ad2ea783a6cf6b10a86aaccd10db462d8b913/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf91921009025e96ce57a03ced6d14604fc3baf0530351638e9504a55da6fa3b", size = 259101, upload-time = "2026-08-12T14:32:41.02Z" }, + { url = "https://files.pythonhosted.org/packages/a6/b7/0d19bde844bff9165377c1da9ef3c4792a4c24bd49b5b7094d9e6f6ab58b/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0b2e44e6d42d1a4ff78ccc219a93c5449105d10b16198d1aea581080df8073f9", size = 249246, upload-time = "2026-08-12T14:32:42.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/cc/2c34fdfaacdf0e96e880ef562cbf80a9b5f8ea97e0dd9e57ba348a9c65cf/charset_normalizer-3.5.0-cp312-cp312-win32.whl", hash = "sha256:deb99535e9bf0bea8e274c6413eb939a21be35a3f492678dba4d5b1f4d70f142", size = 178025, upload-time = "2026-08-12T14:32:43.909Z" }, + { url = "https://files.pythonhosted.org/packages/76/d0/c34dbd1df23bcbdc1b5d2f48256340d72fa747f1eb03924a9d2fa35ed85b/charset_normalizer-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e54dd1a66fa4bce0ccaf0db9dde336e49b3eec646dc4c1c0991279369d373a14", size = 200143, upload-time = "2026-08-12T14:32:45.254Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ea/4e6bf1465d60c3d8f488d5bde140d0cb91cd23ccab0dc2895cc6c6982047/charset_normalizer-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:b8ea208b304587d47931b36481342d20336e0d338ab052f8b4305926482598d6", size = 180046, upload-time = "2026-08-12T14:32:46.545Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f3/7b523d807cb5e73562ef8acf21d39cdb9d704955327362c781bc3478a73d/charset_normalizer-3.5.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:5a4ee37248dfac25107c758bda99d545ce73e60b44d2dd39e4a2bb9f2831e9f5", size = 330840, upload-time = "2026-08-12T14:34:45.06Z" }, + { url = "https://files.pythonhosted.org/packages/f0/de/fc68978fe78ca97063c96d764e41ff92ca639948f319271e0ff450e577a2/charset_normalizer-3.5.0-cp37-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a864bdcacd8bff58bb4845304e031f821a3ec64b2b7259f2d409cd49c9e59ca3", size = 251862, upload-time = "2026-08-12T14:34:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/a9/cb/82b41a0ab7fb1a88065f1d78ad32696ad88ea3fe8e25b8189d08833938de/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:84b736e3b391601bc47b86da381c749c0f894e9191aaca9f31f30c2632206df3", size = 239484, upload-time = "2026-08-12T14:34:47.869Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0c/19608b631f4538f908098d4a2d56a8f79a665e27cc58e9d90479761a9227/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6abb1f356fb865baeb6ebc3fadd843e9a96fbf49b9adcca55037f3cceccb7438", size = 230602, upload-time = "2026-08-12T14:34:49.265Z" }, + { url = "https://files.pythonhosted.org/packages/29/db/f648eb30e14eba301aed61e11672156f137905c1bdbb530151abe8065943/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d366548d2ee28a8cfdcc4296363978cc644a728333be9824d2de4652e83df0a", size = 259208, upload-time = "2026-08-12T14:34:50.632Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e0/ed2c8bdbac484d69614d6993143aeb6cb0f4dd1561c883402517b623c8ef/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d672f329ae504ee240eb39b6effb3318aa8e7e8924c0ce8eee5760b3fad98539", size = 253659, upload-time = "2026-08-12T14:34:52.11Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/b4907cb9ec5b521d9d024ced13611240b86ef065c2eb15b3ad2334dc9940/charset_normalizer-3.5.0-cp37-abi3-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c54036a518748b6c02e666f6d46c3817561998fb904c3be25b56fb4fe3dc5706", size = 248821, upload-time = "2026-08-12T14:34:53.399Z" }, + { url = "https://files.pythonhosted.org/packages/12/b2/e2d1abcfbc05822f0030869efb4e9f8a3658e13b4821796d4b62da917327/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:22a1889f1c9b752c63c36758a0c2145458e3cadb20fced7a0790002e9dd12b26", size = 240271, upload-time = "2026-08-12T14:34:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f9/4ba127ad610542fa3eabfa41c45bf12d357860a815b3566374ec0188e213/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:b7eb3eab5c646d3de7dcb14a7c9caebace5249c5767da39e1761cb1576e521a3", size = 232155, upload-time = "2026-08-12T14:34:56.543Z" }, + { url = "https://files.pythonhosted.org/packages/01/68/40613182366d00bd6dbd5f6c84a926cbd120960e038a8269e9ae7d782762/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_ppc64le.whl", hash = "sha256:2080aa129a28267984cdc902898993d788c995c384e285d0d19199f56760d52e", size = 259674, upload-time = "2026-08-12T14:34:57.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/53/4574a14fa4c9de4a6c9f31725354bfa40b67f653e6d594ce1654f9a41b32/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_riscv64.whl", hash = "sha256:fd68c825548a611158230e2f9222e210ceb2e3391995c0aa5865cbdf3ab4bd49", size = 246122, upload-time = "2026-08-12T14:34:59.337Z" }, + { url = "https://files.pythonhosted.org/packages/5a/02/bd8030d13d92c058ca7b2b9615bbb3169569e144db64d65c149cd45abf5e/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_s390x.whl", hash = "sha256:d8a9316f4da85e937242642b537c6d55d7e9287dd38e5634732f8233932aff45", size = 255221, upload-time = "2026-08-12T14:35:00.71Z" }, + { url = "https://files.pythonhosted.org/packages/77/9d/10ecd3bcbe2666b3d4d4026c97b48f73990682815db516052a1e8f4a31c5/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d90254c8f609338c53ec180fcd4c4f9c16502e238e3fc88ca7fd4c2f38d445b8", size = 253450, upload-time = "2026-08-12T14:35:02.217Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0f/d044c4872c0938a84f87b5027a698c0e61bacfc5c3551a4e749ca9b7bc5c/charset_normalizer-3.5.0-cp37-abi3-win32.whl", hash = "sha256:8b3e9e29b8b07cc461b9ce7768db7693a93979d0dadf22046f6f3555ded2f516", size = 173594, upload-time = "2026-08-12T14:35:03.845Z" }, + { url = "https://files.pythonhosted.org/packages/10/6b/6046773901f1944b9a89436351529811ee958afc7b774563be9d74a6f0c3/charset_normalizer-3.5.0-cp37-abi3-win_amd64.whl", hash = "sha256:0c8953d9d1617794cfc40d81179571c9ba3805dd029623a15c93f1fb70e60a74", size = 198959, upload-time = "2026-08-12T14:35:05.187Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a6/b57708ac92aefc8e8389d51d5178129b81f03196da61ee2c23e687b8178a/charset_normalizer-3.5.0-cp37-abi3-win_arm64.whl", hash = "sha256:562d24ca7797c1af8852994950c2e623a907b201fc4b0ed29e92af173d3828ca", size = 267055, upload-time = "2026-08-12T14:35:06.533Z" }, + { url = "https://files.pythonhosted.org/packages/22/c7/754d09943a616937df61e4ba367c409ded2a987e872972098d51a6fcf73b/charset_normalizer-3.5.0-py3-none-any.whl", hash = "sha256:993dfcbe75a85a3784abb5084f2c41b915767c90546fcc92803cffa28611baea", size = 67943, upload-time = "2026-08-12T14:35:30.363Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "dateparser" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "regex" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/6a/9f06999c4f27e9192c5eb38bfffadc2e6752df8178e97e88b10b9eb4c682/dateparser-1.4.2.tar.gz", hash = "sha256:bed2a3fd9bad8f2fb2d72b57748bada260b3a9349a264c22ffc23c3249d7049a", size = 338363, upload-time = "2026-08-04T12:11:03.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/1b/349e07ad184d64e81109e85a3557d7e05631fa3d05344169114ba743c4d3/dateparser-1.4.2-py3-none-any.whl", hash = "sha256:752f3d49d477cf7f60a7a9c8bcb19c882496ede0e377d5a3d80014cdfeca7050", size = 316546, upload-time = "2026-08-04T12:11:01.396Z" }, +] + +[[package]] +name = "exchange-calendars" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "korean-lunar-calendar" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyluach" }, + { name = "toolz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/73/460b0ece4e7444e3098b7738974c822787e134578d069d3a88b4be17d50a/exchange_calendars-4.13.2.tar.gz", hash = "sha256:a9459425dd64142cd54fbc639847403c7e0c33d60fbc326c94fc1d6bd127f002", size = 4137321, upload-time = "2026-03-10T03:24:38.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/4c/0469b40057bc9f8d9594dcc6024202626b981ae4b52dfcd304552e8e1c3a/exchange_calendars-4.13.2-py3-none-any.whl", hash = "sha256:fc5a2ad0d61b5c3a6539a3061cd4cbb55c59f4a903455cec7926e4b798919996", size = 213306, upload-time = "2026-03-10T03:24:37.055Z" }, +] + +[[package]] +name = "humanize" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/ea/13a1ef3c12d12662905801495283530251918b70d62d368f1d2e0272c70d/humanize-4.16.0.tar.gz", hash = "sha256:7dc2244a2f84a4bfb1d36c37bac80cd78e35cdc5c119206d87b018e1445f3a3f", size = 89515, upload-time = "2026-06-30T16:17:29.859Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/aa/0b7365d30fed43e7a3449aba1fe20a0a7174d9cf13e282af4e69ac825441/humanize-4.16.0-py3-none-any.whl", hash = "sha256:353eb2f34c09d098b2880eee8bef21832eae6d174f48c5762fff7e5fcb74d01d", size = 137209, upload-time = "2026-06-30T16:17:28.36Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "imageio" +version = "2.37.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/62/aa770a9307508d2a2a2c62d536a49347bffe9e55322db27838d3c93d0b07/imageio-2.37.4.tar.gz", hash = "sha256:e45cbc5e83502047fb138f7f585f7f105a136a57eea5f4b3cfc6ce1b52720bd3", size = 390173, upload-time = "2026-07-20T05:26:11.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/2d/ca050652104bab2cf55e569db2a178b1b61cb041fef28307f2db383f6d9f/imageio-2.37.4-py3-none-any.whl", hash = "sha256:1ab2e22c8debf700f24c3ac43e8f95f3b3a8110c83b93411e97b4b0b2cd1c7e6", size = 318000, upload-time = "2026-07-20T05:26:09.874Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + +[[package]] +name = "korean-lunar-calendar" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/9f/6160e95f3934026194dc7a0b5c78fe5c6e74761830ddea3e9cfc38e3f983/korean_lunar_calendar-0.4.0.tar.gz", hash = "sha256:be56f27bc0594fdbbdf7bbe00f504a9f929a31e311bd7d9bb93561b645afade7", size = 13425, upload-time = "2026-06-15T14:19:57.163Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/88/f56033b09fdca5c8c5e5fc2f3513950a05cd62caa9bd8e6d2750a887c86e/korean_lunar_calendar-0.4.0-py3-none-any.whl", hash = "sha256:c042e20de0bb702add6bec8d0f6da1ea8d3b170838e63846f70420cf341fe4e7", size = 11323, upload-time = "2026-06-15T14:19:56.089Z" }, +] + +[[package]] +name = "llvmlite" +version = "0.49.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/27/72ae94ea5c8f7349ec1c229d4cd058feb799cbd0833ad6d1b47c919b37b7/llvmlite-0.49.0.tar.gz", hash = "sha256:00f16db782f4a13c78c5804aedc434e46794a77e89999a168f9401106270e50a", size = 194467, upload-time = "2026-08-11T16:26:00.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/ae/3f699ebe3590e15e023a6372dd147526fd8ec398aacf9ceb844e854964a8/llvmlite-0.49.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b541c8fac3450db7574d1f53cf9dff83f285bfed9d69bf81fe71fc2a7d4f97fe", size = 40479231, upload-time = "2026-08-11T16:23:56.773Z" }, + { url = "https://files.pythonhosted.org/packages/be/3c/e97f69c62a2d972066d9a2612ce1f3de313035ac897a5b9f787cad8b55f7/llvmlite-0.49.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6acba646d88abbc87d5c113a3d62c1fbf8b8fee11c6493f516803e30f21ae870", size = 59890658, upload-time = "2026-08-11T16:24:05.451Z" }, + { url = "https://files.pythonhosted.org/packages/69/e6/e942ee08605fc0526ff3854260c384d8315a5830e16c4c2a5aebc14dc9bf/llvmlite-0.49.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4ec8ad805e7515cb8440a690eb3cef4d34acb29eef80b705ec4e1c1ad3c43c68", size = 58344481, upload-time = "2026-08-11T16:24:13.503Z" }, + { url = "https://files.pythonhosted.org/packages/84/49/2a44871cac6b5a2fd4aabd68cfdaf6de9a5c7edb36dee5d47b77bda4b50f/llvmlite-0.49.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a9c9e3af4e214acfefa4f73ebe7bc3fb35854a62b654edb3953f5ae33c08ba3", size = 41865543, upload-time = "2026-08-11T16:24:20.41Z" }, +] + +[[package]] +name = "ml4t-backtest" +source = { editable = "../../../" } +dependencies = [ + { name = "ml4t-specs" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pandas-market-calendars" }, + { name = "polars" }, + { name = "pyyaml" }, +] + +[package.metadata] +requires-dist = [ + { name = "backtrader", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=1.9.0" }, + { name = "cvxpy", marker = "extra == 'advanced'", specifier = ">=1.3.0" }, + { name = "cvxpy", marker = "extra == 'all'", specifier = ">=1.3.0" }, + { name = "dash", marker = "extra == 'all'", specifier = ">=2.11.0" }, + { name = "dash", marker = "extra == 'viz'", specifier = ">=2.11.0" }, + { name = "hypothesis", marker = "extra == 'all'", specifier = ">=6.80.0" }, + { name = "hypothesis", marker = "extra == 'dev'", specifier = ">=6.80.0" }, + { name = "matplotlib", marker = "extra == 'all'", specifier = ">=3.7.0" }, + { name = "matplotlib", marker = "extra == 'viz'", specifier = ">=3.7.0" }, + { name = "mkdocs", marker = "extra == 'all'", specifier = ">=1.6,<2" }, + { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.6,<2" }, + { name = "mkdocs-material", marker = "extra == 'all'", specifier = ">=9.5.0" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'all'", specifier = ">=0.24.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'", specifier = ">=0.24.0" }, + { name = "ml4t-diagnostic", marker = "extra == 'all'", specifier = ">=0.1.0b4" }, + { name = "ml4t-diagnostic", marker = "extra == 'dev'", specifier = ">=0.1.0b4" }, + { name = "ml4t-specs", specifier = ">=0.1.2,<0.2" }, + { name = "networkx", marker = "extra == 'advanced'", specifier = ">=3.0" }, + { name = "networkx", marker = "extra == 'all'", specifier = ">=3.0" }, + { name = "numpy", specifier = ">=2.3.2" }, + { name = "pandas", marker = "python_full_version < '3.15'", specifier = ">=2.3.3" }, + { name = "pandas", marker = "python_full_version >= '3.15'", specifier = ">=3.0.5" }, + { name = "pandas-market-calendars", specifier = ">=5.2.4" }, + { name = "plotly", marker = "extra == 'all'", specifier = ">=5.15.0" }, + { name = "plotly", marker = "extra == 'viz'", specifier = ">=5.15.0" }, + { name = "polars", specifier = ">=1.36.1" }, + { name = "pre-commit", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pre-commit", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyfolio-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.9.9" }, + { name = "pytest", marker = "extra == 'all'", specifier = ">=7.4.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.4.0" }, + { name = "pytest-asyncio", marker = "extra == 'all'", specifier = ">=0.21.0" }, + { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" }, + { name = "pytest-benchmark", marker = "extra == 'all'", specifier = ">=4.0.0" }, + { name = "pytest-benchmark", marker = "extra == 'dev'", specifier = ">=4.0.0" }, + { name = "pytest-cov", marker = "extra == 'all'", specifier = ">=4.1.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0" }, + { name = "pytest-timeout", marker = "extra == 'all'", specifier = ">=2.1.0" }, + { name = "pytest-timeout", marker = "extra == 'dev'", specifier = ">=2.1.0" }, + { name = "pytest-xdist", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pytest-xdist", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyyaml", specifier = ">=6.0.3" }, + { name = "ruff", marker = "extra == 'all'", specifier = ">=0.8.0" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8.0" }, + { name = "ty", marker = "extra == 'all'" }, + { name = "ty", marker = "extra == 'dev'" }, + { name = "vectorbt", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.24.0" }, + { name = "zipline-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=2.4.0" }, +] +provides-extras = ["advanced", "all", "comparison", "dev", "docs", "viz"] + +[package.metadata.requires-dev] +dev = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "ml4t-diagnostic", specifier = ">=0.1.0b4" }, + { name = "pre-commit", specifier = ">=3.3.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, + { name = "ruff", specifier = ">=0.8.0" }, + { name = "twine", specifier = ">=6.0.0" }, + { name = "ty" }, +] +test = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, +] + +[[package]] +name = "ml4t-backtest-validation-vectorbt-pro-2025-12-31" +version = "0.0.0" +source = { virtual = "." } +dependencies = [ + { name = "ml4t-backtest" }, + { name = "vectorbtpro" }, +] + +[package.metadata] +requires-dist = [ + { name = "ml4t-backtest", editable = "../../../" }, + { name = "vectorbtpro", git = "ssh://git@github.com/polakowo/vectorbt.pro.git?rev=1305a1e1974325db9382eaeacc6452e9b075ca71" }, +] + +[[package]] +name = "ml4t-specs" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/ca/aba7ea1f4e9a1da0b4f465dea03d3e4320d63db348245a2a9976096407ac/ml4t_specs-0.1.3.tar.gz", hash = "sha256:9578038af96d59cd50317e78f8781772833b308076da13ad24c0b304bb20961d", size = 50758, upload-time = "2026-08-12T02:27:14.366Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/6c/0a35ee16313441a68a14d811ffa8b79eb63a013d548b6bbb50dfd208c6b1/ml4t_specs-0.1.3-py3-none-any.whl", hash = "sha256:2b9302d27746f5859b62c6748bf217ca4eae76d4842c783575c58f4880d1568f", size = 33860, upload-time = "2026-08-12T02:27:12.929Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "narwhals" +version = "2.24.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/1d/58946e5aab18393e793bd4add6985b95d0e01c3a2d832f38f54468b10dcd/narwhals-2.24.0.tar.gz", hash = "sha256:b5c0f684ccd9d7475b564111e319a4964abcf2baf79d3cf6b1003d06ac9b828d", size = 661143, upload-time = "2026-07-13T10:49:19.086Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl", hash = "sha256:42fdedf44e5b2ca7505630d45b4ac3058f38d8485cba9fe1652ca23152df7489", size = 461030, upload-time = "2026-07-13T10:49:17.571Z" }, +] + +[[package]] +name = "numba" +version = "0.67.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "llvmlite" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/90/2544f4e3a61e501d6c9a5418fd4b905323222693d54a02cab0106a0af865/numba-0.67.0.tar.gz", hash = "sha256:cd75aa535b33fa05d9d930b1ae8af9f97a2881e96d72dfb38ec9b78284d9f851", size = 2836515, upload-time = "2026-08-11T23:04:00.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/58/915cddba90010348ed0444451132fdde9b000bcbaff1582029b5bf115d11/numba-0.67.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:6004d8d5f28d4028687fb2d972d629295b13685943bd2ed5cd8810c3b848e219", size = 2745050, upload-time = "2026-08-11T23:03:25.607Z" }, + { url = "https://files.pythonhosted.org/packages/bb/38/926757caaac18a66f057d7544a63620bf360a07d281c9f7ecadd2aa83963/numba-0.67.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f63d43db06b4756424d6d2484737c902e0ae944a0eec3e8b0b4de2c695b15caa", size = 3884596, upload-time = "2026-08-11T23:03:27.688Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6d/58291dc58da39d98b32db7f044729f6d8d4920cd9622fbab3179b54ff4c4/numba-0.67.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76d3335aaeffb9dc88309420890e73497a00be08a7530441bc2b58ffe025bfa5", size = 3585290, upload-time = "2026-08-11T23:03:29.684Z" }, + { url = "https://files.pythonhosted.org/packages/6e/63/ab21828b4056afed71f9ecb40f4de26c2c19de731cc001961aca74b79464/numba-0.67.0-cp312-cp312-win_amd64.whl", hash = "sha256:50e2b72406c18cda5dd7431b0082cb85ea94e06c64c33607248fc8bef92cfb81", size = 2815645, upload-time = "2026-08-11T23:03:31.732Z" }, +] + +[[package]] +name = "numpy" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/80/db0b4559e57ec36362bedbb05530a87fafbcb6067708c946967a41d449e7/numpy-2.5.2.tar.gz", hash = "sha256:d482d171c406ae88c5b19cad3b6a1c4c5209f886ab74bc44c2c865c23f52d860", size = 20773161, upload-time = "2026-08-09T13:48:27.962Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/72/dccb0aaf40972777283303919f613964227266d0c13adebb79ac124f1c3e/numpy-2.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:14e373cfc6387177e8409dac3c7159be8eb05cd77096cd7c950268b86f62831c", size = 16891693, upload-time = "2026-08-09T13:44:51.702Z" }, + { url = "https://files.pythonhosted.org/packages/60/2e/b5aee50a1f74ac815cf8331812cb8251e29024025de462e0c047641c614c/numpy-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4bbd96c833ecc8cc069ce518078fc8c60cb9cbfb0fea5b7a803ad65035596d03", size = 11903109, upload-time = "2026-08-09T13:44:55.501Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f4/29e78102a80601cf034d4e9767022cffeca2c3b4c926e1754572ca95593d/numpy-2.5.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:6e8172ddfcf5cf74b811d372b570b83c60bd2de87a6fbfbebdadb4a9bd9c6cbb", size = 5350202, upload-time = "2026-08-09T13:44:58.401Z" }, + { url = "https://files.pythonhosted.org/packages/11/4b/dcd3b7eadaf4035d2c7a4289d232523a6964f602598ef7674e4bd7291f93/numpy-2.5.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:65f188481f1669e26f62b701e8205d19e460fa4a9b52a1414ba382330e4a3414", size = 6687736, upload-time = "2026-08-09T13:45:00.813Z" }, + { url = "https://files.pythonhosted.org/packages/e5/21/4947e0e9d6c9fc2e2ff15b8949049ee44f63adb9cacc729ab8793f97e712/numpy-2.5.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8ee9c4eeb8454b3660a8b53493563c3e121c2fc94fbd72b848ef814ed7b676a9", size = 15612696, upload-time = "2026-08-09T13:45:04.151Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5f/62d28cf019460c7f1394105b4d49d9911a9c444cb77ab0bd95a204c5a6de/numpy-2.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3cdec01fa790a186d430433fdd4d4ffb70eed6f0eeb4bf05c8dbe2dce0a9bcb8", size = 16722264, upload-time = "2026-08-09T13:45:07.714Z" }, + { url = "https://files.pythonhosted.org/packages/14/25/3f0be4c1b9fdf5dd5e708a6806978564d7c46a055c000496309ff2a2f8af/numpy-2.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7999d4ddb0c4025018373fd787510d46e04c769467af22869707b3c1cfd459ab", size = 16974396, upload-time = "2026-08-09T13:45:11.316Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/6262cbdeeb45da9d971e40715f579d791603ba8ec0b5e2db1ac55454421d/numpy-2.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1f017dc0875c9209d219f97feceb7d54c2661bb243deb4114478e1295808af7", size = 18476044, upload-time = "2026-08-09T13:45:14.869Z" }, + { url = "https://files.pythonhosted.org/packages/36/33/29208b8b075bde62d26a81d14b358c42b0f69b6cabd98d4ff97f37f22b05/numpy-2.5.2-cp312-cp312-win32.whl", hash = "sha256:d6a48072864e3324e194a8fbb3c657bcc5b5c869dbc64c9537b1d5c862572c0a", size = 6072817, upload-time = "2026-08-09T13:45:17.867Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/87fea2769fe1c47c1b5b01d8310772c9d1a85d485de7cf386ef7a3332b02/numpy-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:28ac63476ec7651484215ee7fa15a1f78b57c14621f01e392afe17b9a1390ce4", size = 12464674, upload-time = "2026-08-09T13:45:20.734Z" }, + { url = "https://files.pythonhosted.org/packages/14/52/032b97e00461ab0809bbe4c588b035620e5a14b8cdee47ecddefc7b17d33/numpy-2.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:27650bb0e7140fa3d37b9923b4803645e0b125d190f326eecfd3f4dad8e8ade1", size = 10397131, upload-time = "2026-08-09T13:45:23.73Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/4f/5f3422a2afec5ffc46308b79e53291365a93748b498ac2e58bead0197916/pandas-3.0.5.tar.gz", hash = "sha256:dca3734d6ab7c906e6730f0788b0a1dbb9f2467731f9711f77995c8e9d62d712", size = 4658219, upload-time = "2026-07-22T22:19:28.819Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/54/1dc810ea558d1320b597aa140a514f2fdf1d2ea09c38cf556f13ea712ec9/pandas-3.0.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fa290c16964d4963fbfbc358928239cf3bd755b20e988ce944877def2f44471d", size = 10411717, upload-time = "2026-07-22T22:18:08.307Z" }, + { url = "https://files.pythonhosted.org/packages/68/56/fbe81c09195924d8b7b8d4461a20458fe80a6a5ed6b24f0314da684277e1/pandas-3.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2e26bb46934b8a2ca0c3de1d3d606fc5f6746584791b2db264d58cf370e08dc", size = 9957095, upload-time = "2026-07-22T22:18:10.6Z" }, + { url = "https://files.pythonhosted.org/packages/e0/51/fac252f4a913ed5eabf3c11b880a9e8d5a6c10f0b2129d0462212d238b4d/pandas-3.0.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73fa87b08a7ef706f8aafda39ddaccf2a99047bea62d8c88a0361bcafb2237bc", size = 10485458, upload-time = "2026-07-22T22:18:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/12/98/e976540c1addf70442be7842a18cf70884a964abbf69442504f4d2939989/pandas-3.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d373ce03ffd84010ed9839fa73672a9c8256990532e158440c0085db7d914b34", size = 10998091, upload-time = "2026-07-22T22:18:15.209Z" }, + { url = "https://files.pythonhosted.org/packages/a4/8c/1f29b5be8d3fc47dd7567eb167fabba2085879b31e0287ce7cba6d3d2ff4/pandas-3.0.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2a29c53d85ea98c5e792c59ef82ee9fbe6ca902c0d0adb6b23f45ef894cd7bf6", size = 11499501, upload-time = "2026-07-22T22:18:17.689Z" }, + { url = "https://files.pythonhosted.org/packages/9d/e2/bd9c98ad2df7b38bde002adde4cdf353519da51881634323b126c55997f9/pandas-3.0.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a5ad3b02ed6bc7d7ae9b70804b2c6aa31827489d150f8e623ce82491b82085d7", size = 12060559, upload-time = "2026-07-22T22:18:20.147Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9a/ffbd852d58bd74a617fe2f8ee6a58a96982271ce41cf981eab22190b4a4b/pandas-3.0.5-cp312-cp312-pyemscripten_2024_0_wasm32.whl", hash = "sha256:b2acb4650527eec6822c3dadb2b771277b65e7dae7a267d4bccf65fd1bb3fbce", size = 7197652, upload-time = "2026-07-22T22:18:22.502Z" }, + { url = "https://files.pythonhosted.org/packages/70/b5/d2d3e9ae73362ba4229651b0ee1455cf78073a1ce585f6ff693782ce263e/pandas-3.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:80a611068e8a3ac23f7398c6c14eb46dc974e5cc9997f653e2dcfd1da74edd41", size = 9831691, upload-time = "2026-07-22T22:18:24.534Z" }, + { url = "https://files.pythonhosted.org/packages/52/51/dea1e89d6a6796b9c43f85a09b484ee03edb8a4c4842e73e200a8c11301c/pandas-3.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:25ff585b972a18ef1fe9ffa3ac6544d9950508aa76832e5147640b6022821e49", size = 9105796, upload-time = "2026-07-22T22:18:27.064Z" }, +] + +[[package]] +name = "pandas-market-calendars" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exchange-calendars" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/4c/98067cb91b37a137389f978f52410975915268d394c09cf941c490565297/pandas_market_calendars-5.4.0.tar.gz", hash = "sha256:b02f3a0e9bcb4b9e82a5060bf260ef0060ccd398f989b5e6f8208f4352967806", size = 175213, upload-time = "2026-05-27T02:42:05.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/d3/59b999f7f6a1d173572d3e8f8b07ded7e256c691d02b3b5cacb26479895a/pandas_market_calendars-5.4.0-py3-none-any.whl", hash = "sha256:bb2b93b28d496cab173b41c7d120fd5cd9d506b31f3bb0ad3d1d9f2b60d9d9e3", size = 134904, upload-time = "2026-05-27T02:42:06.35Z" }, +] + +[[package]] +name = "pillow" +version = "12.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce", size = 47025035, upload-time = "2026-07-01T11:56:38.965Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965", size = 5345969, upload-time = "2026-07-01T11:54:06.397Z" }, + { url = "https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7", size = 4780323, upload-time = "2026-07-01T11:54:09.351Z" }, + { url = "https://files.pythonhosted.org/packages/25/27/ac8f99618ffd3dde21db0f4d4b1d2ab00c0880595bfd17df103f7f39fd0c/pillow-12.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9", size = 6266838, upload-time = "2026-07-01T11:54:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91", size = 6940830, upload-time = "2026-07-01T11:54:13.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/51/8b08617af3ad95e33ce6d7dd2c99ed6c8298f7fb131636303956be022e25/pillow-12.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c", size = 6344383, upload-time = "2026-07-01T11:54:15.756Z" }, + { url = "https://files.pythonhosted.org/packages/1d/72/cf78ac9780bb93c28328f408973845a309d4d145041665f734572ced1b52/pillow-12.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df", size = 7052934, upload-time = "2026-07-01T11:54:17.721Z" }, + { url = "https://files.pythonhosted.org/packages/20/20/25e0f4dc178a6bc0696793720055519a0de89e7661dae886992decbd2f81/pillow-12.3.0-cp312-cp312-win32.whl", hash = "sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f", size = 6472684, upload-time = "2026-07-01T11:54:19.839Z" }, + { url = "https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09", size = 7227137, upload-time = "2026-07-01T11:54:22.025Z" }, + { url = "https://files.pythonhosted.org/packages/de/47/4845a0a6c0dbf1db8456bd9fc791f13c5ced7ced20606d08a0aacfd25b49/pillow-12.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510", size = 2568267, upload-time = "2026-07-01T11:54:24.051Z" }, +] + +[[package]] +name = "polars" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "polars-runtime-32" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/13/3873f213304bcbaaf39e63c8b905ceb460a0524448d57f86a829f6d4d0fd/polars-1.43.2.tar.gz", hash = "sha256:c699671b99eb71ff53334d237917aaa3db5ad4dda480abcb6c80e0eaee7b677b", size = 750312, upload-time = "2026-08-01T06:28:30.872Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/fe/0888040a24e4504098b85d8ad486b14cb01cf6b030bbe479dfc2dcffc2ac/polars-1.43.2-py3-none-any.whl", hash = "sha256:22aa0cb92a1ee2d60d6a15a638b2e8e0dd99aea21ac0cd8fb29da8e382e075a9", size = 847150, upload-time = "2026-08-01T06:27:15.543Z" }, +] + +[[package]] +name = "polars-runtime-32" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/06/11b578eeef05f867e3ee31b2a2fdd8e7684c2aa47822c49935d1be789c38/polars_runtime_32-1.43.2.tar.gz", hash = "sha256:d7b7c486bccee75a6af0158b87077da3d054657e3c60036b28644f4e1c7fdbf7", size = 3095669, upload-time = "2026-08-01T06:28:32.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/fc/12e6d4ca34d820297651134cfa35f86c33e898539fc6629cbb35d0089697/polars_runtime_32-1.43.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:91abf205d4ec93f92ba95386b7f8776559ae3dfce425ed2e527efa75d117d04a", size = 53088908, upload-time = "2026-08-01T06:27:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/32/81/833b0853551deb810854f96b43dea342b6e6c9b0ea1afcccf774157d519d/polars_runtime_32-1.43.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:2cc3ff96fd44789b02eb5c15b98dfcb000101636b177d3034fae2feec19b118f", size = 47540529, upload-time = "2026-08-01T06:27:21.391Z" }, + { url = "https://files.pythonhosted.org/packages/83/55/7b2a75af14c9294d97f3bec132dd3018ddcd988bef32b5d28322150b8c11/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10ed36e615ab362feb7406e6d084e124b445ad284caa73bd93ae7e65745ed894", size = 51366340, upload-time = "2026-08-01T06:27:24.776Z" }, + { url = "https://files.pythonhosted.org/packages/62/60/64deacb3abc70c52e2d88a808a052d1621c86a48fe9194f2c065579ab1cd/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d5a7ae004a2723ebf4427f6d6a639f30f86af4cf077075f6b35d04711154fc3", size = 57304599, upload-time = "2026-08-01T06:27:27.875Z" }, + { url = "https://files.pythonhosted.org/packages/52/95/d6e3a236d7630e17c40d0ddee839bf2be9acf548fdc0e5ad65ed9ff0cac6/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:09339eacc6d392206e78aabbaaa37d7276eb969b798f46cb1f367fd718798c60", size = 51520580, upload-time = "2026-08-01T06:27:30.913Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5a/2deb8eac70e9a2ac26d88a66ae7cf52612865026f4f4a5e7ab11ad9d52bf/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:452b400e59e7f56e4c6437f435e796903272a9388feee12de2bea049ae87025e", size = 55204471, upload-time = "2026-08-01T06:27:33.886Z" }, + { url = "https://files.pythonhosted.org/packages/29/9e/647401ae8a607bc0cc40ed7b8592d5b1be90ded0dc9b9d6d3aeb03f9524b/polars_runtime_32-1.43.2-cp310-abi3-win_amd64.whl", hash = "sha256:00e33c28e321410c8d66e814a90043101e3bdd9ed2c6dabda07565aa8adbbdf1", size = 52572176, upload-time = "2026-08-01T06:27:37.048Z" }, + { url = "https://files.pythonhosted.org/packages/96/8d/60a50c3f36c85218a7ffcb48c6fe2ce1f7bec799152d68b8658ebed2179c/polars_runtime_32-1.43.2-cp310-abi3-win_arm64.whl", hash = "sha256:350a4868cae85bf8b3f81b33ba47927c15256bd9264dfc8c0753f1b927eac9d3", size = 46582513, upload-time = "2026-08-01T06:27:40.025Z" }, +] + +[[package]] +name = "pyluach" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/11/42568c1568a75f8803c59f26d29af01a0890352b7a8e03d41ecda8bfb5dd/pyluach-2.3.0.tar.gz", hash = "sha256:ec6e30669d1df50c9ca160486da44a8195bb4c7a5d3d533990d0c5b03accd281", size = 26910, upload-time = "2025-09-09T20:24:39.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/c8/f96208ade3ca4c23b372497d0788bcf0f2e0ff4310e5ee693366bc33fdf0/pyluach-2.3.0-py3-none-any.whl", hash = "sha256:4497b731aef59508b079dbf5f00bc5bf4329ac45090a6cd37b5a83756f0e69ab", size = 25914, upload-time = "2025-09-09T20:24:37.831Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytz" +version = "2026.3.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/48/fb042503b6ca6cd271261dc559fd6432f7d8c713153e9ec5c591af4dfc1c/pytz-2026.3.post1.tar.gz", hash = "sha256:2211d3fcf9a797d3405cac96ac7f61d80e6a644f72a3309607282fe8a2010c5d", size = 319745, upload-time = "2026-07-25T15:12:07.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/7b/39c34ca613b0b198cb866466651b26b045e2009864c5183c979a3b83f383/pytz-2026.3.post1-py2.py3-none-any.whl", hash = "sha256:dd95840dd199baea12d9cc096a1d452caa6596a1c1e4b5f3dbd1541855d5e815", size = 508283, upload-time = "2026-07-25T15:12:05.782Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, +] + +[[package]] +name = "regex" +version = "2026.7.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/98/04b13f1ddfb63158025291c02e03eb42fbb7acb51d091d541050eb4e35e8/regex-2026.7.19.tar.gz", hash = "sha256:7e77b324909c1617cbb4c668677e2c6ae13f44d7c1de0d4f15f2e3c10f3315b5", size = 416440, upload-time = "2026-07-19T00:19:48.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/b9/d11d7e501ac8fd7d617684423ebb9561e0b998481c1e4cbc0cb212c5d74a/regex-2026.7.19-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2cc3460cedf7579948486eab03bc9ad7089df4d7281c0f47f4afe03e8d13f02d", size = 496778, upload-time = "2026-07-19T00:17:05.677Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a9/a5ab6f312f24318019170dc485d5421fe4f89e43a98640da50d95a8a7041/regex-2026.7.19-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0e9554c8785eac5cffe6300f69a91f58ba72bc88a5f8d661235ad7c6aa5b8ccd", size = 297122, upload-time = "2026-07-19T00:17:07.59Z" }, + { url = "https://files.pythonhosted.org/packages/b3/63/4cab4d7f2d384a144d420b763d97674cb70619c878ea6fcd7640d0e62143/regex-2026.7.19-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d7da47a0f248977f08e2cb659ff3c17ddc13a4d39b3a7baa0a81bf5b415430f6", size = 292009, upload-time = "2026-07-19T00:17:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/22/85/102a81b218298957d4ea7d2f084fae537a71add9d6ff93c8e67284c5f45e/regex-2026.7.19-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93db40c8de0815baab96a06e08a984bac71f989d13bab789e382158c5d426797", size = 796708, upload-time = "2026-07-19T00:17:11.542Z" }, + { url = "https://files.pythonhosted.org/packages/78/b5/dc136af5629938a037cd2b304c12240e132ec92f38be8ff9cc89af2a1f2d/regex-2026.7.19-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:66bd62c59a5427746e8c44becae1d9b99d22fb13f30f492083dfb9ad7c45cc18", size = 865651, upload-time = "2026-07-19T00:17:13.312Z" }, + { url = "https://files.pythonhosted.org/packages/e0/75/67402ae3cd9c8c988a4c805d15ee3eef015e7ca4cb112cf3e640fc1f4153/regex-2026.7.19-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1649eb39fcc9ea80c4d2f110fde2b8ab2aef3877b98f02ab9b14e961f418c511", size = 911756, upload-time = "2026-07-19T00:17:15.015Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8e/096d00c7c480ef2ff4265349b14e2261d4ab787ba1f74e2e80d1c58079c3/regex-2026.7.19-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dce8ec9695f531a1b8a6f314fd4b393adcccf2ea861db480cdf97a301d01a68", size = 801798, upload-time = "2026-07-19T00:17:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/f0/41/e7ecac6edb5722417f85cc67eaf386322fbe8acf6918ec2fdc37c20dd9d0/regex-2026.7.19-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3080a7fd38ef049bd489e01c970c97dd84ff446a885b0f1f6b26d9b1ad13ce11", size = 776933, upload-time = "2026-07-19T00:17:19.347Z" }, + { url = "https://files.pythonhosted.org/packages/6f/69/03c9b3f058d66403e0ca2c938696e81d51cd4c6d47ec5265f02f96948d9a/regex-2026.7.19-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1d793a7988e04fcb1e2e135567443d82173225d657419ec09414a9b5a145b986", size = 784338, upload-time = "2026-07-19T00:17:21.057Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f7/b38ab3d43f284afbb618fcd15d0e77eb786ae461ce1f6bc7494619ddc0f2/regex-2026.7.19-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e8b0abe7d870f53ca5143895fef7d1041a0c831a140d3dc2c760dd7ba25d4a8b", size = 860452, upload-time = "2026-07-19T00:17:23.119Z" }, + { url = "https://files.pythonhosted.org/packages/15/5c/ff60ef0571121714f3cf9920bc183071e384a10b556d042e0fdb06cc07a5/regex-2026.7.19-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:4e5413bd5f13d3a4e3539ca98f70f75e7fca92518dd7f117f030ebedd10b60cb", size = 765958, upload-time = "2026-07-19T00:17:24.81Z" }, + { url = "https://files.pythonhosted.org/packages/aa/0f/bd34021162c0ab47f9a315bd56cd5642e920c8e5668a75ef6c6a6fca590d/regex-2026.7.19-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:73b133a9e6fb512858e7f065e96f1180aa46646bc74a83aea62f1d314f3dd035", size = 851765, upload-time = "2026-07-19T00:17:26.993Z" }, + { url = "https://files.pythonhosted.org/packages/2a/20/a2ca43edade0595cccfdc98636739f536d9e26898e7dbddc2b9e98898953/regex-2026.7.19-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbe6493fbd27321b1d1f2dd4f5c7e5bd4d8b1d7cab7f32fd67db3d0b2ed8248a", size = 789714, upload-time = "2026-07-19T00:17:28.699Z" }, + { url = "https://files.pythonhosted.org/packages/5d/47/e02db4015d424fc83c00ea0ac8c5e5ec14397943de9abf909d5ce3a25931/regex-2026.7.19-cp312-cp312-win32.whl", hash = "sha256:ddd67571c10869f65a5d7dde536d1e066e306cc90de57d7de4d5f34802428bb5", size = 267157, upload-time = "2026-07-19T00:17:31.051Z" }, + { url = "https://files.pythonhosted.org/packages/08/8e/c780c131f79b42ed22d1bd7da4096c2c35f813e835acd02ef0f018bd892c/regex-2026.7.19-cp312-cp312-win_amd64.whl", hash = "sha256:e30d40268a28d54ce0437031750497004c22602b8e3ab891f759b795a003b312", size = 277777, upload-time = "2026-07-19T00:17:32.848Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4c/e4d7e086449bdf379d89774bf1f89dc4a41943f3c5a6125a03905b34b5fb/regex-2026.7.19-cp312-cp312-win_arm64.whl", hash = "sha256:de9208bb427130c82a5dbfd104f92c8876fc9559278c880b3002755bbbe9c83d", size = 277136, upload-time = "2026-07-19T00:17:34.803Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "schedule" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0c/91/b525790063015759f34447d4cf9d2ccb52cdee0f1dd6ff8764e863bcb74c/schedule-1.2.2.tar.gz", hash = "sha256:15fe9c75fe5fd9b9627f3f19cc0ef1420508f9f9a46f45cd0769ef75ede5f0b7", size = 26452, upload-time = "2024-06-18T20:03:14.633Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/a7/84c96b61fd13205f2cafbe263cdb2745965974bdf3e0078f121dfeca5f02/schedule-1.2.2-py3-none-any.whl", hash = "sha256:5bef4a2a0183abf44046ae0d164cadcac21b1db011bdd8102e4a0c1e91e06a7d", size = 12220, upload-time = "2024-05-25T18:41:59.121Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "narwhals" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/20/75f915ff375d6249e6550ac740fdbbd66159a068fd3af1400ff62036b07a/scikit_learn-1.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2bd41b0d201bc81575531b96b713d3eb5e5f50fb0b82101ff0f92294fdc236ac", size = 8741122, upload-time = "2026-06-02T11:53:24.08Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d5/2b5148f2279196775e1db2aeb85d14b70ac80e7e32b3b28e7ebeafb0901d/scikit_learn-1.9.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5be45aa4a42a68a533913a6ed736cf309de2226411c79ef8d609a5456f1939b1", size = 8261512, upload-time = "2026-06-02T11:53:27.183Z" }, + { url = "https://files.pythonhosted.org/packages/a0/ee/5adbc77656b71f9456a2f5a7a9fdb4bcf9207a6b962889f1c2f9323afa4e/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e50ed4da51974e86e940690e9a3d82e729b62b5a49f7c9bac534d515d39d86f", size = 8837603, upload-time = "2026-06-02T11:53:30.328Z" }, + { url = "https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:056c92bb67ad4c28463c2f2653d9701449201e7e7a9e94e321be0f71c4fef2b8", size = 9132097, upload-time = "2026-06-02T11:53:33.456Z" }, + { url = "https://files.pythonhosted.org/packages/83/a4/c8e67227c680e2259c8864ae72ff48b06e16a6f51253a22167aa02a8aa4e/scikit_learn-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:4306775fad04cc4b472a1b15af1ae9cede1540fbfcc17fbce3767cd8dc7ae283", size = 8211173, upload-time = "2026-06-02T11:53:36.602Z" }, + { url = "https://files.pythonhosted.org/packages/cf/fd/3c0863792e98e67e9184aa4029288a175935eb65443afcd30d4f143450cf/scikit_learn-1.9.0-cp312-cp312-win_arm64.whl", hash = "sha256:26e22435f63bcdcf396b574273f29f13dd531f5ea035801f5be10ba1540a4e60", size = 7867451, upload-time = "2026-06-02T11:53:39.075Z" }, +] + +[[package]] +name = "scipy" +version = "1.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7bd21faaf5a1a3b2eff922d02db5f191b99a6518db9078a8fb23169f6d22259a", size = 31056519, upload-time = "2026-06-19T14:59:45.203Z" }, + { url = "https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:265915e79107de9f946b855e50d7470d5893ec3f54b342e1aa6201cbdcd8bb6b", size = 28681889, upload-time = "2026-06-19T14:59:48.103Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2d/11dd93d21e147a73ba22bd75c0b9208d3a2e0ec76d53170ce7d9029b1015/scipy-1.18.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9ab7b758be6940954a713ee466e2043e9f6e2ed965c1fce5c91039f4be3d90a9", size = 20423580, upload-time = "2026-06-19T14:59:50.665Z" }, + { url = "https://files.pythonhosted.org/packages/9c/01/93552f75e0d2a7dd115a45e59209c51e8d514daff02fc887d2623be06fe1/scipy-1.18.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:97b6cddaaee0a779ef6b5ca83c9604b27cc16b2b8fc22c142652df8793319fb8", size = 23054441, upload-time = "2026-06-19T14:59:53.564Z" }, + { url = "https://files.pythonhosted.org/packages/3c/23/21f5e703643d66f21faa6b4c73195bfcad70c55efcb4f1ab327cd7c4101a/scipy-1.18.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:52a96e21517c7292375c0e27dd796a811f03fcea5fd4d108fdfea8145dcf17ab", size = 33968720, upload-time = "2026-06-19T14:59:56.415Z" }, + { url = "https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f55797419e16e7f30cf88ffb3113ce0467f00cfe3f70d5c281730b21769bfc2", size = 35287115, upload-time = "2026-06-19T14:59:59.411Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ff/eec46be7e9234208f801062b53e1983085eddebd693f6c9bfb03b459830d/scipy-1.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ad033410e2e0672ffdc1042110cef20e1c46f8fd0616cee1d44d8d58fad8fc11", size = 35577989, upload-time = "2026-06-19T15:00:02.235Z" }, + { url = "https://files.pythonhosted.org/packages/84/ca/210d4759c7210bb7d269437421959b39a33434e2776b60c5cb8a763bb30a/scipy-1.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a55985d54c769c872e64b7f4c8a81cc30ef700cc04296abbbf3705439c126de", size = 37421717, upload-time = "2026-06-19T15:00:05.102Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/9a9edb45345bd6744da5ddfb6628e5d5185920494c6a67ec45b6381004cb/scipy-1.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:71ccc8faa2dd16ac310233203474a8b5cb67f10dedd54a3116d34943f4b19132", size = 36597428, upload-time = "2026-06-19T15:00:08.112Z" }, + { url = "https://files.pythonhosted.org/packages/99/0e/33f32a2a58987e26aec0f7df252cbbad1e90ae77bdbc76f40dd4ed0cf0ea/scipy-1.18.0-cp312-cp312-win_arm64.whl", hash = "sha256:d88363fd9d8fbd3511bd273f1a49efb2a540773ddf92a91d57498ce7dd7f3e76", size = 24351481, upload-time = "2026-06-19T15:00:11.103Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "toolz" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b", size = 52613, upload-time = "2025-10-17T04:03:21.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", size = 58093, upload-time = "2025-10-17T04:03:20.435Z" }, +] + +[[package]] +name = "tqdm" +version = "4.70.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/3b/6c24bec5be5e743ffd99576daa5cc077722fc7d5bbc00bd133fa0c698dc6/tqdm-4.70.0.tar.gz", hash = "sha256:55b0b0dbd97462d06ebee91e4dac24ed4d4702be82b24f07e6c1d27e08cea220", size = 795438, upload-time = "2026-07-27T11:33:15.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl", hash = "sha256:7f585706bfddbdebf89daac705b2dfcc16890130727d3197ca62c732b4310953", size = 80184, upload-time = "2026-07-27T11:33:13.167Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/ff/5a28bdfd8c3ebec42564ac7d0e54ca3db65044a9314a97f9564fa7a1e926/tzdata-2026.3.tar.gz", hash = "sha256:4a1518b8993086a7982523e071643f3c0e5f213e75b21318e78bcabfff9d1415", size = 198674, upload-time = "2026-07-10T08:50:37.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl", hash = "sha256:dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931", size = 348168, upload-time = "2026-07-10T08:50:36.46Z" }, +] + +[[package]] +name = "tzlocal" +version = "5.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/5b/879b2f932adfa7a053c360d50bc896c977fa6426109185f7c12ebdd0cb9d/tzlocal-5.4.4.tar.gz", hash = "sha256:8dbb8660838688a7b6ba4fed31d18dedf842afb4d47ca050d6d891c2c15f3be4", size = 31170, upload-time = "2026-06-29T08:03:40.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/a4/017a7a6cbe387d961a688ec31364ae60a5c4e22c96ae9921b79a947c855d/tzlocal-5.4.4-py3-none-any.whl", hash = "sha256:aae09f0126a8a86fa736be266eb4a471380d26a0de3bc14844e7821fee3e2a15", size = 18115, upload-time = "2026-06-29T08:03:38.666Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "vectorbtpro" +version = "2025.12.31" +source = { git = "ssh://git@github.com/polakowo/vectorbt.pro.git?rev=1305a1e1974325db9382eaeacc6452e9b075ca71#1305a1e1974325db9382eaeacc6452e9b075ca71" } +dependencies = [ + { name = "attrs" }, + { name = "dateparser" }, + { name = "humanize" }, + { name = "imageio" }, + { name = "mypy-extensions" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "python-dateutil" }, + { name = "requests" }, + { name = "schedule" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "tqdm" }, + { name = "typing-extensions" }, + { name = "websocket-client" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] diff --git a/validation/environments/zipline/pyproject.toml b/validation/environments/zipline/pyproject.toml new file mode 100644 index 00000000..3a07e341 --- /dev/null +++ b/validation/environments/zipline/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "ml4t-backtest-validation-zipline" +version = "0.0.0" +requires-python = ">=3.12,<3.13" +dependencies = ["ml4t-backtest", "zipline-reloaded==3.1.1"] + +[tool.uv] +package = false + +[tool.uv.sources] +ml4t-backtest = { path = "../../..", editable = true } diff --git a/validation/environments/zipline/uv.lock b/validation/environments/zipline/uv.lock new file mode 100644 index 00000000..977492e3 --- /dev/null +++ b/validation/environments/zipline/uv.lock @@ -0,0 +1,1062 @@ +version = 1 +revision = 3 +requires-python = "==3.12.*" + +[[package]] +name = "alembic" +version = "1.19.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mako" }, + { name = "sqlalchemy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/16/2b/e4153978368de59918115c9e01d3ebf58a558a7285efa7e960c383c4b59a/alembic-1.19.1.tar.gz", hash = "sha256:e0fca0518118c78acc493e31bcb5402f190057aaf6df8b5b95ce94c4789cf648", size = 2070816, upload-time = "2026-08-08T16:32:01.565Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/89/e62cc37b69ad357cc8ecd6e7367f5245f523d3cbb338a66197212bdf6749/alembic-1.19.1-py3-none-any.whl", hash = "sha256:b39018cb3d9413a19cbd54cf3c02ad33998641f0538eb77413a488a21c3e14be", size = 265946, upload-time = "2026-08-08T16:32:03.153Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/56/a8120250d128bed162cd73c76d45f6ef9991f3e068f62a8ee060afa3104a/annotated_types-0.8.0.tar.gz", hash = "sha256:13b2beaad985e05e2d6407ee4c4f35590b11f8d693a258a561055cac8f64cab7", size = 15893, upload-time = "2026-07-23T20:16:13.995Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl", hash = "sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0", size = 13427, upload-time = "2026-07-23T20:16:12.938Z" }, +] + +[[package]] +name = "anyio" +version = "4.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/cc/a381afa6efea9f496eff839d4a6a1aed3bfafc7b3ab4b0d1b243a12573dd/anyio-4.14.2.tar.gz", hash = "sha256:cfa139f3ed1a23ee8f88a145ddb5ac7605b8bbfd8592baacd7ce3d8bb4313c7f", size = 260176, upload-time = "2026-07-12T20:29:07.082Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl", hash = "sha256:9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d1494", size = 125813, upload-time = "2026-07-12T20:29:05.763Z" }, +] + +[[package]] +name = "bcolz-zipline" +version = "1.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/31/d67d966443addd1c267b8bbbca86cbe44dc48e5873e6fe5ab6ba258e6f61/bcolz_zipline-1.13.0.tar.gz", hash = "sha256:51166ad88e20ba70af7677b9402ffdecfe327ed4d0d15d59a9c249323bf11433", size = 2936717, upload-time = "2025-05-31T18:24:07.102Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/5a/59b1ee779003a0886018f0f9327f8b9103fe9338c7558fe0c761471e146d/bcolz_zipline-1.13.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:0fc6f2f04bb71a86ed7f96f65022a213134839977e3c0aacb7a6c9ae36bbfe68", size = 877087, upload-time = "2025-05-31T18:23:52.945Z" }, + { url = "https://files.pythonhosted.org/packages/ae/36/e4b4220d3dfdde31b67fab3a637a15e334ffe47eef6b9160bee6e8217b08/bcolz_zipline-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:df0ad38e76b340328b81789e9c1f6df1c17238d272255b7cee1025dc70de1603", size = 1073601, upload-time = "2025-05-31T18:23:54.469Z" }, + { url = "https://files.pythonhosted.org/packages/46/a0/6a3ec2c6c93a90f95c0d47c32ebca22ff0a9c5b2222a7b54b78edaf1e4b0/bcolz_zipline-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e0c05fb73e4726f3cf1a1e389d5e16d8064e1045395ededee29082249f76e83", size = 5518540, upload-time = "2025-05-31T18:23:56.561Z" }, + { url = "https://files.pythonhosted.org/packages/3e/1c/2a41f1c2c318639bfcd68fa28e231fa137fe077cd54624e1ebe6e51da78c/bcolz_zipline-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8a0752e04702b35f548963c70f743732da3f8a5785046b0629de931d4cbc0e79", size = 479440, upload-time = "2025-05-31T18:23:58.363Z" }, +] + +[[package]] +name = "blosc2" +version = "4.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx", extra = ["http2"] }, + { name = "msgpack" }, + { name = "ndindex" }, + { name = "numexpr", marker = "platform_machine != 'wasm32'" }, + { name = "numpy" }, + { name = "pydantic" }, + { name = "rich" }, + { name = "threadpoolctl", marker = "platform_machine != 'wasm32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ec/0f/c6c1c3decf8b8ecb6630296da81b1c8d9d0212c7f8dcfc0d6d4ff6ef038a/blosc2-4.11.0.tar.gz", hash = "sha256:3c610b076ad0422d861ff10732013c7c3461135968c3c442630542e71249a4a2", size = 6820440, upload-time = "2026-08-12T06:32:35.029Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/00/0b060c0d9dd7db22d1dc04629d1ba05fa6a38626e74621d43693955d435a/blosc2-4.11.0-cp311-abi3-macosx_10_9_x86_64.whl", hash = "sha256:caab9e379c5b1d41a721e30403885434c2ded9067265aa2ba3cef9576cd9fb12", size = 5439003, upload-time = "2026-08-12T06:32:06.847Z" }, + { url = "https://files.pythonhosted.org/packages/cb/59/36ba17172c6464ab9aae894d52841b5b71155a90cdd9db5007890ea273a6/blosc2-4.11.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:255568f149b74686a5de615eb91176b204c1efc0f66ddbb7d6621c2ef451e225", size = 4843423, upload-time = "2026-08-12T06:32:08.875Z" }, + { url = "https://files.pythonhosted.org/packages/e5/2e/7f34148cf478b02d82f7e542fe0f706c98c93a3a24ab08db9a53a8d5ea25/blosc2-4.11.0-cp311-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:571876df978732371c2b53e015483a812d161d8b6939a1393d59318df9df75b3", size = 6070494, upload-time = "2026-08-12T06:32:10.355Z" }, + { url = "https://files.pythonhosted.org/packages/ac/48/b8a4ed7c3b1c1464fe2737449a73ab66b8fd9a2625f2dcf6d568135b4890/blosc2-4.11.0-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d17cb079973e0843e669cbd553be7e7e33ce815efb6a3f1f9f2167e41f1bf1ac", size = 6511059, upload-time = "2026-08-12T06:32:11.846Z" }, + { url = "https://files.pythonhosted.org/packages/20/40/8bfdf64c0fd942a5eff6e1f6cc033dbd4f8c998e53f956cdffa5f9dbea37/blosc2-4.11.0-cp311-abi3-pyemscripten_2025_0_wasm32.whl", hash = "sha256:a232274ac0813037ba2fb60317bc03dfb459fa469f330aa08ba8d03124aa6d1d", size = 2502308, upload-time = "2026-08-12T06:32:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/8e/63/ac6608416d2064d637da7fb80abacd3b10edbe18fcb70b0945d71dd5871d/blosc2-4.11.0-cp311-abi3-pyemscripten_2026_0_wasm32.whl", hash = "sha256:3beaa151b91b15fa516acef69f55d74bb7dd13b3dfeacfdaf032278091c2264f", size = 2499515, upload-time = "2026-08-12T06:32:14.82Z" }, + { url = "https://files.pythonhosted.org/packages/74/0f/dfad55037ad5bad4052fe6354b4466b7fee5e5fe4c36d0ca04f272779b7b/blosc2-4.11.0-cp311-abi3-win_amd64.whl", hash = "sha256:67fdd3e7e66004ba25adec0ade5916c8a312b9c9de72d024a63d6476051f0b75", size = 4525401, upload-time = "2026-08-12T06:32:16.341Z" }, +] + +[[package]] +name = "bottleneck" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/14/d8/6d641573e210768816023a64966d66463f2ce9fc9945fa03290c8a18f87c/bottleneck-1.6.0.tar.gz", hash = "sha256:028d46ee4b025ad9ab4d79924113816f825f62b17b87c9e1d0d8ce144a4a0e31", size = 104311, upload-time = "2025-09-08T16:30:38.617Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/72/7e3593a2a3dd69ec831a9981a7b1443647acb66a5aec34c1620a5f7f8498/bottleneck-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3bb16a16a86a655fdbb34df672109a8a227bb5f9c9cf5bb8ae400a639bc52fa3", size = 100515, upload-time = "2025-09-08T16:29:55.141Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d4/e7bbea08f4c0f0bab819d38c1a613da5f194fba7b19aae3e2b3a27e78886/bottleneck-1.6.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0fbf5d0787af9aee6cef4db9cdd14975ce24bd02e0cc30155a51411ebe2ff35f", size = 377451, upload-time = "2025-09-08T16:29:56.718Z" }, + { url = "https://files.pythonhosted.org/packages/fe/80/a6da430e3b1a12fd85f9fe90d3ad8fe9a527ecb046644c37b4b3f4baacfc/bottleneck-1.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d08966f4a22384862258940346a72087a6f7cebb19038fbf3a3f6690ee7fd39f", size = 368303, upload-time = "2025-09-08T16:29:57.834Z" }, + { url = "https://files.pythonhosted.org/packages/30/11/abd30a49f3251f4538430e5f876df96f2b39dabf49e05c5836820d2c31fe/bottleneck-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:604f0b898b43b7bc631c564630e936a8759d2d952641c8b02f71e31dbcd9deaa", size = 361232, upload-time = "2025-09-08T16:29:59.104Z" }, + { url = "https://files.pythonhosted.org/packages/1d/ac/1c0e09d8d92b9951f675bd42463ce76c3c3657b31c5bf53ca1f6dd9eccff/bottleneck-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d33720bad761e642abc18eda5f188ff2841191c9f63f9d0c052245decc0faeb9", size = 373234, upload-time = "2025-09-08T16:30:00.488Z" }, + { url = "https://files.pythonhosted.org/packages/fb/ea/382c572ae3057ba885d484726bb63629d1f63abedf91c6cd23974eb35a9b/bottleneck-1.6.0-cp312-cp312-win32.whl", hash = "sha256:a1e5907ec2714efbe7075d9207b58c22ab6984a59102e4ecd78dced80dab8374", size = 108020, upload-time = "2025-09-08T16:30:01.773Z" }, + { url = "https://files.pythonhosted.org/packages/48/ad/d71da675eef85ac153eef5111ca0caa924548c9591da00939bcabba8de8e/bottleneck-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:81e3822499f057a917b7d3972ebc631ac63c6bbcc79ad3542a66c4c40634e3a6", size = 113493, upload-time = "2025-09-08T16:30:02.872Z" }, +] + +[[package]] +name = "certifi" +version = "2026.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/31/4971872b3ed8715346231fb6eb4da8fcba65a4143c189db151ee28a2812b/charset_normalizer-3.5.0.tar.gz", hash = "sha256:49bd5feb59b0bf3cbf6ebcf4352e371c95b9da9bacd4449f8b64d0ad2c10a26e", size = 169295, upload-time = "2026-08-12T14:35:31.624Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/3c/045ea64ea5a550870dd8ab60b2242870328d53f17d2be593b4f9f3121474/charset_normalizer-3.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:98820e1ceb25c6df7a80c4fd8efa59cb121f99bc7c4c1693ad94a2caff5b311d", size = 343861, upload-time = "2026-08-12T14:32:27.254Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1b/7502be709db899d5b4801509829188b3a5a10969411da9c846115a5f1b70/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:608553f476fca509537e804c4a71f5eb166ce63b75141f89c2c686ce1aa36956", size = 237550, upload-time = "2026-08-12T14:32:28.385Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ce/66392661375148d9455c17bee25509a54e28c39969e34befa48ec8777936/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6753de11eef42f1c321b26d682957d92c7f7bbce6530f34bbe0f9291dd37cc6f", size = 229673, upload-time = "2026-08-12T14:32:29.668Z" }, + { url = "https://files.pythonhosted.org/packages/6a/64/f58c32a8d4ecf55b82ee61ee9aa6a664d4afcd36c72feb4c926fd6fe9af8/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f76dc0a47f94cb9b69d86f01e477f4b0371ca70208b9ccea7e063c41eed9046", size = 260768, upload-time = "2026-08-12T14:32:30.891Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ea/36c90e59a96386174377e855479ec154221ef001e96637e0b23be92489c4/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c387c6bf91b4774e359a48a179e2872b8e8bf741e4fde06ba8d1665eb9a4760a", size = 257880, upload-time = "2026-08-12T14:32:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/23/35/5b85772eb82528ef22ba29487ad544a7049dfd27f35b1a5a55dbc0843048/charset_normalizer-3.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14f6904a3cf870abf044df3a8c4924ac6c8ef77e9896586fd37e73ae96cff2af", size = 247547, upload-time = "2026-08-12T14:32:33.495Z" }, + { url = "https://files.pythonhosted.org/packages/b6/14/ba11a99c2a22ab04c2d5383a700b378cb463a78ab15f36444cabc10cd671/charset_normalizer-3.5.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0cce46dd29d73e135e8087b96eb62a4aca6d69391b7f97808c6588ebed3178f3", size = 243326, upload-time = "2026-08-12T14:32:34.794Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4a/cadba3f2400b45aa1d62a4ae0298bf58a3b30b1158baf15c338c7ce5b601/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b476cdb63df22da2b91837593380be3ddbe406f36c506c1c91d80e7196b66288", size = 238820, upload-time = "2026-08-12T14:32:35.984Z" }, + { url = "https://files.pythonhosted.org/packages/47/41/d5188b9342d75b72c2b05d3ee373f01a691397e770f001ee05e3b37925f5/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1f56ce84b317ef2a59d7d3461891c7597c79247d2192bb8114c68a1a1debfcc0", size = 231661, upload-time = "2026-08-12T14:32:37.191Z" }, + { url = "https://files.pythonhosted.org/packages/13/5f/df38fa972c4e945c3d8cee2bc4e610613af522fd359c7dc7a74c419f0278/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9ce0f885239357379d92fd9a5fddbe20f0e30e0527c29ba69f8e99eeb1304a76", size = 261459, upload-time = "2026-08-12T14:32:38.369Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d7/043ff7720067a3beee05523465ac9c1c846c68b7884930dd483f72ee5ab6/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:96ae7ab5d8155fde927aa0864fbc8ba3cc4fde6d41ab0c7cea9d6012b4978603", size = 242300, upload-time = "2026-08-12T14:32:39.505Z" }, + { url = "https://files.pythonhosted.org/packages/19/f6/33980b7b802a048e546a6d9ad2ea783a6cf6b10a86aaccd10db462d8b913/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf91921009025e96ce57a03ced6d14604fc3baf0530351638e9504a55da6fa3b", size = 259101, upload-time = "2026-08-12T14:32:41.02Z" }, + { url = "https://files.pythonhosted.org/packages/a6/b7/0d19bde844bff9165377c1da9ef3c4792a4c24bd49b5b7094d9e6f6ab58b/charset_normalizer-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0b2e44e6d42d1a4ff78ccc219a93c5449105d10b16198d1aea581080df8073f9", size = 249246, upload-time = "2026-08-12T14:32:42.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/cc/2c34fdfaacdf0e96e880ef562cbf80a9b5f8ea97e0dd9e57ba348a9c65cf/charset_normalizer-3.5.0-cp312-cp312-win32.whl", hash = "sha256:deb99535e9bf0bea8e274c6413eb939a21be35a3f492678dba4d5b1f4d70f142", size = 178025, upload-time = "2026-08-12T14:32:43.909Z" }, + { url = "https://files.pythonhosted.org/packages/76/d0/c34dbd1df23bcbdc1b5d2f48256340d72fa747f1eb03924a9d2fa35ed85b/charset_normalizer-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:e54dd1a66fa4bce0ccaf0db9dde336e49b3eec646dc4c1c0991279369d373a14", size = 200143, upload-time = "2026-08-12T14:32:45.254Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ea/4e6bf1465d60c3d8f488d5bde140d0cb91cd23ccab0dc2895cc6c6982047/charset_normalizer-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:b8ea208b304587d47931b36481342d20336e0d338ab052f8b4305926482598d6", size = 180046, upload-time = "2026-08-12T14:32:46.545Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f3/7b523d807cb5e73562ef8acf21d39cdb9d704955327362c781bc3478a73d/charset_normalizer-3.5.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:5a4ee37248dfac25107c758bda99d545ce73e60b44d2dd39e4a2bb9f2831e9f5", size = 330840, upload-time = "2026-08-12T14:34:45.06Z" }, + { url = "https://files.pythonhosted.org/packages/f0/de/fc68978fe78ca97063c96d764e41ff92ca639948f319271e0ff450e577a2/charset_normalizer-3.5.0-cp37-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a864bdcacd8bff58bb4845304e031f821a3ec64b2b7259f2d409cd49c9e59ca3", size = 251862, upload-time = "2026-08-12T14:34:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/a9/cb/82b41a0ab7fb1a88065f1d78ad32696ad88ea3fe8e25b8189d08833938de/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:84b736e3b391601bc47b86da381c749c0f894e9191aaca9f31f30c2632206df3", size = 239484, upload-time = "2026-08-12T14:34:47.869Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0c/19608b631f4538f908098d4a2d56a8f79a665e27cc58e9d90479761a9227/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6abb1f356fb865baeb6ebc3fadd843e9a96fbf49b9adcca55037f3cceccb7438", size = 230602, upload-time = "2026-08-12T14:34:49.265Z" }, + { url = "https://files.pythonhosted.org/packages/29/db/f648eb30e14eba301aed61e11672156f137905c1bdbb530151abe8065943/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d366548d2ee28a8cfdcc4296363978cc644a728333be9824d2de4652e83df0a", size = 259208, upload-time = "2026-08-12T14:34:50.632Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e0/ed2c8bdbac484d69614d6993143aeb6cb0f4dd1561c883402517b623c8ef/charset_normalizer-3.5.0-cp37-abi3-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d672f329ae504ee240eb39b6effb3318aa8e7e8924c0ce8eee5760b3fad98539", size = 253659, upload-time = "2026-08-12T14:34:52.11Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/b4907cb9ec5b521d9d024ced13611240b86ef065c2eb15b3ad2334dc9940/charset_normalizer-3.5.0-cp37-abi3-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c54036a518748b6c02e666f6d46c3817561998fb904c3be25b56fb4fe3dc5706", size = 248821, upload-time = "2026-08-12T14:34:53.399Z" }, + { url = "https://files.pythonhosted.org/packages/12/b2/e2d1abcfbc05822f0030869efb4e9f8a3658e13b4821796d4b62da917327/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:22a1889f1c9b752c63c36758a0c2145458e3cadb20fced7a0790002e9dd12b26", size = 240271, upload-time = "2026-08-12T14:34:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f9/4ba127ad610542fa3eabfa41c45bf12d357860a815b3566374ec0188e213/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:b7eb3eab5c646d3de7dcb14a7c9caebace5249c5767da39e1761cb1576e521a3", size = 232155, upload-time = "2026-08-12T14:34:56.543Z" }, + { url = "https://files.pythonhosted.org/packages/01/68/40613182366d00bd6dbd5f6c84a926cbd120960e038a8269e9ae7d782762/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_ppc64le.whl", hash = "sha256:2080aa129a28267984cdc902898993d788c995c384e285d0d19199f56760d52e", size = 259674, upload-time = "2026-08-12T14:34:57.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/53/4574a14fa4c9de4a6c9f31725354bfa40b67f653e6d594ce1654f9a41b32/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_riscv64.whl", hash = "sha256:fd68c825548a611158230e2f9222e210ceb2e3391995c0aa5865cbdf3ab4bd49", size = 246122, upload-time = "2026-08-12T14:34:59.337Z" }, + { url = "https://files.pythonhosted.org/packages/5a/02/bd8030d13d92c058ca7b2b9615bbb3169569e144db64d65c149cd45abf5e/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_s390x.whl", hash = "sha256:d8a9316f4da85e937242642b537c6d55d7e9287dd38e5634732f8233932aff45", size = 255221, upload-time = "2026-08-12T14:35:00.71Z" }, + { url = "https://files.pythonhosted.org/packages/77/9d/10ecd3bcbe2666b3d4d4026c97b48f73990682815db516052a1e8f4a31c5/charset_normalizer-3.5.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d90254c8f609338c53ec180fcd4c4f9c16502e238e3fc88ca7fd4c2f38d445b8", size = 253450, upload-time = "2026-08-12T14:35:02.217Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0f/d044c4872c0938a84f87b5027a698c0e61bacfc5c3551a4e749ca9b7bc5c/charset_normalizer-3.5.0-cp37-abi3-win32.whl", hash = "sha256:8b3e9e29b8b07cc461b9ce7768db7693a93979d0dadf22046f6f3555ded2f516", size = 173594, upload-time = "2026-08-12T14:35:03.845Z" }, + { url = "https://files.pythonhosted.org/packages/10/6b/6046773901f1944b9a89436351529811ee958afc7b774563be9d74a6f0c3/charset_normalizer-3.5.0-cp37-abi3-win_amd64.whl", hash = "sha256:0c8953d9d1617794cfc40d81179571c9ba3805dd029623a15c93f1fb70e60a74", size = 198959, upload-time = "2026-08-12T14:35:05.187Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a6/b57708ac92aefc8e8389d51d5178129b81f03196da61ee2c23e687b8178a/charset_normalizer-3.5.0-cp37-abi3-win_arm64.whl", hash = "sha256:562d24ca7797c1af8852994950c2e623a907b201fc4b0ed29e92af173d3828ca", size = 267055, upload-time = "2026-08-12T14:35:06.533Z" }, + { url = "https://files.pythonhosted.org/packages/22/c7/754d09943a616937df61e4ba367c409ded2a987e872972098d51a6fcf73b/charset_normalizer-3.5.0-py3-none-any.whl", hash = "sha256:993dfcbe75a85a3784abb5084f2c41b915767c90546fcc92803cffa28611baea", size = 67943, upload-time = "2026-08-12T14:35:30.363Z" }, +] + +[[package]] +name = "click" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6", size = 338000, upload-time = "2026-06-24T17:45:15.148Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl", hash = "sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76", size = 119243, upload-time = "2026-06-24T17:45:13.73Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "empyrical-reloaded" +version = "0.5.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bottleneck" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "peewee" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/97/43/2dd510760e12fb9a07d2ab4dcf67f263e6eb103c73285d040005fe3d5da9/empyrical_reloaded-0.5.12.tar.gz", hash = "sha256:e01f0bbf24f0aaab2767c85a7dee8f05a59d25355cf50c3371efda056613e323", size = 84272, upload-time = "2025-06-01T23:17:11.118Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/54/23d8f6d36c66575b8d31e354c8bba2c857f9ca41e4b76388c6ca53938fd8/empyrical_reloaded-0.5.12-py3-none-any.whl", hash = "sha256:1bd8b53810c760ae5a12a03f2cefc6af0e905f854b71e7d99074b673abdd4fd6", size = 33048, upload-time = "2025-06-01T23:17:09.958Z" }, +] + +[[package]] +name = "exchange-calendars" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "korean-lunar-calendar" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyluach" }, + { name = "toolz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/73/460b0ece4e7444e3098b7738974c822787e134578d069d3a88b4be17d50a/exchange_calendars-4.13.2.tar.gz", hash = "sha256:a9459425dd64142cd54fbc639847403c7e0c33d60fbc326c94fc1d6bd127f002", size = 4137321, upload-time = "2026-03-10T03:24:38.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/4c/0469b40057bc9f8d9594dcc6024202626b981ae4b52dfcd304552e8e1c3a/exchange_calendars-4.13.2-py3-none-any.whl", hash = "sha256:fc5a2ad0d61b5c3a6539a3061cd4cbb55c59f4a903455cec7926e4b798919996", size = 213306, upload-time = "2026-03-10T03:24:37.055Z" }, +] + +[[package]] +name = "greenlet" +version = "3.5.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/d8/7cc97c142388aef03f622e001c572c4f84e9252a439549d483f555771970/greenlet-3.5.5.tar.gz", hash = "sha256:adb4bae02e91a8e863e48b177e4014bdcac8a6b5e047ea1df687a61534b85e6c", size = 207585, upload-time = "2026-08-10T15:09:36.136Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/7e/9ecd0285e3153532ae07aeb88063c43c72b4221cf0d4d123b02f3682e3ff/greenlet-3.5.5-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:49520f0c95a48b42cf55414b8e8479beb274ea70431afc33e3f79903c71f4380", size = 295809, upload-time = "2026-08-10T13:25:34.023Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/60e4bbcc89252037b18087f2ec16405d5b2d5be42dde191bbf3667e96102/greenlet-3.5.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55272212cbc5f43d1d723725ab931f1939969b7e9523882ca58b55061769d053", size = 611910, upload-time = "2026-08-10T14:14:35.18Z" }, + { url = "https://files.pythonhosted.org/packages/a4/17/cd5134be659cd4a443e7a61ae670dabec165a814c51162916d637b6dd38e/greenlet-3.5.5-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655bca754a2ef4efcb0eb48a94d3f4593536d0f3d48f8ed44343c01d16a92f95", size = 624198, upload-time = "2026-08-10T14:27:25.229Z" }, + { url = "https://files.pythonhosted.org/packages/78/ac/5c5b959999b6f09c3026b5dfe171575bc3121c5236ce74f495096f25b203/greenlet-3.5.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:147b25a42e5ca5be3d42356e8f608b37af715a1c196e9bf9d1627f3341adfe1d", size = 621439, upload-time = "2026-08-10T13:40:49.391Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8b/6acf112ed8aee499f25b4d6949820fb02ac950ff9c1f3d793bd5be0599f2/greenlet-3.5.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:27493374cff1d1b7919dc8126547f2aea582737e3046147b434b1e12de56389b", size = 1581342, upload-time = "2026-08-10T14:15:05.653Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d7/734e5f198888876b42d7616ff6644c075baf6b8a2412deadd6b0e1b8b20c/greenlet-3.5.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:12e2ee66c2aba86133f10fd99d6a8856c6d351ffb7be0e4d52ef2cc5fbb705b2", size = 1645744, upload-time = "2026-08-10T13:40:30.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/30/1f42b88dc587b5899ee50616ad56ee40cafaf225df4fb829f10183c62a5c/greenlet-3.5.5-cp312-cp312-win_amd64.whl", hash = "sha256:49ddacd36af37735fab103846f4ee4d18a492dde72730d1699c0c8ebe30d9f18", size = 324171, upload-time = "2026-08-10T13:28:44.472Z" }, + { url = "https://files.pythonhosted.org/packages/76/e5/4dee4d8d2e603fe5fdd7b444e63219f7b9bd852c60c6214511c7157cbe88/greenlet-3.5.5-cp312-cp312-win_arm64.whl", hash = "sha256:5f1b1ff4828cdc1aba4266aff814085d04a1d07959287219af021b838b265d52", size = 308362, upload-time = "2026-08-10T13:26:46.839Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "h2" +version = "4.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hpack" }, + { name = "hyperframe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/85/7c366e69d84c17bb778fe41419e1fbcce3033d5b7ce29bbffff0a98b859f/h2-4.4.1.tar.gz", hash = "sha256:4e866ffb1a869ae14dd9b5e6beb5c24a13da0495ad72b65925ded182521c1516", size = 2157281, upload-time = "2026-08-03T11:45:09.509Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/22/e85faf23bd72a92d1921e37d674ca56eb298a3c8be31fdecef0ff2b3aaac/h2-4.4.1-py3-none-any.whl", hash = "sha256:0e25f1462b23c9cb82d9eb02e28bc706dac2a68cb457c6a0d74d63c8a2a5d0e6", size = 62636, upload-time = "2026-08-03T11:44:59.164Z" }, +] + +[[package]] +name = "h5py" +version = "3.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/33/acd0ce6863b6c0d7735007df01815403f5589a21ff8c2e1ee2587a38f548/h5py-3.16.0.tar.gz", hash = "sha256:a0dbaad796840ccaa67a4c144a0d0c8080073c34c76d5a6941d6818678ef2738", size = 446526, upload-time = "2026-03-06T13:49:08.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/c0/5d4119dba94093bbafede500d3defd2f5eab7897732998c04b54021e530b/h5py-3.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c5313566f4643121a78503a473f0fb1e6dcc541d5115c44f05e037609c565c4d", size = 3685604, upload-time = "2026-03-06T13:48:04.198Z" }, + { url = "https://files.pythonhosted.org/packages/b0/42/c84efcc1d4caebafb1ecd8be4643f39c85c47a80fe254d92b8b43b1eadaf/h5py-3.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:42b012933a83e1a558c673176676a10ce2fd3759976a0fedee1e672d1e04fc9d", size = 3061940, upload-time = "2026-03-06T13:48:05.783Z" }, + { url = "https://files.pythonhosted.org/packages/89/84/06281c82d4d1686fde1ac6b0f307c50918f1c0151062445ab3b6fa5a921d/h5py-3.16.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ff24039e2573297787c3063df64b60aab0591980ac898329a08b0320e0cf2527", size = 5198852, upload-time = "2026-03-06T13:48:07.482Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e9/1a19e42cd43cc1365e127db6aae85e1c671da1d9a5d746f4d34a50edb577/h5py-3.16.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:dfc21898ff025f1e8e67e194965a95a8d4754f452f83454538f98f8a3fcb207e", size = 5405250, upload-time = "2026-03-06T13:48:09.628Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/9790c1655eabeb85b92b1ecab7d7e62a2069e53baefd58c98f0909c7a948/h5py-3.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:698dd69291272642ffda44a0ecd6cd3bda5faf9621452d255f57ce91487b9794", size = 5190108, upload-time = "2026-03-06T13:48:11.26Z" }, + { url = "https://files.pythonhosted.org/packages/51/d7/ab693274f1bd7e8c5f9fdd6c7003a88d59bedeaf8752716a55f532924fbb/h5py-3.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b2c02b0a160faed5fb33f1ba8a264a37ee240b22e049ecc827345d0d9043074", size = 5419216, upload-time = "2026-03-06T13:48:13.322Z" }, + { url = "https://files.pythonhosted.org/packages/03/c1/0976b235cf29ead553e22f2fb6385a8252b533715e00d0ae52ed7b900582/h5py-3.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:96b422019a1c8975c2d5dadcf61d4ba6f01c31f92bbde6e4649607885fe502d6", size = 3182868, upload-time = "2026-03-06T13:48:15.759Z" }, + { url = "https://files.pythonhosted.org/packages/14/d9/866b7e570b39070f92d47b0ff1800f0f8239b6f9e45f02363d7112336c1f/h5py-3.16.0-cp312-cp312-win_arm64.whl", hash = "sha256:39c2838fb1e8d97bcf1755e60ad1f3dd76a7b2a475928dc321672752678b96db", size = 2653286, upload-time = "2026-03-06T13:48:17.279Z" }, +] + +[[package]] +name = "hpack" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/5b/fcabf6028144a8723726318b07a32c2f3314acdff6265743cf08a344b18e/hpack-4.2.0.tar.gz", hash = "sha256:0895cfa3b5531fc65fe439c05eb65144f123bf7a394fcaa56aa423548d8e45c0", size = 51300, upload-time = "2026-06-23T18:34:46.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/b4/4a9fcfb2aef6ba44d9073ecd301443aa00b3dac95de5619f2a7de7ec8a91/hpack-4.2.0-py3-none-any.whl", hash = "sha256:858ac0b02280fa582b5080d68db0899c62a80375e0e5413a74970c5e518b6986", size = 34246, upload-time = "2026-06-23T18:34:45.472Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[package.optional-dependencies] +http2 = [ + { name = "h2" }, +] + +[[package]] +name = "hyperframe" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566, upload-time = "2025-01-22T21:41:49.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007, upload-time = "2025-01-22T21:41:47.295Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "intervaltree" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sortedcontainers" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/53/c3/b2afa612aa0373f3e6bb190e6de35f293b307d1537f109e3e25dbfcdf212/intervaltree-3.2.1.tar.gz", hash = "sha256:f3f7e8baeb7dd75b9f7a6d33cf3ec10025984a8e66e3016d537e52130c73cfe2", size = 1231531, upload-time = "2025-12-24T04:25:06.773Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/7f/8a80a1c7c2ed05822b5a2b312d2995f30c533641f8198366ba2e26a7bb03/intervaltree-3.2.1-py2.py3-none-any.whl", hash = "sha256:a8a8381bbd35d48ceebee932c77ffc988492d22fb1d27d0ba1d74a7694eb8f0b", size = 25929, upload-time = "2025-12-24T04:25:05.298Z" }, +] + +[[package]] +name = "iso3166" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/11/b5023c736a185a88ebd0d38646af6f4d1b4c9b91f2ca84e08e5d2bc7ac3c/iso3166-2.1.1.tar.gz", hash = "sha256:fcd551b8dda66b44e9f9e6d6bbbee3a1145a22447c0a556e5d0fb1ad1e491719", size = 12807, upload-time = "2022-07-12T04:07:57.294Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/d0/bf18725b8d47f37858ff801f8e4d40c6982730a899725bdb6ded62199954/iso3166-2.1.1-py3-none-any.whl", hash = "sha256:263660b36f8471c42acd1ff673d28a3715edbce7d24b1550d0cf010f6816c47f", size = 9829, upload-time = "2022-07-12T04:07:55.54Z" }, +] + +[[package]] +name = "iso4217" +version = "1.16.20260101" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/98/a5f28006515c24de82c3d76f79e13dd3fbdf71431fdb158505ee45008908/iso4217-1.16.20260101.tar.gz", hash = "sha256:6a5afba6acb01cad8045f81e2b96f6adbea04f0c524ae21f317ac4ca11c3bdd6", size = 13695, upload-time = "2026-03-03T15:28:36.013Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/5b/725a6980401169ba9115f0b837d3af09134e43eaed9b2bebd8dbb50df733/iso4217-1.16.20260101-py2.py3-none-any.whl", hash = "sha256:69c591b93c7d783ec8c309ebee8df1aa28f8403d44bcce518ae8db050462084b", size = 11991, upload-time = "2026-03-03T15:28:34.523Z" }, +] + +[[package]] +name = "korean-lunar-calendar" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/9f/6160e95f3934026194dc7a0b5c78fe5c6e74761830ddea3e9cfc38e3f983/korean_lunar_calendar-0.4.0.tar.gz", hash = "sha256:be56f27bc0594fdbbdf7bbe00f504a9f929a31e311bd7d9bb93561b645afade7", size = 13425, upload-time = "2026-06-15T14:19:57.163Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/88/f56033b09fdca5c8c5e5fc2f3513950a05cd62caa9bd8e6d2750a887c86e/korean_lunar_calendar-0.4.0-py3-none-any.whl", hash = "sha256:c042e20de0bb702add6bec8d0f6da1ea8d3b170838e63846f70420cf341fe4e7", size = 11323, upload-time = "2026-06-15T14:19:56.089Z" }, +] + +[[package]] +name = "lru-dict" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/0a/dec86efe38b350314c49a8d39ef01ba7cf8bbbef1d177646320eedea7159/lru_dict-1.4.1.tar.gz", hash = "sha256:cc518ff2d38cc7a8ab56f9a6ae557f91e2e1524b57ed8e598e97f45a2bd708fc", size = 13439, upload-time = "2025-11-02T10:02:13.548Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/a8/89e4c26e0e751321b41b0a3007384f97d9eae7a863c49af1c68c43005ca3/lru_dict-1.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7fa342c6e6bc811ee6a17eb569d37b149340d5aa5a637a53438e316a95783838", size = 16683, upload-time = "2025-11-02T10:01:15.891Z" }, + { url = "https://files.pythonhosted.org/packages/f1/34/b3c6fdd120af68b6eeb524d0de3293ff27918ec57f45eed6bef1789fd085/lru_dict-1.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bd86bd202a7c1585d9dc7e5b0c3d52cf76dc56b261b4bbecfeefbbae31a5c97d", size = 11216, upload-time = "2025-11-02T10:01:16.867Z" }, + { url = "https://files.pythonhosted.org/packages/e9/7e/280267ae23f1ec1074ddaab787c5e041e090220e8e37828d51ff4e681dfd/lru_dict-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4617554f3e42a8f520c8494842c23b98f5b7f4d5e0410e91a4c3ad0ea5f7e094", size = 11687, upload-time = "2025-11-02T10:01:17.485Z" }, + { url = "https://files.pythonhosted.org/packages/ca/18/fec42416ceff98ae2760067ec72b0b9fc02840e729bbc18059c6a02cb01f/lru_dict-1.4.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:40927a6a4284d437047f547e652b15f6f0f40210deb6b9e5b77e556ff0faea0f", size = 31960, upload-time = "2025-11-02T10:01:18.158Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ef/38e7ee1a5d32b9b1629d045fa5a495375383aacfb2945f4d9535b9af9630/lru_dict-1.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e2c07ecb6d42494e45d00c2541e6b0ae7659fc3cf89681521ba94b15c682d4fe", size = 32882, upload-time = "2025-11-02T10:01:18.841Z" }, + { url = "https://files.pythonhosted.org/packages/72/82/d56653ca144c291ab37bea5f23c5078ffbe64f7f5b466f91d400590b9106/lru_dict-1.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:85b28aa2de7c5f1f6c68221857accd084438df98edbd4f57595795734225770c", size = 34268, upload-time = "2025-11-02T10:01:19.564Z" }, + { url = "https://files.pythonhosted.org/packages/94/ae/382651533d60f0b598757efda56dc87cad5ac311fba8e61f86fb916bf236/lru_dict-1.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cbbbb4b51e2529ccf7ee8a3c3b834052dbd54871a216cfd229dd2b1194ff293a", size = 32156, upload-time = "2025-11-02T10:01:20.22Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d1/d9df7e9272ccbc96f04c477dfb9abb91fa8fabde86b7fa190cb7b3c7a024/lru_dict-1.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e47040421a13de8bc6404557b3700c33f1f2683cbcce22fe5cacec4c938ce54b", size = 33395, upload-time = "2025-11-02T10:01:20.901Z" }, + { url = "https://files.pythonhosted.org/packages/e9/6e/dafe0f5943a7b3ab24d3429032ff85873acd626087934b8161b55340c13a/lru_dict-1.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:451f7249866cb9564bb40d73bec7ac865574dafd0a4cc91627bbf35be7e99291", size = 31591, upload-time = "2025-11-02T10:01:21.606Z" }, + { url = "https://files.pythonhosted.org/packages/a6/4d/9dd35444592bfb6805548e15971cfce821400966a51130b78dc021ee8f03/lru_dict-1.4.1-cp312-cp312-win32.whl", hash = "sha256:e8996f3f94870ecb236c55d280839390edae7f201858fee770267eac27b8b47d", size = 13119, upload-time = "2025-11-02T10:01:22.61Z" }, + { url = "https://files.pythonhosted.org/packages/8d/82/7e72e30d6c15d65466b3baca87cce15e20848ba6a488868aa54e901141a6/lru_dict-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:d90774db1b60c0d5c829cfa5d7fda6db96ed1519296f626575598f9f170cca37", size = 14109, upload-time = "2025-11-02T10:01:23.322Z" }, +] + +[[package]] +name = "mako" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/12/b5fa2353e2754cd67fb9f83793fa48ff42c213a5da7e719869d2301f6ab8/mako-1.4.1.tar.gz", hash = "sha256:d7904710b662996425a21627710c4777c45053146942cf8a7aebf757c92b8c27", size = 410165, upload-time = "2026-08-05T06:10:56.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/54/12ed58d458474aaab5c3d180173e745a4fe131bb330370596876d19ff60f/mako-1.4.1-py3-none-any.whl", hash = "sha256:a359d9a94a541213958742b2698d0a7757bb83551767bc468a74b9905aba9617", size = 80010, upload-time = "2026-08-05T06:10:58.248Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "ml4t-backtest" +source = { editable = "../../../" } +dependencies = [ + { name = "ml4t-specs" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pandas-market-calendars" }, + { name = "polars" }, + { name = "pyyaml" }, +] + +[package.metadata] +requires-dist = [ + { name = "backtrader", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=1.9.0" }, + { name = "cvxpy", marker = "extra == 'advanced'", specifier = ">=1.3.0" }, + { name = "cvxpy", marker = "extra == 'all'", specifier = ">=1.3.0" }, + { name = "dash", marker = "extra == 'all'", specifier = ">=2.11.0" }, + { name = "dash", marker = "extra == 'viz'", specifier = ">=2.11.0" }, + { name = "hypothesis", marker = "extra == 'all'", specifier = ">=6.80.0" }, + { name = "hypothesis", marker = "extra == 'dev'", specifier = ">=6.80.0" }, + { name = "matplotlib", marker = "extra == 'all'", specifier = ">=3.7.0" }, + { name = "matplotlib", marker = "extra == 'viz'", specifier = ">=3.7.0" }, + { name = "mkdocs", marker = "extra == 'all'", specifier = ">=1.6,<2" }, + { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.6,<2" }, + { name = "mkdocs-material", marker = "extra == 'all'", specifier = ">=9.5.0" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'all'", specifier = ">=0.24.0" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'", specifier = ">=0.24.0" }, + { name = "ml4t-diagnostic", marker = "extra == 'all'", specifier = ">=0.1.0b4" }, + { name = "ml4t-diagnostic", marker = "extra == 'dev'", specifier = ">=0.1.0b4" }, + { name = "ml4t-specs", specifier = ">=0.1.2,<0.2" }, + { name = "networkx", marker = "extra == 'advanced'", specifier = ">=3.0" }, + { name = "networkx", marker = "extra == 'all'", specifier = ">=3.0" }, + { name = "numpy", specifier = ">=2.3.2" }, + { name = "pandas", marker = "python_full_version < '3.15'", specifier = ">=2.3.3" }, + { name = "pandas", marker = "python_full_version >= '3.15'", specifier = ">=3.0.5" }, + { name = "pandas-market-calendars", specifier = ">=5.2.4" }, + { name = "plotly", marker = "extra == 'all'", specifier = ">=5.15.0" }, + { name = "plotly", marker = "extra == 'viz'", specifier = ">=5.15.0" }, + { name = "polars", specifier = ">=1.36.1" }, + { name = "pre-commit", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pre-commit", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyfolio-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.9.9" }, + { name = "pytest", marker = "extra == 'all'", specifier = ">=7.4.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.4.0" }, + { name = "pytest-asyncio", marker = "extra == 'all'", specifier = ">=0.21.0" }, + { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" }, + { name = "pytest-benchmark", marker = "extra == 'all'", specifier = ">=4.0.0" }, + { name = "pytest-benchmark", marker = "extra == 'dev'", specifier = ">=4.0.0" }, + { name = "pytest-cov", marker = "extra == 'all'", specifier = ">=4.1.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0" }, + { name = "pytest-timeout", marker = "extra == 'all'", specifier = ">=2.1.0" }, + { name = "pytest-timeout", marker = "extra == 'dev'", specifier = ">=2.1.0" }, + { name = "pytest-xdist", marker = "extra == 'all'", specifier = ">=3.3.0" }, + { name = "pytest-xdist", marker = "extra == 'dev'", specifier = ">=3.3.0" }, + { name = "pyyaml", specifier = ">=6.0.3" }, + { name = "ruff", marker = "extra == 'all'", specifier = ">=0.8.0" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8.0" }, + { name = "ty", marker = "extra == 'all'" }, + { name = "ty", marker = "extra == 'dev'" }, + { name = "vectorbt", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=0.24.0" }, + { name = "zipline-reloaded", marker = "python_full_version < '3.15' and extra == 'comparison'", specifier = ">=2.4.0" }, +] +provides-extras = ["advanced", "all", "comparison", "dev", "docs", "viz"] + +[package.metadata.requires-dev] +dev = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "ml4t-diagnostic", specifier = ">=0.1.0b4" }, + { name = "pre-commit", specifier = ">=3.3.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, + { name = "ruff", specifier = ">=0.8.0" }, + { name = "twine", specifier = ">=6.0.0" }, + { name = "ty" }, +] +test = [ + { name = "hypothesis", specifier = ">=6.80.0" }, + { name = "pytest", specifier = ">=7.4.0" }, + { name = "pytest-benchmark", specifier = ">=4.0.0" }, + { name = "pytest-cov", specifier = ">=4.1.0" }, + { name = "pytest-timeout", specifier = ">=2.1.0" }, + { name = "pytest-xdist", specifier = ">=3.3.0" }, +] + +[[package]] +name = "ml4t-backtest-validation-zipline" +version = "0.0.0" +source = { virtual = "." } +dependencies = [ + { name = "ml4t-backtest" }, + { name = "zipline-reloaded" }, +] + +[package.metadata] +requires-dist = [ + { name = "ml4t-backtest", editable = "../../../" }, + { name = "zipline-reloaded", specifier = "==3.1.1" }, +] + +[[package]] +name = "ml4t-specs" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/ca/aba7ea1f4e9a1da0b4f465dea03d3e4320d63db348245a2a9976096407ac/ml4t_specs-0.1.3.tar.gz", hash = "sha256:9578038af96d59cd50317e78f8781772833b308076da13ad24c0b304bb20961d", size = 50758, upload-time = "2026-08-12T02:27:14.366Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/6c/0a35ee16313441a68a14d811ffa8b79eb63a013d548b6bbb50dfd208c6b1/ml4t_specs-0.1.3-py3-none-any.whl", hash = "sha256:2b9302d27746f5859b62c6748bf217ca4eae76d4842c783575c58f4880d1568f", size = 33860, upload-time = "2026-08-12T02:27:12.929Z" }, +] + +[[package]] +name = "msgpack" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/f9/c0a1c127f9049db9155afc316952ea571720dd01833ff5e4d7e8e6352dbb/msgpack-1.2.1.tar.gz", hash = "sha256:04c721c2c7448767e9e3f2520a475663d8ee0f09c31890f6d2bd70fd636a9647", size = 183960, upload-time = "2026-06-18T16:13:52.594Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/dd/9e8cbd8f5582ca4b590336f2b91ee5662f6a6ca562b565abaf696a0f81ff/msgpack-1.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2ef59c659f289eddf8aa6623823f19fa2f40a4029266889eac7a2505dd210c35", size = 83531, upload-time = "2026-06-18T16:12:58.249Z" }, + { url = "https://files.pythonhosted.org/packages/50/2e/ebdb85a8da151397a2790363676b7ed7c125924fe618e4c6d8befb0cc62c/msgpack-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d3567748a5107cb40cdf66a275430c2f87c07777698f4bfd25c35f44d533258c", size = 82657, upload-time = "2026-06-18T16:12:59.396Z" }, + { url = "https://files.pythonhosted.org/packages/26/aa/753ad8b007b464e1d8aa0c8e650b9c5f4f725e658fc5ac8a7635c55b7f6e/msgpack-1.2.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60926b75d00c8e816ef98f3034f484a8bc64242d66839cef4cf7e503142316a0", size = 410634, upload-time = "2026-06-18T16:13:00.383Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/6adabd4f6d5e686f97dd02ce7fce3fe4cf672cbac36b8f67ff4040e8ad8b/msgpack-1.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:020e881a764b20d8d7ca1a54fc01b8175519d108e3c3f194fddc200bda95951a", size = 419989, upload-time = "2026-06-18T16:13:01.776Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cc/85039b7b0eb168aaad7383a23c97e291a11f08351cb45a606ce865e4e3f1/msgpack-1.2.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4202c74688ca06591f78cb18988228bd4cca2cc75d57b60008372892d2f1e6e6", size = 377544, upload-time = "2026-06-18T16:13:03.637Z" }, + { url = "https://files.pythonhosted.org/packages/ed/bf/35963899493b32030c85fc513b723ae66144ac70c11ebc52e889e16e3d99/msgpack-1.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8b267ce94efb76fbd1b3373511420074ee3187f0f7811bf394531de13294735a", size = 400842, upload-time = "2026-06-18T16:13:05.012Z" }, + { url = "https://files.pythonhosted.org/packages/a6/df/8e2ac970c8f99264cd9997d1c73df5466bc19da3301d7dc5500862a9b089/msgpack-1.2.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:e4f1d0f8f98ade9634e01fb704a408f9336c0a8f1117b369f5db83dc7551d8b1", size = 374108, upload-time = "2026-06-18T16:13:06.232Z" }, + { url = "https://files.pythonhosted.org/packages/17/dd/fa8bd265110dfa51c20cb529f9e6d240a16fafe7e645004c6af2d01353ba/msgpack-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f02cf17a6ca1abe29b5f980644f7551f94d71f2011509b26d8625ce038f0df64", size = 414939, upload-time = "2026-06-18T16:13:07.478Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b9/8377a5ad8953fc0437c70cc98d9ae29f27fe5ac5109fbec0812085865735/msgpack-1.2.1-cp312-cp312-win32.whl", hash = "sha256:0c0d9802354507bcba62af19c17918e3eb437cc25e6f50657d511b5856a77aac", size = 64504, upload-time = "2026-06-18T16:13:08.822Z" }, + { url = "https://files.pythonhosted.org/packages/57/7f/ce1e377df7e62461fefd9eb23bfb93a4a523f40a517b377b8f844d836828/msgpack-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:5c24aa15d5963051e1a5c62b12c50cd705992502b5ec1f3bece6046f33c9fc24", size = 71421, upload-time = "2026-06-18T16:13:09.828Z" }, + { url = "https://files.pythonhosted.org/packages/8f/32/ebfe84c9929f08f188d56c7a2fd913406a9ddad76a634697c1c43b8112e6/msgpack-1.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:4227224aaec8f7fbcbfbd4272319347b2bb4030366502600f8c45588c5187b07", size = 64775, upload-time = "2026-06-18T16:13:11.056Z" }, +] + +[[package]] +name = "multipledispatch" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/3e/a62c3b824c7dec33c4a1578bcc842e6c30300051033a4e5975ed86cc2536/multipledispatch-1.0.0.tar.gz", hash = "sha256:5c839915465c68206c3e9c473357908216c28383b425361e5d144594bf85a7e0", size = 12385, upload-time = "2023-06-27T16:45:11.074Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/c0/00c9809d8b9346eb238a6bbd5f83e846a4ce4503da94a4c08cb7284c325b/multipledispatch-1.0.0-py3-none-any.whl", hash = "sha256:0c53cd8b077546da4e48869f49b13164bebafd0c2a5afceb6bb6a316e7fb46e4", size = 12818, upload-time = "2023-06-27T16:45:09.418Z" }, +] + +[[package]] +name = "ndindex" +version = "1.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/92/4b9d2f4e0f3eabcfc7b02b48261f6e5ad36a3e2c1bbdcc4e3b7b6c768fa6/ndindex-1.10.1.tar.gz", hash = "sha256:0f6113c1f031248f8818cbee1aa92aa3c9472b7701debcce9fddebcd2f610f11", size = 271395, upload-time = "2025-11-19T20:40:08.899Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/90/774ddd08b2a1b41faa56da111f0fbfeb4f17ee537214c938ef41d61af949/ndindex-1.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87f83e8c35a7f49a68cd3a3054c406e6c22f8c1315f3905f7a778c657669187e", size = 177348, upload-time = "2025-11-19T20:38:41.768Z" }, + { url = "https://files.pythonhosted.org/packages/ed/ee/a423e857f5b45da3adc8ddbcfbfd4a0e9a047edce3915d3e3d6e189b6bd9/ndindex-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf9e05986b2eb8c5993bce0f911d6cedd15bda30b5e35dd354b1ad1f4cc3599d", size = 176561, upload-time = "2025-11-19T20:38:43.06Z" }, + { url = "https://files.pythonhosted.org/packages/1f/40/139b6b050ba2b2a0bb40e0381a352b1eb6551302dcb8f86fb4c97dd34e92/ndindex-1.10.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:046c1e88d46b2bd2fd3483e06d27b4e85132b55bc693f2fca2db0bb56eea1e78", size = 542901, upload-time = "2025-11-19T20:38:44.43Z" }, + { url = "https://files.pythonhosted.org/packages/27/ae/defd665dbbeb2fffa077491365ed160acaec49274ce8d4b979f55db71f18/ndindex-1.10.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03cf1e6cdac876bd8fc92d3b65bb223496b1581d10eab3ba113f7c195121a959", size = 546875, upload-time = "2025-11-19T20:38:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/59/43/6d54d48e8eaee25cdab70d3e4c4f579ddb0255e4f1660040d5ad55e029c6/ndindex-1.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:752e78a5e87911ded117c57a7246596f26c9c6da066de3c2b533b3db694949bb", size = 1510036, upload-time = "2025-11-19T20:38:47.444Z" }, + { url = "https://files.pythonhosted.org/packages/09/61/e28ba3b98eacd18193176526526b34d7d70d2a6f9fd2b4d8309ab5692678/ndindex-1.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9dd58d91220b1c1fe516324bfcf4114566c98e84b1cbbe416abe345c75bd557", size = 1571849, upload-time = "2025-11-19T20:38:48.951Z" }, + { url = "https://files.pythonhosted.org/packages/8f/63/83fff78a3712cb9f478dd84a19ec389acf6f8c7b01dc347a65ae74e6123d/ndindex-1.10.1-cp312-cp312-win32.whl", hash = "sha256:3b0d9ce2c8488444499ab6d40e92e09867bf4413f5cf04c01635de923f44aa67", size = 149792, upload-time = "2025-11-19T20:38:50.959Z" }, + { url = "https://files.pythonhosted.org/packages/52/fd/a5e3c8c043d0dddea6cd4567bfaea568f022ac197301882b3d85d9c1e9b3/ndindex-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:5c026dbbf2455d97ce6456d8a50b349aee8fefa11027d020638c89e9be2c9c4c", size = 158164, upload-time = "2025-11-19T20:38:52.242Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "numexpr" +version = "2.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/c4/27ea7849eb4a7e3b51db446b0414254326dba8c6bdee09b9f2abf963e55d/numexpr-2.14.2.tar.gz", hash = "sha256:e7144e83ea9e581f2273e0304f15836736c4e470e2bd2e378ce617662a1ca278", size = 121744, upload-time = "2026-07-18T10:52:43.185Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/fd/3e7ca4328c22b28717cfe05cd23ca35ffd84e4ca36c3da004323528e9e20/numexpr-2.14.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:606ceaf5722e295ef965ca591736fc26d9e5f13ad950a479e64cead1947f8a3d", size = 164757, upload-time = "2026-07-18T10:51:49.05Z" }, + { url = "https://files.pythonhosted.org/packages/ed/5c/9780d48c4d5effcf55fc7ab7c5651ed82b43250ac8410cce4ef1e97583ed/numexpr-2.14.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:790da022539fe7c37dc893acf530a91c2ca6964d7ba11f464131383729d058f3", size = 153507, upload-time = "2026-07-18T10:51:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/41/13/ed5efda74ace9a7e2e933476b85bba6d00f2ebf6b833ef59a796ec9af88c/numexpr-2.14.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:327be9ee62251c173236dc620147ff2d0e732a32f5bad918d78a10082f502f63", size = 455373, upload-time = "2026-07-18T10:51:51.466Z" }, + { url = "https://files.pythonhosted.org/packages/ea/11/e8953226d658ae67e3e002abaa60a101c693f9c57d74974001729afab5ef/numexpr-2.14.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6a5d8fc7016bf6f6e1808b011510aa7c3bd75ec1407f7650874ec591db59f5e", size = 445187, upload-time = "2026-07-18T10:51:52.849Z" }, + { url = "https://files.pythonhosted.org/packages/b2/f7/f51b7e10c312bd9617df829e063c87a6d443fd97af54688282ba2b11b1fd/numexpr-2.14.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4b1ff261c3e69c4c59578d3a9ca6132603619d38ae1abe73325563bed3b9bbaf", size = 1420426, upload-time = "2026-07-18T10:51:54.079Z" }, + { url = "https://files.pythonhosted.org/packages/14/bf/21b4e362039ba52f9033a3f57d68160c0829c9c8d66fa7b443b82491322c/numexpr-2.14.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8b8384592c49cb15a91caa54e2cd84d1ce18edb7af030bb76cd29b52e5dc155d", size = 1467554, upload-time = "2026-07-18T10:51:55.391Z" }, + { url = "https://files.pythonhosted.org/packages/2b/75/0856b1add4e5a7741b80b615f3faace8e3cfffe11e22b6a940ebf25443aa/numexpr-2.14.2-cp312-cp312-win32.whl", hash = "sha256:41cdeacf1b4e51c1143983ea61fcee68139ca47222b55a9265b4fa73826c4260", size = 161441, upload-time = "2026-07-18T10:51:56.503Z" }, + { url = "https://files.pythonhosted.org/packages/a3/78/c87a88b8e63b5f78c67d555afebefafe81f6e3d98640b4bc1c125d76c9d3/numexpr-2.14.2-cp312-cp312-win_amd64.whl", hash = "sha256:8fc55d14bcf17b3fe69213bea14f999451892b4690717008c66f2edfd6a085ce", size = 157563, upload-time = "2026-07-18T10:51:57.521Z" }, + { url = "https://files.pythonhosted.org/packages/15/37/eea56d5ed1ae5252447f45bb461930eab66338eeab32e533aceb080db0bb/numexpr-2.14.2-cp312-cp312-win_arm64.whl", hash = "sha256:806a4471310fe20aa7cb1b2816a6f5e508073a1ad1c2e18041b83e57066fad6a", size = 148820, upload-time = "2026-07-18T10:51:58.536Z" }, +] + +[[package]] +name = "numpy" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/80/db0b4559e57ec36362bedbb05530a87fafbcb6067708c946967a41d449e7/numpy-2.5.2.tar.gz", hash = "sha256:d482d171c406ae88c5b19cad3b6a1c4c5209f886ab74bc44c2c865c23f52d860", size = 20773161, upload-time = "2026-08-09T13:48:27.962Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/72/dccb0aaf40972777283303919f613964227266d0c13adebb79ac124f1c3e/numpy-2.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:14e373cfc6387177e8409dac3c7159be8eb05cd77096cd7c950268b86f62831c", size = 16891693, upload-time = "2026-08-09T13:44:51.702Z" }, + { url = "https://files.pythonhosted.org/packages/60/2e/b5aee50a1f74ac815cf8331812cb8251e29024025de462e0c047641c614c/numpy-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4bbd96c833ecc8cc069ce518078fc8c60cb9cbfb0fea5b7a803ad65035596d03", size = 11903109, upload-time = "2026-08-09T13:44:55.501Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f4/29e78102a80601cf034d4e9767022cffeca2c3b4c926e1754572ca95593d/numpy-2.5.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:6e8172ddfcf5cf74b811d372b570b83c60bd2de87a6fbfbebdadb4a9bd9c6cbb", size = 5350202, upload-time = "2026-08-09T13:44:58.401Z" }, + { url = "https://files.pythonhosted.org/packages/11/4b/dcd3b7eadaf4035d2c7a4289d232523a6964f602598ef7674e4bd7291f93/numpy-2.5.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:65f188481f1669e26f62b701e8205d19e460fa4a9b52a1414ba382330e4a3414", size = 6687736, upload-time = "2026-08-09T13:45:00.813Z" }, + { url = "https://files.pythonhosted.org/packages/e5/21/4947e0e9d6c9fc2e2ff15b8949049ee44f63adb9cacc729ab8793f97e712/numpy-2.5.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8ee9c4eeb8454b3660a8b53493563c3e121c2fc94fbd72b848ef814ed7b676a9", size = 15612696, upload-time = "2026-08-09T13:45:04.151Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5f/62d28cf019460c7f1394105b4d49d9911a9c444cb77ab0bd95a204c5a6de/numpy-2.5.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3cdec01fa790a186d430433fdd4d4ffb70eed6f0eeb4bf05c8dbe2dce0a9bcb8", size = 16722264, upload-time = "2026-08-09T13:45:07.714Z" }, + { url = "https://files.pythonhosted.org/packages/14/25/3f0be4c1b9fdf5dd5e708a6806978564d7c46a055c000496309ff2a2f8af/numpy-2.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7999d4ddb0c4025018373fd787510d46e04c769467af22869707b3c1cfd459ab", size = 16974396, upload-time = "2026-08-09T13:45:11.316Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/6262cbdeeb45da9d971e40715f579d791603ba8ec0b5e2db1ac55454421d/numpy-2.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1f017dc0875c9209d219f97feceb7d54c2661bb243deb4114478e1295808af7", size = 18476044, upload-time = "2026-08-09T13:45:14.869Z" }, + { url = "https://files.pythonhosted.org/packages/36/33/29208b8b075bde62d26a81d14b358c42b0f69b6cabd98d4ff97f37f22b05/numpy-2.5.2-cp312-cp312-win32.whl", hash = "sha256:d6a48072864e3324e194a8fbb3c657bcc5b5c869dbc64c9537b1d5c862572c0a", size = 6072817, upload-time = "2026-08-09T13:45:17.867Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/87fea2769fe1c47c1b5b01d8310772c9d1a85d485de7cf386ef7a3332b02/numpy-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:28ac63476ec7651484215ee7fa15a1f78b57c14621f01e392afe17b9a1390ce4", size = 12464674, upload-time = "2026-08-09T13:45:20.734Z" }, + { url = "https://files.pythonhosted.org/packages/14/52/032b97e00461ab0809bbe4c588b035620e5a14b8cdee47ecddefc7b17d33/numpy-2.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:27650bb0e7140fa3d37b9923b4803645e0b125d190f326eecfd3f4dad8e8ade1", size = 10397131, upload-time = "2026-08-09T13:45:23.73Z" }, +] + +[[package]] +name = "packaging" +version = "26.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, +] + +[[package]] +name = "pandas-market-calendars" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exchange-calendars" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/4c/98067cb91b37a137389f978f52410975915268d394c09cf941c490565297/pandas_market_calendars-5.4.0.tar.gz", hash = "sha256:b02f3a0e9bcb4b9e82a5060bf260ef0060ccd398f989b5e6f8208f4352967806", size = 175213, upload-time = "2026-05-27T02:42:05.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/d3/59b999f7f6a1d173572d3e8f8b07ded7e256c691d02b3b5cacb26479895a/pandas_market_calendars-5.4.0-py3-none-any.whl", hash = "sha256:bb2b93b28d496cab173b41c7d120fd5cd9d506b31f3bb0ad3d1d9f2b60d9d9e3", size = 134904, upload-time = "2026-05-27T02:42:06.35Z" }, +] + +[[package]] +name = "patsy" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/44/ed13eccdd0519eff265f44b670d46fbb0ec813e2274932dc1c0e48520f7d/patsy-1.0.2.tar.gz", hash = "sha256:cdc995455f6233e90e22de72c37fcadb344e7586fb83f06696f54d92f8ce74c0", size = 399942, upload-time = "2025-10-20T16:17:37.535Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/70/ba4b949bdc0490ab78d545459acd7702b211dfccf7eb89bbc1060f52818d/patsy-1.0.2-py2.py3-none-any.whl", hash = "sha256:37bfddbc58fcf0362febb5f54f10743f8b21dd2aa73dec7e7ef59d1b02ae668a", size = 233301, upload-time = "2025-10-20T16:17:36.563Z" }, +] + +[[package]] +name = "peewee" +version = "3.17.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/b1/2331e6b1fc8c61686dd9276f34142265462640eb0dd431246e30c4461065/peewee-3.17.3.tar.gz", hash = "sha256:ef15f90b628e41a584be8306cdc3243c51f73ce88b06154d9572f6d0284a0169", size = 2953258, upload-time = "2024-04-17T15:29:44.345Z" } + +[[package]] +name = "polars" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "polars-runtime-32" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/13/3873f213304bcbaaf39e63c8b905ceb460a0524448d57f86a829f6d4d0fd/polars-1.43.2.tar.gz", hash = "sha256:c699671b99eb71ff53334d237917aaa3db5ad4dda480abcb6c80e0eaee7b677b", size = 750312, upload-time = "2026-08-01T06:28:30.872Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/fe/0888040a24e4504098b85d8ad486b14cb01cf6b030bbe479dfc2dcffc2ac/polars-1.43.2-py3-none-any.whl", hash = "sha256:22aa0cb92a1ee2d60d6a15a638b2e8e0dd99aea21ac0cd8fb29da8e382e075a9", size = 847150, upload-time = "2026-08-01T06:27:15.543Z" }, +] + +[[package]] +name = "polars-runtime-32" +version = "1.43.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/06/11b578eeef05f867e3ee31b2a2fdd8e7684c2aa47822c49935d1be789c38/polars_runtime_32-1.43.2.tar.gz", hash = "sha256:d7b7c486bccee75a6af0158b87077da3d054657e3c60036b28644f4e1c7fdbf7", size = 3095669, upload-time = "2026-08-01T06:28:32.315Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/fc/12e6d4ca34d820297651134cfa35f86c33e898539fc6629cbb35d0089697/polars_runtime_32-1.43.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:91abf205d4ec93f92ba95386b7f8776559ae3dfce425ed2e527efa75d117d04a", size = 53088908, upload-time = "2026-08-01T06:27:18.268Z" }, + { url = "https://files.pythonhosted.org/packages/32/81/833b0853551deb810854f96b43dea342b6e6c9b0ea1afcccf774157d519d/polars_runtime_32-1.43.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:2cc3ff96fd44789b02eb5c15b98dfcb000101636b177d3034fae2feec19b118f", size = 47540529, upload-time = "2026-08-01T06:27:21.391Z" }, + { url = "https://files.pythonhosted.org/packages/83/55/7b2a75af14c9294d97f3bec132dd3018ddcd988bef32b5d28322150b8c11/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10ed36e615ab362feb7406e6d084e124b445ad284caa73bd93ae7e65745ed894", size = 51366340, upload-time = "2026-08-01T06:27:24.776Z" }, + { url = "https://files.pythonhosted.org/packages/62/60/64deacb3abc70c52e2d88a808a052d1621c86a48fe9194f2c065579ab1cd/polars_runtime_32-1.43.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d5a7ae004a2723ebf4427f6d6a639f30f86af4cf077075f6b35d04711154fc3", size = 57304599, upload-time = "2026-08-01T06:27:27.875Z" }, + { url = "https://files.pythonhosted.org/packages/52/95/d6e3a236d7630e17c40d0ddee839bf2be9acf548fdc0e5ad65ed9ff0cac6/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:09339eacc6d392206e78aabbaaa37d7276eb969b798f46cb1f367fd718798c60", size = 51520580, upload-time = "2026-08-01T06:27:30.913Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5a/2deb8eac70e9a2ac26d88a66ae7cf52612865026f4f4a5e7ab11ad9d52bf/polars_runtime_32-1.43.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:452b400e59e7f56e4c6437f435e796903272a9388feee12de2bea049ae87025e", size = 55204471, upload-time = "2026-08-01T06:27:33.886Z" }, + { url = "https://files.pythonhosted.org/packages/29/9e/647401ae8a607bc0cc40ed7b8592d5b1be90ded0dc9b9d6d3aeb03f9524b/polars_runtime_32-1.43.2-cp310-abi3-win_amd64.whl", hash = "sha256:00e33c28e321410c8d66e814a90043101e3bdd9ed2c6dabda07565aa8adbbdf1", size = 52572176, upload-time = "2026-08-01T06:27:37.048Z" }, + { url = "https://files.pythonhosted.org/packages/96/8d/60a50c3f36c85218a7ffcb48c6fe2ce1f7bec799152d68b8658ebed2179c/polars_runtime_32-1.43.2-cp310-abi3-win_arm64.whl", hash = "sha256:350a4868cae85bf8b3f81b33ba47927c15256bd9264dfc8c0753f1b927eac9d3", size = 46582513, upload-time = "2026-08-01T06:27:40.025Z" }, +] + +[[package]] +name = "py-cpuinfo" +version = "9.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/a8/d832f7293ebb21690860d2e01d8115e5ff6f2ae8bbdc953f0eb0fa4bd2c7/py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690", size = 104716, upload-time = "2022-10-25T20:38:06.303Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, +] + +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, +] + +[[package]] +name = "pygments" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, +] + +[[package]] +name = "pyluach" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/11/42568c1568a75f8803c59f26d29af01a0890352b7a8e03d41ecda8bfb5dd/pyluach-2.3.0.tar.gz", hash = "sha256:ec6e30669d1df50c9ca160486da44a8195bb4c7a5d3d533990d0c5b03accd281", size = 26910, upload-time = "2025-09-09T20:24:39.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/c8/f96208ade3ca4c23b372497d0788bcf0f2e0ff4310e5ee693366bc33fdf0/pyluach-2.3.0-py3-none-any.whl", hash = "sha256:4497b731aef59508b079dbf5f00bc5bf4329ac45090a6cd37b5a83756f0e69ab", size = 25914, upload-time = "2025-09-09T20:24:37.831Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytz" +version = "2026.3.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/48/fb042503b6ca6cd271261dc559fd6432f7d8c713153e9ec5c591af4dfc1c/pytz-2026.3.post1.tar.gz", hash = "sha256:2211d3fcf9a797d3405cac96ac7f61d80e6a644f72a3309607282fe8a2010c5d", size = 319745, upload-time = "2026-07-25T15:12:07.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/7b/39c34ca613b0b198cb866466651b26b045e2009864c5183c979a3b83f383/pytz-2026.3.post1-py2.py3-none-any.whl", hash = "sha256:dd95840dd199baea12d9cc096a1d452caa6596a1c1e4b5f3dbd1541855d5e815", size = 508283, upload-time = "2026-07-25T15:12:05.782Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "rich" +version = "15.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, +] + +[[package]] +name = "scipy" +version = "1.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7bd21faaf5a1a3b2eff922d02db5f191b99a6518db9078a8fb23169f6d22259a", size = 31056519, upload-time = "2026-06-19T14:59:45.203Z" }, + { url = "https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:265915e79107de9f946b855e50d7470d5893ec3f54b342e1aa6201cbdcd8bb6b", size = 28681889, upload-time = "2026-06-19T14:59:48.103Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2d/11dd93d21e147a73ba22bd75c0b9208d3a2e0ec76d53170ce7d9029b1015/scipy-1.18.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9ab7b758be6940954a713ee466e2043e9f6e2ed965c1fce5c91039f4be3d90a9", size = 20423580, upload-time = "2026-06-19T14:59:50.665Z" }, + { url = "https://files.pythonhosted.org/packages/9c/01/93552f75e0d2a7dd115a45e59209c51e8d514daff02fc887d2623be06fe1/scipy-1.18.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:97b6cddaaee0a779ef6b5ca83c9604b27cc16b2b8fc22c142652df8793319fb8", size = 23054441, upload-time = "2026-06-19T14:59:53.564Z" }, + { url = "https://files.pythonhosted.org/packages/3c/23/21f5e703643d66f21faa6b4c73195bfcad70c55efcb4f1ab327cd7c4101a/scipy-1.18.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:52a96e21517c7292375c0e27dd796a811f03fcea5fd4d108fdfea8145dcf17ab", size = 33968720, upload-time = "2026-06-19T14:59:56.415Z" }, + { url = "https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f55797419e16e7f30cf88ffb3113ce0467f00cfe3f70d5c281730b21769bfc2", size = 35287115, upload-time = "2026-06-19T14:59:59.411Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ff/eec46be7e9234208f801062b53e1983085eddebd693f6c9bfb03b459830d/scipy-1.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ad033410e2e0672ffdc1042110cef20e1c46f8fd0616cee1d44d8d58fad8fc11", size = 35577989, upload-time = "2026-06-19T15:00:02.235Z" }, + { url = "https://files.pythonhosted.org/packages/84/ca/210d4759c7210bb7d269437421959b39a33434e2776b60c5cb8a763bb30a/scipy-1.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a55985d54c769c872e64b7f4c8a81cc30ef700cc04296abbbf3705439c126de", size = 37421717, upload-time = "2026-06-19T15:00:05.102Z" }, + { url = "https://files.pythonhosted.org/packages/2b/54/9a9edb45345bd6744da5ddfb6628e5d5185920494c6a67ec45b6381004cb/scipy-1.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:71ccc8faa2dd16ac310233203474a8b5cb67f10dedd54a3116d34943f4b19132", size = 36597428, upload-time = "2026-06-19T15:00:08.112Z" }, + { url = "https://files.pythonhosted.org/packages/99/0e/33f32a2a58987e26aec0f7df252cbbad1e90ae77bdbc76f40dd4ed0cf0ea/scipy-1.18.0-cp312-cp312-win_arm64.whl", hash = "sha256:d88363fd9d8fbd3511bd273f1a49efb2a540773ddf92a91d57498ce7dd7f3e76", size = 24351481, upload-time = "2026-06-19T15:00:11.103Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3b/21/77b4c147963073040dc3c3a5cb7a8c3001a1893c0209432cb77f9df836aa/sqlalchemy-2.0.52.tar.gz", hash = "sha256:5e2d46356ac2ccb7d268ab6c2319ac6a2b42f1b8d5fd8bd3d46855cd82abee97", size = 9945637, upload-time = "2026-08-11T19:07:09.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/d5/1b77a026d161f98a08f11af1a5f6c47b98ee7c7e2648af525a1004826c78/sqlalchemy-2.0.52-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be8c49131665dfe2cc74c498aa1240ffb548d0fd901325dd11c2c7a18956f727", size = 2170940, upload-time = "2026-08-11T20:58:11.25Z" }, + { url = "https://files.pythonhosted.org/packages/54/bd/f444444adb37b5d53753fb1730ee7a421628e2e3b756c4da461af7e6394a/sqlalchemy-2.0.52-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b2d9e507a458832adcfbd8af6e2036ddf069b7710b799448542ebccae2dceee", size = 3383415, upload-time = "2026-08-11T21:02:38.534Z" }, + { url = "https://files.pythonhosted.org/packages/be/57/2eadf93a552568c57e8680b7e58bb5e9770d80942a1bdbaf4f2f63f0d7c8/sqlalchemy-2.0.52-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8738008376d22f30f411ea3efecf39b51110b6996d80bb73786f30bcfdd5fd3b", size = 3398577, upload-time = "2026-08-11T21:16:59.092Z" }, + { url = "https://files.pythonhosted.org/packages/15/c3/2887cf9dd111d1fbf05d22165b404c221ef43e029f7a2695e7302f27a7cc/sqlalchemy-2.0.52-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37a4d548327b6cab9c7d8cdb4e0e82feabee0110c4d150059068e2d1cfbd99ee", size = 3328225, upload-time = "2026-08-11T21:02:40.183Z" }, + { url = "https://files.pythonhosted.org/packages/02/0f/466bdf9e1feeeef5587f868c187d8687e21ff8c85b1775e9041130181132/sqlalchemy-2.0.52-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e49f51a5d59857a7a0dcaf9469febf7197d9394bd88f00d69c2c4e848112cdbf", size = 3357374, upload-time = "2026-08-11T21:17:01.076Z" }, + { url = "https://files.pythonhosted.org/packages/22/20/5c2b4583904af4173076dda1c9e53c9e2ffc7a702d2efde0216bbacbf7cb/sqlalchemy-2.0.52-cp312-cp312-win32.whl", hash = "sha256:afda3ec521d0517d0de783fc70030775841900896d832de5bbd066549290470e", size = 2129366, upload-time = "2026-08-11T21:14:50.991Z" }, + { url = "https://files.pythonhosted.org/packages/ed/06/543dab8ef62d4e9fb96fb31a30c2b8b14a8763bccf48d428294d6b3041c0/sqlalchemy-2.0.52-cp312-cp312-win_amd64.whl", hash = "sha256:2d5e53e36e37129fe0be8b9d08b6e4052c10a963ee6cda56c8c10dcc194b99ca", size = 2157344, upload-time = "2026-08-11T21:14:52.453Z" }, + { url = "https://files.pythonhosted.org/packages/b3/3f/3582293d1e185e71d19d7c731c3e2ee20ba21981c4a1115c0806c1f62120/sqlalchemy-2.0.52-py3-none-any.whl", hash = "sha256:3b81b8363a919ce53453591cdb93702e6bd54ade6c4fa2f468fc053baee5ed89", size = 1950700, upload-time = "2026-08-11T20:47:21.603Z" }, +] + +[[package]] +name = "statsmodels" +version = "0.14.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "patsy" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/81/e8d74b34f85285f7335d30c5e3c2d7c0346997af9f3debf9a0a9a63de184/statsmodels-0.14.6.tar.gz", hash = "sha256:4d17873d3e607d398b85126cd4ed7aad89e4e9d89fc744cdab1af3189a996c2a", size = 20689085, upload-time = "2025-12-05T23:08:39.522Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/ce/308e5e5da57515dd7cab3ec37ea2d5b8ff50bef1fcc8e6d31456f9fae08e/statsmodels-0.14.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe76140ae7adc5ff0e60a3f0d56f4fffef484efa803c3efebf2fcd734d72ecb5", size = 10091932, upload-time = "2025-12-05T19:28:55.446Z" }, + { url = "https://files.pythonhosted.org/packages/05/30/affbabf3c27fb501ec7b5808230c619d4d1a4525c07301074eb4bda92fa9/statsmodels-0.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26d4f0ed3b31f3c86f83a92f5c1f5cbe63fc992cd8915daf28ca49be14463a1c", size = 9997345, upload-time = "2025-12-05T19:29:10.278Z" }, + { url = "https://files.pythonhosted.org/packages/48/f5/3a73b51e6450c31652c53a8e12e24eac64e3824be816c0c2316e7dbdcb7d/statsmodels-0.14.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c00a42863e4f4733ac9d078bbfad816249c01451740e6f5053ecc7db6d6368", size = 10058649, upload-time = "2025-12-05T23:10:12.775Z" }, + { url = "https://files.pythonhosted.org/packages/81/68/dddd76117df2ef14c943c6bbb6618be5c9401280046f4ddfc9fb4596a1b8/statsmodels-0.14.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:19b58cf7474aa9e7e3b0771a66537148b2df9b5884fbf156096c0e6c1ff0469d", size = 10339446, upload-time = "2025-12-05T23:10:28.503Z" }, + { url = "https://files.pythonhosted.org/packages/56/4a/dce451c74c4050535fac1ec0c14b80706d8fc134c9da22db3c8a0ec62c33/statsmodels-0.14.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:81e7dcc5e9587f2567e52deaff5220b175bf2f648951549eae5fc9383b62bc37", size = 10368705, upload-time = "2025-12-05T23:10:44.339Z" }, + { url = "https://files.pythonhosted.org/packages/60/15/3daba2df40be8b8a9a027d7f54c8dedf24f0d81b96e54b52293f5f7e3418/statsmodels-0.14.6-cp312-cp312-win_amd64.whl", hash = "sha256:b5eb07acd115aa6208b4058211138393a7e6c2cf12b6f213ede10f658f6a714f", size = 9543991, upload-time = "2025-12-05T23:10:58.536Z" }, +] + +[[package]] +name = "tables" +version = "3.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blosc2" }, + { name = "numexpr" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "py-cpuinfo" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/a3/d213ebe7376d48055bd55a29cd9f99061afa0dcece608f94a5025d797b0a/tables-3.11.1.tar.gz", hash = "sha256:78abcf413091bc7c1e4e8c10fbbb438d1ac0b5a87436c5b972c3e8253871b6fb", size = 4790533, upload-time = "2026-03-01T11:43:36.036Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/bb/4a9cde6628563388db26fa86c64adb0f2475a757e72af0ec185fd520b72f/tables-3.11.1-cp311-abi3-macosx_10_9_x86_64.whl", hash = "sha256:eb30684c42a77bbecdef2b9c763c4372b0ddc9cc5bd8b2a2055f2042eee67217", size = 7045977, upload-time = "2026-03-01T11:42:48.605Z" }, + { url = "https://files.pythonhosted.org/packages/78/74/6568c8d3aabf9982ab89fe3e378afbd7aad4894bde4570991a3246169ef4/tables-3.11.1-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:f0367d2e3df0f10ea63ccf4279f3fe58e32ec481767320301a483e2b3cd83efc", size = 6264947, upload-time = "2026-03-01T11:42:53.192Z" }, + { url = "https://files.pythonhosted.org/packages/cc/a3/ec228901fca4c996306b17f5c60a4105144df0bbd07b3a4a816f91f37b4a/tables-3.11.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56bf6fb9132ead989b7e76695d7613d6d08f071a8019038d6565ba90c66b9f3e", size = 6903733, upload-time = "2026-03-01T11:42:58.349Z" }, + { url = "https://files.pythonhosted.org/packages/99/29/c2dc674ea70fa9a4819417289a9c0d3e4780835beeed573eb66964cfb763/tables-3.11.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1e78fe190fdeb4afe430b79651bae2a4f341904eb85aa8dbafe5f1caee1c7f67", size = 7241357, upload-time = "2026-03-01T11:43:03.938Z" }, + { url = "https://files.pythonhosted.org/packages/60/b5/a59b62af4127790c618eb11c06c106706e07509a3fb9e346b2a3ffa74419/tables-3.11.1-cp311-abi3-win_amd64.whl", hash = "sha256:7fa6cb03f6fe55ae4f85e89ec5450e5c40cc4c52d8c3b60eb157a445c2219e89", size = 6526565, upload-time = "2026-03-01T11:43:08.58Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "toolz" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", hash = "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b", size = 52613, upload-time = "2025-10-17T04:03:21.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", hash = "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", size = 58093, upload-time = "2025-10-17T04:03:20.435Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/26/b09b8010994eccc3c09092e6b34058f36a460eea2d4c3e8b910c695975a0/typing_inspection-0.4.4.tar.gz", hash = "sha256:547274fa6b0a561ccf549cc9524b999a578e737d015d8709d021f9d0d13bea47", size = 76928, upload-time = "2026-08-12T12:37:25.997Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl", hash = "sha256:65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147", size = 14750, upload-time = "2026-08-12T12:37:24.648Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/ff/5a28bdfd8c3ebec42564ac7d0e54ca3db65044a9314a97f9564fa7a1e926/tzdata-2026.3.tar.gz", hash = "sha256:4a1518b8993086a7982523e071643f3c0e5f213e75b21318e78bcabfff9d1415", size = 198674, upload-time = "2026-07-10T08:50:37.887Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl", hash = "sha256:dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931", size = 348168, upload-time = "2026-07-10T08:50:36.46Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "zipline-reloaded" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alembic" }, + { name = "bcolz-zipline" }, + { name = "bottleneck" }, + { name = "click" }, + { name = "empyrical-reloaded" }, + { name = "exchange-calendars" }, + { name = "h5py" }, + { name = "intervaltree" }, + { name = "iso3166" }, + { name = "iso4217" }, + { name = "lru-dict" }, + { name = "multipledispatch" }, + { name = "networkx" }, + { name = "numexpr" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "patsy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "requests" }, + { name = "scipy" }, + { name = "six" }, + { name = "sqlalchemy" }, + { name = "statsmodels" }, + { name = "tables" }, + { name = "toolz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/73/7f6810bfee01923519038ad361aef6e6f47ecb35283ffed98126eece48a7/zipline_reloaded-3.1.1.tar.gz", hash = "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", size = 12337410, upload-time = "2025-07-19T13:52:34.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/37/96181cca329511d0654ce1b203c07768b29cf41d3808f67d64515a6fcf06/zipline_reloaded-3.1.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:6a9c7f0d9ad6a0f7604e0330640c0f6f42064b4d60d07be1bcba00002fee9e56", size = 5119266, upload-time = "2025-07-19T13:52:19.73Z" }, + { url = "https://files.pythonhosted.org/packages/d5/49/e18a294e585824993b747f70206c0f357e08d73a49fa91ba67b469945cec/zipline_reloaded-3.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8bda014e3b1d8f6e1f8cd3168a35c1730dccd3233834af4d5638bbba18235469", size = 5026385, upload-time = "2025-07-19T13:52:20.95Z" }, + { url = "https://files.pythonhosted.org/packages/49/e0/3d321d6a87504f892154a7bfceffb63b90cb8a2398d8cdf4887be7f7a74c/zipline_reloaded-3.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fa37d5356a11e7f7ad4708dc08bc76f750f6fee900a8a9036c12f8e7d28d5e3", size = 12256401, upload-time = "2025-07-19T13:52:23.166Z" }, + { url = "https://files.pythonhosted.org/packages/fb/82/cb5c1cbad9e28c7a74c4d20f33949f150782f375f90bfca219d9d502bf84/zipline_reloaded-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:77ebe5641def380b3d7a1fd26b101f131f1bd402a6f1a72857b6b866124b9247", size = 4951445, upload-time = "2025-07-19T13:52:25.14Z" }, +] diff --git a/validation/framework_targets.toml b/validation/framework_targets.toml new file mode 100644 index 00000000..8bc16c42 --- /dev/null +++ b/validation/framework_targets.toml @@ -0,0 +1,95 @@ +[metadata] +schema_version = 1 +freeze_date = "2026-08-13" +scenario_frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline"] + +[framework.vectorbt_pro] +display_name = "VectorBT Pro" +package = "vectorbtpro" +version = "2026.6.27" +profile = "vectorbt_strict" +python = ">=3.11" +license = "Proprietary" +access = "licensed" +source = "https://github.com/polakowo/vectorbt.pro" +source_commit = "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4" +immutable_id = "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4" +environment = ".venv-vectorbt-pro" +python_env_var = "ML4T_VECTORBT_PRO_PYTHON" +scenario_matrix = true +required_scenarios = 17 +unsupported_scenarios = 0 + +[framework.vectorbt_oss] +display_name = "VectorBT OSS" +package = "vectorbt" +version = "1.1.0" +profile = "vectorbt_oss_strict" +python = ">=3.11,<3.15" +license = "Apache-2.0 WITH Commons-Clause" +access = "public" +source = "https://pypi.org/project/vectorbt/1.1.0/" +source_commit = "259d2d89fe2e7638baf3ca76c394937cd32b656d" +immutable_id = "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b" +artifact = "vectorbt-1.1.0.tar.gz" +environment = ".venv-vectorbt-oss" +python_env_var = "ML4T_VECTORBT_OSS_PYTHON" +scenario_matrix = true +required_scenarios = 16 +unsupported_scenarios = 1 + +[framework.backtrader] +display_name = "Backtrader" +package = "backtrader" +version = "1.9.78.123" +profile = "backtrader_strict" +python = "3.12 audit interpreter; upstream package metadata does not declare a range" +license = "GPL-3.0-or-later" +access = "public" +source = "https://pypi.org/project/backtrader/1.9.78.123/" +immutable_id = "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd" +artifact = "backtrader-1.9.78.123-py2.py3-none-any.whl" +environment = ".venv-backtrader" +python_env_var = "ML4T_BACKTRADER_PYTHON" +scenario_matrix = true +required_scenarios = 17 +unsupported_scenarios = 0 + +[framework.zipline] +display_name = "Zipline Reloaded" +package = "zipline-reloaded" +version = "3.1.1" +profile = "zipline_strict" +python = ">=3.10" +license = "Apache-2.0" +access = "public" +source = "https://pypi.org/project/zipline-reloaded/3.1.1/" +source_commit = "09885a2ebc7567d40942c891b3879dc03c745070" +immutable_id = "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f" +artifact = "zipline_reloaded-3.1.1.tar.gz" +environment = ".venv-zipline" +python_env_var = "ML4T_ZIPLINE_PYTHON" +scenario_matrix = true +required_scenarios = 16 +unsupported_scenarios = 1 + +[framework.lean] +display_name = "LEAN" +package = "lean" +version = "18001" +profile = "lean" +python = "3.11" +license = "Apache-2.0" +access = "public" +source = "https://github.com/QuantConnect/Lean" +source_commit = "278fcb3d1b815b63ccadba68d7ae54422e34b792" +immutable_id = "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70" +artifact = "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70" +platform_artifact = "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307" +cli_version = "1.0.228" +cli_immutable_id = "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c" +environment = ".venv-lean" +python_env_var = "ML4T_LEAN_PYTHON" +scenario_matrix = false +required_scenarios = 0 +unsupported_scenarios = 0 diff --git a/validation/frameworks/backtrader.py b/validation/frameworks/backtrader.py index 55069414..32c19ffa 100644 --- a/validation/frameworks/backtrader.py +++ b/validation/frameworks/backtrader.py @@ -1,6 +1,6 @@ """Backtrader framework driver for validation scenarios. -Consolidates 16 run_backtrader() functions into a single parameterized driver. +Provides one parameterized driver for the scenario matrix. Backtrader always uses next-bar execution (orders placed on bar N fill at bar N+1's open). """ @@ -16,9 +16,21 @@ import pandas as pd sys.path.insert(0, str(Path(__file__).parent.parent)) +from common.capabilities import FRAMEWORK_CAPABILITIES from common.types import FrameworkResult, ScenarioConfig +def _completed_fill(order: Any, bt: Any) -> dict[str, object]: + return { + "timestamp": bt.num2date(order.executed.dt), + "asset": "TEST", + "side": "buy" if order.isbuy() else "sell", + "quantity": abs(float(order.executed.size)), + "price": float(order.executed.price), + "commission": abs(float(order.executed.comm)), + } + + def run( scenario: ScenarioConfig, prices_df: pd.DataFrame, @@ -102,6 +114,7 @@ class PandasData(bt.feeds.PandasData): trade_list = [] if hasattr(strategy, "trade_log"): trade_list = sorted(strategy.trade_log, key=lambda t: t.get("entry_time", 0)) + fill_list = getattr(strategy, "fill_log", []) extra = {} if hasattr(strategy, "total_commission"): @@ -125,6 +138,8 @@ class PandasData(bt.feeds.PandasData): total_pnl=final_value - scenario.initial_cash, num_trades=len(trade_list), trades=trade_list, + fills=fill_list, + capabilities=FRAMEWORK_CAPABILITIES["backtrader"], extra=extra, ) @@ -152,6 +167,7 @@ class SignalStrategy(bt.Strategy): def __init__(self): self.bar_count = 0 self.trade_log = [] + self.fill_log = [] self.total_commission = 0.0 self.pending_trade = None @@ -186,6 +202,7 @@ def notify_trade(self, trade): { "entry_time": self.pending_trade["entry_time"], "exit_time": bt.num2date(trade.dtclose), + "asset": "TEST", "entry_price": self.pending_trade["entry_price"], "exit_price": exit_price, "gross_pnl": trade.pnl, @@ -200,6 +217,7 @@ def notify_trade(self, trade): def notify_order(self, order): if order.status == order.Completed: + self.fill_log.append(_completed_fill(order, bt)) self.total_commission += order.executed.comm return SignalStrategy @@ -215,6 +233,7 @@ class ShortStrategy(bt.Strategy): def __init__(self): self.bar_count = 0 self.trade_log = [] + self.fill_log = [] self.pending_trade = None def next(self): @@ -255,16 +274,22 @@ def notify_trade(self, trade): { "entry_time": self.pending_trade["entry_time"], "exit_time": bt.num2date(trade.dtclose), + "asset": "TEST", "entry_price": self.pending_trade["entry_price"], "exit_price": exit_price, "size": abs(entry_size), "gross_pnl": trade.pnl, "pnl": trade.pnlcomm, "direction": "Short" if entry_size < 0 else "Long", + "commission": trade.commission, } ) self.pending_trade = None + def notify_order(self, order): + if order.status == order.Completed: + self.fill_log.append(_completed_fill(order, bt)) + return ShortStrategy @@ -297,6 +322,7 @@ class RiskEntryStrategy(bt.Strategy): def __init__(self): self.bar_count = 0 self.trade_log = [] + self.fill_log = [] self.entered_once = False self.entry_order = None self.exit_orders = [] @@ -423,18 +449,22 @@ def notify_trade(self, trade): { "entry_time": self.pending_trade["entry_time"], "exit_time": bt.num2date(trade.dtclose), + "asset": "TEST", "entry_price": self.pending_trade["entry_price"], "exit_price": exit_price, "size": abs(entry_size), "gross_pnl": trade.pnl, "pnl": trade.pnlcomm, "direction": "Short" if entry_size < 0 else "Long", + "commission": trade.commission, } ) self.pending_trade = None self.exit_orders = [] def notify_order(self, order): + if order.status == order.Completed: + self.fill_log.append(_completed_fill(order, bt)) if order.status == order.Completed and order == self.entry_order: # Entry filled — now submit deferred trailing stop self.entry_order = None diff --git a/validation/frameworks/vectorbt_oss.py b/validation/frameworks/vectorbt_oss.py index 9994c0b7..9e4cfcd4 100644 --- a/validation/frameworks/vectorbt_oss.py +++ b/validation/frameworks/vectorbt_oss.py @@ -1,6 +1,6 @@ """VectorBT OSS framework driver for validation scenarios. -Consolidates 16 run_vectorbt_oss() functions into a single parameterized driver. +Provides one parameterized driver for the scenario matrix. VectorBT OSS uses same-bar execution with close fills by default. """ @@ -14,6 +14,8 @@ import pandas as pd sys.path.insert(0, str(Path(__file__).parent.parent)) +from common.canonical_records import vectorbt_fills, vectorbt_trades +from common.capabilities import FRAMEWORK_CAPABILITIES from common.types import FrameworkResult, ScenarioConfig @@ -38,7 +40,7 @@ def run( import vectorbt as vbt except ImportError: raise ImportError( - "VectorBT OSS not installed. Run in .venv-vectorbt environment." + "VectorBT OSS not installed. Run in .venv-vectorbt-oss environment." ) from None constants = scenario.constants @@ -119,29 +121,9 @@ def run( trade_list = trades.to_dict("records") if len(trades) > 0 else [] order_list = pf.orders.records_readable.to_dict("records") - # Normalize trade dict keys for comparison - normalized_trades = [] - for index, t in enumerate(trade_list): - entry_order = order_list[index * 2] if index * 2 < len(order_list) else {} - exit_order = order_list[index * 2 + 1] if index * 2 + 1 < len(order_list) else {} - size = float(t.get("Size", scenario.shares)) - direction = t.get("Direction", "Long") - entry_price = float( - entry_order.get("Price", t.get("Avg Entry Price", t.get("Entry Price", 0))) - ) - exit_price = float(exit_order.get("Price", t.get("Avg Exit Price", t.get("Exit Price", 0)))) - direction_sign = -1.0 if str(direction).lower() == "short" else 1.0 - fees = abs(float(entry_order.get("Fees", t.get("Entry Fees", 0)))) + abs( - float(exit_order.get("Fees", t.get("Exit Fees", 0))) - ) - normalized = { - "entry_price": entry_price, - "exit_price": exit_price, - "pnl": (exit_price - entry_price) * size * direction_sign - fees, - "size": size, - "direction": direction, - } - normalized_trades.append(normalized) + asset = str(scenario.constants.get("asset", "TEST")) + normalized_trades = vectorbt_trades(trade_list, asset=asset) + normalized_fills = vectorbt_fills(order_list, asset=asset) extra = {} if "commission" in scenario.extra_checks: @@ -157,5 +139,7 @@ def run( total_pnl=final_value - scenario.initial_cash, num_trades=len(trades), trades=normalized_trades, + fills=normalized_fills, + capabilities=FRAMEWORK_CAPABILITIES["vectorbt_oss"], extra=extra, ) diff --git a/validation/frameworks/vectorbt_pro.py b/validation/frameworks/vectorbt_pro.py index 15e8a427..b1d0e61a 100644 --- a/validation/frameworks/vectorbt_pro.py +++ b/validation/frameworks/vectorbt_pro.py @@ -1,6 +1,6 @@ """VectorBT Pro framework driver for validation scenarios. -Consolidates 17 run_vectorbt_pro() functions into a single parameterized driver. +Provides one parameterized driver for the scenario matrix. VectorBT Pro uses same-bar execution with close fills by default. Licensed software; guarded by try/except ImportError. @@ -16,9 +16,11 @@ import pandas as pd sys.path.insert(0, str(Path(__file__).parent.parent)) +from common.canonical_records import vectorbt_fills, vectorbt_trades +from common.capabilities import FRAMEWORK_CAPABILITIES from common.types import FrameworkResult, ScenarioConfig -SUPPORTED_VECTORBT_PRO_VERSION = "2025.12.31" +SUPPORTED_VECTORBT_PRO_VERSION = "2026.6.27" def _require_supported_version(actual_version: str) -> None: @@ -125,28 +127,9 @@ def run( trade_list = trades.to_dict("records") if len(trades) > 0 else [] order_list = pf.orders.records_readable.to_dict("records") - normalized_trades = [] - for index, t in enumerate(trade_list): - entry_order = order_list[index * 2] if index * 2 < len(order_list) else {} - exit_order = order_list[index * 2 + 1] if index * 2 + 1 < len(order_list) else {} - size = float(t.get("Size", scenario.shares)) - direction = t.get("Direction", "Long") - entry_price = float( - entry_order.get("Price", t.get("Avg Entry Price", t.get("Entry Price", 0))) - ) - exit_price = float(exit_order.get("Price", t.get("Avg Exit Price", t.get("Exit Price", 0)))) - direction_sign = -1.0 if str(direction).lower() == "short" else 1.0 - fees = abs(float(entry_order.get("Fees", t.get("Entry Fees", 0)))) + abs( - float(exit_order.get("Fees", t.get("Exit Fees", 0))) - ) - normalized = { - "entry_price": entry_price, - "exit_price": exit_price, - "pnl": (exit_price - entry_price) * size * direction_sign - fees, - "size": size, - "direction": direction, - } - normalized_trades.append(normalized) + asset = str(scenario.constants.get("asset", "TEST")) + normalized_trades = vectorbt_trades(trade_list, asset=asset) + normalized_fills = vectorbt_fills(order_list, asset=asset) extra = {} if "commission" in scenario.extra_checks: @@ -161,5 +144,7 @@ def run( total_pnl=final_value - scenario.initial_cash, num_trades=len(trades), trades=normalized_trades, + fills=normalized_fills, + capabilities=FRAMEWORK_CAPABILITIES["vectorbt_pro"], extra=extra, ) diff --git a/validation/frameworks/zipline.py b/validation/frameworks/zipline.py index 089eeb3c..6d1552aa 100644 --- a/validation/frameworks/zipline.py +++ b/validation/frameworks/zipline.py @@ -1,6 +1,6 @@ """Zipline framework driver for validation scenarios. -Consolidates 15 run_zipline() functions into a single parameterized driver. +Provides one parameterized driver for the scenario matrix. Zipline uses next-bar execution with open fills. Requires: - exchange_calendars for NYSE trading calendar dates @@ -17,6 +17,8 @@ import pandas as pd sys.path.insert(0, str(Path(__file__).parent.parent)) +from common.canonical_records import zipline_fills +from common.capabilities import FRAMEWORK_CAPABILITIES from common.types import FrameworkResult, ScenarioConfig from ml4t.backtest._validation.zipline_runner import ( @@ -221,8 +223,10 @@ def analyze(context, perf): for trade in trade_list: trade["entry_time"] = trade.pop("entry_date") trade["exit_time"] = trade.pop("exit_date") + trade["asset"] = "TEST" trade["size"] = trade.pop("quantity") trade["direction"] = str(trade.pop("side")).title() + trade_commission = 0.0 if "commission_rate" in constants: trade_commission = ( constants["commission_rate"] @@ -235,7 +239,14 @@ def analyze(context, perf): trade_commission = constants["per_share_rate"] * float(trade["size"]) * 2 total_commission += trade_commission trade["pnl"] = float(trade["pnl"]) - trade_commission + trade["commission"] = trade_commission num_trades = len(trade_list) + fill_list = zipline_fills( + transactions, + asset="TEST", + commission_rate=float(constants.get("commission_rate", 0.0)), + per_share_rate=float(constants.get("per_share_rate", 0.0)), + ) extra = {} if "commission" in scenario.extra_checks: @@ -249,6 +260,8 @@ def analyze(context, perf): total_pnl=final_value - scenario.initial_cash, num_trades=num_trades, trades=trade_list, + fills=fill_list, + capabilities=FRAMEWORK_CAPABILITIES["zipline"], extra=extra, ) diff --git a/validation/generate_parity_claims.py b/validation/generate_parity_claims.py index 3b38410a..5008d48a 100644 --- a/validation/generate_parity_claims.py +++ b/validation/generate_parity_claims.py @@ -8,9 +8,15 @@ from pathlib import Path from typing import Any +from common.correctness_evidence import correctness_report_failures +from common.framework_registry import load_framework_manifest +from large_scale_evidence import report_failures as large_scale_report_failures +from scenarios.definitions import SCENARIOS + PROJECT_ROOT = Path(__file__).parent.parent CORRECTNESS_EVIDENCE = PROJECT_ROOT / "validation" / "CORRECTNESS_RESULTS.json" -LARGE_SCALE_EVIDENCE = PROJECT_ROOT / "validation" / "vectorbt_pro" / "large_scale_parity.json" +LARGE_SCALE_EVIDENCE = PROJECT_ROOT / "validation" / "LARGE_SCALE_RESULTS.json" +REAL_STRATEGY_EVIDENCE = PROJECT_ROOT / "validation" / "REAL_STRATEGY_RESULTS.json" TARGETS = ( PROJECT_ROOT / "README.md", PROJECT_ROOT / "docs" / "index.md", @@ -21,6 +27,7 @@ START_MARKER = "" END_MARKER = "" GITHUB_EVIDENCE_ROOT = "https://github.com/ml4t/backtest/blob/main/validation" +SCENARIO_FRAMEWORKS = load_framework_manifest().scenario_framework_ids def _load_json(path: Path) -> dict[str, Any]: @@ -30,32 +37,72 @@ def _load_json(path: Path) -> dict[str, Any]: return payload -def _validate_evidence(correctness: dict[str, Any], large_scale: dict[str, Any]) -> None: +def _validate_evidence( + correctness: dict[str, Any], + large_scale: dict[str, Any], + real_strategy: dict[str, Any], +) -> None: + failures = correctness_report_failures(correctness) + if failures: + raise ValueError("Accepted correctness evidence is invalid: " + "; ".join(failures)) frameworks = correctness.get("frameworks") records = correctness.get("records") if not isinstance(frameworks, dict) or not isinstance(records, list): raise ValueError("Correctness evidence lacks framework pins or records") - expected = {"vectorbt_pro", "vectorbt_oss", "backtrader", "zipline"} + expected = set(SCENARIO_FRAMEWORKS) if set(frameworks) != expected: raise ValueError("Correctness evidence does not cover the required framework matrix") for framework in expected: framework_records = [record for record in records if record.get("framework") == framework] - if len(framework_records) != 16: - raise ValueError(f"Expected 16 retained records for {framework}") - if large_scale.get("exact_comparison", {}).get("passed") is not True: - raise ValueError("Large-scale evidence is not an exact canonical pass") + if len(framework_records) != len(SCENARIOS): + raise ValueError(f"Expected {len(SCENARIOS)} retained records for {framework}") + scale_failures = large_scale_report_failures(large_scale) + if scale_failures: + raise ValueError("Accepted large-scale evidence is invalid: " + "; ".join(scale_failures)) + scope = real_strategy.get("scope") + real_records = real_strategy.get("records") + if ( + real_strategy.get("schema_version") != 1 + or not isinstance(scope, dict) + or not isinstance(real_records, list) + ): + raise ValueError("Real-strategy evidence is malformed") + if scope.get("required_pairs") != 8 or scope.get("unsupported_pairs") != 7: + raise ValueError("Real-strategy evidence does not cover the declared applicability matrix") + required = [record for record in real_records if record.get("status") != "unsupported"] + if len(required) != 8: + raise ValueError("Real-strategy evidence lacks required pair records") + if not all(record.get("negative_control", {}).get("detected") is True for record in required): + raise ValueError("Real-strategy evidence lacks a passing negative control") + +def _comparison_checks(record: dict[str, Any]) -> dict[str, dict[str, Any]]: + comparison = record.get("comparison") + if not isinstance(comparison, dict) or not isinstance(comparison.get("checks"), list): + raise ValueError(f"Large-scale comparison checks are missing: {record.get('framework')}") + return { + str(check["name"]): check + for check in comparison["checks"] + if isinstance(check, dict) and "name" in check + } -def render_claims(correctness: dict[str, Any], large_scale: dict[str, Any]) -> str: + +def render_claims( + correctness: dict[str, Any], + large_scale: dict[str, Any], + real_strategy: dict[str, Any], +) -> str: """Render the canonical documentation block.""" - _validate_evidence(correctness, large_scale) + _validate_evidence(correctness, large_scale, real_strategy) frameworks = correctness["frameworks"] records = correctness["records"] correctness_url = f"{GITHUB_EVIDENCE_ROOT}/CORRECTNESS_RESULTS.json" - large_scale_url = f"{GITHUB_EVIDENCE_ROOT}/vectorbt_pro/large_scale_parity.json" + large_scale_url = f"{GITHUB_EVIDENCE_ROOT}/LARGE_SCALE_RESULTS.json" + real_strategy_url = f"{GITHUB_EVIDENCE_ROOT}/REAL_STRATEGY_RESULTS.json" + real_performance_url = f"{GITHUB_EVIDENCE_ROOT}/REAL_STRATEGY_PERFORMANCE.json" rows = [] - for framework in ("vectorbt_pro", "vectorbt_oss", "backtrader", "zipline"): + for framework in SCENARIO_FRAMEWORKS: pin = frameworks[framework] framework_records = [record for record in records if record["framework"] == framework] required = [record for record in framework_records if record["required"]] @@ -72,35 +119,97 @@ def render_claims(correctness: dict[str, Any], large_scale: dict[str, Any]) -> s f"[scenario evidence]({correctness_url}) |" ) - comparison = large_scale["exact_comparison"] - reference = large_scale["reference"] - large_row = ( - f"| `vectorbt_strict` | VectorBT Pro {reference['version']} " - f"(`{reference['git_commit'][:12]}`) | {comparison['trades']['count']:,} trades | " - f"0 | {comparison['terminal_value']['reference_canonical']:.6f} | " - f"[large-scale evidence]({large_scale_url}) |" - ) + scale_rows = [] + for record in large_scale["frameworks"]: + target = record["target"] + checks = _comparison_checks(record) + intents = checks["order_intents"]["expected_count"] + fills = checks["fills"]["expected_count"] + trades = checks["trades"]["expected_count"] + terminal_value = checks["final_value"]["canonical_expected"] + pinned_framework = f"[{target['display_name']} {target['version']}]({target['source']})" + scale_rows.append( + f"| `{target['profile']}` | {pinned_framework} | {intents:,} | {fills:,} | " + f"{trades:,} | {terminal_value:,.6f} | " + f"[scale evidence]({large_scale_url}) |" + ) + + workload = large_scale["workload"] + recipe = workload["recipe"] + real_rows = [] + required_real = [ + record for record in real_strategy["records"] if record["status"] != "unsupported" + ] + passed_real = sum(record["status"] == "pass" for record in required_real) + real_targets = real_strategy["provenance"]["frameworks"] + case_labels = { + "etfs": "ETF allocation", + "cme_futures": "CME futures", + "crypto_perps_funding": "Crypto perpetual funding", + } + for record in required_real: + target = real_targets[record["framework"]] + pinned_framework = f"[{target['display_name']} {target['version']}]({target['source']})" + fills = record["surfaces"]["fills"] + equity = record["surfaces"]["equity"] + terminal = record["surfaces"]["terminal"] + if record["status"] == "pass": + result = ( + f"exact: {fills['framework_records']:,} fills, " + f"{equity['coverage']['shared_timestamps']:,} valuations, terminal" + ) + else: + result = ( + f"fills exact; equity gap {equity['max_canonical_difference']}; " + f"terminal gap {terminal['max_canonical_difference']}" + ) + real_rows.append( + f"| {case_labels[record['case_study']]} | {pinned_framework} | {result} | " + f"[real-strategy evidence]({real_strategy_url}) |" + ) return "\n".join( [ START_MARKER, "", "", - 'Scenario claims use the retained release-candidate matrix. "Exact" appears only when ' - "every required scenario has zero canonical gap.", + "### Real-strategy audit", + "", + f"{passed_real}/{len(required_real)} supported pairs pass. The audit uses three " + "production-selected strategies with frozen historical market data and model-derived " + "targets. A pass requires zero numeric gap after 1e-8 quantization across every " + "shared valuation timestamp, the complete canonical fill stream, and terminal value. " + "The two CME rows retain exact fills but fail the equity and terminal checks.", + "", + "| Real strategy | Pinned framework | Current result | Evidence |", + "|---|---|---|---|", + *real_rows, + "", + f"Engine-only timing samples for the six passing pairs are retained in " + f"[real-strategy performance evidence]({real_performance_url}). These measurements " + "support only the named strategy, framework version, input bundle, and machine.", + "", + "### Synthetic diagnostic scenarios", + "", + 'The scenario matrix contains synthetic conformance tests. "Exact" means terminal values, ' + "ordered closed trades, and ordered fills match after 1e-8 quantization. Each record " + "declares whether a surface is native, reconstructed, aggregate-only, input-only, or " + "unavailable. These results test isolated conventions, not realistic strategy " + "equivalence.", "", "| Profile | Pinned framework | Required scenarios | Evidence |", "|---|---|---:|---|", *rows, "", - "Large-scale claims are published only when a retained workload has zero canonical gap.", - "", - "| Profile | Pinned framework | Compared | Trade gap | Terminal value | Evidence |", - "|---|---|---:|---:|---:|---|", - large_row, + f"The synthetic stress workload contains {recipe['assets']:,} assets and " + f"{recipe['bars']:,} daily sessions ({workload['data_points']:,} bars). Every row " + "has zero canonical gap for target intents, native fills, closed trades reconstructed " + "from those fills, and terminal state reconstructed from the fill ledger and final " + "marks.", "", - "No large-scale claim is published for Backtrader, Zipline, VectorBT OSS, or LEAN " - "without a passing retained artifact.", + "| Profile | Current framework | Target intents | Native fills | Fill-derived closed trades | Terminal value | Evidence |", + "|---|---|---:|---:|---:|---:|---|", + *scale_rows, END_MARKER, ] ) @@ -117,7 +226,11 @@ def replace_claims(document: str, claims: str, *, path: Path) -> str: def synchronize(*, check: bool) -> list[Path]: """Write generated blocks or return documents that differ from evidence.""" - claims = render_claims(_load_json(CORRECTNESS_EVIDENCE), _load_json(LARGE_SCALE_EVIDENCE)) + claims = render_claims( + _load_json(CORRECTNESS_EVIDENCE), + _load_json(LARGE_SCALE_EVIDENCE), + _load_json(REAL_STRATEGY_EVIDENCE), + ) changed: list[Path] = [] for path in TARGETS: current = path.read_text(encoding="utf-8") diff --git a/validation/large_scale_evidence.py b/validation/large_scale_evidence.py new file mode 100644 index 00000000..eba4d79e --- /dev/null +++ b/validation/large_scale_evidence.py @@ -0,0 +1,877 @@ +#!/usr/bin/env python3 +"""Generate and validate reproducible cross-framework large-scale evidence.""" + +from __future__ import annotations + +import argparse +import hashlib +import importlib.metadata +import json +import os +import subprocess +import sys +import tempfile +from dataclasses import asdict, dataclass, replace +from datetime import UTC, datetime +from decimal import ROUND_HALF_EVEN, Decimal +from functools import cache +from pathlib import Path +from typing import Any, cast + +import numpy as np +import pandas as pd + +VALIDATION_DIR = Path(__file__).parent +PROJECT_ROOT = VALIDATION_DIR.parent +sys.path.insert(0, str(PROJECT_ROOT)) +sys.path.insert(0, str(PROJECT_ROOT / "src")) +sys.path.insert(0, str(VALIDATION_DIR)) + +import benchmark_suite as suite # noqa: E402 +from common.framework_registry import FrameworkTarget, load_framework_manifest # noqa: E402 + +SCHEMA_VERSION = 1 +MONEY_QUANTUM = Decimal("0.000001") +FRAMEWORKS = ("vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean") +ACCEPTED_PATH = VALIDATION_DIR / "LARGE_SCALE_RESULTS.json" +CANDIDATE_DIR = VALIDATION_DIR / "candidates" +CANDIDATE_PATH = CANDIDATE_DIR / "LARGE_SCALE_RESULTS.candidate.json" +HISTORICAL_ACCEPTED_PATH = VALIDATION_DIR / "vectorbt_pro" / "controlled_replay-2025.12.31.json" +HISTORICAL_CANDIDATE_PATH = VALIDATION_DIR / "candidates" / "vectorbt_pro-2025.12.31.candidate.json" +HISTORICAL_VECTORBT_PRO_VERSION = "2025.12.31" +HISTORICAL_VECTORBT_PRO_COMMIT = "1305a1e1974325db9382eaeacc6452e9b075ca71" +HISTORICAL_VECTORBT_PRO_ENV = ".venv-vectorbt-pro-312" +HISTORICAL_VECTORBT_PRO_PYTHON_ENV_VAR = "ML4T_VECTORBT_PRO_HISTORICAL_PYTHON" + + +@dataclass(frozen=True) +class ScaleWorkload: + """Content-addressed public workload recipe.""" + + name: str = "controlled_250_assets_5040_sessions" + seed: int = 42 + bars: int = 5_040 + assets: int = 250 + top_n: int = 25 + bottom_n: int = 25 + rebalance_frequency: int = 1 + end_session: str = "2025-12-31" + initial_cash: float = 1_000_000.0 + long_target_shares: float = 100.0 + short_target_shares: float = -100.0 + + @property + def data_points(self) -> int: + return self.bars * self.assets + + def benchmark_config(self) -> suite.BenchmarkConfig: + return suite.BenchmarkConfig( + name=self.name, + n_bars=self.bars, + n_assets=self.assets, + frequency="D", + top_n=self.top_n, + bottom_n=self.bottom_n, + rebalance_freq=self.rebalance_frequency, + initial_cash=self.initial_cash, + lean_force_zero_fee=True, + lean_force_zero_slippage=True, + end_session=self.end_session, + ) + + +WORKLOAD = ScaleWorkload() + + +def _sha256_bytes(value: bytes) -> str: + return hashlib.sha256(value).hexdigest() + + +def _json_digest(value: object) -> str: + return _sha256_bytes( + json.dumps(value, sort_keys=True, separators=(",", ":"), default=str).encode() + ) + + +def _update_array(digest: Any, label: str, values: np.ndarray) -> None: + array = np.ascontiguousarray(values) + digest.update(label.encode()) + digest.update(array.dtype.str.encode()) + digest.update(str(array.shape).encode()) + digest.update(array.tobytes()) + + +def _datetime_ns(index: pd.DatetimeIndex) -> np.ndarray: + normalized = index.tz_convert("UTC").tz_localize(None) if index.tz is not None else index + return normalized.to_numpy(dtype="datetime64[ns]").view(" str: + """Hash every generated input value independently of pandas internals.""" + digest = hashlib.sha256() + _update_array(digest, "dates", _datetime_ns(dates)) + for asset in sorted(price_data): + frame = price_data[asset] + digest.update(asset.encode()) + _update_array(digest, "index", _datetime_ns(pd.DatetimeIndex(frame.index))) + for column in ("open", "high", "low", "close", "volume"): + _update_array(digest, column, frame[column].to_numpy()) + signal_dates = pd.DatetimeIndex(pd.to_datetime(signals["timestamp"])) + _update_array(digest, "signal_dates", _datetime_ns(signal_dates)) + digest.update("\0".join(signals["asset"].astype(str)).encode()) + _update_array(digest, "scores", signals["score"].to_numpy()) + return digest.hexdigest() + + +def _effective_prices( + framework: str, price_data: dict[str, pd.DataFrame] +) -> dict[str, pd.DataFrame]: + decimals = 3 if framework == "zipline" else 4 if framework == "lean" else None + if decimals is None: + return price_data + effective: dict[str, pd.DataFrame] = {} + for asset, frame in price_data.items(): + converted = frame.copy() + converted.loc[:, ["open", "high", "low", "close"]] = converted[ + ["open", "high", "low", "close"] + ].round(decimals) + effective[asset] = converted + return effective + + +def _canonical_money(value: float) -> float: + return float(Decimal(str(value)).quantize(MONEY_QUANTUM, rounding=ROUND_HALF_EVEN)) + + +def _float_value(value: object) -> float: + if not isinstance(value, (int, float)) or isinstance(value, bool): + raise TypeError(f"Expected a numeric canonical value, got {type(value).__name__}") + return float(value) + + +def _terminal_state( + result: suite.BenchmarkResult, + effective_prices: dict[str, pd.DataFrame], + initial_cash: float, +) -> dict[str, object]: + fills = suite.canonical_fill_records(result.fills_df, timestamp_domain="session_date") or [] + positions: dict[str, float] = {} + cash = initial_cash + for fill in fills: + quantity = _float_value(fill["quantity"]) + signed = quantity if fill["side"] == "buy" else -quantity + asset = str(fill["asset"]) + positions[asset] = positions.get(asset, 0.0) + signed + cash -= signed * _float_value(fill["price"]) + cash -= _float_value(fill["commission"]) + positions = {asset: quantity for asset, quantity in sorted(positions.items()) if quantity != 0} + holdings = sum( + quantity * float(effective_prices[asset]["close"].iloc[-1]) + for asset, quantity in positions.items() + ) + state = { + "cash_from_fill_ledger": _canonical_money(cash), + "holdings_from_fill_ledger": _canonical_money(holdings), + "positions": {asset: _canonical_money(quantity) for asset, quantity in positions.items()}, + "reported_final_value": _canonical_money(result.final_value), + } + state["sha256"] = _json_digest(state) + return state + + +def _source_digests() -> dict[str, str]: + paths = { + "benchmark_suite": VALIDATION_DIR / "benchmark_suite.py", + "framework_manifest": VALIDATION_DIR / "framework_targets.toml", + "large_scale_runner": Path(__file__), + "profiles": PROJECT_ROOT / "src" / "ml4t" / "backtest" / "profiles.py", + } + return {name: _sha256_bytes(path.read_bytes()) for name, path in paths.items()} + + +def _git_identity() -> dict[str, object]: + commit = subprocess.run( + ["git", "rev-parse", "HEAD"], + cwd=PROJECT_ROOT, + check=True, + capture_output=True, + text=True, + ).stdout.strip() + status = subprocess.run( + ["git", "status", "--porcelain", "--untracked-files=no"], + cwd=PROJECT_ROOT, + check=True, + capture_output=True, + text=True, + ).stdout.strip() + return {"commit": commit, "dirty": bool(status)} + + +def _actual_target(target: FrameworkTarget) -> dict[str, object]: + if target.package == "lean": + actual_version = target.version + else: + actual_version = importlib.metadata.version(target.package) + metadata = {**target.evidence_metadata(), "actual_version": actual_version} + if target.package == "vectorbtpro": + distribution = importlib.metadata.distribution(target.package) + direct_url_text = distribution.read_text("direct_url.json") + if direct_url_text is None: + raise RuntimeError("Installed vectorbtpro lacks direct_url.json source provenance") + direct_url = json.loads(direct_url_text) + vcs_info = direct_url.get("vcs_info", {}) + actual_commit = vcs_info.get("commit_id") + if actual_commit != target.source_commit: + raise RuntimeError( + f"Installed vectorbtpro commit {actual_commit!r} does not match declared target " + f"{target.source_commit!r}" + ) + metadata["actual_commit"] = actual_commit + metadata["actual_immutable_id"] = f"git:{actual_commit}" + return metadata + + +def _declared_target_metadata(target: dict[str, Any]) -> dict[str, Any]: + return {key: value for key, value in target.items() if not key.startswith("actual_")} + + +def _framework_run( + framework: str, + config: suite.BenchmarkConfig, + price_data: dict[str, pd.DataFrame], + signals: pd.DataFrame, + dates: pd.DatetimeIndex, +) -> tuple[suite.BenchmarkResult, suite.BenchmarkResult]: + if framework == "vectorbt_pro": + external = suite.benchmark_vectorbt_pro(config, price_data, signals, dates) + ml4t = suite.benchmark_ml4t( + config, + price_data, + signals, + dates, + execution_mode="same_bar", + profile_override="vectorbt_strict", + ) + elif framework == "vectorbt_oss": + external = suite.benchmark_vectorbt_oss(config, price_data, signals, dates) + ml4t = suite.benchmark_ml4t( + config, + price_data, + signals, + dates, + execution_mode="same_bar", + profile_override="vectorbt_oss_strict", + ) + elif framework == "backtrader": + external = suite.benchmark_backtrader(config, price_data, signals, dates) + ml4t = suite.benchmark_ml4t( + config, + price_data, + signals, + dates, + execution_mode="next_bar", + profile_override="backtrader_strict", + ) + elif framework == "zipline": + external = suite.benchmark_zipline(config, price_data, signals, dates) + ml4t = suite.benchmark_ml4t( + config, + price_data, + signals, + dates, + execution_mode="next_bar", + profile_override="zipline_strict", + ) + elif framework == "lean": + external = suite.benchmark_lean(config, price_data, signals, dates) + ml4t = suite.benchmark_ml4t( + config, + price_data, + signals, + dates, + execution_mode="next_bar", + profile_override="lean", + ) + else: + raise ValueError(f"Unknown scale framework: {framework}") + return external, ml4t + + +def _use_canonical_fill_backed_trades( + external: suite.BenchmarkResult, + ml4t: suite.BenchmarkResult, +) -> None: + for result in (external, ml4t): + result.trades_df = suite.closed_trades_from_fills(result.fills_df) + records = suite.canonical_trade_records(result.trades_df) + result.num_trades = len(records) if records is not None else 0 + + +def _historical_vectorbt_pro_target() -> FrameworkTarget: + current = load_framework_manifest().targets["vectorbt_pro"] + return replace( + current, + version=HISTORICAL_VECTORBT_PRO_VERSION, + source_commit=HISTORICAL_VECTORBT_PRO_COMMIT, + immutable_id=f"git:{HISTORICAL_VECTORBT_PRO_COMMIT}", + environment=HISTORICAL_VECTORBT_PRO_ENV, + python_env_var=HISTORICAL_VECTORBT_PRO_PYTHON_ENV_VAR, + ) + + +def run_worker( + framework: str, + workload: ScaleWorkload = WORKLOAD, + *, + target_override: FrameworkTarget | None = None, +) -> dict[str, Any]: + """Execute one external/ML4T scale pair and retain exact digests.""" + manifest = load_framework_manifest() + target = target_override or manifest.targets[framework] + if target.framework_id != framework: + raise ValueError(f"Target {target.framework_id!r} cannot identify framework {framework!r}") + actual_target = _actual_target(target) + if actual_target["actual_version"] != target.version: + raise RuntimeError( + f"Installed {target.package} version {actual_target['actual_version']} does not match " + f"declared target {target.version}" + ) + config = workload.benchmark_config() + price_data, signals, dates = suite.generate_benchmark_data(config, seed=workload.seed) + raw_digest = input_digest(price_data, signals, dates) + effective_prices = _effective_prices(framework, price_data) + effective_digest = input_digest(effective_prices, signals, dates) + external, ml4t = _framework_run(framework, config, price_data, signals, dates) + _use_canonical_fill_backed_trades(external, ml4t) + comparison = cast( + dict[str, Any], + suite.compare_benchmark_results_exact( + external, + ml4t, + initial_cash=config.initial_cash, + timestamp_domain="session_date", + ), + ) + expected_terminal = _terminal_state(external, effective_prices, config.initial_cash) + actual_terminal = _terminal_state(ml4t, effective_prices, config.initial_cash) + terminal_check = { + "name": "terminal_state", + "passed": expected_terminal == actual_terminal, + "expected_sha256": expected_terminal["sha256"], + "actual_sha256": actual_terminal["sha256"], + "expected": expected_terminal, + "actual": actual_terminal, + } + comparison["checks"].append(terminal_check) + comparison["passed"] = bool(comparison["passed"] and terminal_check["passed"]) + return { + "framework": framework, + "target": actual_target, + "python": { + "version": sys.version.split()[0], + "implementation": sys.implementation.name, + }, + "ml4t": _git_identity(), + "source_digests": _source_digests(), + "input": { + "raw_sha256": raw_digest, + "effective_sha256": effective_digest, + "conversion": ( + "OHLC rounded to 3 decimals before both engines" + if framework == "zipline" + else "OHLC rounded to 4 decimals before both engines" + if framework == "lean" + else "none" + ), + }, + "capabilities": { + "intents": "canonical strategy trace", + "fills": "native", + "closed_trades": "reconstructed from canonical native fills", + "terminal_state": "reconstructed from native fills and final marks", + "fill_order": "session, asset, side, quantity, price", + }, + "runtime_seconds": { + "framework": external.runtime_sec, + "ml4t": ml4t.runtime_sec, + "not_a_performance_claim": True, + }, + "comparison": comparison, + } + + +def build_report( + records: list[dict[str, Any]], workload: ScaleWorkload = WORKLOAD +) -> dict[str, Any]: + """Build one candidate report from isolated worker records.""" + return { + "schema_version": SCHEMA_VERSION, + "generated_at": datetime.now(UTC).isoformat(), + "workload": { + "recipe": asdict(workload), + "recipe_sha256": _json_digest(asdict(workload)), + "data_points": workload.data_points, + "generator": "validation.benchmark_suite.generate_benchmark_data", + "redistributable": True, + }, + "frameworks": records, + "release_gate_passed": len(records) == len(FRAMEWORKS) + and all(record.get("comparison", {}).get("passed") is True for record in records), + } + + +def _comparison_signature(record: dict[str, Any]) -> dict[str, Any]: + comparison = cast(dict[str, Any], record["comparison"]) + checks = cast(list[dict[str, Any]], comparison["checks"]) + signature: dict[str, Any] = {} + for check in checks: + name = str(check["name"]) + if "expected_sha256" in check: + signature[name] = { + "count": check.get("expected_count"), + "sha256": check["expected_sha256"], + } + else: + signature[name] = check["canonical_expected"] + return signature + + +def build_historical_report( + current_record: dict[str, Any], + historical_record: dict[str, Any], + workload: ScaleWorkload = WORKLOAD, +) -> dict[str, Any]: + """Build evidence that one historical target matches the accepted current target.""" + current_signature = _comparison_signature(current_record) + historical_signature = _comparison_signature(historical_record) + return { + "schema_version": SCHEMA_VERSION, + "generated_at": datetime.now(UTC).isoformat(), + "audit_trigger": { + "ml4t_commit": "488c05d84e74156aba71c4f7ffac28df3881fea9", + "cause": "vectorbt collateral semantics missing from the ML4T comparison profile", + "external_fill_count": 390_369, + "ml4t_fill_count": 418_825, + "external_final_value": 716_785.408089, + "ml4t_final_value": 1_162_222.354417, + }, + "workload": { + "recipe": asdict(workload), + "recipe_sha256": _json_digest(asdict(workload)), + "data_points": workload.data_points, + "generator": "validation.benchmark_suite.generate_benchmark_data", + "redistributable": True, + }, + "current": current_record, + "historical": historical_record, + "framework_output_comparison": { + "current": current_signature, + "historical": historical_signature, + "passed": current_signature == historical_signature, + }, + "release_gate_passed": historical_record.get("comparison", {}).get("passed") is True + and current_signature == historical_signature, + } + + +@cache +def _expected_input_digest(workload: ScaleWorkload) -> str: + config = workload.benchmark_config() + prices, signals, dates = suite.generate_benchmark_data(config, seed=workload.seed) + return input_digest(prices, signals, dates) + + +def report_failures(report: dict[str, Any], *, reconstruct_input: bool = False) -> list[str]: + """Return every reason a large-scale candidate cannot be accepted.""" + failures: list[str] = [] + if report.get("schema_version") != SCHEMA_VERSION: + return [f"Unsupported large-scale schema: {report.get('schema_version')!r}"] + raw_workload_value = report.get("workload") + if not isinstance(raw_workload_value, dict): + raw_workload: dict[str, Any] = {} + else: + raw_workload = cast(dict[str, Any], raw_workload_value) + if raw_workload.get("recipe") != asdict(WORKLOAD): + failures.append("Large-scale workload recipe differs") + elif raw_workload.get("recipe_sha256") != _json_digest(asdict(WORKLOAD)): + failures.append("Large-scale workload recipe digest differs") + raw_records = report.get("frameworks") + if not isinstance(raw_records, list): + return failures + ["Large-scale framework records must be a list"] + records: dict[str, dict[str, Any]] = {} + for raw_record in raw_records: + if not isinstance(raw_record, dict): + continue + record = cast(dict[str, Any], raw_record) + framework_id = record.get("framework") + if isinstance(framework_id, str): + records[framework_id] = record + if set(records) != set(FRAMEWORKS): + failures.append("Large-scale framework coverage differs") + manifest = load_framework_manifest() + expected_sources = _source_digests() + reconstructed = _expected_input_digest(WORKLOAD) if reconstruct_input else None + raw_digests: set[str] = set() + for framework in FRAMEWORKS: + record = records.get(framework) + if not isinstance(record, dict): + continue + target = record.get("target") + expected_target = manifest.targets[framework].evidence_metadata() + if ( + not isinstance(target, dict) + or _declared_target_metadata(target) != expected_target + or target.get("actual_version") != expected_target["version"] + ): + failures.append(f"{framework} target identity differs") + elif framework == "vectorbt_pro" and ( + target.get("actual_commit") != expected_target["commit"] + or target.get("actual_immutable_id") != expected_target["immutable_id"] + ): + failures.append(f"{framework} installed source identity differs") + if record.get("source_digests") != expected_sources: + failures.append(f"{framework} source digests differ") + ml4t = record.get("ml4t") + if not isinstance(ml4t, dict) or ml4t.get("dirty") is not False: + failures.append(f"{framework} was not produced from a clean ML4T tree") + elif not isinstance(ml4t.get("commit"), str) or len(str(ml4t["commit"])) != 40: + failures.append(f"{framework} ML4T commit identity is missing") + python = record.get("python") + if not isinstance(python, dict) or not all( + isinstance(python.get(key), str) for key in ("version", "implementation") + ): + failures.append(f"{framework} Python identity is missing") + input_record = record.get("input") + if not isinstance(input_record, dict) or not isinstance( + input_record.get("raw_sha256"), str + ): + failures.append(f"{framework} input evidence is missing") + else: + raw_digest = str(input_record["raw_sha256"]) + raw_digests.add(raw_digest) + if reconstructed is not None and raw_digest != reconstructed: + failures.append(f"{framework} input digest does not reconstruct") + effective_digest = input_record.get("effective_sha256") + if not isinstance(effective_digest, str) or len(effective_digest) != 64: + failures.append(f"{framework} effective-input digest is missing") + capabilities = record.get("capabilities") + if not isinstance(capabilities, dict) or set(capabilities) != { + "intents", + "fills", + "closed_trades", + "terminal_state", + "fill_order", + }: + failures.append(f"{framework} capability declaration is incomplete") + comparison = record.get("comparison") + if not isinstance(comparison, dict) or comparison.get("passed") is not True: + failures.append(f"{framework} exact comparison did not pass") + continue + checks = comparison.get("checks") + if not isinstance(checks, list): + failures.append(f"{framework} comparison checks are missing") + continue + names = {check.get("name") for check in checks if isinstance(check, dict)} + expected_names = { + "order_intents", + "fills", + "trades", + "trade_count", + "total_pnl", + "final_value", + "terminal_state", + } + if names != expected_names or any( + not isinstance(check, dict) or check.get("passed") is not True for check in checks + ): + failures.append(f"{framework} comparison surface is incomplete or failed") + continue + for check in checks: + assert isinstance(check, dict) + name = check["name"] + if name in {"order_intents", "fills", "trades", "terminal_state"}: + expected_hash = check.get("expected_sha256") + actual_hash = check.get("actual_sha256") + if ( + not isinstance(expected_hash, str) + or len(expected_hash) != 64 + or expected_hash != actual_hash + ): + failures.append(f"{framework} {name} digest comparison differs") + elif check.get("canonical_expected") != check.get("canonical_actual"): + failures.append(f"{framework} {name} canonical values differ") + if len(raw_digests) > 1: + failures.append("Large-scale framework inputs differ") + if report.get("release_gate_passed") is not True: + failures.append("Large-scale release gate did not pass") + return failures + + +def historical_report_failures( + report: dict[str, Any], *, reconstruct_input: bool = False +) -> list[str]: + """Return every reason a historical replay candidate cannot be accepted.""" + failures: list[str] = [] + if report.get("schema_version") != SCHEMA_VERSION: + return [f"Unsupported historical replay schema: {report.get('schema_version')!r}"] + workload = report.get("workload") + if not isinstance(workload, dict) or workload.get("recipe") != asdict(WORKLOAD): + failures.append("Historical replay workload recipe differs") + elif workload.get("recipe_sha256") != _json_digest(asdict(WORKLOAD)): + failures.append("Historical replay workload recipe digest differs") + current = report.get("current") + historical = report.get("historical") + if not isinstance(current, dict) or not isinstance(historical, dict): + return failures + ["Historical replay records are missing"] + manifest = load_framework_manifest() + current_target = manifest.targets["vectorbt_pro"].evidence_metadata() + historical_target = _historical_vectorbt_pro_target().evidence_metadata() + for label, record, expected_target in ( + ("current", current, current_target), + ("historical", historical, historical_target), + ): + target = record.get("target") + if ( + not isinstance(target, dict) + or _declared_target_metadata(target) != expected_target + or target.get("actual_version") != expected_target["version"] + ): + failures.append(f"VectorBT Pro {label} target identity differs") + elif ( + target.get("actual_commit") != expected_target["commit"] + or target.get("actual_immutable_id") != expected_target["immutable_id"] + ): + failures.append(f"VectorBT Pro {label} installed source identity differs") + if record.get("source_digests") != _source_digests(): + failures.append(f"VectorBT Pro {label} source digests differ") + ml4t = record.get("ml4t") + if not isinstance(ml4t, dict) or ml4t.get("dirty") is not False: + failures.append(f"VectorBT Pro {label} run used a dirty ML4T tree") + elif not isinstance(ml4t.get("commit"), str) or len(str(ml4t["commit"])) != 40: + failures.append(f"VectorBT Pro {label} ML4T commit identity is missing") + comparison = record.get("comparison") + if not isinstance(comparison, dict) or comparison.get("passed") is not True: + failures.append(f"VectorBT Pro {label} exact comparison did not pass") + input_record = record.get("input") + if not isinstance(input_record, dict): + failures.append(f"VectorBT Pro {label} input evidence is missing") + elif reconstruct_input and input_record.get("raw_sha256") != _expected_input_digest( + WORKLOAD + ): + failures.append(f"VectorBT Pro {label} input digest does not reconstruct") + if current.get("source_digests") != historical.get("source_digests"): + failures.append("Historical replay runs used different comparison sources") + if current.get("input") != historical.get("input"): + failures.append("Historical replay inputs differ") + output_comparison = report.get("framework_output_comparison") + expected_output_comparison = { + "current": _comparison_signature(current), + "historical": _comparison_signature(historical), + "passed": _comparison_signature(current) == _comparison_signature(historical), + } + if output_comparison != expected_output_comparison or not expected_output_comparison["passed"]: + failures.append("Historical and current VectorBT Pro outputs differ") + if report.get("release_gate_passed") is not True: + failures.append("Historical replay release gate did not pass") + return failures + + +def _resolve_python(framework: str) -> Path: + target = load_framework_manifest().targets[framework] + override = os.getenv(target.python_env_var or "") + if override: + return Path(override).expanduser().resolve() + if target.environment is None: + raise ValueError(f"{framework} has no environment") + return PROJECT_ROOT / target.environment / "bin" / "python" + + +def _resolve_historical_vectorbt_pro_python() -> Path: + override = os.getenv(HISTORICAL_VECTORBT_PRO_PYTHON_ENV_VAR) + if override: + return Path(override).expanduser().resolve() + return PROJECT_ROOT / HISTORICAL_VECTORBT_PRO_ENV / "bin" / "python" + + +def _run_isolated_worker( + framework: str, + interpreter: Path, + *, + historical_target: bool = False, +) -> dict[str, Any]: + if not interpreter.is_file(): + raise RuntimeError(f"Missing {framework} interpreter: {interpreter}") + with tempfile.TemporaryDirectory(prefix=f"ml4t-scale-{framework}-") as directory: + output = Path(directory) / "record.json" + command = [ + str(interpreter), + str(Path(__file__).resolve()), + "--worker", + framework, + "--output", + str(output), + ] + if historical_target: + command.append("--historical-target") + environment = os.environ.copy() + paths = [str(PROJECT_ROOT / "src"), str(VALIDATION_DIR)] + sibling_specs = PROJECT_ROOT.parent / "ml4t-specs" / "src" + if sibling_specs.is_dir(): + paths.append(str(sibling_specs)) + environment["PYTHONPATH"] = os.pathsep.join( + paths + ([environment["PYTHONPATH"]] if environment.get("PYTHONPATH") else []) + ) + completed = subprocess.run( + command, + cwd=PROJECT_ROOT, + env=environment, + capture_output=True, + text=True, + timeout=3_600, + check=False, + ) + record: dict[str, Any] | None = None + if output.is_file(): + try: + loaded = json.loads(output.read_text(encoding="utf-8")) + record = cast(dict[str, Any], loaded) if isinstance(loaded, dict) else None + except json.JSONDecodeError: + record = None + if record is not None and ( + completed.returncode != 0 or record.get("comparison", {}).get("passed") is not True + ): + diagnostic_path = CANDIDATE_DIR / f"{framework}.large_scale.candidate.json" + _write_json_atomic(diagnostic_path, record) + raise RuntimeError( + f"{framework} large-scale comparison failed; diagnostic retained at " + f"{diagnostic_path}: " + json.dumps(record.get("comparison"), indent=2)[-20_000:] + ) + if completed.returncode != 0 or record is None: + details = "\n".join( + stream.strip() for stream in (completed.stdout, completed.stderr) if stream.strip() + ) + raise RuntimeError( + f"{framework} scale worker exited {completed.returncode}: {details[-20_000:]}" + ) + return record + + +def run_all() -> dict[str, Any]: + """Run every framework in its isolated environment and return a candidate report.""" + records: list[dict[str, Any]] = [] + for framework in FRAMEWORKS: + interpreter = _resolve_python(framework) + print(f"Running {framework} large-scale pair...", flush=True) + records.append(_run_isolated_worker(framework, interpreter)) + print(f"{framework}: PASS", flush=True) + return build_report(records) + + +def run_historical_vectorbt_pro() -> dict[str, Any]: + """Replay the historical Pro target and compare it with accepted current evidence.""" + current_report = cast(dict[str, Any], json.loads(ACCEPTED_PATH.read_text(encoding="utf-8"))) + current_failures = report_failures(current_report, reconstruct_input=True) + if current_failures: + raise RuntimeError( + "Current large-scale evidence is not valid: " + "; ".join(current_failures) + ) + current_record = next( + record + for record in cast(list[dict[str, Any]], current_report["frameworks"]) + if record["framework"] == "vectorbt_pro" + ) + historical_record = _run_isolated_worker( + "vectorbt_pro", + _resolve_historical_vectorbt_pro_python(), + historical_target=True, + ) + return build_historical_report(current_record, historical_record) + + +def _write_json(path: Path, payload: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n", encoding="utf-8") + + +def _write_json_atomic(path: Path, payload: dict[str, Any]) -> None: + """Replace accepted evidence only after a complete temporary write.""" + path.parent.mkdir(parents=True, exist_ok=True) + serialized = json.dumps(payload, indent=2, sort_keys=True) + "\n" + with tempfile.NamedTemporaryFile( + mode="w", + encoding="utf-8", + dir=path.parent, + prefix=f".{path.name}.", + delete=False, + ) as handle: + temporary = Path(handle.name) + handle.write(serialized) + handle.flush() + os.fsync(handle.fileno()) + os.replace(temporary, path) + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--worker", choices=FRAMEWORKS) + parser.add_argument("--output", type=Path) + parser.add_argument("--check", action="store_true") + parser.add_argument("--verify-input", action="store_true") + parser.add_argument("--historical-target", action="store_true", help=argparse.SUPPRESS) + parser.add_argument("--historical-vectorbt-pro", action="store_true") + parser.add_argument("--check-historical-vectorbt-pro", action="store_true") + args = parser.parse_args() + if args.worker: + if args.output is None: + parser.error("--worker requires --output") + if args.historical_target and args.worker != "vectorbt_pro": + parser.error("--historical-target requires --worker vectorbt_pro") + target = _historical_vectorbt_pro_target() if args.historical_target else None + record = run_worker(args.worker, target_override=target) + _write_json(args.output, record) + return 0 if record["comparison"]["passed"] else 1 + if args.historical_target: + parser.error("--historical-target requires --worker vectorbt_pro") + if args.check_historical_vectorbt_pro: + report = json.loads(HISTORICAL_ACCEPTED_PATH.read_text(encoding="utf-8")) + failures = historical_report_failures(report, reconstruct_input=args.verify_input) + for failure in failures: + print(f"- {failure}") + return 1 if failures else 0 + if args.historical_vectorbt_pro: + candidate = run_historical_vectorbt_pro() + _write_json(HISTORICAL_CANDIDATE_PATH, candidate) + failures = historical_report_failures(candidate, reconstruct_input=True) + if failures: + print("Accepted historical evidence unchanged:") + for failure in failures: + print(f"- {failure}") + return 1 + _write_json_atomic(HISTORICAL_ACCEPTED_PATH, candidate) + print(f"Accepted historical evidence: {HISTORICAL_ACCEPTED_PATH}") + return 0 + if args.check: + report = json.loads(ACCEPTED_PATH.read_text(encoding="utf-8")) + failures = report_failures(report, reconstruct_input=args.verify_input) + for failure in failures: + print(f"- {failure}") + return 1 if failures else 0 + candidate = run_all() + _write_json(CANDIDATE_PATH, candidate) + failures = report_failures(candidate, reconstruct_input=True) + if failures: + print("Accepted evidence unchanged:") + for failure in failures: + print(f"- {failure}") + return 1 + _write_json_atomic(ACCEPTED_PATH, candidate) + print(f"Accepted evidence: {ACCEPTED_PATH}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/lean/README.md b/validation/lean/README.md index a065f947..6138c5a7 100644 --- a/validation/lean/README.md +++ b/validation/lean/README.md @@ -1,178 +1,93 @@ # LEAN Validation Workflow -## Status +The retained LEAN comparison uses a frozen engine, CLI, data protocol, and account model: -LEAN is part of the validation/parity workflow, but not through the old static -`scenario_01_long_only/` project in this directory. +- LEAN engine 18001 at source commit `278fcb3d1b815b63ccadba68d7ae54422e34b792` +- image `quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70` +- LEAN CLI 1.0.228 from the locked environment +- daily adjusted US equities, `DefaultBrokerageModel`, margin account, and 2x security leverage -What actually runs today is the LEAN adapter in -[`validation/benchmark_suite.py`](../benchmark_suite.py), which: +This is a scoped comparison protocol. It is not a claim about every LEAN asset class, +resolution, brokerage model, or order type. -- supports the benchmark/parity workflow, not the old scenario matrix -- supports daily-data scenarios only -- generates a temporary LEAN project and LEAN-format data on the fly -- runs LEAN through the CLI in Docker +## Build the Locked Environment -The old `scenario_01_long_only/` folder is legacy scaffolding, not the current -source of truth. - -## What Made It Work - -These are the pieces that mattered in practice: - -1. We used the Dockerized LEAN CLI path, not a direct `.NET` launcher workflow. -2. We did not require a permanently installed `lean` binary. - The adapter falls back to: - - ```bash - uvx --python 3.12 --with "setuptools<81" lean - ``` - -3. We required a machine-local LEAN workspace config at: - - ```text - validation/lean/workspace/lean.json - ``` - -4. We let `benchmark_suite.py` generate the LEAN project, algorithm, target - file, and LEAN-format equity data for each run. -5. Docker had to be running before invoking the benchmark. - -## One-Time Bootstrap - -From the repository root: +Docker must be running. From the repository root: ```bash -mkdir -p validation/lean/workspace -cd validation/lean/workspace -uvx --python 3.12 --with "setuptools<81" lean init +uv run python validation/build_framework_env.py --framework lean ``` -If `lean` is already installed on `PATH`, this also works: +This creates `.venv-lean`, verifies the exact CLI distribution, and verifies the immutable engine +image. The runners do not install a CLI dynamically and do not accept a mutable image tag. + +## Native Behavior Evidence + +Run the native oracle before changing the `lean` profile: ```bash -lean init +.venv-lean/bin/python validation/native/lean_behavior.py \ + --lean-command .venv-lean/bin/lean \ + --output /tmp/lean-native.json ``` -The important outcome is that `validation/lean/workspace/lean.json` exists and -is valid on the local machine. That file is not committed in the repo. +The oracle checks the event and model behavior used by the profile, including next-session market +fills, final-bar orders, model selection, margin, target sizing, submission order, buying power, +explicit costs, fill-forward data, full fills, and terminal holdings. The retained result is +`validation/native/evidence/lean-18001.json`. -## Runtime Prerequisites +The `lean` profile's stop settings are ML4T fallbacks. Stop-order equivalence is not part of this +native evidence. -- Docker daemon available -- either `lean` on `PATH` or `uvx` on `PATH` -- Python 3.12 available for the `uvx` fallback path -- initialized LEAN workspace config at - `validation/lean/workspace/lean.json` +## Chapter 16 Case Studies -The adapter itself also sets: +The current large comparison reruns three retained Chapter 16 projects against the frozen image: -```text -UV_CACHE_DIR=/tmp/uv-cache -UV_TOOL_DIR=/tmp/uv-tools +```bash +.venv-lean/bin/python validation/run_lean_case_studies.py \ + --lean-command .venv-lean/bin/lean \ + --output /tmp/lean-case-studies.json ``` -to keep the transient LEAN CLI tool environment out of the repo. +Add `--promote` only when intentionally replacing the tracked LEAN outputs and retained evidence. +Promotion is atomic and occurs only after all projects pass. -## Exact Command We Run +The three projects compare 47,652 canonical fills. They currently have zero fill-surface gap and +zero terminal-value gap at a `$0.0001` quantum. The machine-readable result is +`validation/lean/case_study_evidence.json`. -Use the benchmark suite, not the legacy `run_all_correctness.py` LEAN path. +These projects specify their own percentage fee and zero-slippage settings. They do not test the +fee and slippage models selected by `DefaultBrokerageModel`; the native oracle tests that model +selection separately. -Typical invocation: +## Benchmark Adapter -```bash -python validation/benchmark_suite.py \ - --framework lean \ - --scenario daily_baseline \ - --data-source real \ - --real-data-path /path/to/us_equities.parquet -``` - -To compare the ml4t side using the LEAN-style profile: +The daily-data adapter remains available through the benchmark suite: ```bash -python validation/benchmark_suite.py \ - --framework ml4t-lean-strict \ +uv run python validation/benchmark_suite.py \ + --framework lean \ --scenario daily_baseline \ --data-source real \ --real-data-path /path/to/us_equities.parquet ``` -Notes: - -- `--framework lean` invokes the LEAN adapter. -- `--framework ml4t-lean-strict` runs `ml4t-backtest` with the LEAN-strict - parity profile. -- LEAN currently returns an error for non-daily scenarios. - -## What The Adapter Generates - -For each run, `benchmark_suite.py` writes a generated LEAN project under: - -```text -validation/lean/workspace/ml4t_benchmark/ -``` - -Key generated files: - -- `main.py`: generated QCAlgorithm using canonical target shares -- `config.json`: minimal LEAN project config -- `symbols.csv`: generated synthetic tickers for the selected assets -- `targets.csv`: daily target share instructions - -It also exports LEAN-format daily equity data under: - -```text -validation/lean/workspace/data/equity/usa/ -``` - -including: - -- `daily/*.zip` -- `map_files/*.csv` -- `factor_files/*.csv` - -To avoid re-exporting identical daily data every run, it maintains: - -```text -validation/lean/workspace/data/equity/usa/ml4t_manifest.json -``` - -and uses a signature-based cache check. - -## The Exact LEAN Invocation - -Once the generated project and data are in place, the adapter runs: - -```bash -lean backtest validation/lean/workspace/ml4t_benchmark \ - --lean-config validation/lean/workspace/lean.json \ - --no-update \ - --output -``` - -If `lean` is not installed, the code uses the `uvx` form instead. - -Results are read back from the generated LEAN summary JSON in the output -directory. - -## Source Of Truth In Code +To run the ML4T side with the corresponding profile, use `--framework ml4t-lean-strict`. -The working implementation lives here: +The adapter requires an exact CLI version and passes the frozen image digest to every LEAN run. +It supports daily scenarios only. -- [`validation/benchmark_suite.py`](../benchmark_suite.py): LEAN adapter, - project generation, data export, CLI invocation, result parsing +## Reproducibility Boundary -These files are legacy and should not be treated as the primary workflow: +The native and Chapter 16 runners construct temporary LEAN roots from tracked inputs: -- [`validation/lean/scenario_01_long_only/main.py`](scenario_01_long_only/main.py) -- [`validation/run_all_correctness.py`](../run_all_correctness.py) +- `validation/lean/support/lean.json` +- `validation/lean/support/data/market-hours/market-hours-database.json` +- `validation/lean/support/data/symbol-properties/symbol-properties-database.csv` +- the tracked project files and daily equity archives under `validation/lean/workspace/` -## Practical Caveats +Map and factor files are generated from the first date in each tracked daily archive. No ignored +machine-local `lean.json`, map file, factor file, or data directory is required. -- LEAN is currently benchmark/parity coverage, not full scenario-matrix coverage. -- The adapter currently supports daily data only. -- The local `lean.json` is a manual prerequisite and is intentionally not - committed. -- Docker startup and LEAN container initialization make LEAN slower and more - operationally fragile than the Python-native backtest validation paths. +The old `scenario_01_long_only/` project and `validation/run_all_correctness.py` LEAN path are +legacy scaffolding. They are not evidence for the current claim. diff --git a/validation/lean/case_study_evidence.json b/validation/lean/case_study_evidence.json new file mode 100644 index 00000000..a67a2073 --- /dev/null +++ b/validation/lean/case_study_evidence.json @@ -0,0 +1,247 @@ +{ + "cases": [ + { + "case": "chapter16_etfs", + "comparison": { + "canonical_final_value_gap_usd": 0.0, + "canonical_final_value_match": true, + "fill_gap": 0, + "final_value_gap_pct": 2.6645352591003757e-15, + "final_value_gap_usd": 3.026798367500305e-09, + "final_value_quantum_usd": 0.0001, + "lean_fills": 10701, + "lean_final_value": 1119459.5398322002, + "ml4t_fills": 10701, + "ml4t_final_value": 1119459.5398322032, + "raw_row_order_match": true, + "sorted_fill_multiset_match": true + }, + "inputs": { + "asset_symbols.csv": "68abb75433e647269313fa6d33e55a3a74abac11c70494f00c2910d3c8958ee4", + "config.json": "b382e874bcd5525f9344894b27ecb7c1c8db958692f4e195dab0f05a3ecabb6b", + "data/ceortq.zip": "28a81c7020b95b04c8f84a4802be5641c03d78d490d196bd86aa8851cf09fccc", + "data/ckrwrx.zip": "a51b845f86b5cab73db807d2123f2507c46b4ac98e41b6f0b810c8375d924e6c", + "data/cppque.zip": "8c26c54869b7fd0e5ffe963cc740b7949cbd909f6940d7d9552cd09b2f2fa1d3", + "data/dbfife.zip": "5aca82159784dfbc03b4ffbe4657f0361ef6f191e2dbe02c0c990b28cdd360bf", + "data/drqobq.zip": "29e28d6fe521df8caa9affbe0d539e4a15f421be76ca1ffe66ebc09fe4d82e6a", + "data/fwgfct.zip": "2c5478f846453bd79f6d6a1518bb5771c17f44b0339f40d6944ad943472da8eb", + "data/ggahvm.zip": "2de63b9419ae5819188b2bc801083b78c32f04342d18499fd71a7ef86d5da39b", + "data/gqkzsg.zip": "df8186db54fb766262d292f871a3b511cfc1f07a919cba845f86bea904051c67", + "data/hkomxv.zip": "b6afa9a86aff2b94e49e76720d89831b0c1f10dcea0719bff90675e33eccf4b9", + "data/kvablp.zip": "8122048b41d40e6b9fce03883785ec966025ae776f220da190b9f59d6deb3bc8", + "data/mfrjsj.zip": "47a246c7c7032731c11a1e7c795e1788f88f28214bc97b342160e02adc6967b0", + "data/ncpvze.zip": "1ccad2076299bfd52a7648bfa05ddcfd17da411f98ef5111715b0b7e3303bef1", + "data/qmdsey.zip": "77cd2de22a82d5f666f72a2dc6e01d4a0eb607824cec00649cb679e727e1be6d", + "data/rgllcn.zip": "9a381b9aa4119987a1f4bb2a01de2f26334ee20e00b4f5b096cefe0337c0c481", + "data/rprqtm.zip": "74bf330a8bd29543d3dae701e7397a1e07179552482b3398a3094ef109ae39e7", + "data/smkmqa.zip": "57a87eea6eeee320d6952ad3311866d7114b6f1c04135ba018d21dae877be9e7", + "data/twedry.zip": "25dc45d45082f64ed13690b491ea5ac9f9e811899ca6474f71cc64ca55d83614", + "data/vnolvc.zip": "a30aa50a439e4d232bbbf83e174c1febc5951546a4873a4da9d20b13b7dc73a2", + "data/vnvkjb.zip": "fd196fdb0974e608bedd2ab913d8b798a11cb2113c435ab2e10cda18bddab554", + "data/yegorj.zip": "5297e3b94c5b12a21e78e03dc2fcda36d27a2efb0f8dcc3bf917594ed9483b93", + "data/zamnkq.zip": "69c3056ec9999d31ebaf0abdde8c63a7a49b397b9d32f9488c813fae6d9ca34d", + "data/zldnew.zip": "27336195a6a309f339d55af3fbba74cdc2967cf8d945779435b5477742e1bd9b", + "main.py": "c7bd891e409c8b252298c16ff2f3a1808d817442c3364d12e7770471852516a9", + "ml4t_symbol_map.json": "eb1579dbadd1a9cf8dc4c72c39356fb4f54f93ba6a4438ae0a321cb3794ccdfa", + "rebalance_dates.csv": "15e71e52f0ad4ab4d65dd16cfa606ce2221172662b8febaf3c905a2b8960b035", + "weights.csv": "f0b27b70335e5d412f7b98dae2772a778517d72783b74668930161b5e32ce1b1" + }, + "lean_fill_surface_sha256": "91e3c3aebb628f310a143efc4eb60c99f00dd04d48b4047aad7d69d4955c8784", + "ml4t_fill_surface_sha256": "91e3c3aebb628f310a143efc4eb60c99f00dd04d48b4047aad7d69d4955c8784", + "passed": true, + "raw_daily_equity_sha256": "20bc4a28ad04fdc458bd8f5031fbf976623caddd819da70f2e51ddb45dea6609", + "raw_order_events_sha256": "831edf7f9e00ca6816c8f5dc2e8077006616de6be352e4f99d37ca6b3a8e01f6", + "retained_artifacts": { + "validation/lean/workspace/chapter16_etfs/ml4t_daily_equity.csv": "20bc4a28ad04fdc458bd8f5031fbf976623caddd819da70f2e51ddb45dea6609", + "validation/lean/workspace/chapter16_etfs/ml4t_order_events.csv.xz": "63535bec501d36e4f1eae501917e0000e636c03a19d637b05cdda1428bc80421" + }, + "runtime_seconds": 13.234417018014938, + "summary_sha256": "cd22ab3fa5622aca202ea043b9093d77de5767b83642a6f5ed7308b22f02f25e" + }, + { + "case": "chapter16_sp500_equity_option_analytics", + "comparison": { + "canonical_final_value_gap_usd": 0.0, + "canonical_final_value_match": true, + "fill_gap": 0, + "final_value_gap_pct": -1.2212453270876722e-15, + "final_value_gap_usd": -1.1641532182693481e-09, + "final_value_quantum_usd": 0.0001, + "lean_fills": 1848, + "lean_final_value": 991275.917466, + "ml4t_fills": 1848, + "ml4t_final_value": 991275.9174659988, + "raw_row_order_match": true, + "sorted_fill_multiset_match": true + }, + "inputs": { + "asset_symbols.csv": "0b20eef4524f62569d2453d4769fa3ce475814e3616363e8d8b17e2a70ff9776", + "config.json": "5c63ae1d9a84d532c989611cdf062c54cb4e2c75ed83c8d84a8b17f3ba384672", + "data/baqkfr.zip": "d1c19ce72744fb14e8aa38ec01952467a714d82ca33130190de2c4f0d92d2af7", + "data/bgdrai.zip": "349b87e67ceafa0fe450101504a156afe5485de057aea7c594aae4069f5951e1", + "data/bpfuqm.zip": "959a863ece15e6bfc4725daca1a0940959af415c2e64106ff2e672b7be5383fd", + "data/bpspgv.zip": "5cc03bf8fbddf7bdc5b71093150e6c4f9dc4d4a347c3d50d2c9c5339b7f04410", + "data/cemoje.zip": "5e0c299d9cb96851eb7a424da8d5cb9abb91fe4c9922bb94b844221955227065", + "data/comnhq.zip": "bdd2c4fb63c4ecf571915fd3ab41508460cd0dc821a6c849c456ae6e91c25ab8", + "data/ffndvm.zip": "7ba7c34010fd01b4c44bfdd13debd08da1137610e637423d71f4e30b0af5cf82", + "data/gtkilw.zip": "fe1ba34617ebd0ef3949d7f394878f044125247ff55aae1e4004010db6c16154", + "data/hcducb.zip": "da885133cb2d89f5b8690b0bb0f8130dec8f36c32c6ed655c86c45e22e082571", + "data/heclon.zip": "ae415f62032014807625e1d1fbe25779d97b3db3a248ac1dbeee6ac76302ecdf", + "data/isijlh.zip": "f93f51c43699fcd429382db7d149aaba952cc149c304af4a0dd9f20774438ed7", + "data/lmribf.zip": "9559bad65dec0c97b1c35200c408596751c2354e41292fa39c7a82dc64956327", + "data/luzlyg.zip": "8818dd5afc8c48075da87068c48f0acde6838322ae256098234917e77b06fdda", + "data/mcczid.zip": "e4a6dcdb209338c08561c9a05b95b00447697fd4aa368d5d52a0c995d4492a52", + "data/mvvhyr.zip": "42b8265ce80824ae646be146181e4f1716833b2edda6f6b0569e663e7fd6f62c", + "data/ochcau.zip": "935b7f55557dc9833e63046e31d78ee071f4b4a0dcc5779386b5789add440193", + "data/rlsrxx.zip": "7d9548b8802794c904e1f2c1d2d37cc231443e6e9ac159f7f937a36b729b5ac7", + "data/ruknmv.zip": "7fa45c4cd7c93c0f225036fa2771939c4130193606bc7283d6c5b98f75e88480", + "data/smdife.zip": "f90d0c3a8319632a877f0bc1a5accd83dd70fe56627668fb4283c445746b999a", + "data/xuehvz.zip": "0486caca85f091edecb4474542226b959d804b559c1ac92d1d5ec9b40b6901b7", + "data/yivygh.zip": "050dcc503c396d23b6fa0673c2c691aa884843da899a828ec6c0a2d096020840", + "data/zijvro.zip": "6b9abe8ea0deb0f110b0eb3a2d7007d4ed246ccbf128e83046f949ede482cc20", + "data/zixtlg.zip": "03e2ff8a56edba5716bf5dd4df73fb5d00671d262cfc7d4ee87cf336c11b9467", + "main.py": "82112c9e0799e16a93fa4a89586583d8849e296375e91c98d98439f4c58a21d0", + "ml4t_symbol_map.json": "295d83b752cf9cdad8efdb3787457d2c1514666fa54c25d68c584baaba70fbf1", + "rebalance_dates.csv": "e69f6c549a7b150dcdbc39ee17e903bacd74f556cb368c3bb5c9179e6de4c6da", + "weights.csv": "196320aa550d779511953e06fb35baed4f81058c8b7a22e06c363db92848d3b7" + }, + "lean_fill_surface_sha256": "62d52560896287b687edf68a50955d8c01d840706114a2f3731b87c6c632a179", + "ml4t_fill_surface_sha256": "62d52560896287b687edf68a50955d8c01d840706114a2f3731b87c6c632a179", + "passed": true, + "raw_daily_equity_sha256": "83a98f50053b12dd4baa37484b0b268cb8ec83ebdf633ee2e6ee790db0bb73ad", + "raw_order_events_sha256": "334cd463affb3d23f074882fe1d8131861ec67ca5203fbdfb86cae4d8da64917", + "retained_artifacts": { + "validation/lean/workspace/chapter16_sp500_equity_option_analytics/ml4t_daily_equity.csv": "83a98f50053b12dd4baa37484b0b268cb8ec83ebdf633ee2e6ee790db0bb73ad", + "validation/lean/workspace/chapter16_sp500_equity_option_analytics/ml4t_order_events.csv": "334cd463affb3d23f074882fe1d8131861ec67ca5203fbdfb86cae4d8da64917" + }, + "runtime_seconds": 8.005312403896824, + "summary_sha256": "1feecc15e43549a949584b266bd55c7413ccea8fc812267c2ab09bf355d98f6f" + }, + { + "case": "chapter16_us_equities_panel", + "comparison": { + "canonical_final_value_gap_usd": 0.0, + "canonical_final_value_match": true, + "fill_gap": 0, + "final_value_gap_pct": -8.43769498715119e-14, + "final_value_gap_usd": -1.0360963642597198e-07, + "final_value_quantum_usd": 0.0001, + "lean_fills": 35103, + "lean_final_value": 1228617.37595028, + "ml4t_fills": 35103, + "ml4t_final_value": 1228617.3759501765, + "raw_row_order_match": true, + "sorted_fill_multiset_match": true + }, + "inputs": { + "asset_symbols.csv": "c5051af42cea5c1172862df293024dfda0da65d01de079e840cef0ad9c4f06b4", + "config.json": "79a5de1c10975416e133ddf3ebc2cc5c2f762aa145e22b2271afd05df7e18720", + "data/ajwqri.zip": "a287bb14bf6ca783e0fbe092eb2360ea112b11ef18f6f581ffeb35f2a06e1f08", + "data/avyokw.zip": "1c9c0e922d538e59e4acebd81b5ac0c8c52590af06f0184922d8f6b19b288b9c", + "data/bvzyrj.zip": "847ee9566458164638c25c8eaf5c16379746f6f9420127668c27a6c19595d0d9", + "data/bzrjyr.zip": "b7c63ca2b9a251dbd0265a4fc1da9d6eade5803cedeee6641989065fd9d89411", + "data/cdfrzv.zip": "9dc9d3917e5e0979088fb12170f39caccf8848fba710661b111819af4b391dc0", + "data/ewvgue.zip": "5941f84cb63109637735eab752f43472e28d854c555c74a358d382ea46bba673", + "data/fdyrvm.zip": "ece3d1d9e3047f42e7ef4fd1edf16debccad98536631f568510ef2e7b34b6623", + "data/fgbaha.zip": "20bbdeb119bb46704d8fef4d4e40019eb2c4269a5bbc5a3ae2b42c71618df918", + "data/fvetze.zip": "12720b16ff31ee2ebdcf9e9a2ba9df63bec7b7b4db121c5e7a3086cb1eb74ab4", + "data/fxfqop.zip": "99c4f3694ac27a75cf62e8b188acdef2ce00afed37a0fe12d0704a1a443bb404", + "data/gjytie.zip": "a14ee055a7ee75a7931432b0111ec7721be0fdb4c5ecce1119992bf296b5f369", + "data/gwfxni.zip": "2065ee54212c8cb540ea52266432c9682e79d05380235e1b45fb6fbe0f6e4e15", + "data/hdsvdl.zip": "7ce202abb605219433d2dfd3af63f11f68667a79d3dd9abdfdae6592a53f6388", + "data/hjduow.zip": "216c916a6197d44568c9a8fd0b09b5aa71055b5fc7ddd4b068faef8f515f50eb", + "data/hosdps.zip": "8e6ca04e89f815f8ff1599b6a91ef3020c6d1a3a393ced5bbe30b3f7e0bec292", + "data/ijnvkp.zip": "da5db7a6db83f05c54fab3bcf3a0d02fe441b271693d02a8efd3cd0b5c6de95b", + "data/iwtavf.zip": "e039b52804c512c581ee4513b40e1f255975a7d55ab4cd2edc05a2b5f1b2b1f3", + "data/iyzxjs.zip": "351dc107b1c7c49dd95c3624bc6808ed86e513e63c5e7e83033b1e34d954965c", + "data/jvhgai.zip": "4c9363037237b09818a1737fc059b6855637dff594ff2b00ee04c2a53a2cca48", + "data/kfccwm.zip": "52cfbc970da501123a81048c29cc546e3f90b40cba6f94e9ce7d68cef77e7198", + "data/knjdbi.zip": "8a1aa3b0f1588712378996319bb9e11bd1c312639cd4d4686406bcad0c93c941", + "data/ktaoxh.zip": "bc6bc9238854771a936039c76fc3890c2980f608a6618118267aaf1d94813912", + "data/kxtlhn.zip": "c6f6619e2e61a8a1ecdc9e9835afe3339d14ec9953f2b999dbccbb9ffa72af89", + "data/lqynwp.zip": "0e0b0c2c6de136b3f240e958b56e156bc8347b07b40a43703e23fc579e3c7b33", + "data/nvhirh.zip": "cb9252d188880233e5afddaa991e6c3894fbbf0edcf5bfb0faa3a59d9b17a006", + "data/oyajiu.zip": "ad5b48623e2fd684ec021d753e4d923022c00ab5c5247dfc07dbdc7b1a4284a1", + "data/pdcsck.zip": "5d60e80fd48e68d2207cd062dd1802552819ef778a28d1307bee311f53054ea9", + "data/pwjoac.zip": "f44f73fbe4ee34ab6a549380d2430e2543d7bb03035c000d3c699e2780748cef", + "data/qdtiok.zip": "bb7231707ca795d0499322e1bd139a98b516b247865661135943c90ebd333033", + "data/qdvwro.zip": "da36a97da5f7c3f58cd7d05cfda7aa5e6265e220768d84ffe6204f35b94cc6b7", + "data/rfchex.zip": "81c82c63f413c6a4d49371614ecfacf2d570df24273ad7004021bc070eba90ab", + "data/rfhmcl.zip": "56893d208bef071b555d30739723ea216eecdf9d9c6d00298ffb01eb9ab3b324", + "data/sfdtij.zip": "d52fa5d5e4c5a9712ef71ecaa578c5d2d1233a019530d3da39d78d43db06fb8d", + "data/sndkzi.zip": "21f8c20d50339dca284f34fc11e641b5c80d2f2965edcb9659ab240349fce562", + "data/swngho.zip": "9c251dfb697203ed58ee8ad212e61f22426edc04bb7c26bee03ddb0ad5147a9b", + "data/tqkcdn.zip": "51e2f99b38d48871cc85ac68e0ec0a02ebff987068b2155da5c876ed9a5d0e99", + "data/ttwclm.zip": "2a9cc672895eda57fb0dd78adc57ffaa612228b24594f5501cd151d0d06adbc2", + "data/tyqzlf.zip": "072e42dc4b9852bb50946c081aa3013d6cba13d4abfed2328d797a69d55aab35", + "data/vimvup.zip": "70a880cf04f9b8b5dbaf4714742221fa6a972eca6eb79e0c562c8da06636ec47", + "data/vvhgby.zip": "b7d424cde9979aaab6809f7f1496469fc474104b94d6c63e4f72e018f869c0fd", + "data/waobbl.zip": "fffaf6f4737c33ecd60b2ecc16766c9c61c0de2b4bf16049f4c644ae33c141c9", + "data/wlkvcm.zip": "830f53b7220a63ae6e1a394eae101d8023042a781da0697e4006d0897bf534ce", + "data/wrvjrt.zip": "bfc0f6b9a7178568fc311f5c4581110ccb8444149722915309d03b626d8d0628", + "data/wuyjsb.zip": "13d850073294d8771c61d18a1b6d29dfe2a602eeb16b13d64030d5b1cc2ce157", + "data/xcypxp.zip": "fa767598261065ffa2b92067d181087846cad87c42c862b6d33f387afb2273a1", + "data/xkptdk.zip": "848296f0620e22d389645e881a37691e745c6b6a46788c9b65509be7a2592273", + "data/xtbwlz.zip": "0759f7d2732e2c8d7cc87a6e788630a58872b5abfaf4252a0b2692e78f0d6be6", + "data/ykodii.zip": "29b6b9c478d0c0f37c2d2c97f09323c42a4bd167bbe4f1a3f54ec2e9c83421a9", + "data/ysuvmc.zip": "d94c13a8dac72c836bb982f283c33fe50ffe3837458b5cceb67073e6b78278f4", + "data/zpelyh.zip": "b021e82245543fdee5685d7cc113649e38632a5941734eefbefc90fbb9d0eb6f", + "main.py": "7575b8022386e9e8afba003dc904e930cd15073f4afaa8182398289f01e9f606", + "ml4t_symbol_map.json": "a3978887ed599be48a338c1a10abfad1963e9a81d83d6df8ca8a09e5264accd5", + "rebalance_dates.csv": "78703d3259509b48f14963347c89d5d60f188541fbe65484239abaac684145e1", + "weights.csv": "ce371041742da6bbaf9ec3f8eb25e7e701b84b0ef78752d051a7da797453b561", + "weights.csv.gz": "9d227ef2f19f43a3548eebb3ec72abf47d6ce434b28b1aba9fe5a332195b25d1", + "weights.csv.xz": "9f0f81378af72d4c00b4eac63bdc9a6a7b35ec1ebc8f60190355ce5d1177428c" + }, + "lean_fill_surface_sha256": "8b0f47c093382c1f45fb49c11234cbf972b2ee680aa9ebca70e5c73bad67ad73", + "ml4t_fill_surface_sha256": "8b0f47c093382c1f45fb49c11234cbf972b2ee680aa9ebca70e5c73bad67ad73", + "passed": true, + "raw_daily_equity_sha256": "ee22ecbf90cd8c358f6d63c9e25523e3869300140e059f202d555c1d0288370c", + "raw_order_events_sha256": "9e13e96b0899ca113375b3529f102f1b2a825aea301277f01225a5a31a5f3cac", + "retained_artifacts": { + "validation/lean/workspace/chapter16_us_equities_panel/ml4t_daily_equity.csv": "ee22ecbf90cd8c358f6d63c9e25523e3869300140e059f202d555c1d0288370c", + "validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part01.xz": "9aea6ff30791dc06cd9b917e6f0c639d1b6f17883012b9c5190d7be6a899d980", + "validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part02.xz": "915bef2036b7d49535eb81a458a1af891f8f15c249bb413831771ea52e982a26" + }, + "runtime_seconds": 22.688339818036184, + "summary_sha256": "1ed0ef6c680a8069789ccbf9e7862c8dee8baffe860512989dca5a7f63e98575" + } + ], + "cli_observed": "lean 1.0.228", + "comparison_protocol": { + "account": "DefaultBrokerageModel Margin; per-project leverage 2", + "costs": "Ml4tPercentFeeModel at project rate; ConstantSlippageModel(0)", + "fills": "timestamp, asset, side, quantity, price rounded to 4 decimals", + "terminal_value_quantum": "0.0001 USD" + }, + "framework": { + "access": "public", + "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "cli_version": "1.0.228", + "commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "display_name": "LEAN", + "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "license": "Apache-2.0", + "package": "lean", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "profile": "lean", + "python": "3.11", + "source": "https://github.com/QuantConnect/Lean", + "version": "18001" + }, + "passed": true, + "producer_files": { + "src/ml4t/backtest/_validation/case_study_lean.py": "62247f66db5ae118e7089ab4dfeca5a7251b1f3f4238b9aceeb55384df447cfd", + "src/ml4t/backtest/_validation/lean_runner.py": "30efdb8018cc949c991dee856a7007d0dfdc635397a208f98a6dd094af20fce1", + "src/ml4t/backtest/profiles.py": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505", + "validation/run_lean_case_studies.py": "5bf91f8d98f8bfd9a88eb72071c392ff23ad4583184b28165e7511d9e0d1901e" + }, + "promoted": true, + "schema_version": 1, + "support_files": { + "data/market-hours/market-hours-database.json": "935079bc33409373f37163eddb539f09e81a1efbd0e617cbc8fdb487c76dab2b", + "data/symbol-properties/symbol-properties-database.csv": "56b6dc80202bca88f212c78c4d4670c2e070e6f1e7386f7436232aafe5000e93", + "lean.json": "fa15d6d81f560fd1665b004c338b026458fa834a7645e015d16d861dd73540f4" + } +} diff --git a/validation/lean/support/data/market-hours/market-hours-database.json b/validation/lean/support/data/market-hours/market-hours-database.json new file mode 100644 index 00000000..0d3ab37e --- /dev/null +++ b/validation/lean/support/data/market-hours/market-hours-database.json @@ -0,0 +1,457 @@ +{ + "entries": { + "Equity-usa-[*]": { + "dataTimeZone": "America/New_York", + "exchangeTimeZone": "America/New_York", + "sunday": [], + "monday": [ + { + "start": "04:00:00", + "end": "09:30:00", + "state": "premarket" + }, + { + "start": "09:30:00", + "end": "16:00:00", + "state": "market" + }, + { + "start": "16:00:00", + "end": "20:00:00", + "state": "postmarket" + } + ], + "tuesday": [ + { + "start": "04:00:00", + "end": "09:30:00", + "state": "premarket" + }, + { + "start": "09:30:00", + "end": "16:00:00", + "state": "market" + }, + { + "start": "16:00:00", + "end": "20:00:00", + "state": "postmarket" + } + ], + "wednesday": [ + { + "start": "04:00:00", + "end": "09:30:00", + "state": "premarket" + }, + { + "start": "09:30:00", + "end": "16:00:00", + "state": "market" + }, + { + "start": "16:00:00", + "end": "20:00:00", + "state": "postmarket" + } + ], + "thursday": [ + { + "start": "04:00:00", + "end": "09:30:00", + "state": "premarket" + }, + { + "start": "09:30:00", + "end": "16:00:00", + "state": "market" + }, + { + "start": "16:00:00", + "end": "20:00:00", + "state": "postmarket" + } + ], + "friday": [ + { + "start": "04:00:00", + "end": "09:30:00", + "state": "premarket" + }, + { + "start": "09:30:00", + "end": "16:00:00", + "state": "market" + }, + { + "start": "16:00:00", + "end": "20:00:00", + "state": "postmarket" + } + ], + "saturday": [], + "holidays": [ + "1/1/1998", + "1/1/1999", + "1/1/2001", + "1/1/2002", + "1/1/2003", + "1/1/2004", + "1/2/2006", + "1/1/2007", + "1/1/2008", + "1/1/2009", + "1/1/2010", + "1/1/2011", + "1/2/2012", + "1/1/2013", + "1/1/2014", + "1/1/2015", + "1/1/2016", + "1/2/2017", + "1/1/2018", + "1/1/2019", + "1/1/2020", + "1/1/2021", + "1/1/2022", + "1/1/2024", + "1/2/2023", + "1/1/2025", + "1/1/2026", + "1/1/2027", + "1/2/2007", + "1/9/2025", + "1/19/1998", + "1/18/1999", + "1/17/2000", + "1/15/2001", + "1/21/2002", + "1/20/2003", + "1/19/2004", + "1/17/2005", + "1/16/2006", + "1/15/2007", + "1/21/2008", + "1/19/2009", + "1/18/2010", + "1/17/2011", + "1/16/2012", + "1/21/2013", + "1/20/2014", + "1/19/2015", + "1/18/2016", + "1/16/2017", + "1/15/2018", + "1/21/2019", + "1/20/2020", + "1/18/2021", + "1/17/2022", + "1/16/2023", + "1/15/2024", + "1/20/2025", + "1/19/2026", + "1/18/2027", + "1/17/2028", + "2/16/1998", + "2/15/1999", + "2/21/2000", + "2/19/2001", + "2/18/2002", + "2/17/2003", + "2/16/2004", + "2/21/2005", + "2/20/2006", + "2/19/2007", + "2/18/2008", + "2/16/2009", + "2/15/2010", + "2/21/2011", + "2/20/2012", + "2/18/2013", + "2/17/2014", + "2/16/2015", + "2/15/2016", + "2/20/2017", + "2/19/2018", + "2/18/2019", + "2/17/2020", + "2/15/2021", + "2/21/2022", + "2/20/2023", + "2/19/2024", + "2/17/2025", + "2/16/2026", + "2/15/2027", + "2/21/2028", + "4/10/1998", + "4/2/1999", + "4/21/2000", + "4/13/2001", + "3/29/2002", + "4/18/2003", + "4/9/2004", + "3/25/2005", + "4/14/2006", + "4/6/2007", + "3/21/2008", + "4/10/2009", + "4/2/2010", + "4/22/2011", + "4/6/2012", + "3/29/2013", + "4/18/2014", + "4/3/2015", + "3/25/2016", + "4/14/2017", + "3/30/2018", + "4/19/2019", + "4/10/2020", + "4/2/2021", + "4/15/2022", + "4/7/2023", + "3/29/2024", + "4/18/2025", + "4/3/2026", + "3/26/2027", + "4/14/2028", + "5/25/1998", + "5/31/1999", + "5/29/2000", + "5/28/2001", + "5/27/2002", + "5/26/2003", + "5/31/2004", + "5/30/2005", + "5/29/2006", + "5/28/2007", + "5/26/2008", + "5/25/2009", + "5/31/2010", + "5/30/2011", + "5/28/2012", + "5/27/2013", + "5/26/2014", + "5/25/2015", + "5/30/2016", + "5/29/2017", + "5/28/2018", + "5/27/2019", + "5/25/2020", + "5/31/2021", + "5/30/2022", + "5/29/2023", + "5/27/2024", + "5/26/2025", + "5/25/2026", + "5/31/2027", + "5/29/2028", + "6/11/2004", + "6/20/2022", + "6/19/2023", + "6/19/2024", + "6/19/2025", + "6/19/2026", + "6/18/2027", + "6/19/2028", + "7/3/1998", + "7/5/1999", + "7/4/2000", + "7/4/2001", + "7/4/2002", + "7/4/2003", + "7/5/2004", + "7/4/2005", + "7/4/2006", + "7/4/2007", + "7/4/2008", + "7/3/2009", + "7/5/2010", + "7/4/2011", + "7/4/2012", + "7/4/2013", + "7/4/2014", + "7/3/2015", + "7/4/2016", + "7/4/2017", + "7/4/2018", + "7/4/2019", + "7/3/2020", + "7/5/2021", + "7/4/2022", + "7/4/2023", + "7/4/2024", + "7/4/2025", + "7/3/2026", + "7/5/2027", + "7/4/2028", + "9/7/1998", + "9/6/1999", + "9/4/2000", + "9/3/2001", + "9/2/2002", + "9/1/2003", + "9/6/2004", + "9/5/2005", + "9/4/2006", + "9/3/2007", + "9/1/2008", + "9/7/2009", + "9/6/2010", + "9/5/2011", + "9/3/2012", + "9/2/2013", + "9/1/2014", + "9/7/2015", + "9/5/2016", + "9/4/2017", + "9/3/2018", + "9/2/2019", + "9/7/2020", + "9/6/2021", + "9/5/2022", + "9/4/2023", + "9/2/2024", + "9/1/2025", + "9/7/2026", + "9/6/2027", + "9/4/2028", + "9/11/2001", + "9/12/2001", + "9/13/2001", + "9/14/2001", + "10/29/2012", + "10/30/2012", + "11/26/1998", + "11/25/1999", + "11/23/2000", + "11/22/2001", + "11/28/2002", + "11/27/2003", + "11/25/2004", + "11/24/2005", + "11/23/2006", + "11/22/2007", + "11/27/2008", + "11/26/2009", + "11/25/2010", + "11/24/2011", + "11/22/2012", + "11/28/2013", + "11/27/2014", + "11/26/2015", + "11/24/2016", + "11/23/2017", + "11/22/2018", + "11/28/2019", + "11/26/2020", + "11/25/2021", + "11/24/2022", + "11/23/2023", + "11/28/2024", + "11/27/2025", + "11/26/2026", + "11/25/2027", + "11/23/2028", + "12/05/2018", + "12/25/1998", + "12/24/1999", + "12/25/2000", + "12/25/2001", + "12/25/2002", + "12/25/2003", + "12/24/2004", + "12/26/2005", + "12/25/2006", + "12/25/2007", + "12/25/2008", + "12/25/2009", + "12/24/2010", + "12/26/2011", + "12/25/2012", + "12/25/2013", + "12/25/2014", + "12/25/2015", + "12/26/2016", + "12/25/2017", + "12/25/2018", + "12/25/2019", + "12/25/2020", + "12/24/2021", + "12/26/2022", + "12/25/2023", + "12/25/2024", + "12/25/2025", + "12/25/2026", + "12/24/2027", + "12/25/2028" + ], + "earlyCloses": { + "7/3/2000": "13:00:00", + "7/3/2001": "13:00:00", + "7/5/2002": "13:00:00", + "7/3/2003": "13:00:00", + "7/3/2006": "13:00:00", + "7/3/2007": "13:00:00", + "7/3/2008": "13:00:00", + "7/3/2012": "13:00:00", + "7/3/2013": "13:00:00", + "7/3/2014": "13:00:00", + "7/3/2017": "13:00:00", + "7/3/2018": "13:00:00", + "7/3/2019": "13:00:00", + "7/3/2023": "13:00:00", + "7/3/2024": "13:00:00", + "7/3/2025": "13:00:00", + "7/3/2028": "13:00:00", + "11/26/1999": "13:00:00", + "11/24/2000": "13:00:00", + "11/23/2001": "13:00:00", + "11/29/2002": "13:00:00", + "11/28/2003": "13:00:00", + "11/26/2004": "13:00:00", + "11/25/2005": "13:00:00", + "11/24/2006": "13:00:00", + "11/23/2007": "13:00:00", + "11/28/2008": "13:00:00", + "11/27/2009": "13:00:00", + "11/26/2010": "13:00:00", + "11/25/2011": "13:00:00", + "11/23/2012": "13:00:00", + "11/29/2013": "13:00:00", + "11/28/2014": "13:00:00", + "11/27/2015": "13:00:00", + "11/25/2016": "13:00:00", + "11/24/2017": "13:00:00", + "11/23/2018": "13:00:00", + "11/29/2019": "13:00:00", + "11/27/2020": "13:00:00", + "11/26/2021": "13:00:00", + "11/25/2022": "13:00:00", + "11/24/2023": "13:00:00", + "11/29/2024": "13:00:00", + "11/28/2025": "13:00:00", + "11/27/2026": "13:00:00", + "11/26/2027": "13:00:00", + "11/24/2028": "13:00:00", + "12/24/2001": "13:00:00", + "12/24/2002": "13:00:00", + "12/24/2003": "13:00:00", + "12/26/2003": "13:00:00", + "12/24/2007": "13:00:00", + "12/24/2008": "13:00:00", + "12/24/2009": "13:00:00", + "12/24/2012": "13:00:00", + "12/24/2013": "13:00:00", + "12/24/2014": "13:00:00", + "12/24/2015": "13:00:00", + "12/24/2017": "13:00:00", + "12/24/2018": "13:00:00", + "12/24/2019": "13:00:00", + "12/24/2020": "13:00:00", + "12/24/2024": "13:00:00", + "12/24/2025": "13:00:00", + "12/24/2026": "13:00:00" + } + } + } +} diff --git a/validation/lean/support/data/symbol-properties/symbol-properties-database.csv b/validation/lean/support/data/symbol-properties/symbol-properties-database.csv new file mode 100644 index 00000000..4a71a8a2 --- /dev/null +++ b/validation/lean/support/data/symbol-properties/symbol-properties-database.csv @@ -0,0 +1,2 @@ +market,symbol,type,description,quote_currency,contract_multiplier,minimum_price_variation,lot_size,market_ticker,minimum_order_size,price_magnifier,strike_multiplier +usa,[*],equity,,USD,1,0.01,1 diff --git a/validation/lean/support/lean.json b/validation/lean/support/lean.json new file mode 100644 index 00000000..a3569a2b --- /dev/null +++ b/validation/lean/support/lean.json @@ -0,0 +1,6 @@ +{ + "data-folder": "data", + "organization-id": "local", + "job-organization-id": "local", + "id": "Local" +} diff --git a/validation/lean/workspace/chapter16_etfs/ml4t_order_events.csv.xz b/validation/lean/workspace/chapter16_etfs/ml4t_order_events.csv.xz index b4996e73..b84db06e 100644 Binary files a/validation/lean/workspace/chapter16_etfs/ml4t_order_events.csv.xz and b/validation/lean/workspace/chapter16_etfs/ml4t_order_events.csv.xz differ diff --git a/validation/lean/workspace/chapter16_sp500_equity_option_analytics/ml4t_order_events.csv b/validation/lean/workspace/chapter16_sp500_equity_option_analytics/ml4t_order_events.csv index 9866097e..a2a5fe98 100644 --- a/validation/lean/workspace/chapter16_sp500_equity_option_analytics/ml4t_order_events.csv +++ b/validation/lean/workspace/chapter16_sp500_equity_option_analytics/ml4t_order_events.csv @@ -1,3700 +1,3700 @@ -timestamp,symbol,status,direction,fill_quantity,fill_price,fee,message,order_id -2019-01-04 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1 -2019-01-07 16:00:00,MCCZID,Filled,Buy,323.0,43.0,9.7223,,1 -2019-01-07 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,2 -2019-01-08 16:00:00,MCCZID,Filled,Sell,-2.0,43.53,0.060942,,2 -2019-01-08 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,3 -2019-01-09 16:00:00,MCCZID,Filled,Sell,-89.0,43.41,2.704443,,3 -2019-01-09 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,4 -2019-01-10 16:00:00,MCCZID,Filled,Buy,1.0,43.18,0.030226,,4 -2019-01-10 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,5 -2019-01-11 16:00:00,MCCZID,Filled,Buy,5.0,42.33,0.14815499999999998,,5 -2019-01-11 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,6 -2019-01-14 16:00:00,MCCZID,Filled,Sell,-238.0,42.55,7.08883,,6 -2019-01-14 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,7 -2019-01-14 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,8 -2019-01-14 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,9 -2019-01-14 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,10 -2019-01-15 16:00:00,OCHCAU,Filled,Buy,231.0,43.22,6.988674,,7 -2019-01-15 16:00:00,CEMOJE,Filled,Buy,9.0,1043.92,6.576696,,8 -2019-01-15 16:00:00,GTKILW,Filled,Buy,9.0,1052.01,6.627663,,9 -2019-01-15 16:00:00,MCCZID,Filled,Buy,235.0,42.61,7.009345000000001,,10 -2019-01-15 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,11 -2019-01-15 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,12 -2019-01-16 16:00:00,OCHCAU,Filled,Sell,-4.0,44.1,0.12348,,11 -2019-01-16 16:00:00,MCCZID,Filled,Sell,-1.0,42.63,0.029841000000000003,,12 -2019-01-16 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,13 -2019-01-16 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,14 -2019-01-16 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,15 -2019-01-17 16:00:00,CEMOJE,Filled,Sell,-9.0,1079.19,6.798897,,13 -2019-01-17 16:00:00,GTKILW,Filled,Sell,-9.0,1087.08,6.848604,,14 -2019-01-17 16:00:00,MCCZID,Filled,Buy,3.0,41.89,0.087969,,15 -2019-01-17 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,16 -2019-01-17 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,17 -2019-01-18 16:00:00,OCHCAU,Filled,Sell,-1.0,44.61,0.031227,,16 -2019-01-18 16:00:00,MCCZID,Filled,Sell,-2.0,42.62,0.059668,,17 -2019-01-18 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,18 -2019-01-22 16:00:00,OCHCAU,Filled,Sell,-226.0,44.88,7.100016000000001,,18 -2019-01-22 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,19 -2019-01-23 16:00:00,MCCZID,Filled,Buy,93.0,41.95,2.730945,,19 -2019-01-23 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,20 -2019-01-24 16:00:00,MCCZID,Filled,Sell,-3.0,41.74,0.087654,,20 -2019-01-24 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,21 -2019-01-25 16:00:00,MCCZID,Filled,Buy,9.0,41.14,0.25918199999999997,,21 -2019-01-25 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,22 -2019-01-28 16:00:00,MCCZID,Filled,Buy,3.0,40.5,0.08505,,22 -2019-01-28 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,23 -2019-01-29 16:00:00,MCCZID,Filled,Sell,-36.0,39.53,0.996156,,23 -2019-01-29 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,24 -2019-01-30 16:00:00,MCCZID,Filled,Buy,88.0,40.81,2.513896,,24 -2019-01-30 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,25 -2019-01-30 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,26 -2019-01-31 16:00:00,MCCZID,Filled,Sell,-8.0,41.41,0.231896,,25 -2019-01-31 16:00:00,ISIJLH,Filled,Buy,540.0,29.47,11.13966,,26 -2019-01-31 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,27 -2019-01-31 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,28 -2019-02-01 16:00:00,MCCZID,Filled,Sell,-7.0,42.84,0.209916,,27 -2019-02-01 16:00:00,ISIJLH,Filled,Sell,-540.0,30.25,11.4345,,28 -2019-02-01 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,29 -2019-02-01 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,30 -2019-02-01 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,31 -2019-02-04 16:00:00,LUZLYG,Filled,Buy,560.0,28.46,11.15632,,29 -2019-02-04 16:00:00,MCCZID,Filled,Sell,-374.0,42.8,11.20504,,30 -2019-02-04 16:00:00,RUKNMV,Filled,Buy,325.0,48.85,11.113375,,31 -2019-02-04 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,32 -2019-02-04 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,33 -2019-02-04 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,34 -2019-02-05 16:00:00,LUZLYG,Filled,Sell,-560.0,28.85,11.3092,,32 -2019-02-05 16:00:00,ISIJLH,Filled,Buy,536.0,29.64,11.120928,,33 -2019-02-05 16:00:00,RUKNMV,Filled,Sell,-1.0,49.22,0.034454,,34 -2019-02-05 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,35 -2019-02-05 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,36 -2019-02-05 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,37 -2019-02-06 16:00:00,LUZLYG,Filled,Buy,355.0,28.63,7.114554999999999,,35 -2019-02-06 16:00:00,ISIJLH,Filled,Sell,-192.0,29.74,3.997056,,36 -2019-02-06 16:00:00,RUKNMV,Filled,Sell,-117.0,49.15,4.025385,,37 -2019-02-06 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,38 -2019-02-06 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,39 -2019-02-06 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,40 -2019-02-06 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,41 -2019-02-07 16:00:00,LUZLYG,Filled,Sell,-355.0,28.59,7.104615000000001,,38 -2019-02-07 16:00:00,MCCZID,Filled,Buy,239.0,42.09,7.041657,,39 -2019-02-07 16:00:00,ISIJLH,Filled,Sell,-2.0,29.5,0.0413,,40 -2019-02-07 16:00:00,RUKNMV,Filled,Sell,-207.0,49.11,7.116039000000001,,41 -2019-02-07 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,42 -2019-02-07 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,43 -2019-02-07 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,44 -2019-02-08 16:00:00,CEMOJE,Filled,Buy,9.0,1097.14,6.911982,,42 -2019-02-08 16:00:00,MCCZID,Filled,Buy,3.0,41.6,0.08736000000000001,,43 -2019-02-08 16:00:00,ISIJLH,Filled,Buy,1.0,29.4,0.02058,,44 -2019-02-08 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,45 -2019-02-08 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,46 -2019-02-08 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,47 -2019-02-11 16:00:00,CEMOJE,Filled,Sell,-9.0,1088.34,6.856541999999999,,45 -2019-02-11 16:00:00,MCCZID,Filled,Sell,-5.0,42.29,0.14801499999999998,,46 -2019-02-11 16:00:00,ISIJLH,Filled,Sell,-5.0,29.6,0.1036,,47 -2019-02-11 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,48 -2019-02-11 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,49 -2019-02-11 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,50 -2019-02-12 16:00:00,FFNDVM,Filled,Buy,1202.0,8.38,7.050932,,48 -2019-02-12 16:00:00,MCCZID,Filled,Buy,3.0,41.71,0.087591,,49 -2019-02-12 16:00:00,ISIJLH,Filled,Sell,-1.0,29.85,0.020895,,50 -2019-02-12 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,51 -2019-02-12 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,52 -2019-02-12 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,53 -2019-02-12 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,54 -2019-02-13 16:00:00,FFNDVM,Filled,Sell,-18.0,8.44,0.106344,,51 -2019-02-13 16:00:00,LMRIBF,Filled,Buy,60.0,165.38,6.9459599999999995,,52 -2019-02-13 16:00:00,MCCZID,Filled,Sell,-1.0,41.95,0.029365,,53 -2019-02-13 16:00:00,ISIJLH,Filled,Sell,-1.0,29.79,0.020853,,54 -2019-02-13 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,55 -2019-02-13 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,56 -2019-02-13 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,57 -2019-02-13 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,58 -2019-02-13 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,59 -2019-02-13 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,60 -2019-02-13 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,61 -2019-02-14 16:00:00,FFNDVM,Filled,Buy,6.0,8.38,0.035196,,55 -2019-02-14 16:00:00,LMRIBF,Filled,Buy,1.0,163.19,0.114233,,56 -2019-02-14 16:00:00,CEMOJE,Filled,Buy,8.0,1123.96,6.294176,,57 -2019-02-14 16:00:00,GTKILW,Filled,Buy,8.0,1124.62,6.297871999999999,,58 -2019-02-14 16:00:00,BPSPGV,Filled,Buy,93.0,106.31,6.920781,,59 -2019-02-14 16:00:00,MCCZID,Filled,Buy,1.0,41.74,0.029218,,60 -2019-02-14 16:00:00,ISIJLH,Filled,Sell,-1.0,29.73,0.020811,,61 -2019-02-14 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,62 -2019-02-14 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,63 -2019-02-14 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,64 -2019-02-14 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,65 -2019-02-14 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,66 -2019-02-15 16:00:00,XUEHVZ,Filled,Buy,6.0,1619.82,6.803244,,62 -2019-02-15 16:00:00,LUZLYG,Filled,Buy,352.0,28.75,7.084,,63 -2019-02-15 16:00:00,FFNDVM,Filled,Sell,-1.0,8.5,0.00595,,64 -2019-02-15 16:00:00,MCCZID,Filled,Sell,-2.0,42.36,0.059304,,65 -2019-02-15 16:00:00,ISIJLH,Filled,Buy,1.0,30.0,0.021,,66 -2019-02-15 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,67 -2019-02-15 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,68 -2019-02-15 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,69 -2019-02-15 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,70 -2019-02-15 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,71 -2019-02-19 16:00:00,LUZLYG,Filled,Sell,-8.0,28.88,0.16172799999999998,,67 -2019-02-19 16:00:00,FFNDVM,Filled,Sell,-1189.0,8.54,7.107842,,68 -2019-02-19 16:00:00,BPSPGV,Filled,Sell,-1.0,107.79,0.075453,,69 -2019-02-19 16:00:00,MCCZID,Filled,Sell,-238.0,42.23,7.035518,,70 -2019-02-19 16:00:00,ISIJLH,Filled,Sell,-8.0,30.48,0.170688,,71 -2019-02-19 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,72 -2019-02-19 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,73 -2019-02-19 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,74 -2019-02-19 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,75 -2019-02-19 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,76 -2019-02-19 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,77 -2019-02-19 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,78 -2019-02-19 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,79 -2019-02-20 16:00:00,XUEHVZ,Filled,Buy,3.0,1627.11,3.416931,,72 -2019-02-20 16:00:00,LUZLYG,Filled,Buy,193.0,29.1,3.93141,,73 -2019-02-20 16:00:00,LMRIBF,Filled,Buy,35.0,162.02,3.96949,,74 -2019-02-20 16:00:00,CEMOJE,Filled,Buy,5.0,1114.2,3.8997,,75 -2019-02-20 16:00:00,GTKILW,Filled,Buy,5.0,1123.83,3.933405,,76 -2019-02-20 16:00:00,BPSPGV,Filled,Buy,52.0,107.84,3.925376,,77 -2019-02-20 16:00:00,MCCZID,Filled,Buy,367.0,42.49,10.915681,,78 -2019-02-20 16:00:00,ISIJLH,Filled,Sell,-328.0,30.63,7.032647999999999,,79 -2019-02-20 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,80 -2019-02-20 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,81 -2019-02-20 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,82 -2019-02-20 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,83 -2019-02-20 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,84 -2019-02-21 16:00:00,LUZLYG,Filled,Sell,-5.0,29.34,0.10269,,80 -2019-02-21 16:00:00,CEMOJE,Filled,Buy,1.0,1113.06,0.779142,,81 -2019-02-21 16:00:00,BPSPGV,Filled,Buy,2.0,106.93,0.149702,,82 -2019-02-21 16:00:00,MCCZID,Filled,Buy,4.0,42.0,0.1176,,83 -2019-02-21 16:00:00,ISIJLH,Filled,Buy,507.0,30.85,10.948665,,84 -2019-02-21 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,85 -2019-02-21 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,86 -2019-02-21 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,87 -2019-02-21 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,88 -2019-02-22 16:00:00,LUZLYG,Filled,Buy,2.0,29.04,0.040656,,85 -2019-02-22 16:00:00,LMRIBF,Filled,Buy,1.0,160.58,0.112406,,86 -2019-02-22 16:00:00,GTKILW,Filled,Buy,1.0,1103.12,0.7721839999999999,,87 -2019-02-22 16:00:00,BPSPGV,Filled,Sell,-146.0,110.0,11.242,,88 -2019-02-22 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,89 -2019-02-22 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,90 -2019-02-22 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,91 -2019-02-22 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,92 -2019-02-22 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,93 -2019-02-25 16:00:00,LUZLYG,Filled,Buy,4.0,29.16,0.081648,,89 -2019-02-25 16:00:00,LMRIBF,Filled,Sell,-1.0,163.0,0.1141,,90 -2019-02-25 16:00:00,BPSPGV,Filled,Buy,141.0,111.62,11.016894,,91 -2019-02-25 16:00:00,MCCZID,Filled,Sell,-7.0,43.06,0.210994,,92 -2019-02-25 16:00:00,ISIJLH,Filled,Sell,-5.0,31.25,0.109375,,93 -2019-02-25 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,94 -2019-02-25 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,95 -2019-02-25 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,96 -2019-02-25 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,97 -2019-02-25 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,98 -2019-02-25 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,99 -2019-02-26 16:00:00,LUZLYG,Filled,Sell,-3.0,29.07,0.061047,,94 -2019-02-26 16:00:00,OCHCAU,Filled,Buy,308.0,50.59,10.907204,,95 -2019-02-26 16:00:00,LMRIBF,Filled,Sell,-1.0,164.22,0.114954,,96 -2019-02-26 16:00:00,BPSPGV,Filled,Sell,-1.0,111.17,0.077819,,97 -2019-02-26 16:00:00,MCCZID,Filled,Sell,-364.0,42.95,10.94366,,98 -2019-02-26 16:00:00,ISIJLH,Filled,Buy,1.0,31.13,0.021791,,99 -2019-02-26 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,100 -2019-02-26 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,101 -2019-02-26 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,102 -2019-02-26 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,103 -2019-02-26 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,104 -2019-02-27 16:00:00,XUEHVZ,Filled,Sell,-9.0,1639.97,10.331811,,100 -2019-02-27 16:00:00,OCHCAU,Filled,Sell,-2.0,51.25,0.07175,,101 -2019-02-27 16:00:00,GTKILW,Filled,Sell,-1.0,1123.85,0.7866949999999999,,102 -2019-02-27 16:00:00,BPSPGV,Filled,Sell,-1.0,111.69,0.078183,,103 -2019-02-27 16:00:00,ISIJLH,Filled,Sell,-503.0,31.23,10.996083,,104 -2019-02-27 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,105 -2019-02-27 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,106 -2019-02-27 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,107 -2019-02-27 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,108 -2019-02-27 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,109 -2019-02-27 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,110 -2019-02-27 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,111 -2019-02-28 16:00:00,LUZLYG,Filled,Buy,131.0,29.55,2.709735,,105 -2019-02-28 16:00:00,OCHCAU,Filled,Sell,-306.0,51.55,11.04201,,106 -2019-02-28 16:00:00,LMRIBF,Filled,Buy,25.0,162.37,2.841475,,107 -2019-02-28 16:00:00,CEMOJE,Filled,Buy,3.0,1114.86,2.341206,,108 -2019-02-28 16:00:00,GTKILW,Filled,Buy,4.0,1126.92,3.155376,,109 -2019-02-28 16:00:00,BPSPGV,Filled,Sell,-139.0,112.04,10.901492,,110 -2019-02-28 16:00:00,ISIJLH,Filled,Buy,633.0,31.08,13.771548,,111 -2019-02-28 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,112 -2019-02-28 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,113 -2019-02-28 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,114 -2019-02-28 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,115 -2019-02-28 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,116 -2019-03-01 16:00:00,LUZLYG,Filled,Buy,10.0,29.33,0.20530999999999996,,112 -2019-03-01 16:00:00,LMRIBF,Filled,Sell,-120.0,162.58,13.656720000000002,,113 -2019-03-01 16:00:00,CEMOJE,Filled,Sell,-17.0,1117.75,13.301225,,114 -2019-03-01 16:00:00,GTKILW,Filled,Sell,-17.0,1128.61,13.430459,,115 -2019-03-01 16:00:00,ISIJLH,Filled,Sell,-1.0,31.2,0.02184,,116 -2019-03-01 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,117 -2019-03-01 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,118 -2019-03-01 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,119 -2019-03-01 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,120 -2019-03-01 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,121 -2019-03-01 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,122 -2019-03-04 16:00:00,LUZLYG,Filled,Sell,-676.0,29.3,13.86476,,117 -2019-03-04 16:00:00,OCHCAU,Filled,Buy,382.0,51.63,13.805862,,118 -2019-03-04 16:00:00,CEMOJE,Filled,Buy,17.0,1145.97,13.637043,,119 -2019-03-04 16:00:00,BPSPGV,Filled,Buy,174.0,112.87,13.747566,,120 -2019-03-04 16:00:00,MCCZID,Filled,Buy,453.0,43.56,13.812876,,121 -2019-03-04 16:00:00,ISIJLH,Filled,Buy,6.0,30.92,0.129864,,122 -2019-03-04 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,123 -2019-03-04 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,124 -2019-03-04 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,125 -2019-03-04 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,126 -2019-03-04 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,127 -2019-03-04 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,128 -2019-03-04 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,129 -2019-03-05 16:00:00,OCHCAU,Filled,Sell,-99.0,51.12,3.542616,,123 -2019-03-05 16:00:00,LMRIBF,Filled,Buy,86.0,167.35,10.07447,,124 -2019-03-05 16:00:00,CEMOJE,Filled,Sell,-17.0,1145.87,13.635852999999996,,125 -2019-03-05 16:00:00,GTKILW,Filled,Buy,12.0,1150.68,9.665712,,126 -2019-03-05 16:00:00,BPSPGV,Filled,Sell,-174.0,112.19,13.664742,,127 -2019-03-05 16:00:00,MCCZID,Filled,Sell,-116.0,43.19,3.507028,,128 -2019-03-05 16:00:00,ISIJLH,Filled,Sell,-154.0,29.98,3.231844,,129 -2019-03-05 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,130 -2019-03-05 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,131 -2019-03-05 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,132 -2019-03-05 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,133 -2019-03-05 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,134 -2019-03-06 16:00:00,OCHCAU,Filled,Sell,-86.0,51.19,3.081638,,130 -2019-03-06 16:00:00,LMRIBF,Filled,Sell,-27.0,172.6,3.26214,,131 -2019-03-06 16:00:00,GTKILW,Filled,Sell,-12.0,1174.18,9.863112,,132 -2019-03-06 16:00:00,MCCZID,Filled,Sell,-337.0,42.84,10.105956,,133 -2019-03-06 16:00:00,ISIJLH,Filled,Sell,-146.0,30.0,3.066,,134 -2019-03-06 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,135 -2019-03-06 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,136 -2019-03-06 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,137 -2019-03-06 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,138 -2019-03-07 16:00:00,OCHCAU,Filled,Sell,-1.0,51.52,0.036064,,135 -2019-03-07 16:00:00,LMRIBF,Filled,Sell,-59.0,171.48,7.082123999999999,,136 -2019-03-07 16:00:00,BGDRAI,Filled,Buy,1111.0,9.09,7.069293,,137 -2019-03-07 16:00:00,ISIJLH,Filled,Sell,-338.0,29.9,7.074339999999999,,138 -2019-03-07 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,139 -2019-03-07 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,140 -2019-03-08 16:00:00,OCHCAU,Filled,Sell,-196.0,50.71,6.957412,,139 -2019-03-08 16:00:00,BGDRAI,Filled,Sell,-1111.0,9.33,7.255940999999999,,140 -2019-03-08 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,141 -2019-03-08 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,142 -2019-03-11 16:00:00,CEMOJE,Filled,Buy,8.0,1137.85,6.37196,,141 -2019-03-11 16:00:00,MCCZID,Filled,Buy,250.0,41.0,7.175,,142 -2019-03-11 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,143 -2019-03-11 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,144 -2019-03-11 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,145 -2019-03-12 16:00:00,LUZLYG,Filled,Buy,502.0,29.0,10.1906,,143 -2019-03-12 16:00:00,CEMOJE,Filled,Buy,4.0,1174.87,3.289636,,144 -2019-03-12 16:00:00,MCCZID,Filled,Sell,-250.0,41.65,7.28875,,145 -2019-03-12 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,146 -2019-03-12 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,147 -2019-03-13 16:00:00,LMRIBF,Filled,Buy,84.0,172.35,10.13418,,146 -2019-03-13 16:00:00,CEMOJE,Filled,Sell,-12.0,1192.37,10.015908,,147 -2019-03-13 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,148 -2019-03-13 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,149 -2019-03-13 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,150 -2019-03-14 16:00:00,LUZLYG,Filled,Sell,-6.0,29.31,0.123102,,148 -2019-03-14 16:00:00,LMRIBF,Filled,Sell,-1.0,169.18,0.118426,,149 -2019-03-14 16:00:00,CEMOJE,Filled,Buy,12.0,1191.55,10.00902,,150 -2019-03-14 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,151 -2019-03-14 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,152 -2019-03-14 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,153 -2019-03-15 16:00:00,LUZLYG,Filled,Sell,-156.0,29.45,3.21594,,151 -2019-03-15 16:00:00,LMRIBF,Filled,Sell,-25.0,167.15,2.925125,,152 -2019-03-15 16:00:00,CEMOJE,Filled,Sell,-4.0,1185.11,3.3183079999999996,,153 -2019-03-15 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,154 -2019-03-15 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,155 -2019-03-15 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,156 -2019-03-18 16:00:00,LUZLYG,Filled,Buy,2.0,29.38,0.041131999999999995,,154 -2019-03-18 16:00:00,LMRIBF,Filled,Sell,-58.0,163.4,6.634040000000001,,155 -2019-03-18 16:00:00,CEMOJE,Filled,Sell,-8.0,1184.54,6.633424,,156 -2019-03-18 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,157 -2019-03-18 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,158 -2019-03-18 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,159 -2019-03-19 16:00:00,LUZLYG,Filled,Sell,-6.0,30.0,0.126,,157 -2019-03-19 16:00:00,CEMOJE,Filled,Buy,8.0,1180.91,6.6130960000000005,,158 -2019-03-19 16:00:00,BPSPGV,Filled,Buy,85.0,118.0,7.021,,159 -2019-03-19 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,160 -2019-03-19 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,161 -2019-03-19 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,162 -2019-03-20 16:00:00,LUZLYG,Filled,Buy,2.0,29.62,0.041468,,160 -2019-03-20 16:00:00,CEMOJE,Filled,Sell,-8.0,1199.02,6.714512,,161 -2019-03-20 16:00:00,BPSPGV,Filled,Sell,-85.0,117.28,6.978159999999999,,162 -2019-03-20 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,163 -2019-03-21 16:00:00,LUZLYG,Filled,Buy,12.0,28.4,0.23855999999999997,,163 -2019-03-21 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,164 -2019-03-22 16:00:00,LUZLYG,Filled,Buy,5.0,27.85,0.097475,,164 -2019-03-22 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,165 -2019-03-22 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,166 -2019-03-25 16:00:00,LUZLYG,Filled,Buy,15.0,26.94,0.28287,,165 -2019-03-25 16:00:00,HECLON,Filled,Buy,164.0,61.1,7.014279999999999,,166 -2019-03-25 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,167 -2019-03-25 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,168 -2019-03-26 16:00:00,LUZLYG,Filled,Buy,170.0,27.15,3.23085,,167 -2019-03-26 16:00:00,HECLON,Filled,Buy,76.0,61.0,3.2452,,168 -2019-03-26 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,169 -2019-03-26 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,170 -2019-03-27 16:00:00,LUZLYG,Filled,Sell,-540.0,27.12,10.25136,,169 -2019-03-27 16:00:00,HECLON,Filled,Sell,-3.0,61.35,0.128835,,170 -2019-03-27 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,171 -2019-03-28 16:00:00,HECLON,Filled,Sell,-237.0,60.86,10.096674,,171 -2019-03-28 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,172 -2019-03-29 16:00:00,FFNDVM,Filled,Buy,1655.0,8.78,10.17163,,172 -2019-03-29 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,173 -2019-04-01 16:00:00,FFNDVM,Filled,Sell,-1655.0,8.88,10.28748,,173 -2019-04-01 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,174 -2019-04-02 16:00:00,OCHCAU,Filled,Buy,204.0,55.0,7.854,,174 -2019-04-02 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,175 -2019-04-03 16:00:00,OCHCAU,Filled,Sell,-204.0,55.46,7.919688,,175 -2019-04-09 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,176 -2019-04-10 16:00:00,OCHCAU,Filled,Buy,183.0,55.27,7.080087,,176 -2019-04-11 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,177 -2019-04-12 16:00:00,OCHCAU,Filled,Sell,-1.0,55.93,0.039151,,177 -2019-04-12 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,178 -2019-04-15 16:00:00,OCHCAU,Filled,Sell,-4.0,56.4,0.15792,,178 -2019-04-15 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,179 -2019-04-16 16:00:00,OCHCAU,Filled,Sell,-1.0,56.63,0.039641,,179 -2019-04-16 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,180 -2019-04-17 16:00:00,OCHCAU,Filled,Sell,-1.0,57.22,0.040054,,180 -2019-04-17 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,181 -2019-04-18 16:00:00,OCHCAU,Filled,Buy,2.0,56.63,0.079282,,181 -2019-04-18 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,182 -2019-04-22 16:00:00,OCHCAU,Filled,Sell,-178.0,56.16,6.997535999999999,,182 -2019-04-23 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,183 -2019-04-23 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,184 -2019-04-24 16:00:00,OCHCAU,Filled,Buy,242.0,56.62,9.591428,,183 -2019-04-24 16:00:00,MCCZID,Filled,Buy,348.0,39.45,9.61002,,184 -2019-04-24 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,185 -2019-04-24 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,186 -2019-04-25 16:00:00,OCHCAU,Filled,Sell,-1.0,56.46,0.039522,,185 -2019-04-25 16:00:00,MCCZID,Filled,Sell,-348.0,39.28,9.568608,,186 -2019-04-25 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,187 -2019-04-26 16:00:00,OCHCAU,Filled,Sell,-241.0,56.02,9.450574,,187 -2019-05-01 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,188 -2019-05-02 16:00:00,BPSPGV,Filled,Buy,120.0,127.98,10.75032,,188 -2019-05-02 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,189 -2019-05-02 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,190 -2019-05-03 16:00:00,BPSPGV,Filled,Buy,2.0,127.42,0.178388,,189 -2019-05-03 16:00:00,ISIJLH,Filled,Buy,503.0,30.63,10.784823,,190 -2019-05-03 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,191 -2019-05-03 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,192 -2019-05-06 16:00:00,BPSPGV,Filled,Sell,-3.0,126.33,0.265293,,191 -2019-05-06 16:00:00,ISIJLH,Filled,Sell,-503.0,30.49,10.735529,,192 -2019-05-06 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,193 -2019-05-06 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,194 -2019-05-06 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,195 -2019-05-06 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,196 -2019-05-07 16:00:00,XUEHVZ,Filled,Buy,8.0,1957.03,10.959368,,193 -2019-05-07 16:00:00,GTKILW,Filled,Buy,13.0,1194.82,10.872862,,194 -2019-05-07 16:00:00,BPSPGV,Filled,Buy,3.0,126.5,0.26565,,195 -2019-05-07 16:00:00,ISIJLH,Filled,Buy,511.0,30.47,10.899119,,196 -2019-05-07 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,197 -2019-05-07 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,198 -2019-05-07 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,199 -2019-05-07 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,200 -2019-05-08 16:00:00,XUEHVZ,Filled,Sell,-3.0,1920.48,4.033008000000001,,197 -2019-05-08 16:00:00,GTKILW,Filled,Sell,-13.0,1175.65,10.698415,,198 -2019-05-08 16:00:00,BPSPGV,Filled,Sell,-43.0,125.44,3.775744,,199 -2019-05-08 16:00:00,ISIJLH,Filled,Sell,-511.0,30.4,10.87408,,200 -2019-05-08 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,201 -2019-05-08 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,202 -2019-05-08 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,203 -2019-05-09 16:00:00,XUEHVZ,Filled,Sell,-5.0,1925.62,6.7396699999999985,,201 -2019-05-09 16:00:00,BPSPGV,Filled,Buy,1.0,124.26,0.086982,,202 -2019-05-09 16:00:00,ISIJLH,Filled,Buy,333.0,30.17,7.032627000000001,,203 -2019-05-09 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,204 -2019-05-09 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,205 -2019-05-09 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,206 -2019-05-09 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,207 -2019-05-09 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,208 -2019-05-09 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,209 -2019-05-10 16:00:00,SMDIFE,Filled,Buy,50.0,197.47,6.91145,,204 -2019-05-10 16:00:00,XUEHVZ,Filled,Buy,5.0,1903.74,6.66309,,205 -2019-05-10 16:00:00,FFNDVM,Filled,Buy,991.0,10.32,7.158984,,206 -2019-05-10 16:00:00,ZIJVRO,Filled,Buy,216.0,46.48,7.0277759999999985,,207 -2019-05-10 16:00:00,BPSPGV,Filled,Sell,-80.0,125.23,7.01288,,208 -2019-05-10 16:00:00,ISIJLH,Filled,Sell,-333.0,30.25,7.0512749999999995,,209 -2019-05-10 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,210 -2019-05-10 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,211 -2019-05-10 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,212 -2019-05-13 16:00:00,SMDIFE,Filled,Buy,1.0,187.48,0.131236,,210 -2019-05-13 16:00:00,FFNDVM,Filled,Sell,-18.0,10.15,0.12789,,211 -2019-05-13 16:00:00,ZIJVRO,Filled,Buy,2.0,45.2,0.06328,,212 -2019-05-13 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,213 -2019-05-13 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,214 -2019-05-13 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,215 -2019-05-13 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,216 -2019-05-13 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,217 -2019-05-13 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,218 -2019-05-13 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,219 -2019-05-13 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,220 -2019-05-14 16:00:00,SMDIFE,Filled,Buy,31.0,186.33,4.043361,,213 -2019-05-14 16:00:00,XUEHVZ,Filled,Buy,3.0,1833.7,3.85077,,214 -2019-05-14 16:00:00,FFNDVM,Filled,Buy,552.0,10.15,3.92196,,215 -2019-05-14 16:00:00,LMRIBF,Filled,Buy,84.0,182.72,10.743936,,216 -2019-05-14 16:00:00,CEMOJE,Filled,Buy,13.0,1128.99,10.273809,,217 -2019-05-14 16:00:00,GTKILW,Filled,Buy,13.0,1132.11,10.302200999999998,,218 -2019-05-14 16:00:00,ZIJVRO,Filled,Buy,125.0,45.26,3.96025,,219 -2019-05-14 16:00:00,BPSPGV,Filled,Buy,124.0,123.89,10.753652,,220 -2019-05-14 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,221 -2019-05-14 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,222 -2019-05-14 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,223 -2019-05-14 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,224 -2019-05-14 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,225 -2019-05-14 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,226 -2019-05-15 16:00:00,SMDIFE,Filled,Sell,-1.0,186.27,0.130389,,221 -2019-05-15 16:00:00,FFNDVM,Filled,Sell,-24.0,10.2,0.17135999999999998,,222 -2019-05-15 16:00:00,LMRIBF,Filled,Buy,1.0,180.08,0.126056,,223 -2019-05-15 16:00:00,CEMOJE,Filled,Sell,-13.0,1117.25,10.166975,,224 -2019-05-15 16:00:00,ZIJVRO,Filled,Sell,-3.0,44.83,0.094143,,225 -2019-05-15 16:00:00,BPSPGV,Filled,Sell,-124.0,124.06,10.768408,,226 -2019-05-15 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,227 -2019-05-15 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,228 -2019-05-15 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,229 -2019-05-15 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,230 -2019-05-15 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,231 -2019-05-15 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,232 -2019-05-16 16:00:00,SMDIFE,Filled,Sell,-1.0,189.88,0.132916,,227 -2019-05-16 16:00:00,XUEHVZ,Filled,Sell,-8.0,1882.36,10.541216,,228 -2019-05-16 16:00:00,FFNDVM,Filled,Sell,-1501.0,10.31,10.832717,,229 -2019-05-16 16:00:00,LMRIBF,Filled,Sell,-85.0,185.18,11.01821,,230 -2019-05-16 16:00:00,GTKILW,Filled,Sell,-13.0,1164.5,10.59695,,231 -2019-05-16 16:00:00,ZIJVRO,Filled,Sell,-3.0,45.58,0.095718,,232 -2019-05-16 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,233 -2019-05-16 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,234 -2019-05-17 16:00:00,SMDIFE,Filled,Buy,1.0,187.04,0.130928,,233 -2019-05-17 16:00:00,ZIJVRO,Filled,Buy,1.0,45.14,0.031598,,234 -2019-05-17 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,235 -2019-05-17 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,236 -2019-05-17 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,237 -2019-05-17 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,238 -2019-05-20 16:00:00,SMDIFE,Filled,Sell,-81.0,183.5,10.40445,,235 -2019-05-20 16:00:00,CEMOJE,Filled,Buy,8.0,1161.99,6.507144,,236 -2019-05-20 16:00:00,GTKILW,Filled,Buy,8.0,1163.32,6.5145919999999995,,237 -2019-05-20 16:00:00,ZIJVRO,Filled,Sell,-116.0,44.0,3.5728,,238 -2019-05-20 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,239 -2019-05-20 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,240 -2019-05-21 16:00:00,GTKILW,Filled,Sell,-8.0,1143.45,6.40332,,239 -2019-05-21 16:00:00,ZIJVRO,Filled,Buy,7.0,44.32,0.217168,,240 -2019-05-21 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,241 -2019-05-21 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,242 -2019-05-21 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,243 -2019-05-22 16:00:00,FFNDVM,Filled,Buy,976.0,10.17,6.948144,,241 -2019-05-22 16:00:00,CEMOJE,Filled,Sell,-8.0,1148.39,6.4309840000000005,,242 -2019-05-22 16:00:00,ZIJVRO,Filled,Sell,-5.0,44.15,0.154525,,243 -2019-05-22 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,244 -2019-05-22 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,245 -2019-05-22 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,246 -2019-05-22 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,247 -2019-05-22 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,248 -2019-05-22 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,249 -2019-05-23 16:00:00,SMDIFE,Filled,Buy,54.0,179.72,6.793416,,244 -2019-05-23 16:00:00,FFNDVM,Filled,Buy,26.0,9.85,0.17926999999999998,,245 -2019-05-23 16:00:00,LMRIBF,Filled,Buy,53.0,182.42,6.767782,,246 -2019-05-23 16:00:00,CEMOJE,Filled,Buy,8.0,1150.2,6.441120000000001,,247 -2019-05-23 16:00:00,GTKILW,Filled,Buy,8.0,1150.78,6.444368,,248 -2019-05-23 16:00:00,ZIJVRO,Filled,Buy,3.0,43.33,0.090993,,249 -2019-05-23 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,250 -2019-05-23 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,251 -2019-05-23 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,252 -2019-05-23 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,253 -2019-05-23 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,254 -2019-05-24 16:00:00,SMDIFE,Filled,Buy,1.0,180.2,0.12614,,250 -2019-05-24 16:00:00,XUEHVZ,Filled,Buy,5.0,1818.85,6.365975,,251 -2019-05-24 16:00:00,FFNDVM,Filled,Buy,12.0,9.92,0.083328,,252 -2019-05-24 16:00:00,LMRIBF,Filled,Buy,2.0,182.32,0.255248,,253 -2019-05-24 16:00:00,ZIJVRO,Filled,Sell,-3.0,44.59,0.093639,,254 -2019-05-24 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,255 -2019-05-24 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,256 -2019-05-24 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,257 -2019-05-28 16:00:00,XUEHVZ,Filled,Sell,-5.0,1819.7,6.36895,,255 -2019-05-28 16:00:00,FFNDVM,Filled,Buy,2.0,9.87,0.013818,,256 -2019-05-28 16:00:00,LMRIBF,Filled,Sell,-55.0,181.54,6.98929,,257 -2019-05-28 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,258 -2019-05-28 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,259 -2019-05-28 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,260 -2019-05-28 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,261 -2019-05-28 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,262 -2019-05-29 16:00:00,SMDIFE,Filled,Sell,-55.0,176.44,6.792940000000001,,258 -2019-05-29 16:00:00,FFNDVM,Filled,Buy,531.0,9.7,3.60549,,259 -2019-05-29 16:00:00,CEMOJE,Filled,Buy,5.0,1135.26,3.97341,,260 -2019-05-29 16:00:00,GTKILW,Filled,Sell,-8.0,1140.99,6.389544,,261 -2019-05-29 16:00:00,ZIJVRO,Filled,Sell,-224.0,43.36,6.798848,,262 -2019-05-29 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,263 -2019-05-29 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,264 -2019-05-29 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,265 -2019-05-29 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,266 -2019-05-30 16:00:00,OCHCAU,Filled,Buy,361.0,53.44,13.504288,,263 -2019-05-30 16:00:00,FFNDVM,Filled,Buy,430.0,9.74,2.93174,,264 -2019-05-30 16:00:00,LMRIBF,Filled,Buy,105.0,183.08,13.45638,,265 -2019-05-30 16:00:00,CEMOJE,Filled,Buy,4.0,1115.74,3.124072,,266 -2019-05-30 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,267 -2019-05-30 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,268 -2019-05-30 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,269 -2019-05-30 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,270 -2019-05-31 16:00:00,OCHCAU,Filled,Sell,-361.0,52.79,13.340032999999998,,267 -2019-05-31 16:00:00,FFNDVM,Filled,Sell,-6.0,9.5,0.0399,,268 -2019-05-31 16:00:00,LMRIBF,Filled,Sell,-1.0,180.28,0.126196,,269 -2019-05-31 16:00:00,CEMOJE,Filled,Sell,-17.0,1114.66,13.264454,,270 -2019-05-31 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,271 -2019-05-31 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,272 -2019-05-31 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,273 -2019-06-03 16:00:00,OCHCAU,Filled,Buy,368.0,52.05,13.408079999999998,,271 -2019-06-03 16:00:00,FFNDVM,Filled,Buy,43.0,9.61,0.289261,,272 -2019-06-03 16:00:00,LMRIBF,Filled,Buy,4.0,175.0,0.49,,273 -2019-06-03 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,274 -2019-06-03 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,275 -2019-06-03 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,276 -2019-06-04 16:00:00,OCHCAU,Filled,Sell,-90.0,52.48,3.30624,,274 -2019-06-04 16:00:00,FFNDVM,Filled,Sell,-513.0,9.73,3.494043,,275 -2019-06-04 16:00:00,LMRIBF,Filled,Sell,-21.0,163.81,2.408007,,276 -2019-06-04 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,277 -2019-06-04 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,278 -2019-06-04 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,279 -2019-06-05 16:00:00,OCHCAU,Filled,Sell,-278.0,53.85,10.47921,,277 -2019-06-05 16:00:00,FFNDVM,Filled,Sell,-45.0,9.87,0.310905,,278 -2019-06-05 16:00:00,LMRIBF,Filled,Sell,-1.0,167.49,0.117243,,279 -2019-06-05 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,280 -2019-06-05 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,281 -2019-06-05 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,282 -2019-06-05 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,283 -2019-06-05 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,284 -2019-06-06 16:00:00,FFNDVM,Filled,Buy,21.0,9.71,0.142737,,280 -2019-06-06 16:00:00,LMRIBF,Filled,Sell,-1.0,168.3,0.11781,,281 -2019-06-06 16:00:00,CEMOJE,Filled,Buy,13.0,1042.05,9.482655,,282 -2019-06-06 16:00:00,GTKILW,Filled,Buy,13.0,1041.12,9.474192,,283 -2019-06-06 16:00:00,MCCZID,Filled,Buy,340.0,42.67,10.15546,,284 -2019-06-06 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,285 -2019-06-06 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,286 -2019-06-06 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,287 -2019-06-06 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,288 -2019-06-07 16:00:00,FFNDVM,Filled,Buy,5.0,9.76,0.034159999999999996,,285 -2019-06-07 16:00:00,CEMOJE,Filled,Sell,-13.0,1043.4,9.49494,,286 -2019-06-07 16:00:00,GTKILW,Filled,Sell,-13.0,1041.84,9.480743999999998,,287 -2019-06-07 16:00:00,MCCZID,Filled,Sell,-2.0,43.02,0.060228,,288 -2019-06-07 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,289 -2019-06-07 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,290 -2019-06-07 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,291 -2019-06-10 16:00:00,FFNDVM,Filled,Sell,-1.0,9.89,0.006923,,289 -2019-06-10 16:00:00,LMRIBF,Filled,Sell,-85.0,174.54,10.38513,,290 -2019-06-10 16:00:00,MCCZID,Filled,Sell,-2.0,43.2,0.060480000000000006,,291 -2019-06-10 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,292 -2019-06-10 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,293 -2019-06-11 16:00:00,FFNDVM,Filled,Sell,-1481.0,9.87,10.232229,,292 -2019-06-11 16:00:00,MCCZID,Filled,Sell,-1.0,43.15,0.030205,,293 -2019-06-11 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,294 -2019-06-12 16:00:00,MCCZID,Filled,Sell,-335.0,42.51,9.968595,,294 -2019-06-13 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,295 -2019-06-14 16:00:00,MCCZID,Filled,Buy,237.0,42.57,7.062363,,295 -2019-06-14 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,296 -2019-06-17 16:00:00,MCCZID,Filled,Sell,-237.0,42.73,7.088906999999999,,296 -2019-06-19 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,297 -2019-06-20 16:00:00,FFNDVM,Filled,Buy,1003.0,10.13,7.112273000000001,,297 -2019-06-20 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,298 -2019-06-21 16:00:00,FFNDVM,Filled,Sell,-10.0,10.05,0.07035,,298 -2019-06-21 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,299 -2019-06-24 16:00:00,FFNDVM,Filled,Sell,-993.0,9.95,6.916244999999999,,299 -2019-06-24 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,300 -2019-06-25 16:00:00,FFNDVM,Filled,Buy,1002.0,9.97,6.992958000000001,,300 -2019-06-25 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,301 -2019-06-25 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,302 -2019-06-26 16:00:00,YIVYGH,Filled,Buy,338.0,42.66,10.093355999999998,,301 -2019-06-26 16:00:00,FFNDVM,Filled,Buy,466.0,9.87,3.219594,,302 -2019-06-26 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,303 -2019-06-26 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,304 -2019-06-27 16:00:00,YIVYGH,Filled,Sell,-338.0,42.29,10.005814,,303 -2019-06-27 16:00:00,FFNDVM,Filled,Sell,-10.0,10.04,0.07028,,304 -2019-06-27 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,305 -2019-06-28 16:00:00,FFNDVM,Filled,Sell,-1458.0,10.2,10.41012,,305 -2019-07-03 13:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,306 -2019-07-05 16:00:00,FFNDVM,Filled,Buy,1358.0,10.17,9.667602,,306 -2019-07-05 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,307 -2019-07-08 16:00:00,FFNDVM,Filled,Sell,-1358.0,10.2,9.69612,,307 -2019-07-10 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,308 -2019-07-11 16:00:00,HECLON,Filled,Buy,141.0,71.4,7.047180000000001,,308 -2019-07-11 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,309 -2019-07-12 16:00:00,HECLON,Filled,Sell,-141.0,71.83,7.089621,,309 -2019-07-23 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,310 -2019-07-24 16:00:00,BPSPGV,Filled,Buy,98.0,139.0,9.5354,,310 -2019-07-24 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,311 -2019-07-25 16:00:00,BPSPGV,Filled,Sell,-1.0,140.28,0.098196,,311 -2019-07-25 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,312 -2019-07-25 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,313 -2019-07-26 16:00:00,BPSPGV,Filled,Sell,-97.0,140.36,9.530444,,312 -2019-07-26 16:00:00,ISIJLH,Filled,Buy,404.0,33.7,9.53036,,313 -2019-07-26 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,314 -2019-07-26 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,315 -2019-07-29 16:00:00,FFNDVM,Filled,Buy,1428.0,9.58,9.576168,,314 -2019-07-29 16:00:00,ISIJLH,Filled,Sell,-4.0,34.15,0.09562,,315 -2019-07-29 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,316 -2019-07-29 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,317 -2019-07-29 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,318 -2019-07-30 16:00:00,FFNDVM,Filled,Sell,-191.0,9.53,1.274161,,316 -2019-07-30 16:00:00,BPSPGV,Filled,Buy,84.0,140.0,8.232,,317 -2019-07-30 16:00:00,ISIJLH,Filled,Sell,-400.0,34.44,9.6432,,318 -2019-07-30 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,319 -2019-07-31 16:00:00,FFNDVM,Filled,Sell,-1237.0,9.55,8.269345,,319 -2019-07-31 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,320 -2019-07-31 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,321 -2019-07-31 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,322 -2019-07-31 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,323 -2019-08-01 16:00:00,LUZLYG,Filled,Buy,500.0,30.57,10.6995,,320 -2019-08-01 16:00:00,HECLON,Filled,Buy,215.0,70.76,10.64938,,321 -2019-08-01 16:00:00,FFNDVM,Filled,Buy,1610.0,9.55,10.762850000000002,,322 -2019-08-01 16:00:00,BPSPGV,Filled,Buy,28.0,137.0,2.6852,,323 -2019-08-01 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,324 -2019-08-01 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,325 -2019-08-01 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,326 -2019-08-01 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,327 -2019-08-01 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,328 -2019-08-02 16:00:00,LUZLYG,Filled,Sell,-500.0,29.36,10.276,,324 -2019-08-02 16:00:00,HECLON,Filled,Sell,-215.0,67.56,10.16778,,325 -2019-08-02 16:00:00,FFNDVM,Filled,Sell,-1610.0,9.26,10.43602,,326 -2019-08-02 16:00:00,BPSPGV,Filled,Sell,-1.0,138.05,0.096635,,327 -2019-08-02 16:00:00,ISIJLH,Filled,Buy,449.0,33.83,10.632769,,328 -2019-08-02 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,329 -2019-08-05 16:00:00,ISIJLH,Filled,Sell,-1.0,33.76,0.023631999999999997,,329 -2019-08-05 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,330 -2019-08-05 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,331 -2019-08-05 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,332 -2019-08-05 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,333 -2019-08-06 16:00:00,CEMOJE,Filled,Buy,13.0,1148.14,10.448074,,330 -2019-08-06 16:00:00,GTKILW,Filled,Buy,13.0,1149.24,10.458084,,331 -2019-08-06 16:00:00,BPSPGV,Filled,Buy,4.0,133.91,0.374948,,332 -2019-08-06 16:00:00,ISIJLH,Filled,Buy,9.0,33.5,0.21105,,333 -2019-08-06 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,334 -2019-08-06 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,335 -2019-08-06 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,336 -2019-08-06 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,337 -2019-08-07 16:00:00,CEMOJE,Filled,Sell,-13.0,1172.06,10.665746,,334 -2019-08-07 16:00:00,GTKILW,Filled,Sell,-13.0,1175.74,10.699234,,335 -2019-08-07 16:00:00,BPSPGV,Filled,Sell,-115.0,133.59,10.753995,,336 -2019-08-07 16:00:00,ISIJLH,Filled,Sell,-457.0,33.62,10.755038,,337 -2019-08-07 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,338 -2019-08-07 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,339 -2019-08-07 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,340 -2019-08-08 16:00:00,HECLON,Filled,Buy,154.0,65.9,7.10402,,338 -2019-08-08 16:00:00,CEMOJE,Filled,Buy,8.0,1172.39,6.565384000000001,,339 -2019-08-08 16:00:00,GTKILW,Filled,Buy,8.0,1177.82,6.595791999999999,,340 -2019-08-08 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,341 -2019-08-08 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,342 -2019-08-08 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,343 -2019-08-09 16:00:00,HECLON,Filled,Sell,-154.0,66.26,7.142828000000001,,341 -2019-08-09 16:00:00,GTKILW,Filled,Sell,-8.0,1206.67,6.757352,,342 -2019-08-09 16:00:00,ISIJLH,Filled,Buy,291.0,34.38,7.003206,,343 -2019-08-09 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,344 -2019-08-09 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,345 -2019-08-12 16:00:00,GTKILW,Filled,Buy,8.0,1185.6,6.639359999999999,,344 -2019-08-12 16:00:00,ISIJLH,Filled,Buy,3.0,34.42,0.072282,,345 -2019-08-12 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,346 -2019-08-12 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,347 -2019-08-12 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,348 -2019-08-12 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,349 -2019-08-13 16:00:00,CEMOJE,Filled,Buy,5.0,1171.29,4.099515,,346 -2019-08-13 16:00:00,GTKILW,Filled,Buy,5.0,1169.01,4.091535,,347 -2019-08-13 16:00:00,ZIJVRO,Filled,Buy,336.0,45.49,10.699248,,348 -2019-08-13 16:00:00,ISIJLH,Filled,Buy,150.0,34.46,3.6183,,349 -2019-08-13 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,350 -2019-08-13 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,351 -2019-08-13 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,352 -2019-08-13 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,353 -2019-08-13 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,354 -2019-08-14 16:00:00,FFNDVM,Filled,Buy,1657.0,9.11,10.566688999999998,,350 -2019-08-14 16:00:00,CEMOJE,Filled,Sell,-1.0,1199.86,0.8399019999999999,,351 -2019-08-14 16:00:00,GTKILW,Filled,Sell,-13.0,1194.47,10.869677,,352 -2019-08-14 16:00:00,ZIJVRO,Filled,Sell,-336.0,46.1,10.84272,,353 -2019-08-14 16:00:00,ISIJLH,Filled,Sell,-4.0,34.6,0.09688,,354 -2019-08-14 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,355 -2019-08-14 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,356 -2019-08-14 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,357 -2019-08-14 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,358 -2019-08-14 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,359 -2019-08-15 16:00:00,FFNDVM,Filled,Buy,45.0,9.04,0.28475999999999996,,355 -2019-08-15 16:00:00,CEMOJE,Filled,Buy,1.0,1163.43,0.814401,,356 -2019-08-15 16:00:00,GTKILW,Filled,Buy,13.0,1157.66,10.534706000000002,,357 -2019-08-15 16:00:00,MCCZID,Filled,Buy,447.0,34.29,10.729341,,358 -2019-08-15 16:00:00,ISIJLH,Filled,Buy,9.0,34.16,0.21520799999999995,,359 -2019-08-15 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,360 -2019-08-15 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,361 -2019-08-15 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,362 -2019-08-15 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,363 -2019-08-16 16:00:00,FFNDVM,Filled,Sell,-1702.0,8.94,10.651116,,360 -2019-08-16 16:00:00,GTKILW,Filled,Sell,-13.0,1168.24,10.630984,,361 -2019-08-16 16:00:00,MCCZID,Filled,Sell,-3.0,34.74,0.072954,,362 -2019-08-16 16:00:00,ISIJLH,Filled,Sell,-449.0,34.51,10.846493,,363 -2019-08-16 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,364 -2019-08-16 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,365 -2019-08-16 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,366 -2019-08-19 16:00:00,OCHCAU,Filled,Buy,212.0,47.92,7.111328,,364 -2019-08-19 16:00:00,CEMOJE,Filled,Sell,-13.0,1173.48,10.678668,,365 -2019-08-19 16:00:00,MCCZID,Filled,Sell,-157.0,34.86,3.831113999999999,,366 -2019-08-19 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,367 -2019-08-19 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,368 -2019-08-19 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,369 -2019-08-19 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,370 -2019-08-20 16:00:00,OCHCAU,Filled,Sell,-212.0,48.53,7.201852000000001,,367 -2019-08-20 16:00:00,CEMOJE,Filled,Buy,8.0,1194.18,6.6874080000000005,,368 -2019-08-20 16:00:00,GTKILW,Filled,Buy,8.0,1204.73,6.746488,,369 -2019-08-20 16:00:00,MCCZID,Filled,Sell,-287.0,35.12,7.055607999999999,,370 -2019-08-21 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,371 -2019-08-21 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,372 -2019-08-22 16:00:00,FFNDVM,Filled,Buy,1102.0,9.07,6.996598,,371 -2019-08-22 16:00:00,ZIJVRO,Filled,Buy,211.0,47.28,6.983256,,372 -2019-08-22 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,373 -2019-08-22 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,374 -2019-08-22 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,375 -2019-08-23 16:00:00,FFNDVM,Filled,Sell,-1102.0,8.9,6.865460000000001,,373 -2019-08-23 16:00:00,GTKILW,Filled,Sell,-8.0,1193.08,6.681247999999999,,374 -2019-08-23 16:00:00,ZIJVRO,Filled,Sell,-211.0,46.37,6.8488489999999995,,375 -2019-08-23 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,376 -2019-08-26 16:00:00,CEMOJE,Filled,Sell,-8.0,1151.74,6.449744,,376 -2019-08-27 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,377 -2019-08-27 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,378 -2019-08-28 16:00:00,CEMOJE,Filled,Buy,12.0,1168.45,9.81498,,377 -2019-08-28 16:00:00,GTKILW,Filled,Buy,12.0,1167.17,9.804228,,378 -2019-08-28 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,379 -2019-08-28 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,380 -2019-08-28 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,381 -2019-08-29 16:00:00,OCHCAU,Filled,Buy,408.0,47.59,13.591704,,379 -2019-08-29 16:00:00,CEMOJE,Filled,Buy,4.0,1172.85,3.2839799999999997,,380 -2019-08-29 16:00:00,GTKILW,Filled,Buy,4.0,1178.91,3.300948,,381 -2019-08-29 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,382 -2019-08-29 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,383 -2019-08-30 16:00:00,OCHCAU,Filled,Sell,-3.0,47.52,0.099792,,382 -2019-08-30 16:00:00,ISIJLH,Filled,Buy,545.0,35.17,13.417355,,383 -2019-08-30 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,384 -2019-08-30 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,385 -2019-09-03 16:00:00,OCHCAU,Filled,Buy,4.0,46.63,0.130564,,384 -2019-09-03 16:00:00,ISIJLH,Filled,Sell,-2.0,35.1,0.04914,,385 -2019-09-03 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,386 -2019-09-03 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,387 -2019-09-03 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,388 -2019-09-03 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,389 -2019-09-04 16:00:00,OCHCAU,Filled,Sell,-409.0,47.02,13.461826,,386 -2019-09-04 16:00:00,CEMOJE,Filled,Sell,-5.0,1164.1,4.07435,,387 -2019-09-04 16:00:00,GTKILW,Filled,Sell,-5.0,1171.63,4.1007050000000005,,388 -2019-09-04 16:00:00,ISIJLH,Filled,Sell,-543.0,35.55,13.512555,,389 -2019-09-04 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,390 -2019-09-05 16:00:00,ISIJLH,Filled,Buy,376.0,35.9,9.44888,,390 -2019-09-05 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,391 -2019-09-06 16:00:00,ISIJLH,Filled,Sell,-1.0,35.95,0.025165000000000003,,391 -2019-09-06 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,392 -2019-09-09 16:00:00,ISIJLH,Filled,Sell,-4.0,37.75,0.1057,,392 -2019-09-09 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,393 -2019-09-10 16:00:00,ISIJLH,Filled,Sell,-371.0,37.19,9.658243,,393 -2019-09-10 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,394 -2019-09-10 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,395 -2019-09-11 16:00:00,CEMOJE,Filled,Sell,-3.0,1203.75,2.527875,,394 -2019-09-11 16:00:00,GTKILW,Filled,Sell,-3.0,1203.16,2.5266360000000003,,395 -2019-09-17 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,396 -2019-09-18 16:00:00,ISIJLH,Filled,Buy,268.0,36.75,6.8943,,396 -2019-09-18 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,397 -2019-09-19 16:00:00,ISIJLH,Filled,Buy,3.0,37.0,0.0777,,397 -2019-09-19 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,398 -2019-09-19 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,399 -2019-09-20 16:00:00,SMDIFE,Filled,Buy,45.0,221.5,6.97725,,398 -2019-09-20 16:00:00,ISIJLH,Filled,Sell,-3.0,37.31,0.078351,,399 -2019-09-20 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,400 -2019-09-20 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,401 -2019-09-23 16:00:00,YIVYGH,Filled,Buy,215.0,46.17,6.9485850000000005,,400 -2019-09-23 16:00:00,ISIJLH,Filled,Sell,-268.0,37.63,7.059388,,401 -2019-09-23 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,402 -2019-09-23 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,403 -2019-09-24 16:00:00,SMDIFE,Filled,Sell,-45.0,221.08,6.9640200000000005,,402 -2019-09-24 16:00:00,YIVYGH,Filled,Sell,-215.0,46.62,7.01631,,403 -2019-09-24 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,404 -2019-09-24 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,405 -2019-09-25 16:00:00,CEMOJE,Filled,Buy,3.0,1219.79,2.561559,,404 -2019-09-25 16:00:00,GTKILW,Filled,Buy,3.0,1211.09,2.5432889999999997,,405 -2019-09-25 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,406 -2019-09-25 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,407 -2019-09-26 16:00:00,CEMOJE,Filled,Sell,-1.0,1244.48,0.871136,,406 -2019-09-26 16:00:00,GTKILW,Filled,Sell,-1.0,1246.61,0.8726269999999999,,407 -2019-09-27 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,408 -2019-09-27 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,409 -2019-09-30 16:00:00,FFNDVM,Filled,Buy,1485.0,9.14,9.50103,,408 -2019-09-30 16:00:00,CEMOJE,Filled,Buy,1.0,1224.57,0.8571989999999999,,409 -2019-09-30 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,410 -2019-09-30 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,411 -2019-09-30 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,412 -2019-10-01 16:00:00,FFNDVM,Filled,Sell,-1485.0,9.19,9.553005,,410 -2019-10-01 16:00:00,CEMOJE,Filled,Sell,-11.0,1220.7,9.39939,,411 -2019-10-01 16:00:00,GTKILW,Filled,Sell,-10.0,1210.63,8.47441,,412 -2019-10-04 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,413 -2019-10-07 16:00:00,RUKNMV,Filled,Buy,235.0,48.91,8.045694999999998,,413 -2019-10-07 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,414 -2019-10-08 16:00:00,RUKNMV,Filled,Buy,2.0,48.25,0.06755,,414 -2019-10-08 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,415 -2019-10-08 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,416 -2019-10-09 16:00:00,ISIJLH,Filled,Buy,266.0,37.08,6.9042959999999995,,415 -2019-10-09 16:00:00,RUKNMV,Filled,Sell,-29.0,48.18,0.978054,,416 -2019-10-09 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,417 -2019-10-09 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,418 -2019-10-10 16:00:00,ISIJLH,Filled,Buy,3.0,37.0,0.0777,,417 -2019-10-10 16:00:00,RUKNMV,Filled,Sell,-1.0,48.32,0.033824,,418 -2019-10-11 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,419 -2019-10-11 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,420 -2019-10-14 16:00:00,ISIJLH,Filled,Sell,-4.0,37.58,0.105224,,419 -2019-10-14 16:00:00,RUKNMV,Filled,Sell,-5.0,49.15,0.172025,,420 -2019-10-14 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,421 -2019-10-15 16:00:00,ISIJLH,Filled,Buy,1.0,37.46,0.026222,,421 -2019-10-15 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,422 -2019-10-15 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,423 -2019-10-15 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,424 -2019-10-16 16:00:00,HECLON,Filled,Buy,140.0,71.11,6.96878,,422 -2019-10-16 16:00:00,ISIJLH,Filled,Sell,-3.0,37.9,0.07959,,423 -2019-10-16 16:00:00,RUKNMV,Filled,Sell,-3.0,50.14,0.105294,,424 -2019-10-16 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,425 -2019-10-16 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,426 -2019-10-16 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,427 -2019-10-17 16:00:00,HECLON,Filled,Sell,-140.0,70.08,6.867839999999999,,425 -2019-10-17 16:00:00,ISIJLH,Filled,Buy,1.0,37.8,0.026459999999999997,,426 -2019-10-17 16:00:00,RUKNMV,Filled,Sell,-199.0,49.9,6.9510700000000005,,427 -2019-10-17 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,428 -2019-10-18 16:00:00,ISIJLH,Filled,Sell,-1.0,37.81,0.026467,,428 -2019-10-18 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,429 -2019-10-21 16:00:00,ISIJLH,Filled,Sell,-4.0,38.42,0.107576,,429 -2019-10-21 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,430 -2019-10-21 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,431 -2019-10-22 16:00:00,ISIJLH,Filled,Buy,2.0,37.83,0.052961999999999995,,430 -2019-10-22 16:00:00,RUKNMV,Filled,Buy,197.0,50.46,6.9584340000000005,,431 -2019-10-22 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,432 -2019-10-22 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,433 -2019-10-23 16:00:00,ISIJLH,Filled,Buy,43.0,38.0,1.1438,,432 -2019-10-23 16:00:00,RUKNMV,Filled,Buy,32.0,50.76,1.137024,,433 -2019-10-23 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,434 -2019-10-23 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,435 -2019-10-24 16:00:00,ISIJLH,Filled,Sell,-304.0,37.74,8.031072,,434 -2019-10-24 16:00:00,RUKNMV,Filled,Sell,-2.0,50.98,0.07137199999999999,,435 -2019-10-25 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,436 -2019-10-28 16:00:00,RUKNMV,Filled,Sell,-2.0,51.98,0.07277199999999999,,436 -2019-10-28 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,437 -2019-10-28 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,438 -2019-10-29 16:00:00,YIVYGH,Filled,Buy,255.0,45.19,8.066415,,437 -2019-10-29 16:00:00,RUKNMV,Filled,Sell,-1.0,51.53,0.036071,,438 -2019-10-29 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,439 -2019-10-29 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,440 -2019-10-30 16:00:00,YIVYGH,Filled,Sell,-255.0,45.35,8.094975,,439 -2019-10-30 16:00:00,RUKNMV,Filled,Sell,-2.0,51.88,0.072632,,440 -2019-10-30 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,441 -2019-10-30 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,442 -2019-10-30 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,443 -2019-10-31 16:00:00,YIVYGH,Filled,Buy,429.0,44.75,13.438425,,441 -2019-10-31 16:00:00,MCCZID,Filled,Buy,498.0,38.39,13.382754,,442 -2019-10-31 16:00:00,RUKNMV,Filled,Buy,146.0,51.73,5.286806,,443 -2019-10-31 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,444 -2019-10-31 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,445 -2019-10-31 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,446 -2019-11-01 16:00:00,YIVYGH,Filled,Sell,-429.0,45.19,13.570557,,444 -2019-11-01 16:00:00,MCCZID,Filled,Buy,2.0,38.67,0.054138,,445 -2019-11-01 16:00:00,RUKNMV,Filled,Buy,3.0,52.18,0.109578,,446 -2019-11-01 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,447 -2019-11-01 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,448 -2019-11-01 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,449 -2019-11-04 16:00:00,YIVYGH,Filled,Buy,429.0,45.17,13.564551,,447 -2019-11-04 16:00:00,BPSPGV,Filled,Buy,133.0,144.96,13.495776,,448 -2019-11-04 16:00:00,RUKNMV,Filled,Sell,-4.0,52.52,0.14705600000000002,,449 -2019-11-04 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,450 -2019-11-04 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,451 -2019-11-04 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,452 -2019-11-04 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,453 -2019-11-05 16:00:00,YIVYGH,Filled,Sell,-74.0,43.89,2.273502,,450 -2019-11-05 16:00:00,BPSPGV,Filled,Sell,-26.0,145.0,2.639,,451 -2019-11-05 16:00:00,MCCZID,Filled,Sell,-500.0,38.05,13.3175,,452 -2019-11-05 16:00:00,RUKNMV,Filled,Sell,-72.0,52.83,2.662632,,453 -2019-11-05 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,454 -2019-11-05 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,455 -2019-11-05 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,456 -2019-11-05 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,457 -2019-11-06 16:00:00,YIVYGH,Filled,Sell,-128.0,44.32,3.971072,,454 -2019-11-06 16:00:00,BPSPGV,Filled,Sell,-107.0,144.17,10.798333,,455 -2019-11-06 16:00:00,MCCZID,Filled,Buy,269.0,37.62,7.083845999999999,,456 -2019-11-06 16:00:00,RUKNMV,Filled,Sell,-295.0,53.29,11.004385,,457 -2019-11-06 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,458 -2019-11-07 16:00:00,MCCZID,Filled,Sell,-1.0,37.36,0.026152,,458 -2019-11-07 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,459 -2019-11-07 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,460 -2019-11-08 16:00:00,YIVYGH,Filled,Sell,-227.0,44.68,7.099652000000001,,459 -2019-11-08 16:00:00,MCCZID,Filled,Buy,5.0,36.86,0.12901,,460 -2019-11-08 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,461 -2019-11-11 16:00:00,MCCZID,Filled,Buy,1.0,36.91,0.025837,,461 -2019-11-11 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,462 -2019-11-11 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,463 -2019-11-11 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,464 -2019-11-12 16:00:00,BPSPGV,Filled,Buy,106.0,146.2,10.84804,,462 -2019-11-12 16:00:00,MCCZID,Filled,Buy,148.0,36.88,3.8207680000000006,,463 -2019-11-12 16:00:00,ISIJLH,Filled,Buy,396.0,39.4,10.92168,,464 -2019-11-12 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,465 -2019-11-12 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,466 -2019-11-12 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,467 -2019-11-13 16:00:00,HECLON,Filled,Buy,207.0,74.3,10.76607,,465 -2019-11-13 16:00:00,MCCZID,Filled,Sell,-1.0,36.91,0.025837,,466 -2019-11-13 16:00:00,ISIJLH,Filled,Buy,2.0,39.17,0.054838000000000005,,467 -2019-11-13 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,468 -2019-11-13 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,469 -2019-11-13 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,470 -2019-11-13 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,471 -2019-11-14 16:00:00,BPSPGV,Filled,Sell,-2.0,147.11,0.20595400000000005,,468 -2019-11-14 16:00:00,MCCZID,Filled,Sell,-2.0,36.6,0.05124,,469 -2019-11-14 16:00:00,ISIJLH,Filled,Sell,-7.0,38.95,0.190855,,470 -2019-11-14 16:00:00,RUKNMV,Filled,Buy,288.0,53.27,10.739232,,471 -2019-11-14 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,472 -2019-11-14 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,473 -2019-11-14 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,474 -2019-11-14 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,475 -2019-11-15 16:00:00,ZIJVRO,Filled,Buy,265.0,58.17,10.790535,,472 -2019-11-15 16:00:00,BPSPGV,Filled,Sell,-104.0,149.0,10.8472,,473 -2019-11-15 16:00:00,ISIJLH,Filled,Buy,3.0,39.17,0.082257,,474 -2019-11-15 16:00:00,RUKNMV,Filled,Sell,-2.0,53.75,0.07525,,475 -2019-11-15 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,476 -2019-11-15 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,477 -2019-11-15 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,478 -2019-11-15 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,479 -2019-11-15 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,480 -2019-11-15 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,481 -2019-11-18 16:00:00,HECLON,Filled,Sell,-73.0,74.37,3.800307,,476 -2019-11-18 16:00:00,ZIJVRO,Filled,Sell,-265.0,57.71,10.705205,,477 -2019-11-18 16:00:00,BPSPGV,Filled,Buy,66.0,150.0,6.93,,478 -2019-11-18 16:00:00,MCCZID,Filled,Sell,-152.0,37.4,3.97936,,479 -2019-11-18 16:00:00,ISIJLH,Filled,Sell,-142.0,39.25,3.90145,,480 -2019-11-18 16:00:00,RUKNMV,Filled,Sell,-101.0,53.84,3.806488,,481 -2019-11-18 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,482 -2019-11-18 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,483 -2019-11-18 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,484 -2019-11-18 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,485 -2019-11-19 16:00:00,BPSPGV,Filled,Sell,-66.0,150.85,6.96927,,482 -2019-11-19 16:00:00,MCCZID,Filled,Buy,1.0,37.45,0.026215,,483 -2019-11-19 16:00:00,ISIJLH,Filled,Sell,-1.0,38.92,0.027244,,484 -2019-11-19 16:00:00,RUKNMV,Filled,Sell,-185.0,54.15,7.012425,,485 -2019-11-19 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,486 -2019-11-19 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,487 -2019-11-19 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,488 -2019-11-19 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,489 -2019-11-19 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,490 -2019-11-20 16:00:00,LUZLYG,Filled,Buy,303.0,32.8,6.95688,,486 -2019-11-20 16:00:00,HECLON,Filled,Sell,-1.0,74.7,0.05229,,487 -2019-11-20 16:00:00,MCCZID,Filled,Sell,-268.0,37.59,7.051884,,488 -2019-11-20 16:00:00,ISIJLH,Filled,Buy,11.0,37.24,0.286748,,489 -2019-11-20 16:00:00,RUKNMV,Filled,Buy,184.0,53.71,6.917847999999999,,490 -2019-11-20 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,491 -2019-11-20 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,492 -2019-11-20 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,493 -2019-11-20 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,494 -2019-11-21 16:00:00,LUZLYG,Filled,Buy,2.0,32.82,0.045948,,491 -2019-11-21 16:00:00,HECLON,Filled,Buy,2.0,74.01,0.103614,,492 -2019-11-21 16:00:00,ISIJLH,Filled,Buy,6.0,37.06,0.155652,,493 -2019-11-21 16:00:00,RUKNMV,Filled,Buy,2.0,53.84,0.075376,,494 -2019-11-21 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,495 -2019-11-21 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,496 -2019-11-22 16:00:00,LUZLYG,Filled,Sell,-305.0,32.96,7.0369600000000005,,495 -2019-11-22 16:00:00,ISIJLH,Filled,Sell,-3.0,37.76,0.079296,,496 -2019-11-22 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,497 -2019-11-22 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,498 -2019-11-22 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,499 -2019-11-25 16:00:00,HECLON,Filled,Sell,-2.0,74.9,0.10486,,497 -2019-11-25 16:00:00,ISIJLH,Filled,Sell,-1.0,37.87,0.026509,,498 -2019-11-25 16:00:00,RUKNMV,Filled,Sell,-3.0,54.4,0.11424,,499 -2019-11-25 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,500 -2019-11-25 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,501 -2019-11-26 16:00:00,ISIJLH,Filled,Buy,6.0,37.21,0.156282,,500 -2019-11-26 16:00:00,RUKNMV,Filled,Buy,3.0,53.98,0.113358,,501 -2019-11-26 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,502 -2019-11-26 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,503 -2019-11-26 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,504 -2019-11-26 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,505 -2019-11-26 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,506 -2019-11-26 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,507 -2019-11-27 16:00:00,LUZLYG,Filled,Buy,460.0,33.49,10.78378,,502 -2019-11-27 16:00:00,HECLON,Filled,Buy,70.0,75.84,3.71616,,503 -2019-11-27 16:00:00,ZIJVRO,Filled,Buy,260.0,58.53,10.65246,,504 -2019-11-27 16:00:00,BPSPGV,Filled,Buy,101.0,152.33,10.769731000000002,,505 -2019-11-27 16:00:00,ISIJLH,Filled,Buy,140.0,37.42,3.66716,,506 -2019-11-27 16:00:00,RUKNMV,Filled,Buy,99.0,54.14,3.751902,,507 -2019-11-27 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,508 -2019-11-27 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,509 -2019-11-27 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,510 -2019-11-27 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,511 -2019-11-27 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,512 -2019-11-27 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,513 -2019-11-27 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,514 -2019-11-29 13:00:00,SMDIFE,Filled,Buy,57.0,266.2,10.62138,,508 -2019-11-29 13:00:00,LUZLYG,Filled,Sell,-1.0,33.37,0.023359,,509 -2019-11-29 13:00:00,HECLON,Filled,Sell,-1.0,75.49,0.052842999999999994,,510 -2019-11-29 13:00:00,ZIJVRO,Filled,Buy,2.0,58.15,0.08141,,511 -2019-11-29 13:00:00,BPSPGV,Filled,Sell,-101.0,152.0,10.7464,,512 -2019-11-29 13:00:00,ISIJLH,Filled,Sell,-410.0,37.74,10.83138,,513 -2019-11-29 13:00:00,RUKNMV,Filled,Sell,-3.0,54.29,0.114009,,514 -2019-11-29 13:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,515 -2019-11-29 13:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,516 -2019-11-29 13:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,517 -2019-11-29 13:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,518 -2019-11-29 13:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,519 -2019-12-02 16:00:00,SMDIFE,Filled,Sell,-57.0,267.33,10.666467,,515 -2019-12-02 16:00:00,LUZLYG,Filled,Buy,1.0,33.45,0.023415,,516 -2019-12-02 16:00:00,HECLON,Filled,Buy,2.0,75.44,0.105616,,517 -2019-12-02 16:00:00,ZIJVRO,Filled,Buy,2.0,58.55,0.08197,,518 -2019-12-02 16:00:00,RUKNMV,Filled,Sell,-1.0,54.3,0.038009999999999995,,519 -2019-12-02 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,520 -2019-12-02 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,521 -2019-12-02 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,522 -2019-12-02 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,523 -2019-12-03 16:00:00,LUZLYG,Filled,Sell,-92.0,32.84,2.1148960000000003,,520 -2019-12-03 16:00:00,HECLON,Filled,Sell,-39.0,73.2,1.99836,,521 -2019-12-03 16:00:00,ZIJVRO,Filled,Sell,-51.0,56.83,2.028831,,522 -2019-12-03 16:00:00,RUKNMV,Filled,Sell,-52.0,52.99,1.928836,,523 -2019-12-03 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,524 -2019-12-03 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,525 -2019-12-03 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,526 -2019-12-03 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,527 -2019-12-03 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,528 -2019-12-03 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,529 -2019-12-04 16:00:00,SMDIFE,Filled,Buy,47.0,261.0,8.5869,,524 -2019-12-04 16:00:00,LUZLYG,Filled,Buy,6.0,33.08,0.138936,,525 -2019-12-04 16:00:00,HECLON,Filled,Buy,2.0,73.56,0.102984,,526 -2019-12-04 16:00:00,ZIJVRO,Filled,Buy,6.0,56.61,0.23776199999999997,,527 -2019-12-04 16:00:00,MCCZID,Filled,Buy,323.0,38.16,8.627975999999999,,528 -2019-12-04 16:00:00,RUKNMV,Filled,Buy,5.0,52.58,0.18402999999999997,,529 -2019-12-04 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,530 -2019-12-04 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,531 -2019-12-04 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,532 -2019-12-04 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,533 -2019-12-04 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,534 -2019-12-04 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,535 -2019-12-04 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,536 -2019-12-05 16:00:00,SMDIFE,Filled,Buy,8.0,263.8,1.47728,,530 -2019-12-05 16:00:00,LUZLYG,Filled,Buy,61.0,33.16,1.4159319999999995,,531 -2019-12-05 16:00:00,HECLON,Filled,Buy,27.0,74.51,1.4082390000000002,,532 -2019-12-05 16:00:00,OCHCAU,Filled,Buy,329.0,44.05,10.144715,,533 -2019-12-05 16:00:00,ZIJVRO,Filled,Sell,-219.0,56.41,8.647653,,534 -2019-12-05 16:00:00,MCCZID,Filled,Buy,55.0,38.35,1.476475,,535 -2019-12-05 16:00:00,RUKNMV,Filled,Buy,37.0,53.31,1.380729,,536 -2019-12-05 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,537 -2019-12-05 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,538 -2019-12-05 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,539 -2019-12-05 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,540 -2019-12-05 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,541 -2019-12-05 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,542 -2019-12-05 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,543 -2019-12-06 16:00:00,SMDIFE,Filled,Sell,-55.0,267.58,10.30183,,537 -2019-12-06 16:00:00,LUZLYG,Filled,Buy,1.0,33.69,0.023583,,538 -2019-12-06 16:00:00,HECLON,Filled,Sell,-1.0,75.91,0.053137,,539 -2019-12-06 16:00:00,OCHCAU,Filled,Buy,3.0,43.89,0.092169,,540 -2019-12-06 16:00:00,ZIJVRO,Filled,Buy,257.0,56.67,10.194933,,541 -2019-12-06 16:00:00,BPSPGV,Filled,Buy,96.0,151.0,10.1472,,542 -2019-12-06 16:00:00,MCCZID,Filled,Buy,1.0,38.24,0.026768,,543 -2019-12-06 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,544 -2019-12-06 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,545 -2019-12-06 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,546 -2019-12-06 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,547 -2019-12-06 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,548 -2019-12-06 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,549 -2019-12-06 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,550 -2019-12-09 16:00:00,LUZLYG,Filled,Sell,-7.0,33.49,0.164101,,544 -2019-12-09 16:00:00,HECLON,Filled,Sell,-3.0,75.25,0.158025,,545 -2019-12-09 16:00:00,OCHCAU,Filled,Sell,-2.0,43.89,0.061446,,546 -2019-12-09 16:00:00,ZIJVRO,Filled,Sell,-257.0,56.5,10.16435,,547 -2019-12-09 16:00:00,BPSPGV,Filled,Sell,-96.0,151.05,10.15056,,548 -2019-12-09 16:00:00,MCCZID,Filled,Sell,-2.0,38.2,0.05348000000000001,,549 -2019-12-09 16:00:00,RUKNMV,Filled,Sell,-5.0,54.18,0.18963,,550 -2019-12-09 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,551 -2019-12-09 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,552 -2019-12-09 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,553 -2019-12-09 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,554 -2019-12-09 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,555 -2019-12-09 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,556 -2019-12-10 16:00:00,SMDIFE,Filled,Buy,54.0,268.67,10.155726,,551 -2019-12-10 16:00:00,LUZLYG,Filled,Buy,2.0,33.4,0.04676,,552 -2019-12-10 16:00:00,HECLON,Filled,Sell,-190.0,75.1,9.9883,,553 -2019-12-10 16:00:00,OCHCAU,Filled,Sell,-1.0,43.84,0.030688000000000003,,554 -2019-12-10 16:00:00,ZIJVRO,Filled,Buy,255.0,56.73,10.126305,,555 -2019-12-10 16:00:00,RUKNMV,Filled,Buy,2.0,53.46,0.074844,,556 -2019-12-10 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,557 -2019-12-10 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,558 -2019-12-10 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,559 -2019-12-10 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,560 -2019-12-10 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,561 -2019-12-10 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,562 -2019-12-10 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,563 -2019-12-11 16:00:00,SMDIFE,Filled,Sell,-54.0,268.73,10.157994,,557 -2019-12-11 16:00:00,LUZLYG,Filled,Sell,-431.0,33.55,10.122035,,558 -2019-12-11 16:00:00,OCHCAU,Filled,Sell,-101.0,44.3,3.1320099999999993,,559 -2019-12-11 16:00:00,CEMOJE,Filled,Buy,7.0,1351.52,6.6224479999999994,,560 -2019-12-11 16:00:00,ZIJVRO,Filled,Sell,-255.0,56.91,10.158435,,561 -2019-12-11 16:00:00,MCCZID,Filled,Sell,-116.0,38.36,3.1148320000000003,,562 -2019-12-11 16:00:00,RUKNMV,Filled,Sell,-81.0,53.74,3.0470580000000003,,563 -2019-12-11 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,564 -2019-12-11 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,565 -2019-12-11 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,566 -2019-12-11 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,567 -2019-12-12 16:00:00,OCHCAU,Filled,Sell,-228.0,44.52,7.105392000000001,,564 -2019-12-12 16:00:00,MCCZID,Filled,Sell,-261.0,38.21,6.980967,,565 -2019-12-12 16:00:00,ISIJLH,Filled,Buy,264.0,38.2,7.059360000000001,,566 -2019-12-12 16:00:00,RUKNMV,Filled,Buy,2.0,53.37,0.07471799999999999,,567 -2019-12-12 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,568 -2019-12-12 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,569 -2019-12-12 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,570 -2019-12-12 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,571 -2019-12-13 16:00:00,BPSPGV,Filled,Buy,65.0,153.23,6.971964999999999,,568 -2019-12-13 16:00:00,MCCZID,Filled,Buy,261.0,38.52,7.037604000000001,,569 -2019-12-13 16:00:00,ISIJLH,Filled,Sell,-264.0,38.2,7.059360000000001,,570 -2019-12-13 16:00:00,RUKNMV,Filled,Sell,-4.0,53.99,0.151172,,571 -2019-12-13 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,572 -2019-12-13 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,573 -2019-12-13 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,574 -2019-12-13 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,575 -2019-12-16 16:00:00,GTKILW,Filled,Buy,7.0,1349.45,6.612305,,572 -2019-12-16 16:00:00,BPSPGV,Filled,Sell,-65.0,155.11,7.057505000000001,,573 -2019-12-16 16:00:00,MCCZID,Filled,Sell,-1.0,38.7,0.027090000000000003,,574 -2019-12-16 16:00:00,ISIJLH,Filled,Buy,260.0,38.38,6.9851600000000005,,575 -2019-12-16 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,576 -2019-12-16 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,577 -2019-12-16 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,578 -2019-12-16 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,579 -2019-12-17 16:00:00,GTKILW,Filled,Sell,-7.0,1360.62,6.667038,,576 -2019-12-17 16:00:00,MCCZID,Filled,Sell,-260.0,39.33,7.158059999999999,,577 -2019-12-17 16:00:00,ISIJLH,Filled,Sell,-260.0,38.6,7.0252,,578 -2019-12-17 16:00:00,RUKNMV,Filled,Sell,-1.0,54.11,0.037877,,579 -2019-12-17 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,580 -2019-12-17 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,581 -2019-12-17 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,582 -2019-12-18 16:00:00,CEMOJE,Filled,Sell,-7.0,1353.28,6.631072,,580 -2019-12-18 16:00:00,MCCZID,Filled,Buy,256.0,39.0,6.9888,,581 -2019-12-18 16:00:00,RUKNMV,Filled,Sell,-1.0,54.35,0.038045,,582 -2019-12-18 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,583 -2019-12-18 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,584 -2019-12-18 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,585 -2019-12-19 16:00:00,CEMOJE,Filled,Buy,7.0,1349.94,6.614706,,583 -2019-12-19 16:00:00,MCCZID,Filled,Sell,-256.0,39.0,6.9888,,584 -2019-12-19 16:00:00,RUKNMV,Filled,Sell,-183.0,53.74,6.884094,,585 -2019-12-19 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,586 -2019-12-19 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,587 -2019-12-19 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,588 -2019-12-20 16:00:00,LUZLYG,Filled,Buy,288.0,35.15,7.086239999999999,,586 -2019-12-20 16:00:00,CEMOJE,Filled,Sell,-7.0,1356.32,6.645968,,587 -2019-12-20 16:00:00,MCCZID,Filled,Buy,258.0,39.13,7.066878000000001,,588 -2019-12-20 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,589 -2019-12-20 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,590 -2019-12-20 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,591 -2019-12-23 16:00:00,LUZLYG,Filled,Sell,-3.0,35.02,0.073542,,589 -2019-12-23 16:00:00,MCCZID,Filled,Sell,-4.0,39.32,0.110096,,590 -2019-12-23 16:00:00,RUKNMV,Filled,Buy,187.0,53.3,6.976970000000001,,591 -2019-12-23 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,592 -2019-12-23 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,593 -2019-12-23 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,594 -2019-12-23 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,595 -2019-12-23 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,596 -2019-12-23 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,597 -2019-12-23 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,598 -2019-12-24 13:00:00,LUZLYG,Filled,Buy,1.0,35.19,0.024633,,592 -2019-12-24 13:00:00,CEMOJE,Filled,Buy,7.0,1343.69,6.584081,,593 -2019-12-24 13:00:00,GTKILW,Filled,Buy,7.0,1355.01,6.639549,,594 -2019-12-24 13:00:00,ZIJVRO,Filled,Buy,170.0,59.25,7.05075,,595 -2019-12-24 13:00:00,BPSPGV,Filled,Buy,64.0,157.41,7.051968,,596 -2019-12-24 13:00:00,MCCZID,Filled,Buy,2.0,39.33,0.055062,,597 -2019-12-24 13:00:00,ISIJLH,Filled,Buy,258.0,39.12,7.065071999999999,,598 -2019-12-24 13:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,599 -2019-12-24 13:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,600 -2019-12-24 13:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,601 -2019-12-24 13:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,602 -2019-12-24 13:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,603 -2019-12-24 13:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,604 -2019-12-24 13:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,605 -2019-12-24 13:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,606 -2019-12-26 16:00:00,LUZLYG,Filled,Sell,-286.0,35.32,7.071064,,599 -2019-12-26 16:00:00,CEMOJE,Filled,Buy,3.0,1344.92,2.824332,,600 -2019-12-26 16:00:00,GTKILW,Filled,Buy,3.0,1343.5,2.82135,,601 -2019-12-26 16:00:00,ZIJVRO,Filled,Sell,-170.0,59.41,7.069789999999999,,602 -2019-12-26 16:00:00,BPSPGV,Filled,Sell,-64.0,157.56,7.058688,,603 -2019-12-26 16:00:00,MCCZID,Filled,Buy,117.0,39.3,3.2186699999999995,,604 -2019-12-26 16:00:00,ISIJLH,Filled,Sell,-258.0,39.0,7.0434,,605 -2019-12-26 16:00:00,RUKNMV,Filled,Buy,85.0,54.05,3.215975,,606 -2019-12-26 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,607 -2019-12-26 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,608 -2019-12-27 16:00:00,MCCZID,Filled,Sell,-1.0,39.45,0.027615,,607 -2019-12-27 16:00:00,RUKNMV,Filled,Sell,-272.0,54.27,10.333008,,608 -2019-12-27 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,609 -2019-12-30 16:00:00,MCCZID,Filled,Buy,1.0,39.3,0.027509999999999996,,609 -2019-12-30 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,610 -2019-12-30 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,611 -2019-12-30 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,612 -2019-12-30 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,613 -2019-12-30 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,614 -2019-12-31 16:00:00,LUZLYG,Filled,Buy,322.0,35.04,7.898015999999999,,610 -2019-12-31 16:00:00,CEMOJE,Filled,Sell,-2.0,1332.4,1.86536,,611 -2019-12-31 16:00:00,GTKILW,Filled,Sell,-2.0,1337.35,1.87229,,612 -2019-12-31 16:00:00,BPSPGV,Filled,Buy,71.0,156.83,7.794451,,613 -2019-12-31 16:00:00,MCCZID,Filled,Sell,-82.0,38.78,2.225972,,614 -2019-12-31 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,615 -2019-12-31 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,616 -2020-01-02 16:00:00,BPSPGV,Filled,Sell,-71.0,158.65,7.884905,,615 -2020-01-02 16:00:00,MCCZID,Filled,Sell,-2.0,39.3,0.05501999999999999,,616 -2020-01-02 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,617 -2020-01-02 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,618 -2020-01-02 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,619 -2020-01-02 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,620 -2020-01-03 16:00:00,LUZLYG,Filled,Buy,61.0,34.99,1.4940730000000002,,617 -2020-01-03 16:00:00,CEMOJE,Filled,Buy,2.0,1370.23,1.918322,,618 -2020-01-03 16:00:00,GTKILW,Filled,Buy,2.0,1371.68,1.920352,,619 -2020-01-03 16:00:00,MCCZID,Filled,Buy,60.0,38.7,1.6254,,620 -2020-01-03 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,621 -2020-01-03 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,622 -2020-01-03 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,623 -2020-01-03 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,624 -2020-01-03 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,625 -2020-01-03 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,626 -2020-01-03 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,627 -2020-01-03 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,628 -2020-01-03 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,629 -2020-01-06 16:00:00,COMNHQ,Filled,Buy,494.0,27.19,9.402302,,621 -2020-01-06 16:00:00,LUZLYG,Filled,Sell,-383.0,34.41,9.225321,,622 -2020-01-06 16:00:00,HECLON,Filled,Buy,171.0,78.85,9.438344999999998,,623 -2020-01-06 16:00:00,FFNDVM,Filled,Buy,1485.0,9.1,9.45945,,624 -2020-01-06 16:00:00,BGDRAI,Filled,Buy,1142.0,11.86,9.480884,,625 -2020-01-06 16:00:00,CEMOJE,Filled,Sell,-10.0,1355.66,9.48962,,626 -2020-01-06 16:00:00,GTKILW,Filled,Sell,-10.0,1359.69,9.517830000000002,,627 -2020-01-06 16:00:00,BPSPGV,Filled,Buy,86.0,156.98,9.450195999999998,,628 -2020-01-06 16:00:00,MCCZID,Filled,Sell,-349.0,38.82,9.483726,,629 -2020-01-06 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,630 -2020-01-06 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,631 -2020-01-06 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,632 -2020-01-06 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,633 -2020-01-06 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,634 -2020-01-06 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,635 -2020-01-07 16:00:00,COMNHQ,Filled,Sell,-494.0,27.56,9.530248,,630 -2020-01-07 16:00:00,HECLON,Filled,Sell,-171.0,79.19,9.479043,,631 -2020-01-07 16:00:00,FFNDVM,Filled,Sell,-1485.0,9.15,9.511425,,632 -2020-01-07 16:00:00,CEMOJE,Filled,Buy,9.0,1386.25,8.733375,,633 -2020-01-07 16:00:00,GTKILW,Filled,Buy,9.0,1400.57,8.823590999999999,,634 -2020-01-07 16:00:00,BPSPGV,Filled,Sell,-86.0,159.35,9.59287,,635 -2020-01-07 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,636 -2020-01-07 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,637 -2020-01-07 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,638 -2020-01-07 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,639 -2020-01-08 16:00:00,FFNDVM,Filled,Buy,1079.0,9.23,6.971419,,636 -2020-01-08 16:00:00,BGDRAI,Filled,Sell,-314.0,11.98,2.633204,,637 -2020-01-08 16:00:00,CEMOJE,Filled,Sell,-9.0,1391.64,8.767332,,638 -2020-01-08 16:00:00,GTKILW,Filled,Sell,-9.0,1390.61,8.760843,,639 -2020-01-08 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,640 -2020-01-08 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,641 -2020-01-08 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,642 -2020-01-09 16:00:00,FFNDVM,Filled,Sell,-1079.0,9.29,7.016737,,640 -2020-01-09 16:00:00,BGDRAI,Filled,Buy,16.0,12.05,0.13496,,641 -2020-01-09 16:00:00,MCCZID,Filled,Buy,258.0,39.2,7.0795200000000005,,642 -2020-01-09 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,643 -2020-01-09 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,644 -2020-01-09 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,645 -2020-01-10 16:00:00,ZIXTLG,Filled,Buy,786.0,12.9,7.09758,,643 -2020-01-10 16:00:00,BGDRAI,Filled,Sell,-844.0,11.85,7.000979999999999,,644 -2020-01-10 16:00:00,MCCZID,Filled,Sell,-258.0,38.98,7.039787999999999,,645 -2020-01-10 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,646 -2020-01-10 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,647 -2020-01-10 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,648 -2020-01-13 16:00:00,ZIXTLG,Filled,Sell,-786.0,13.05,7.180110000000001,,646 -2020-01-13 16:00:00,BGDRAI,Filled,Buy,873.0,11.71,7.155981,,647 -2020-01-13 16:00:00,MCCZID,Filled,Buy,258.0,39.53,7.139118,,648 -2020-01-13 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,649 -2020-01-13 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,650 -2020-01-13 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,651 -2020-01-13 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,652 -2020-01-14 16:00:00,OCHCAU,Filled,Buy,289.0,47.96,9.702308,,649 -2020-01-14 16:00:00,ZIXTLG,Filled,Buy,1025.0,13.33,9.564275,,650 -2020-01-14 16:00:00,BGDRAI,Filled,Buy,271.0,12.12,2.299164,,651 -2020-01-14 16:00:00,MCCZID,Filled,Sell,-258.0,39.31,7.099386000000001,,652 -2020-01-14 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,653 -2020-01-14 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,654 -2020-01-14 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,655 -2020-01-14 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,656 -2020-01-15 16:00:00,OCHCAU,Filled,Sell,-289.0,47.92,9.694216,,653 -2020-01-15 16:00:00,ZIXTLG,Filled,Sell,-1025.0,13.06,9.37055,,654 -2020-01-15 16:00:00,BGDRAI,Filled,Buy,8.0,12.0,0.0672,,655 -2020-01-15 16:00:00,MCCZID,Filled,Buy,346.0,40.25,9.74855,,656 -2020-01-15 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,657 -2020-01-15 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,658 -2020-01-15 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,659 -2020-01-15 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,660 -2020-01-16 16:00:00,HECLON,Filled,Buy,170.0,81.94,9.75086,,657 -2020-01-16 16:00:00,OCHCAU,Filled,Buy,288.0,48.37,9.751392,,658 -2020-01-16 16:00:00,BGDRAI,Filled,Buy,16.0,11.92,0.133504,,659 -2020-01-16 16:00:00,MCCZID,Filled,Sell,-6.0,40.79,0.171318,,660 -2020-01-16 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,661 -2020-01-16 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,662 -2020-01-16 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,663 -2020-01-16 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,664 -2020-01-16 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,665 -2020-01-17 16:00:00,HECLON,Filled,Sell,-170.0,81.11,9.65209,,661 -2020-01-17 16:00:00,OCHCAU,Filled,Sell,-6.0,49.32,0.207144,,662 -2020-01-17 16:00:00,BGDRAI,Filled,Sell,-1168.0,11.84,9.680383999999998,,663 -2020-01-17 16:00:00,BPSPGV,Filled,Buy,83.0,167.41,9.726521,,664 -2020-01-17 16:00:00,MCCZID,Filled,Sell,-340.0,40.65,9.6747,,665 -2020-01-17 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,666 -2020-01-17 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,667 -2020-01-17 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,668 -2020-01-21 16:00:00,OCHCAU,Filled,Sell,-282.0,48.93,9.658782,,666 -2020-01-21 16:00:00,ZIJVRO,Filled,Buy,167.0,59.81,6.991789,,667 -2020-01-21 16:00:00,BPSPGV,Filled,Sell,-83.0,166.78,9.689918,,668 -2020-01-21 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,669 -2020-01-21 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,670 -2020-01-21 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,671 -2020-01-21 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,672 -2020-01-22 16:00:00,HECLON,Filled,Buy,124.0,80.09,6.951811999999999,,669 -2020-01-22 16:00:00,BGDRAI,Filled,Buy,856.0,11.71,7.016632,,670 -2020-01-22 16:00:00,ZIJVRO,Filled,Sell,-167.0,61.04,7.135576,,671 -2020-01-22 16:00:00,MCCZID,Filled,Buy,247.0,40.33,6.973057,,672 -2020-01-22 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,673 -2020-01-22 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,674 -2020-01-22 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,675 -2020-01-22 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,676 -2020-01-23 16:00:00,HECLON,Filled,Sell,-124.0,79.51,6.9014679999999995,,673 -2020-01-23 16:00:00,OCHCAU,Filled,Buy,203.0,49.0,6.9629,,674 -2020-01-23 16:00:00,BGDRAI,Filled,Buy,21.0,11.75,0.172725,,675 -2020-01-23 16:00:00,MCCZID,Filled,Sell,-247.0,40.17,6.945393,,676 -2020-01-23 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,677 -2020-01-23 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,678 -2020-01-23 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,679 -2020-01-23 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,680 -2020-01-23 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,681 -2020-01-23 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,682 -2020-01-24 16:00:00,COMNHQ,Filled,Buy,346.0,28.85,6.98747,,677 -2020-01-24 16:00:00,YIVYGH,Filled,Buy,218.0,44.9,6.8517399999999995,,678 -2020-01-24 16:00:00,OCHCAU,Filled,Sell,-203.0,49.22,6.994162,,679 -2020-01-24 16:00:00,ZIXTLG,Filled,Buy,834.0,11.8,6.88884,,680 -2020-01-24 16:00:00,BGDRAI,Filled,Sell,-29.0,11.84,0.240352,,681 -2020-01-24 16:00:00,MCCZID,Filled,Buy,245.0,40.93,7.019495,,682 -2020-01-24 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,683 -2020-01-24 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,684 -2020-01-24 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,685 -2020-01-24 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,686 -2020-01-24 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,687 -2020-01-24 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,688 -2020-01-27 16:00:00,COMNHQ,Filled,Sell,-346.0,26.57,6.435254,,683 -2020-01-27 16:00:00,YIVYGH,Filled,Sell,-218.0,43.92,6.702191999999999,,684 -2020-01-27 16:00:00,ZIXTLG,Filled,Sell,-834.0,11.32,6.6086160000000005,,685 -2020-01-27 16:00:00,BGDRAI,Filled,Sell,-848.0,11.45,6.796719999999999,,686 -2020-01-27 16:00:00,ZIJVRO,Filled,Buy,145.0,66.72,6.77208,,687 -2020-01-27 16:00:00,MCCZID,Filled,Buy,5.0,39.4,0.1379,,688 -2020-01-27 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,689 -2020-01-27 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,690 -2020-01-27 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,691 -2020-01-27 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,692 -2020-01-27 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,693 -2020-01-27 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,694 -2020-01-28 16:00:00,OCHCAU,Filled,Buy,209.0,47.68,6.9755840000000005,,689 -2020-01-28 16:00:00,ZIXTLG,Filled,Buy,914.0,11.11,7.108178,,690 -2020-01-28 16:00:00,GTKILW,Filled,Buy,6.0,1430.73,6.009066000000001,,691 -2020-01-28 16:00:00,ZIJVRO,Filled,Sell,-145.0,66.5,6.74975,,692 -2020-01-28 16:00:00,HCDUCB,Filled,Buy,179.0,56.25,7.048125,,693 -2020-01-28 16:00:00,MCCZID,Filled,Sell,-250.0,39.32,6.881,,694 -2020-01-28 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,695 -2020-01-28 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,696 -2020-01-28 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,697 -2020-01-28 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,698 -2020-01-28 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,699 -2020-01-29 16:00:00,OCHCAU,Filled,Sell,-209.0,47.97,7.018011,,695 -2020-01-29 16:00:00,ZIXTLG,Filled,Buy,123.0,11.42,0.983262,,696 -2020-01-29 16:00:00,BGDRAI,Filled,Buy,999.0,12.55,8.776215,,697 -2020-01-29 16:00:00,GTKILW,Filled,Sell,-6.0,1450.49,6.092058000000001,,698 -2020-01-29 16:00:00,HCDUCB,Filled,Sell,-179.0,56.16,7.036847999999999,,699 -2020-01-29 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,700 -2020-01-29 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,701 -2020-01-29 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,702 -2020-01-29 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,703 -2020-01-30 16:00:00,OCHCAU,Filled,Buy,325.0,46.54,10.58785,,700 -2020-01-30 16:00:00,ZIXTLG,Filled,Sell,-1037.0,11.1,8.05749,,701 -2020-01-30 16:00:00,BGDRAI,Filled,Buy,186.0,12.93,1.683486,,702 -2020-01-30 16:00:00,ISIJLH,Filled,Buy,413.0,36.47,10.543477,,703 -2020-01-30 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,704 -2020-01-30 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,705 -2020-01-30 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,706 -2020-01-31 16:00:00,OCHCAU,Filled,Sell,-325.0,46.91,10.672024999999998,,704 -2020-01-31 16:00:00,BGDRAI,Filled,Sell,-1185.0,12.65,10.493175,,705 -2020-01-31 16:00:00,ISIJLH,Filled,Sell,-413.0,37.3,10.78343,,706 -2020-01-31 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,707 -2020-01-31 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,708 -2020-02-03 16:00:00,XUEHVZ,Filled,Buy,7.0,2013.51,9.866199,,707 -2020-02-03 16:00:00,ZIXTLG,Filled,Buy,1381.0,11.19,10.817373,,708 -2020-02-03 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,709 -2020-02-03 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,710 -2020-02-04 16:00:00,XUEHVZ,Filled,Sell,-7.0,2009.98,9.848902,,709 -2020-02-04 16:00:00,ZIXTLG,Filled,Sell,-41.0,11.88,0.34095600000000004,,710 -2020-02-04 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,711 -2020-02-04 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,712 -2020-02-04 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,713 -2020-02-05 16:00:00,YIVYGH,Filled,Buy,346.0,44.74,10.836028,,711 -2020-02-05 16:00:00,OCHCAU,Filled,Buy,322.0,48.33,10.893582,,712 -2020-02-05 16:00:00,ZIXTLG,Filled,Sell,-65.0,12.42,0.56511,,713 -2020-02-05 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,714 -2020-02-05 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,715 -2020-02-05 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,716 -2020-02-05 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,717 -2020-02-06 16:00:00,YIVYGH,Filled,Sell,-346.0,44.76,10.840872,,714 -2020-02-06 16:00:00,OCHCAU,Filled,Sell,-322.0,48.71,10.979234,,715 -2020-02-06 16:00:00,ZIXTLG,Filled,Sell,-1275.0,12.4,11.067,,716 -2020-02-06 16:00:00,RUKNMV,Filled,Buy,317.0,48.36,10.731084,,717 -2020-02-06 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,718 -2020-02-06 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,719 -2020-02-06 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,720 -2020-02-06 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,721 -2020-02-07 16:00:00,CEMOJE,Filled,Buy,10.0,1477.66,10.34362,,718 -2020-02-07 16:00:00,GTKILW,Filled,Buy,10.0,1473.15,10.31205,,719 -2020-02-07 16:00:00,HCDUCB,Filled,Buy,257.0,57.97,10.428802999999998,,720 -2020-02-07 16:00:00,RUKNMV,Filled,Sell,-317.0,47.77,10.600163,,721 -2020-02-07 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,722 -2020-02-07 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,723 -2020-02-07 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,724 -2020-02-07 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,725 -2020-02-10 16:00:00,ZIXTLG,Filled,Buy,1301.0,11.67,10.627869,,722 -2020-02-10 16:00:00,CEMOJE,Filled,Sell,-10.0,1479.31,10.35517,,723 -2020-02-10 16:00:00,GTKILW,Filled,Sell,-10.0,1479.84,10.35888,,724 -2020-02-10 16:00:00,HCDUCB,Filled,Buy,12.0,56.4,0.47376,,725 -2020-02-10 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,726 -2020-02-10 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,727 -2020-02-10 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,728 -2020-02-10 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,729 -2020-02-11 16:00:00,RLSRXX,Filled,Buy,289.0,53.19,10.760337,,726 -2020-02-11 16:00:00,XUEHVZ,Filled,Buy,7.0,2149.23,10.531227,,727 -2020-02-11 16:00:00,ZIXTLG,Filled,Sell,-1301.0,12.44,11.329108,,728 -2020-02-11 16:00:00,HCDUCB,Filled,Sell,-269.0,57.93,10.908219,,729 -2020-02-11 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,730 -2020-02-11 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,731 -2020-02-12 16:00:00,RLSRXX,Filled,Sell,-289.0,54.52,11.029396,,730 -2020-02-12 16:00:00,XUEHVZ,Filled,Sell,-7.0,2158.24,10.575376,,731 -2020-02-12 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,732 -2020-02-12 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,733 -2020-02-13 16:00:00,YIVYGH,Filled,Buy,221.0,45.9,7.1007299999999995,,732 -2020-02-13 16:00:00,HCDUCB,Filled,Buy,172.0,59.09,7.114436000000001,,733 -2020-02-13 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,734 -2020-02-13 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,735 -2020-02-13 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,736 -2020-02-14 16:00:00,YIVYGH,Filled,Sell,-221.0,46.08,7.128576,,734 -2020-02-14 16:00:00,HCDUCB,Filled,Sell,-172.0,60.15,7.24206,,735 -2020-02-14 16:00:00,MCCZID,Filled,Buy,276.0,36.96,7.140672,,736 -2020-02-14 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,737 -2020-02-18 16:00:00,MCCZID,Filled,Sell,-276.0,36.51,7.053732,,737 -2020-02-18 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,738 -2020-02-19 16:00:00,RUKNMV,Filled,Buy,212.0,47.28,7.016352,,738 -2020-02-19 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,739 -2020-02-19 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,740 -2020-02-20 16:00:00,HCDUCB,Filled,Buy,166.0,59.99,6.970838,,739 -2020-02-20 16:00:00,RUKNMV,Filled,Sell,-212.0,47.01,6.976283999999999,,740 -2020-02-20 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,741 -2020-02-20 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,742 -2020-02-21 16:00:00,HCDUCB,Filled,Sell,-166.0,58.63,6.812806,,741 -2020-02-21 16:00:00,MCCZID,Filled,Buy,278.0,35.75,6.95695,,742 -2020-02-21 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,743 -2020-02-21 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,744 -2020-02-21 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,745 -2020-02-21 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,746 -2020-02-21 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,747 -2020-02-24 16:00:00,RLSRXX,Filled,Buy,187.0,48.09,6.294981,,743 -2020-02-24 16:00:00,CEMOJE,Filled,Buy,6.0,1482.62,6.227003999999999,,744 -2020-02-24 16:00:00,GTKILW,Filled,Buy,6.0,1479.45,6.213690000000001,,745 -2020-02-24 16:00:00,HCDUCB,Filled,Buy,175.0,53.06,6.49985,,746 -2020-02-24 16:00:00,MCCZID,Filled,Sell,-278.0,35.25,6.85965,,747 -2020-02-24 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,748 -2020-02-24 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,749 -2020-02-24 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,750 -2020-02-24 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,751 -2020-02-24 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,752 -2020-02-24 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,753 -2020-02-25 16:00:00,RLSRXX,Filled,Buy,16.0,51.15,0.57288,,748 -2020-02-25 16:00:00,YIVYGH,Filled,Buy,223.0,44.69,6.976108999999999,,749 -2020-02-25 16:00:00,CEMOJE,Filled,Buy,1.0,1421.28,0.994896,,750 -2020-02-25 16:00:00,GTKILW,Filled,Buy,1.0,1428.36,0.999852,,751 -2020-02-25 16:00:00,HCDUCB,Filled,Sell,-175.0,54.75,6.706875,,752 -2020-02-25 16:00:00,MCCZID,Filled,Buy,288.0,34.7,6.99552,,753 -2020-02-25 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,754 -2020-02-25 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,755 -2020-02-25 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,756 -2020-02-25 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,757 -2020-02-25 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,758 -2020-02-25 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,759 -2020-02-25 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,760 -2020-02-26 16:00:00,COMNHQ,Filled,Buy,653.0,23.57,10.773847,,754 -2020-02-26 16:00:00,RLSRXX,Filled,Sell,-203.0,47.63,6.768223000000001,,755 -2020-02-26 16:00:00,YIVYGH,Filled,Buy,127.0,44.06,3.916934,,756 -2020-02-26 16:00:00,CEMOJE,Filled,Sell,-7.0,1389.4,6.808060000000001,,757 -2020-02-26 16:00:00,GTKILW,Filled,Sell,-7.0,1385.45,6.788704999999999,,758 -2020-02-26 16:00:00,HCDUCB,Filled,Buy,290.0,52.77,10.71231,,759 -2020-02-26 16:00:00,MCCZID,Filled,Sell,-288.0,34.26,6.906815999999999,,760 -2020-02-26 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,761 -2020-02-26 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,762 -2020-02-26 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,763 -2020-02-26 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,764 -2020-02-27 16:00:00,COMNHQ,Filled,Buy,222.0,20.82,3.2354279999999997,,761 -2020-02-27 16:00:00,YIVYGH,Filled,Buy,112.0,41.86,3.281824,,762 -2020-02-27 16:00:00,HCDUCB,Filled,Sell,-290.0,50.64,10.27992,,763 -2020-02-27 16:00:00,MCCZID,Filled,Buy,562.0,34.5,13.5723,,764 -2020-02-27 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,765 -2020-02-27 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,766 -2020-02-27 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,767 -2020-02-27 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,768 -2020-02-27 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,769 -2020-02-27 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,770 -2020-02-27 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,771 -2020-02-28 16:00:00,COMNHQ,Filled,Buy,52.0,19.8,0.7207200000000001,,765 -2020-02-28 16:00:00,YIVYGH,Filled,Buy,3.0,40.0,0.084,,766 -2020-02-28 16:00:00,CEMOJE,Filled,Buy,14.0,1325.64,12.991272000000002,,767 -2020-02-28 16:00:00,GTKILW,Filled,Buy,14.0,1315.22,12.889156000000002,,768 -2020-02-28 16:00:00,ZIJVRO,Filled,Buy,342.0,54.3,12.99942,,769 -2020-02-28 16:00:00,MCCZID,Filled,Sell,-562.0,33.42,13.147428,,770 -2020-02-28 16:00:00,ISIJLH,Filled,Buy,534.0,34.05,12.72789,,771 -2020-02-28 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,772 -2020-02-28 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,773 -2020-02-28 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,774 -2020-02-28 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,775 -2020-02-28 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,776 -2020-02-28 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,777 -2020-02-28 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,778 -2020-02-28 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,779 -2020-03-02 16:00:00,COMNHQ,Filled,Buy,75.0,19.02,0.99855,,772 -2020-03-02 16:00:00,LUZLYG,Filled,Buy,670.0,28.38,13.31022,,773 -2020-03-02 16:00:00,YIVYGH,Filled,Buy,7.0,40.34,0.197666,,774 -2020-03-02 16:00:00,CEMOJE,Filled,Sell,-14.0,1347.29,13.203442,,775 -2020-03-02 16:00:00,GTKILW,Filled,Sell,-14.0,1345.94,13.190212,,776 -2020-03-02 16:00:00,ZIJVRO,Filled,Sell,-342.0,55.87,13.375278,,777 -2020-03-02 16:00:00,HCDUCB,Filled,Buy,363.0,53.27,13.535907000000002,,778 -2020-03-02 16:00:00,ISIJLH,Filled,Sell,-534.0,35.39,13.228782,,779 -2020-03-02 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,780 -2020-03-02 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,781 -2020-03-02 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,782 -2020-03-02 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,783 -2020-03-02 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,784 -2020-03-02 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,785 -2020-03-02 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,786 -2020-03-02 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,787 -2020-03-02 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,788 -2020-03-03 16:00:00,COMNHQ,Filled,Sell,-226.0,19.66,3.110212,,780 -2020-03-03 16:00:00,SMDIFE,Filled,Buy,48.0,303.75,10.206,,781 -2020-03-03 16:00:00,LUZLYG,Filled,Sell,-172.0,29.39,3.538556,,782 -2020-03-03 16:00:00,YIVYGH,Filled,Sell,-128.0,42.07,3.769472,,783 -2020-03-03 16:00:00,ZIXTLG,Filled,Buy,1394.0,10.4,10.14832,,784 -2020-03-03 16:00:00,ZIJVRO,Filled,Buy,251.0,58.08,10.204656,,785 -2020-03-03 16:00:00,HCDUCB,Filled,Sell,-363.0,54.64,13.884024,,786 -2020-03-03 16:00:00,MCCZID,Filled,Buy,419.0,34.93,10.244969,,787 -2020-03-03 16:00:00,ISIJLH,Filled,Buy,393.0,37.15,10.219964999999998,,788 -2020-03-03 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,789 -2020-03-03 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,790 -2020-03-03 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,791 -2020-03-03 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,792 -2020-03-03 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,793 -2020-03-03 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,794 -2020-03-03 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,795 -2020-03-03 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,796 -2020-03-03 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,797 -2020-03-03 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,798 -2020-03-04 16:00:00,COMNHQ,Filled,Buy,40.0,18.36,0.51408,,789 -2020-03-04 16:00:00,SMDIFE,Filled,Sell,-48.0,296.8,9.97248,,790 -2020-03-04 16:00:00,LUZLYG,Filled,Sell,-498.0,28.11,9.799146,,791 -2020-03-04 16:00:00,YIVYGH,Filled,Sell,-344.0,41.97,10.106376,,792 -2020-03-04 16:00:00,LMRIBF,Filled,Buy,78.0,189.17,10.328682,,793 -2020-03-04 16:00:00,ZIXTLG,Filled,Sell,-1394.0,10.31,10.060498,,794 -2020-03-04 16:00:00,ZIJVRO,Filled,Sell,-251.0,57.01,10.016657,,795 -2020-03-04 16:00:00,HCDUCB,Filled,Buy,281.0,53.04,10.432968,,796 -2020-03-04 16:00:00,MCCZID,Filled,Sell,-419.0,35.06,10.283098,,797 -2020-03-04 16:00:00,ISIJLH,Filled,Sell,-393.0,36.97,10.170447,,798 -2020-03-04 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,799 -2020-03-04 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,800 -2020-03-04 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,801 -2020-03-04 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,802 -2020-03-04 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,803 -2020-03-05 16:00:00,COMNHQ,Filled,Sell,-27.0,17.54,0.33150599999999997,,799 -2020-03-05 16:00:00,YIVYGH,Filled,Buy,344.0,41.27,9.937816,,800 -2020-03-05 16:00:00,LMRIBF,Filled,Sell,-78.0,186.97,10.208562,,801 -2020-03-05 16:00:00,HCDUCB,Filled,Sell,-17.0,53.45,0.636055,,802 -2020-03-05 16:00:00,MCCZID,Filled,Buy,401.0,35.64,10.004148,,803 -2020-03-05 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,804 -2020-03-05 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,805 -2020-03-05 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,806 -2020-03-05 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,807 -2020-03-05 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,808 -2020-03-06 16:00:00,COMNHQ,Filled,Buy,119.0,15.0,1.2495,,804 -2020-03-06 16:00:00,YIVYGH,Filled,Buy,13.0,38.91,0.3540809999999999,,805 -2020-03-06 16:00:00,FFNDVM,Filled,Buy,2163.0,6.57,9.947637,,806 -2020-03-06 16:00:00,HCDUCB,Filled,Sell,-264.0,52.2,9.64656,,807 -2020-03-06 16:00:00,MCCZID,Filled,Sell,-401.0,34.73,9.748711,,808 -2020-03-06 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,809 -2020-03-06 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,810 -2020-03-06 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,811 -2020-03-06 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,812 -2020-03-06 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,813 -2020-03-09 16:00:00,COMNHQ,Filled,Buy,4.0,14.92,0.041776,,809 -2020-03-09 16:00:00,YIVYGH,Filled,Sell,-357.0,38.17,9.538683,,810 -2020-03-09 16:00:00,FFNDVM,Filled,Sell,-2163.0,5.99,9.069459,,811 -2020-03-09 16:00:00,ZIXTLG,Filled,Buy,1544.0,8.16,8.819328,,812 -2020-03-09 16:00:00,BGDRAI,Filled,Buy,1549.0,8.34,9.043062,,813 -2020-03-09 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,814 -2020-03-09 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,815 -2020-03-09 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,816 -2020-03-09 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,817 -2020-03-09 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,818 -2020-03-09 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,819 -2020-03-10 16:00:00,COMNHQ,Filled,Buy,72.0,15.82,0.7973279999999999,,814 -2020-03-10 16:00:00,YIVYGH,Filled,Buy,383.0,38.64,10.359384,,815 -2020-03-10 16:00:00,ZIXTLG,Filled,Buy,220.0,8.97,1.38138,,816 -2020-03-10 16:00:00,BGDRAI,Filled,Buy,219.0,8.78,1.345974,,817 -2020-03-10 16:00:00,ZIJVRO,Filled,Buy,285.0,52.76,10.525619999999998,,818 -2020-03-10 16:00:00,HCDUCB,Filled,Buy,315.0,48.18,10.62369,,819 -2020-03-10 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,820 -2020-03-10 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,821 -2020-03-10 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,822 -2020-03-10 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,823 -2020-03-10 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,824 -2020-03-10 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,825 -2020-03-10 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,826 -2020-03-10 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,827 -2020-03-10 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,828 -2020-03-10 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,829 -2020-03-10 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,830 -2020-03-11 16:00:00,COMNHQ,Filled,Sell,-401.0,16.29,4.572603,,820 -2020-03-11 16:00:00,LUZLYG,Filled,Buy,420.0,22.84,6.71496,,821 -2020-03-11 16:00:00,HECLON,Filled,Buy,178.0,53.61,6.679806,,822 -2020-03-11 16:00:00,YIVYGH,Filled,Sell,-130.0,37.77,3.4370700000000003,,823 -2020-03-11 16:00:00,OCHCAU,Filled,Buy,247.0,39.02,6.746558,,824 -2020-03-11 16:00:00,FFNDVM,Filled,Buy,1584.0,6.05,6.708239999999999,,825 -2020-03-11 16:00:00,LMRIBF,Filled,Buy,55.0,174.01,6.6993849999999995,,826 -2020-03-11 16:00:00,ZIXTLG,Filled,Sell,-662.0,8.66,4.013044,,827 -2020-03-11 16:00:00,BGDRAI,Filled,Sell,-648.0,8.63,3.914568000000001,,828 -2020-03-11 16:00:00,ZIJVRO,Filled,Sell,-102.0,52.39,3.740646,,829 -2020-03-11 16:00:00,HCDUCB,Filled,Sell,-108.0,46.14,3.488184,,830 -2020-03-11 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,831 -2020-03-11 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,832 -2020-03-11 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,833 -2020-03-11 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,834 -2020-03-11 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,835 -2020-03-11 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,836 -2020-03-11 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,837 -2020-03-11 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,838 -2020-03-11 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,839 -2020-03-11 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,840 -2020-03-11 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,841 -2020-03-12 16:00:00,COMNHQ,Filled,Buy,23.0,14.19,0.228459,,831 -2020-03-12 16:00:00,LUZLYG,Filled,Buy,14.0,20.73,0.20315400000000003,,832 -2020-03-12 16:00:00,HECLON,Filled,Buy,16.0,45.29,0.507248,,833 -2020-03-12 16:00:00,YIVYGH,Filled,Buy,6.0,35.58,0.149436,,834 -2020-03-12 16:00:00,OCHCAU,Filled,Buy,19.0,34.61,0.460313,,835 -2020-03-12 16:00:00,FFNDVM,Filled,Buy,86.0,5.37,0.323274,,836 -2020-03-12 16:00:00,LMRIBF,Filled,Sell,-55.0,159.95,6.158075,,837 -2020-03-12 16:00:00,ZIXTLG,Filled,Buy,111.0,7.15,0.555555,,838 -2020-03-12 16:00:00,BGDRAI,Filled,Buy,80.0,7.35,0.4116,,839 -2020-03-12 16:00:00,ZIJVRO,Filled,Buy,7.0,47.99,0.235151,,840 -2020-03-12 16:00:00,HCDUCB,Filled,Buy,18.0,39.26,0.4946759999999999,,841 -2020-03-12 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,842 -2020-03-12 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,843 -2020-03-12 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,844 -2020-03-12 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,845 -2020-03-12 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,846 -2020-03-12 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,847 -2020-03-12 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,848 -2020-03-12 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,849 -2020-03-12 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,850 -2020-03-12 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,851 -2020-03-12 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,852 -2020-03-12 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,853 -2020-03-13 16:00:00,COMNHQ,Filled,Buy,133.0,15.3,1.42443,,842 -2020-03-13 16:00:00,LUZLYG,Filled,Buy,50.0,22.5,0.7875,,843 -2020-03-13 16:00:00,HECLON,Filled,Buy,35.0,47.74,1.16963,,844 -2020-03-13 16:00:00,YIVYGH,Filled,Buy,25.0,36.3,0.6352499999999999,,845 -2020-03-13 16:00:00,OCHCAU,Filled,Sell,-266.0,35.18,6.550515999999999,,846 -2020-03-13 16:00:00,FFNDVM,Filled,Sell,-1670.0,5.85,6.83865,,847 -2020-03-13 16:00:00,LMRIBF,Filled,Buy,64.0,163.12,7.307776,,848 -2020-03-13 16:00:00,ZIXTLG,Filled,Buy,173.0,7.8,0.94458,,849 -2020-03-13 16:00:00,BGDRAI,Filled,Buy,174.0,7.81,0.9512579999999998,,850 -2020-03-13 16:00:00,ZIJVRO,Filled,Buy,28.0,47.79,0.936684,,851 -2020-03-13 16:00:00,HCDUCB,Filled,Buy,31.0,41.44,0.8992479999999999,,852 -2020-03-13 16:00:00,MCCZID,Filled,Buy,331.0,31.0,7.1827,,853 -2020-03-13 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,854 -2020-03-13 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,855 -2020-03-13 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,856 -2020-03-13 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,857 -2020-03-13 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,858 -2020-03-13 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,859 -2020-03-13 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,860 -2020-03-13 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,861 -2020-03-13 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,862 -2020-03-13 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,863 -2020-03-13 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,864 -2020-03-13 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,865 -2020-03-16 16:00:00,COMNHQ,Filled,Sell,-51.0,12.8,0.45696,,854 -2020-03-16 16:00:00,LUZLYG,Filled,Sell,-77.0,20.0,1.078,,855 -2020-03-16 16:00:00,HECLON,Filled,Sell,-36.0,43.27,1.090404,,856 -2020-03-16 16:00:00,YIVYGH,Filled,Sell,-34.0,34.64,0.8244319999999999,,857 -2020-03-16 16:00:00,LMRIBF,Filled,Sell,-7.0,149.0,0.7301,,858 -2020-03-16 16:00:00,ZIXTLG,Filled,Sell,-78.0,6.44,0.35162400000000005,,859 -2020-03-16 16:00:00,BGDRAI,Filled,Sell,-119.0,7.0,0.5831,,860 -2020-03-16 16:00:00,ZIJVRO,Filled,Sell,-37.0,47.48,1.229732,,861 -2020-03-16 16:00:00,HCDUCB,Filled,Sell,-27.0,37.35,0.7059150000000001,,862 -2020-03-16 16:00:00,MCCZID,Filled,Sell,-331.0,30.0,6.951,,863 -2020-03-16 16:00:00,ISIJLH,Filled,Buy,285.0,31.0,6.1845,,864 -2020-03-16 16:00:00,RUKNMV,Filled,Buy,319.0,26.87,6.000071,,865 -2020-03-16 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,866 -2020-03-16 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,867 -2020-03-16 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,868 -2020-03-16 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,869 -2020-03-16 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,870 -2020-03-16 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,871 -2020-03-16 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,872 -2020-03-16 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,873 -2020-03-16 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,874 -2020-03-16 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,875 -2020-03-16 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,876 -2020-03-16 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,877 -2020-03-17 16:00:00,COMNHQ,Filled,Sell,-78.0,15.83,0.864318,,866 -2020-03-17 16:00:00,LUZLYG,Filled,Sell,-407.0,21.06,5.999994,,867 -2020-03-17 16:00:00,HECLON,Filled,Sell,-193.0,42.14,5.6931140000000005,,868 -2020-03-17 16:00:00,YIVYGH,Filled,Sell,-250.0,36.55,6.39625,,869 -2020-03-17 16:00:00,FFNDVM,Filled,Buy,1939.0,5.08,6.895084000000001,,870 -2020-03-17 16:00:00,LMRIBF,Filled,Sell,-57.0,150.8,6.01692,,871 -2020-03-17 16:00:00,ZIXTLG,Filled,Sell,-1308.0,6.38,5.841527999999999,,872 -2020-03-17 16:00:00,BGDRAI,Filled,Buy,203.0,6.91,0.981911,,873 -2020-03-17 16:00:00,ZIJVRO,Filled,Sell,-181.0,45.74,5.7952580000000005,,874 -2020-03-17 16:00:00,HCDUCB,Filled,Sell,-229.0,35.49,5.689047,,875 -2020-03-17 16:00:00,ISIJLH,Filled,Sell,-285.0,32.36,6.45582,,876 -2020-03-17 16:00:00,RUKNMV,Filled,Sell,-319.0,27.5,6.14075,,877 -2020-03-17 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,878 -2020-03-17 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,879 -2020-03-17 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,880 -2020-03-17 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,881 -2020-03-17 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,882 -2020-03-18 16:00:00,COMNHQ,Filled,Buy,14.0,14.24,0.139552,,878 -2020-03-18 16:00:00,RLSRXX,Filled,Buy,232.0,39.67,6.442408,,879 -2020-03-18 16:00:00,FFNDVM,Filled,Buy,4.0,4.74,0.013272,,880 -2020-03-18 16:00:00,ZIXTLG,Filled,Buy,1502.0,5.86,6.161204000000001,,881 -2020-03-18 16:00:00,BGDRAI,Filled,Sell,-83.0,6.55,0.380555,,882 -2020-03-18 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,883 -2020-03-18 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,884 -2020-03-18 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,885 -2020-03-18 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,886 -2020-03-18 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,887 -2020-03-18 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,888 -2020-03-19 16:00:00,COMNHQ,Filled,Buy,207.0,11.61,1.682289,,883 -2020-03-19 16:00:00,RLSRXX,Filled,Sell,-232.0,39.56,6.424544,,884 -2020-03-19 16:00:00,YIVYGH,Filled,Buy,271.0,35.64,6.760908000000001,,885 -2020-03-19 16:00:00,FFNDVM,Filled,Sell,-1943.0,4.3,5.84843,,886 -2020-03-19 16:00:00,ZIXTLG,Filled,Buy,322.0,5.14,1.158556,,887 -2020-03-19 16:00:00,BGDRAI,Filled,Buy,92.0,6.39,0.411516,,888 -2020-03-19 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,889 -2020-03-19 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,890 -2020-03-19 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,891 -2020-03-19 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,892 -2020-03-19 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,893 -2020-03-20 16:00:00,COMNHQ,Filled,Buy,119.0,10.66,0.8879779999999999,,889 -2020-03-20 16:00:00,YIVYGH,Filled,Buy,1.0,36.09,0.025263,,890 -2020-03-20 16:00:00,FFNDVM,Filled,Buy,2187.0,4.54,6.950285999999999,,891 -2020-03-20 16:00:00,ZIXTLG,Filled,Sell,-121.0,6.02,0.509894,,892 -2020-03-20 16:00:00,BGDRAI,Filled,Buy,41.0,7.0,0.2009,,893 -2020-03-20 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,894 -2020-03-20 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,895 -2020-03-20 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,896 -2020-03-20 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,897 -2020-03-20 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,898 -2020-03-23 16:00:00,COMNHQ,Filled,Sell,-10.0,10.92,0.07644000000000001,,894 -2020-03-23 16:00:00,YIVYGH,Filled,Sell,-272.0,32.93,6.2698719999999994,,895 -2020-03-23 16:00:00,FFNDVM,Filled,Buy,67.0,4.25,0.199325,,896 -2020-03-23 16:00:00,ZIXTLG,Filled,Buy,65.0,5.46,0.24843,,897 -2020-03-23 16:00:00,BGDRAI,Filled,Sell,-1508.0,6.44,6.798064,,898 -2020-03-23 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,899 -2020-03-23 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,900 -2020-03-23 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,901 -2020-03-23 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,902 -2020-03-24 16:00:00,COMNHQ,Filled,Buy,1.0,11.99,0.008393,,899 -2020-03-24 16:00:00,LUZLYG,Filled,Buy,533.0,19.42,7.245602000000001,,900 -2020-03-24 16:00:00,FFNDVM,Filled,Buy,153.0,4.51,0.483021,,901 -2020-03-24 16:00:00,ZIXTLG,Filled,Buy,22.0,6.13,0.094402,,902 -2020-03-24 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,903 -2020-03-24 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,904 -2020-03-24 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,905 -2020-03-24 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,906 -2020-03-25 16:00:00,COMNHQ,Filled,Buy,88.0,16.81,1.035496,,903 -2020-03-25 16:00:00,LUZLYG,Filled,Sell,-533.0,21.6,8.05896,,904 -2020-03-25 16:00:00,FFNDVM,Filled,Sell,-2407.0,5.73,9.654477,,905 -2020-03-25 16:00:00,ZIXTLG,Filled,Buy,260.0,6.96,1.2667199999999998,,906 -2020-03-25 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,907 -2020-03-25 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,908 -2020-03-25 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,909 -2020-03-26 16:00:00,COMNHQ,Filled,Sell,-94.0,16.11,1.060038,,907 -2020-03-26 16:00:00,YIVYGH,Filled,Buy,428.0,33.19,9.943724,,908 -2020-03-26 16:00:00,ZIXTLG,Filled,Sell,-66.0,7.37,0.340494,,909 -2020-03-26 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,910 -2020-03-26 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,911 -2020-03-26 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,912 -2020-03-27 16:00:00,COMNHQ,Filled,Sell,-15.0,14.98,0.15729,,910 -2020-03-27 16:00:00,YIVYGH,Filled,Sell,-428.0,35.59,10.662764,,911 -2020-03-27 16:00:00,ZIXTLG,Filled,Sell,-1984.0,6.63,9.207744,,912 -2020-03-27 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,913 -2020-03-27 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,914 -2020-03-30 16:00:00,COMNHQ,Filled,Buy,103.0,13.15,0.948115,,913 -2020-03-30 16:00:00,ZIXTLG,Filled,Buy,2317.0,6.27,10.169313,,914 -2020-03-30 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,915 -2020-03-30 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,916 -2020-03-31 16:00:00,COMNHQ,Filled,Sell,-119.0,12.9,1.07457,,915 -2020-03-31 16:00:00,ZIXTLG,Filled,Sell,-2317.0,6.32,10.250408,,916 -2020-03-31 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,917 -2020-03-31 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,918 -2020-04-01 16:00:00,COMNHQ,Filled,Sell,-904.0,11.48,7.264544,,917 -2020-04-01 16:00:00,ZIXTLG,Filled,Buy,1642.0,6.35,7.298689999999999,,918 -2020-04-01 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,919 -2020-04-02 16:00:00,ZIXTLG,Filled,Buy,474.0,6.54,2.169972,,919 -2020-04-02 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,920 -2020-04-02 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,921 -2020-04-03 16:00:00,COMNHQ,Filled,Buy,1327.0,10.35,9.614115,,920 -2020-04-03 16:00:00,ZIXTLG,Filled,Sell,-2116.0,6.36,9.420432,,921 -2020-04-03 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,922 -2020-04-06 16:00:00,COMNHQ,Filled,Buy,112.0,9.72,0.7620480000000001,,922 -2020-04-06 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,923 -2020-04-06 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,924 -2020-04-07 16:00:00,COMNHQ,Filled,Sell,-16.0,11.08,0.124096,,923 -2020-04-07 16:00:00,ZIXTLG,Filled,Buy,1880.0,7.86,10.34376,,924 -2020-04-07 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,925 -2020-04-07 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,926 -2020-04-08 16:00:00,COMNHQ,Filled,Sell,-461.0,10.9,3.5174300000000005,,925 -2020-04-08 16:00:00,ZIXTLG,Filled,Sell,-1880.0,7.64,10.054239999999998,,926 -2020-04-08 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,927 -2020-04-08 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,928 -2020-04-08 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,929 -2020-04-08 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,930 -2020-04-09 16:00:00,COMNHQ,Filled,Sell,-93.0,12.62,0.8215619999999999,,927 -2020-04-09 16:00:00,LUZLYG,Filled,Buy,420.0,24.05,7.0706999999999995,,928 -2020-04-09 16:00:00,YIVYGH,Filled,Buy,261.0,37.41,6.834806999999999,,929 -2020-04-09 16:00:00,ZIXTLG,Filled,Buy,1227.0,8.31,7.137459000000001,,930 -2020-04-09 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,931 -2020-04-09 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,932 -2020-04-09 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,933 -2020-04-09 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,934 -2020-04-09 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,935 -2020-04-09 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,936 -2020-04-09 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,937 -2020-04-09 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,938 -2020-04-09 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,939 -2020-04-13 16:00:00,COMNHQ,Filled,Sell,-81.0,12.94,0.7336979999999999,,931 -2020-04-13 16:00:00,LUZLYG,Filled,Sell,-24.0,24.85,0.4174800000000001,,932 -2020-04-13 16:00:00,HECLON,Filled,Buy,208.0,47.5,6.916,,933 -2020-04-13 16:00:00,YIVYGH,Filled,Sell,-261.0,37.48,6.847595999999999,,934 -2020-04-13 16:00:00,ZIXTLG,Filled,Sell,-1227.0,8.28,7.111692,,935 -2020-04-13 16:00:00,BGDRAI,Filled,Buy,1382.0,7.1,6.868539999999999,,936 -2020-04-13 16:00:00,MCCZID,Filled,Buy,278.0,35.94,6.993924,,937 -2020-04-13 16:00:00,ISIJLH,Filled,Buy,321.0,30.52,6.857844,,938 -2020-04-13 16:00:00,RUKNMV,Filled,Buy,297.0,33.22,6.906438,,939 -2020-04-13 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,940 -2020-04-13 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,941 -2020-04-13 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,942 -2020-04-13 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,943 -2020-04-13 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,944 -2020-04-13 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,945 -2020-04-13 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,946 -2020-04-14 16:00:00,COMNHQ,Filled,Buy,63.0,12.22,0.538902,,940 -2020-04-14 16:00:00,LUZLYG,Filled,Sell,-396.0,24.55,6.8052600000000005,,941 -2020-04-14 16:00:00,HECLON,Filled,Buy,2.0,47.66,0.06672399999999999,,942 -2020-04-14 16:00:00,BGDRAI,Filled,Sell,-1382.0,7.12,6.887888,,943 -2020-04-14 16:00:00,MCCZID,Filled,Sell,-278.0,36.0,7.0056,,944 -2020-04-14 16:00:00,ISIJLH,Filled,Buy,5.0,30.69,0.107415,,945 -2020-04-14 16:00:00,RUKNMV,Filled,Buy,16.0,32.11,0.359632,,946 -2020-04-14 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,947 -2020-04-14 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,948 -2020-04-14 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,949 -2020-04-14 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,950 -2020-04-14 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,951 -2020-04-14 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,952 -2020-04-14 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,953 -2020-04-14 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,954 -2020-04-15 16:00:00,COMNHQ,Filled,Sell,-27.0,12.53,0.236817,,947 -2020-04-15 16:00:00,SMDIFE,Filled,Buy,34.0,282.62,6.726356,,948 -2020-04-15 16:00:00,HECLON,Filled,Buy,6.0,43.25,0.18165,,949 -2020-04-15 16:00:00,FFNDVM,Filled,Buy,1862.0,5.04,6.569135999999999,,950 -2020-04-15 16:00:00,BGDRAI,Filled,Buy,1421.0,6.69,6.654542999999999,,951 -2020-04-15 16:00:00,BPSPGV,Filled,Buy,56.0,171.01,6.703592,,952 -2020-04-15 16:00:00,ISIJLH,Filled,Sell,-10.0,30.63,0.21441,,953 -2020-04-15 16:00:00,RUKNMV,Filled,Buy,13.0,28.68,0.260988,,954 -2020-04-15 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,955 -2020-04-15 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,956 -2020-04-15 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,957 -2020-04-15 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,958 -2020-04-15 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,959 -2020-04-15 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,960 -2020-04-15 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,961 -2020-04-15 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,962 -2020-04-15 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,963 -2020-04-16 16:00:00,COMNHQ,Filled,Sell,-32.0,11.91,0.266784,,955 -2020-04-16 16:00:00,SMDIFE,Filled,Sell,-34.0,287.25,6.83655,,956 -2020-04-16 16:00:00,HECLON,Filled,Buy,11.0,42.8,0.32955999999999996,,957 -2020-04-16 16:00:00,YIVYGH,Filled,Buy,262.0,37.53,6.883002,,958 -2020-04-16 16:00:00,FFNDVM,Filled,Sell,-1862.0,5.01,6.530033999999999,,959 -2020-04-16 16:00:00,BGDRAI,Filled,Buy,77.0,6.45,0.34765500000000005,,960 -2020-04-16 16:00:00,BPSPGV,Filled,Sell,-56.0,174.36,6.834912,,961 -2020-04-16 16:00:00,ISIJLH,Filled,Buy,7.0,30.27,0.14832299999999998,,962 -2020-04-16 16:00:00,RUKNMV,Filled,Sell,-326.0,28.18,6.430676,,963 -2020-04-16 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,964 -2020-04-16 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,965 -2020-04-16 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,966 -2020-04-16 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,967 -2020-04-16 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,968 -2020-04-16 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,969 -2020-04-16 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,970 -2020-04-16 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,971 -2020-04-17 16:00:00,COMNHQ,Filled,Buy,86.0,11.87,0.7145739999999999,,964 -2020-04-17 16:00:00,LUZLYG,Filled,Buy,453.0,22.33,7.080843,,965 -2020-04-17 16:00:00,HECLON,Filled,Buy,12.0,43.0,0.3612,,966 -2020-04-17 16:00:00,YIVYGH,Filled,Sell,-5.0,38.55,0.134925,,967 -2020-04-17 16:00:00,BGDRAI,Filled,Buy,60.0,6.42,0.26964,,968 -2020-04-17 16:00:00,BPSPGV,Filled,Buy,54.0,179.56,6.787368,,969 -2020-04-17 16:00:00,ISIJLH,Filled,Sell,-1.0,30.8,0.02156,,970 -2020-04-17 16:00:00,RUKNMV,Filled,Buy,361.0,28.15,7.113505,,971 -2020-04-17 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,972 -2020-04-17 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,973 -2020-04-17 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,974 -2020-04-17 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,975 -2020-04-17 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,976 -2020-04-17 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,977 -2020-04-17 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,978 -2020-04-17 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,979 -2020-04-17 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,980 -2020-04-20 16:00:00,COMNHQ,Filled,Sell,-35.0,11.13,0.272685,,972 -2020-04-20 16:00:00,LUZLYG,Filled,Sell,-34.0,22.57,0.537166,,973 -2020-04-20 16:00:00,HECLON,Filled,Sell,-25.0,43.4,0.7595,,974 -2020-04-20 16:00:00,YIVYGH,Filled,Sell,-1.0,37.68,0.026376,,975 -2020-04-20 16:00:00,OCHCAU,Filled,Buy,229.0,41.92,6.719776,,976 -2020-04-20 16:00:00,BGDRAI,Filled,Sell,-132.0,6.61,0.6107640000000001,,977 -2020-04-20 16:00:00,BPSPGV,Filled,Sell,-54.0,176.6,6.675479999999999,,978 -2020-04-20 16:00:00,ISIJLH,Filled,Sell,-10.0,30.85,0.21595,,979 -2020-04-20 16:00:00,RUKNMV,Filled,Sell,-18.0,27.29,0.343854,,980 -2020-04-20 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,981 -2020-04-20 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,982 -2020-04-20 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,983 -2020-04-20 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,984 -2020-04-20 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,985 -2020-04-20 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,986 -2020-04-20 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,987 -2020-04-20 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,988 -2020-04-20 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,989 -2020-04-20 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,990 -2020-04-21 16:00:00,COMNHQ,Filled,Buy,37.0,10.75,0.278425,,981 -2020-04-21 16:00:00,LUZLYG,Filled,Buy,13.0,21.88,0.199108,,982 -2020-04-21 16:00:00,HECLON,Filled,Buy,7.0,42.35,0.207515,,983 -2020-04-21 16:00:00,YIVYGH,Filled,Buy,5.0,36.75,0.128625,,984 -2020-04-21 16:00:00,OCHCAU,Filled,Sell,-229.0,41.81,6.7021429999999995,,985 -2020-04-21 16:00:00,FFNDVM,Filled,Buy,1954.0,4.82,6.592796000000001,,986 -2020-04-21 16:00:00,ZIXTLG,Filled,Buy,1213.0,7.5,6.36825,,987 -2020-04-21 16:00:00,BGDRAI,Filled,Buy,69.0,6.34,0.306222,,988 -2020-04-21 16:00:00,ISIJLH,Filled,Buy,2.0,30.5,0.0427,,989 -2020-04-21 16:00:00,RUKNMV,Filled,Buy,8.0,26.89,0.150584,,990 -2020-04-21 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,991 -2020-04-21 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,992 -2020-04-21 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,993 -2020-04-21 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,994 -2020-04-21 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,995 -2020-04-21 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,996 -2020-04-21 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,997 -2020-04-21 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,998 -2020-04-21 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,999 -2020-04-22 16:00:00,COMNHQ,Filled,Buy,345.0,11.09,2.678235,,991 -2020-04-22 16:00:00,LUZLYG,Filled,Sell,-432.0,22.16,6.7011840000000005,,992 -2020-04-22 16:00:00,HECLON,Filled,Sell,-221.0,42.99,6.650553,,993 -2020-04-22 16:00:00,YIVYGH,Filled,Sell,-261.0,36.23,6.619220999999999,,994 -2020-04-22 16:00:00,FFNDVM,Filled,Sell,-1954.0,4.87,6.661186,,995 -2020-04-22 16:00:00,ZIXTLG,Filled,Buy,606.0,7.55,3.20271,,996 -2020-04-22 16:00:00,BGDRAI,Filled,Buy,586.0,6.59,2.7032179999999997,,997 -2020-04-22 16:00:00,ISIJLH,Filled,Sell,-314.0,30.9,6.79182,,998 -2020-04-22 16:00:00,RUKNMV,Filled,Sell,-351.0,27.5,6.75675,,999 -2020-04-22 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1000 -2020-04-22 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1001 -2020-04-22 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1002 -2020-04-22 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1003 -2020-04-23 16:00:00,COMNHQ,Filled,Buy,88.0,10.38,0.639408,,1000 -2020-04-23 16:00:00,ZIXTLG,Filled,Sell,-53.0,7.87,0.291977,,1001 -2020-04-23 16:00:00,BGDRAI,Filled,Sell,-2081.0,6.46,9.410282,,1002 -2020-04-23 16:00:00,ISIJLH,Filled,Buy,457.0,29.41,9.408259,,1003 -2020-04-23 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1004 -2020-04-23 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1005 -2020-04-23 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1006 -2020-04-23 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1007 -2020-04-24 16:00:00,COMNHQ,Filled,Buy,3.0,10.4,0.02184,,1004 -2020-04-24 16:00:00,ZIXTLG,Filled,Sell,-1766.0,8.22,10.161564,,1005 -2020-04-24 16:00:00,ISIJLH,Filled,Sell,-457.0,29.49,9.433851,,1006 -2020-04-24 16:00:00,RUKNMV,Filled,Buy,508.0,26.8,9.53008,,1007 -2020-04-24 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1008 -2020-04-24 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1009 -2020-04-24 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1010 -2020-04-27 16:00:00,COMNHQ,Filled,Sell,-6.0,10.52,0.044184,,1008 -2020-04-27 16:00:00,BGDRAI,Filled,Buy,2158.0,6.37,9.622522,,1009 -2020-04-27 16:00:00,RUKNMV,Filled,Sell,-508.0,27.28,9.700768,,1010 -2020-04-27 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1011 -2020-04-27 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1012 -2020-04-27 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1013 -2020-04-28 16:00:00,COMNHQ,Filled,Buy,38.0,10.28,0.27344799999999997,,1011 -2020-04-28 16:00:00,BGDRAI,Filled,Sell,-2158.0,6.6,9.96996,,1012 -2020-04-28 16:00:00,RUKNMV,Filled,Buy,475.0,29.6,9.842,,1013 -2020-04-28 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1014 -2020-04-28 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1015 -2020-04-29 16:00:00,COMNHQ,Filled,Sell,-147.0,12.11,1.246119,,1014 -2020-04-29 16:00:00,RUKNMV,Filled,Sell,-7.0,30.1,0.14749,,1015 -2020-04-29 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1016 -2020-04-29 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1017 -2020-04-29 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1018 -2020-04-29 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1019 -2020-04-30 16:00:00,COMNHQ,Filled,Buy,315.0,11.92,2.6283600000000003,,1016 -2020-04-30 16:00:00,BGDRAI,Filled,Buy,2910.0,6.54,13.321980000000002,,1017 -2020-04-30 16:00:00,HCDUCB,Filled,Buy,384.0,49.5,13.3056,,1018 -2020-04-30 16:00:00,RUKNMV,Filled,Buy,170.0,29.27,3.4831299999999996,,1019 -2020-04-30 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1020 -2020-04-30 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1021 -2020-04-30 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1022 -2020-04-30 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1023 -2020-04-30 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1024 -2020-05-01 16:00:00,COMNHQ,Filled,Buy,76.0,11.38,0.6054160000000001,,1020 -2020-05-01 16:00:00,BGDRAI,Filled,Sell,-97.0,6.65,0.451535,,1021 -2020-05-01 16:00:00,HCDUCB,Filled,Sell,-384.0,46.36,12.461567999999998,,1022 -2020-05-01 16:00:00,ISIJLH,Filled,Buy,627.0,30.77,13.504953,,1023 -2020-05-01 16:00:00,RUKNMV,Filled,Buy,20.0,28.5,0.399,,1024 -2020-05-01 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1025 -2020-05-01 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1026 -2020-05-01 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1027 -2020-05-01 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1028 -2020-05-04 16:00:00,COMNHQ,Filled,Buy,196.0,9.42,1.292424,,1025 -2020-05-04 16:00:00,BGDRAI,Filled,Buy,114.0,6.3,0.50274,,1026 -2020-05-04 16:00:00,ISIJLH,Filled,Sell,-627.0,29.63,13.004606999999998,,1027 -2020-05-04 16:00:00,RUKNMV,Filled,Buy,31.0,26.91,0.583947,,1028 -2020-05-04 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1029 -2020-05-04 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1030 -2020-05-04 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1031 -2020-05-04 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1032 -2020-05-04 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1033 -2020-05-05 16:00:00,COMNHQ,Filled,Sell,-272.0,10.27,1.955408,,1029 -2020-05-05 16:00:00,OCHCAU,Filled,Buy,360.0,41.63,10.49076,,1030 -2020-05-05 16:00:00,BGDRAI,Filled,Sell,-529.0,6.3,2.33289,,1031 -2020-05-05 16:00:00,ISIJLH,Filled,Buy,503.0,29.74,10.471454,,1032 -2020-05-05 16:00:00,RUKNMV,Filled,Sell,-145.0,27.52,2.79328,,1033 -2020-05-05 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1034 -2020-05-05 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1035 -2020-05-05 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1036 -2020-05-05 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1037 -2020-05-05 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1038 -2020-05-05 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1039 -2020-05-06 16:00:00,COMNHQ,Filled,Sell,-500.0,9.56,3.346,,1034 -2020-05-06 16:00:00,OCHCAU,Filled,Sell,-360.0,41.53,10.46556,,1035 -2020-05-06 16:00:00,BGDRAI,Filled,Sell,-839.0,6.2,3.64126,,1036 -2020-05-06 16:00:00,MCCZID,Filled,Buy,251.0,38.8,6.817159999999999,,1037 -2020-05-06 16:00:00,ISIJLH,Filled,Sell,-503.0,29.74,10.471454,,1038 -2020-05-06 16:00:00,RUKNMV,Filled,Sell,-177.0,26.5,3.28335,,1039 -2020-05-06 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1040 -2020-05-06 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1041 -2020-05-06 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1042 -2020-05-06 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1043 -2020-05-06 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1044 -2020-05-06 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1045 -2020-05-07 16:00:00,COMNHQ,Filled,Buy,28.0,9.33,0.182868,,1040 -2020-05-07 16:00:00,HECLON,Filled,Buy,224.0,43.52,6.823936000000001,,1041 -2020-05-07 16:00:00,BGDRAI,Filled,Buy,56.0,6.06,0.23755199999999996,,1042 -2020-05-07 16:00:00,MCCZID,Filled,Sell,-251.0,38.32,6.732824,,1043 -2020-05-07 16:00:00,ISIJLH,Filled,Buy,335.0,29.13,6.830984999999999,,1044 -2020-05-07 16:00:00,RUKNMV,Filled,Buy,10.0,25.53,0.17871,,1045 -2020-05-07 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1046 -2020-05-07 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1047 -2020-05-07 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1048 -2020-05-07 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1049 -2020-05-07 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1050 -2020-05-07 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1051 -2020-05-08 16:00:00,COMNHQ,Filled,Sell,-21.0,9.79,0.143913,,1046 -2020-05-08 16:00:00,HECLON,Filled,Sell,-224.0,45.32,7.1061760000000005,,1047 -2020-05-08 16:00:00,BGDRAI,Filled,Sell,-17.0,6.21,0.07389899999999999,,1048 -2020-05-08 16:00:00,MCCZID,Filled,Buy,264.0,37.23,6.880103999999999,,1049 -2020-05-08 16:00:00,ISIJLH,Filled,Sell,-335.0,29.31,6.873195,,1050 -2020-05-08 16:00:00,RUKNMV,Filled,Buy,10.0,25.64,0.17947999999999997,,1051 -2020-05-08 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1052 -2020-05-08 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1053 -2020-05-08 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1054 -2020-05-08 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1055 -2020-05-08 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1056 -2020-05-11 16:00:00,COMNHQ,Filled,Sell,-59.0,9.92,0.4096959999999999,,1052 -2020-05-11 16:00:00,OCHCAU,Filled,Buy,227.0,42.78,6.7977419999999995,,1053 -2020-05-11 16:00:00,BGDRAI,Filled,Sell,-44.0,6.24,0.192192,,1054 -2020-05-11 16:00:00,MCCZID,Filled,Sell,-264.0,37.25,6.8838,,1055 -2020-05-11 16:00:00,RUKNMV,Filled,Sell,-3.0,25.11,0.052731,,1056 -2020-05-11 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1057 -2020-05-11 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1058 -2020-05-11 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1059 -2020-05-11 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1060 -2020-05-11 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1061 -2020-05-11 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1062 -2020-05-12 16:00:00,COMNHQ,Filled,Buy,532.0,10.01,3.727724,,1057 -2020-05-12 16:00:00,HECLON,Filled,Buy,343.0,44.39,10.658039,,1058 -2020-05-12 16:00:00,OCHCAU,Filled,Sell,-227.0,43.9,6.975709999999999,,1059 -2020-05-12 16:00:00,BGDRAI,Filled,Sell,-1554.0,6.21,6.755238,,1060 -2020-05-12 16:00:00,MCCZID,Filled,Buy,396.0,38.12,10.566864,,1061 -2020-05-12 16:00:00,RUKNMV,Filled,Buy,226.0,24.96,3.948672,,1062 -2020-05-12 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1063 -2020-05-12 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1064 -2020-05-12 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1065 -2020-05-12 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1066 -2020-05-12 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1067 -2020-05-13 16:00:00,COMNHQ,Filled,Buy,67.0,9.5,0.44555,,1063 -2020-05-13 16:00:00,HECLON,Filled,Buy,13.0,42.03,0.382473,,1064 -2020-05-13 16:00:00,BGDRAI,Filled,Buy,2514.0,6.0,10.5588,,1065 -2020-05-13 16:00:00,MCCZID,Filled,Sell,-396.0,37.31,10.342332,,1066 -2020-05-13 16:00:00,RUKNMV,Filled,Buy,17.0,23.92,0.284648,,1067 -2020-05-13 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1068 -2020-05-13 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1069 -2020-05-13 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1070 -2020-05-13 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1071 -2020-05-13 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1072 -2020-05-13 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1073 -2020-05-14 16:00:00,COMNHQ,Filled,Buy,88.0,8.75,0.539,,1068 -2020-05-14 16:00:00,HECLON,Filled,Buy,14.0,39.87,0.390726,,1069 -2020-05-14 16:00:00,FFNDVM,Filled,Buy,3186.0,4.63,10.325826,,1070 -2020-05-14 16:00:00,BGDRAI,Filled,Sell,-2514.0,5.62,9.890076,,1071 -2020-05-14 16:00:00,ISIJLH,Filled,Buy,535.0,28.0,10.486,,1072 -2020-05-14 16:00:00,RUKNMV,Filled,Buy,40.0,22.14,0.61992,,1073 -2020-05-14 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1074 -2020-05-14 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1075 -2020-05-14 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1076 -2020-05-14 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1077 -2020-05-14 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1078 -2020-05-14 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1079 -2020-05-14 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1080 -2020-05-14 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1081 -2020-05-15 16:00:00,COMNHQ,Filled,Sell,-29.0,8.92,0.181076,,1074 -2020-05-15 16:00:00,HECLON,Filled,Sell,-18.0,41.53,0.523278,,1075 -2020-05-15 16:00:00,FFNDVM,Filled,Sell,-3186.0,4.8,10.70496,,1076 -2020-05-15 16:00:00,ZIJVRO,Filled,Buy,251.0,57.47,10.097479,,1077 -2020-05-15 16:00:00,HCDUCB,Filled,Buy,324.0,43.4,9.84312,,1078 -2020-05-15 16:00:00,MCCZID,Filled,Buy,391.0,37.96,10.389652,,1079 -2020-05-15 16:00:00,ISIJLH,Filled,Sell,-535.0,28.28,10.59086,,1080 -2020-05-15 16:00:00,RUKNMV,Filled,Sell,-50.0,23.69,0.8291499999999999,,1081 -2020-05-15 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1082 -2020-05-15 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1083 -2020-05-15 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1084 -2020-05-15 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1085 -2020-05-15 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1086 -2020-05-15 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1087 -2020-05-15 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1088 -2020-05-18 16:00:00,COMNHQ,Filled,Sell,-545.0,9.6,3.6624,,1082 -2020-05-18 16:00:00,HECLON,Filled,Sell,-352.0,44.05,10.85392,,1083 -2020-05-18 16:00:00,BGDRAI,Filled,Buy,1774.0,5.78,7.1776040000000005,,1084 -2020-05-18 16:00:00,ZIJVRO,Filled,Sell,-84.0,59.75,3.5133,,1085 -2020-05-18 16:00:00,HCDUCB,Filled,Sell,-324.0,45.86,10.401048,,1086 -2020-05-18 16:00:00,MCCZID,Filled,Sell,-391.0,38.34,10.493658,,1087 -2020-05-18 16:00:00,RUKNMV,Filled,Sell,-201.0,24.56,3.455592,,1088 -2020-05-18 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1089 -2020-05-18 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1090 -2020-05-18 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1091 -2020-05-18 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1092 -2020-05-19 16:00:00,COMNHQ,Filled,Sell,-96.0,10.12,0.680064,,1089 -2020-05-19 16:00:00,BGDRAI,Filled,Sell,-229.0,6.27,1.005081,,1090 -2020-05-19 16:00:00,ZIJVRO,Filled,Sell,-167.0,60.1,7.025690000000001,,1091 -2020-05-19 16:00:00,RUKNMV,Filled,Sell,-35.0,25.0,0.6125,,1092 -2020-05-19 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1093 -2020-05-19 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1094 -2020-05-19 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1095 -2020-05-20 16:00:00,COMNHQ,Filled,Buy,23.0,9.9,0.15939,,1093 -2020-05-20 16:00:00,BGDRAI,Filled,Sell,-1545.0,6.34,6.85671,,1094 -2020-05-20 16:00:00,RUKNMV,Filled,Buy,23.0,24.45,0.393645,,1095 -2020-05-20 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1096 -2020-05-20 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1097 -2020-05-21 16:00:00,COMNHQ,Filled,Sell,-1004.0,9.87,6.936636,,1096 -2020-05-21 16:00:00,RUKNMV,Filled,Sell,-9.0,24.39,0.153657,,1097 -2020-05-21 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1098 -2020-05-22 16:00:00,RUKNMV,Filled,Sell,-395.0,24.47,6.765955,,1098 -2020-05-22 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1099 -2020-05-22 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1100 -2020-05-26 16:00:00,COMNHQ,Filled,Buy,998.0,10.25,7.1606499999999995,,1099 -2020-05-26 16:00:00,RUKNMV,Filled,Buy,400.0,25.1,7.028,,1100 -2020-05-26 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1101 -2020-05-26 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1102 -2020-05-26 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1103 -2020-05-26 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1104 -2020-05-27 16:00:00,COMNHQ,Filled,Buy,342.0,12.5,2.9925,,1101 -2020-05-27 16:00:00,LUZLYG,Filled,Buy,614.0,26.15,11.23927,,1102 -2020-05-27 16:00:00,HECLON,Filled,Buy,309.0,51.75,11.193525,,1103 -2020-05-27 16:00:00,RUKNMV,Filled,Buy,168.0,27.86,3.2763359999999997,,1104 -2020-05-27 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1105 -2020-05-27 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1106 -2020-05-27 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1107 -2020-05-27 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1108 -2020-05-28 16:00:00,COMNHQ,Filled,Sell,-93.0,11.83,0.7701330000000001,,1105 -2020-05-28 16:00:00,LUZLYG,Filled,Sell,-39.0,26.06,0.7114379999999999,,1106 -2020-05-28 16:00:00,HECLON,Filled,Sell,-23.0,52.85,0.850885,,1107 -2020-05-28 16:00:00,RUKNMV,Filled,Sell,-34.0,28.32,0.674016,,1108 -2020-05-28 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1109 -2020-05-28 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1110 -2020-05-28 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1111 -2020-05-28 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1112 -2020-05-28 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1113 -2020-05-29 16:00:00,COMNHQ,Filled,Buy,110.0,10.43,0.80311,,1109 -2020-05-29 16:00:00,LUZLYG,Filled,Buy,24.0,24.42,0.410256,,1110 -2020-05-29 16:00:00,HECLON,Filled,Buy,17.0,48.0,0.5712,,1111 -2020-05-29 16:00:00,HCDUCB,Filled,Buy,320.0,46.61,10.44064,,1112 -2020-05-29 16:00:00,RUKNMV,Filled,Buy,13.0,26.5,0.24115,,1113 -2020-05-29 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1114 -2020-05-29 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1115 -2020-05-29 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1116 -2020-05-29 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1117 -2020-05-29 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1118 -2020-05-29 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1119 -2020-06-01 16:00:00,COMNHQ,Filled,Buy,60.0,10.81,0.45402,,1114 -2020-06-01 16:00:00,LUZLYG,Filled,Buy,17.0,24.28,0.28893199999999997,,1115 -2020-06-01 16:00:00,HECLON,Filled,Buy,7.0,48.14,0.235886,,1116 -2020-06-01 16:00:00,OCHCAU,Filled,Buy,311.0,47.14,10.262378,,1117 -2020-06-01 16:00:00,HCDUCB,Filled,Sell,-10.0,47.44,0.33208,,1118 -2020-06-01 16:00:00,RUKNMV,Filled,Buy,15.0,26.61,0.27940499999999996,,1119 -2020-06-01 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1120 -2020-06-01 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1121 -2020-06-01 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1122 -2020-06-01 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1123 -2020-06-01 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1124 -2020-06-01 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1125 -2020-06-02 16:00:00,COMNHQ,Filled,Sell,-328.0,11.4,2.61744,,1120 -2020-06-02 16:00:00,LUZLYG,Filled,Sell,-616.0,24.99,10.775688,,1121 -2020-06-02 16:00:00,HECLON,Filled,Sell,-66.0,50.71,2.3428020000000003,,1122 -2020-06-02 16:00:00,OCHCAU,Filled,Sell,-50.0,46.35,1.62225,,1123 -2020-06-02 16:00:00,HCDUCB,Filled,Sell,-49.0,46.49,1.594607,,1124 -2020-06-02 16:00:00,RUKNMV,Filled,Sell,-116.0,27.58,2.239496,,1125 -2020-06-02 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1126 -2020-06-02 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1127 -2020-06-02 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1128 -2020-06-02 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1129 -2020-06-02 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1130 -2020-06-03 16:00:00,COMNHQ,Filled,Sell,-9.0,11.57,0.072891,,1126 -2020-06-03 16:00:00,HECLON,Filled,Sell,-244.0,52.5,8.967,,1127 -2020-06-03 16:00:00,OCHCAU,Filled,Sell,-261.0,47.0,8.5869,,1128 -2020-06-03 16:00:00,HCDUCB,Filled,Sell,-261.0,48.1,8.78787,,1129 -2020-06-03 16:00:00,RUKNMV,Filled,Sell,-446.0,28.39,8.863358,,1130 -2020-06-03 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1131 -2020-06-03 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1132 -2020-06-03 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1133 -2020-06-03 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1134 -2020-06-04 16:00:00,COMNHQ,Filled,Buy,143.0,12.85,1.286285,,1131 -2020-06-04 16:00:00,LUZLYG,Filled,Buy,557.0,25.75,10.039925,,1132 -2020-06-04 16:00:00,HECLON,Filled,Buy,271.0,53.3,10.11101,,1133 -2020-06-04 16:00:00,RUKNMV,Filled,Buy,502.0,29.4,10.33116,,1134 -2020-06-04 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1135 -2020-06-04 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1136 -2020-06-04 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1137 -2020-06-04 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1138 -2020-06-04 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1139 -2020-06-05 16:00:00,COMNHQ,Filled,Sell,-350.0,21.24,5.203799999999999,,1135 -2020-06-05 16:00:00,LUZLYG,Filled,Sell,-12.0,29.0,0.2436,,1136 -2020-06-05 16:00:00,HECLON,Filled,Sell,-9.0,61.54,0.387702,,1137 -2020-06-05 16:00:00,HCDUCB,Filled,Buy,285.0,52.69,10.511655,,1138 -2020-06-05 16:00:00,RUKNMV,Filled,Sell,-19.0,33.8,0.44953999999999994,,1139 -2020-06-05 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1140 -2020-06-05 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1141 -2020-06-05 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1142 -2020-06-05 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1143 -2020-06-05 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1144 -2020-06-05 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1145 -2020-06-08 16:00:00,COMNHQ,Filled,Sell,-873.0,19.9,12.160889999999998,,1140 -2020-06-08 16:00:00,LUZLYG,Filled,Sell,-23.0,28.6,0.46046,,1141 -2020-06-08 16:00:00,HECLON,Filled,Sell,-262.0,60.7,11.13238,,1142 -2020-06-08 16:00:00,ZIXTLG,Filled,Buy,1353.0,11.17,10.579107,,1143 -2020-06-08 16:00:00,HCDUCB,Filled,Sell,-285.0,54.5,10.87275,,1144 -2020-06-08 16:00:00,RUKNMV,Filled,Sell,-19.0,32.79,0.436107,,1145 -2020-06-08 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1146 -2020-06-08 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1147 -2020-06-08 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1148 -2020-06-09 16:00:00,LUZLYG,Filled,Sell,-522.0,27.65,10.10331,,1146 -2020-06-09 16:00:00,ZIXTLG,Filled,Sell,-23.0,11.0,0.1771,,1147 -2020-06-09 16:00:00,RUKNMV,Filled,Sell,-15.0,32.4,0.3402,,1148 -2020-06-09 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1149 -2020-06-09 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1150 -2020-06-09 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1151 -2020-06-09 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1152 -2020-06-09 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1153 -2020-06-10 16:00:00,COMNHQ,Filled,Buy,532.0,17.69,6.587756,,1149 -2020-06-10 16:00:00,SMDIFE,Filled,Buy,28.0,347.97,6.820212,,1150 -2020-06-10 16:00:00,LUZLYG,Filled,Buy,349.0,27.97,6.8330709999999995,,1151 -2020-06-10 16:00:00,ZIXTLG,Filled,Sell,-1330.0,11.32,10.53892,,1152 -2020-06-10 16:00:00,RUKNMV,Filled,Sell,-449.0,32.3,10.15189,,1153 -2020-06-10 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1154 -2020-06-10 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1155 -2020-06-10 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1156 -2020-06-10 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1157 -2020-06-10 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1158 -2020-06-11 16:00:00,COMNHQ,Filled,Buy,47.0,14.52,0.477708,,1154 -2020-06-11 16:00:00,SMDIFE,Filled,Sell,-1.0,349.3,0.24451,,1155 -2020-06-11 16:00:00,LUZLYG,Filled,Buy,21.0,25.0,0.3675,,1156 -2020-06-11 16:00:00,HECLON,Filled,Buy,176.0,51.67,6.365744,,1157 -2020-06-11 16:00:00,BPSPGV,Filled,Buy,50.0,193.13,6.75955,,1158 -2020-06-11 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1159 -2020-06-11 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1160 -2020-06-11 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1161 -2020-06-11 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1162 -2020-06-11 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1163 -2020-06-11 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1164 -2020-06-12 16:00:00,COMNHQ,Filled,Sell,-579.0,16.82,6.817146,,1159 -2020-06-12 16:00:00,SMDIFE,Filled,Sell,-27.0,344.9,6.51861,,1160 -2020-06-12 16:00:00,LUZLYG,Filled,Sell,-370.0,25.05,6.48795,,1161 -2020-06-12 16:00:00,HECLON,Filled,Buy,29.0,51.42,1.043826,,1162 -2020-06-12 16:00:00,ZIXTLG,Filled,Buy,1001.0,10.48,7.343336,,1163 -2020-06-12 16:00:00,BPSPGV,Filled,Sell,-50.0,190.55,6.66925,,1164 -2020-06-12 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1165 -2020-06-12 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1166 -2020-06-15 16:00:00,HECLON,Filled,Sell,-205.0,50.0,7.175,,1165 -2020-06-15 16:00:00,ZIXTLG,Filled,Sell,-62.0,10.0,0.434,,1166 -2020-06-15 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1167 -2020-06-16 16:00:00,ZIXTLG,Filled,Sell,-939.0,11.13,7.315749000000001,,1167 -2020-06-16 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1168 -2020-06-17 16:00:00,HECLON,Filled,Buy,180.0,54.56,6.874560000000001,,1168 -2020-06-17 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1169 -2020-06-18 16:00:00,HECLON,Filled,Buy,5.0,52.67,0.184345,,1169 -2020-06-18 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1170 -2020-06-18 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1171 -2020-06-19 16:00:00,HECLON,Filled,Sell,-185.0,54.02,6.995590000000001,,1170 -2020-06-19 16:00:00,ZIXTLG,Filled,Buy,932.0,10.83,7.065492,,1171 -2020-06-19 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1172 -2020-06-22 16:00:00,ZIXTLG,Filled,Buy,6.0,10.57,0.044394,,1172 -2020-06-22 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1173 -2020-06-22 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1174 -2020-06-23 16:00:00,HECLON,Filled,Buy,189.0,52.95,7.005285000000001,,1173 -2020-06-23 16:00:00,ZIXTLG,Filled,Sell,-25.0,11.09,0.194075,,1174 -2020-06-23 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1175 -2020-06-23 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1176 -2020-06-24 16:00:00,HECLON,Filled,Sell,-189.0,51.7,6.839910000000001,,1175 -2020-06-24 16:00:00,ZIXTLG,Filled,Buy,414.0,10.92,3.164616,,1176 -2020-06-24 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1177 -2020-06-25 16:00:00,ZIXTLG,Filled,Sell,-1327.0,10.56,9.809184,,1177 -2020-06-25 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1178 -2020-06-25 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1179 -2020-06-25 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1180 -2020-06-26 16:00:00,HECLON,Filled,Buy,283.0,51.9,10.281389999999998,,1178 -2020-06-26 16:00:00,ZIXTLG,Filled,Buy,1346.0,11.0,10.3642,,1179 -2020-06-26 16:00:00,RUKNMV,Filled,Buy,545.0,26.2,9.9953,,1180 -2020-06-26 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1181 -2020-06-26 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1182 -2020-06-26 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1183 -2020-06-26 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1184 -2020-06-29 16:00:00,COMNHQ,Filled,Buy,1185.0,12.55,10.410225,,1181 -2020-06-29 16:00:00,HECLON,Filled,Buy,12.0,50.28,0.422352,,1182 -2020-06-29 16:00:00,ZIXTLG,Filled,Buy,14.0,10.94,0.107212,,1183 -2020-06-29 16:00:00,RUKNMV,Filled,Sell,-545.0,25.64,9.78166,,1184 -2020-06-29 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1185 -2020-06-29 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1186 -2020-06-29 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1187 -2020-06-30 16:00:00,COMNHQ,Filled,Sell,-345.0,13.11,3.1660649999999997,,1185 -2020-06-30 16:00:00,HECLON,Filled,Sell,-295.0,49.7,10.26305,,1186 -2020-06-30 16:00:00,ZIXTLG,Filled,Sell,-1360.0,11.07,10.53864,,1187 -2020-06-30 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1188 -2020-06-30 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1189 -2020-07-01 16:00:00,COMNHQ,Filled,Buy,15.0,13.46,0.14133,,1188 -2020-07-01 16:00:00,ZIXTLG,Filled,Buy,966.0,11.64,7.870968,,1189 -2020-07-01 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1190 -2020-07-01 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1191 -2020-07-01 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1192 -2020-07-02 16:00:00,COMNHQ,Filled,Buy,211.0,13.36,1.973272,,1190 -2020-07-02 16:00:00,FFNDVM,Filled,Buy,2285.0,6.1,9.75695,,1191 -2020-07-02 16:00:00,ZIXTLG,Filled,Sell,-966.0,11.65,7.87773,,1192 -2020-07-02 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1193 -2020-07-02 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1194 -2020-07-06 16:00:00,COMNHQ,Filled,Buy,26.0,12.82,0.233324,,1193 -2020-07-06 16:00:00,FFNDVM,Filled,Sell,-27.0,6.15,0.116235,,1194 -2020-07-06 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1195 -2020-07-06 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1196 -2020-07-06 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1197 -2020-07-06 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1198 -2020-07-07 16:00:00,COMNHQ,Filled,Sell,-25.0,12.51,0.218925,,1195 -2020-07-07 16:00:00,HECLON,Filled,Buy,263.0,51.25,9.435125,,1196 -2020-07-07 16:00:00,FFNDVM,Filled,Sell,-50.0,6.13,0.21455,,1197 -2020-07-07 16:00:00,ZIXTLG,Filled,Buy,1072.0,12.7,9.53008,,1198 -2020-07-07 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1199 -2020-07-07 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1200 -2020-07-07 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1201 -2020-07-07 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1202 -2020-07-07 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1203 -2020-07-07 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1204 -2020-07-08 16:00:00,COMNHQ,Filled,Sell,-242.0,11.59,1.963346,,1199 -2020-07-08 16:00:00,LUZLYG,Filled,Buy,427.0,22.98,6.868722000000001,,1200 -2020-07-08 16:00:00,HECLON,Filled,Sell,-68.0,50.2,2.38952,,1201 -2020-07-08 16:00:00,FFNDVM,Filled,Sell,-602.0,6.12,2.578968,,1202 -2020-07-08 16:00:00,ZIXTLG,Filled,Sell,-1072.0,12.93,9.702672,,1203 -2020-07-08 16:00:00,RUKNMV,Filled,Buy,401.0,24.44,6.860308,,1204 -2020-07-08 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1205 -2020-07-08 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1206 -2020-07-08 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1207 -2020-07-08 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1208 -2020-07-08 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1209 -2020-07-08 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1210 -2020-07-09 16:00:00,COMNHQ,Filled,Sell,-5.0,11.92,0.04172,,1205 -2020-07-09 16:00:00,LUZLYG,Filled,Sell,-2.0,22.92,0.032088000000000005,,1206 -2020-07-09 16:00:00,HECLON,Filled,Sell,-2.0,50.73,0.071022,,1207 -2020-07-09 16:00:00,FFNDVM,Filled,Buy,8.0,6.09,0.034103999999999995,,1208 -2020-07-09 16:00:00,BGDRAI,Filled,Buy,1433.0,6.79,6.811049,,1209 -2020-07-09 16:00:00,RUKNMV,Filled,Sell,-1.0,24.45,0.017115,,1210 -2020-07-09 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1211 -2020-07-09 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1212 -2020-07-09 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1213 -2020-07-09 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1214 -2020-07-09 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1215 -2020-07-09 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1216 -2020-07-09 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1217 -2020-07-10 16:00:00,COMNHQ,Filled,Buy,57.0,11.0,0.4389,,1211 -2020-07-10 16:00:00,LUZLYG,Filled,Buy,5.0,22.71,0.07948500000000001,,1212 -2020-07-10 16:00:00,HECLON,Filled,Buy,5.0,49.52,0.17332,,1213 -2020-07-10 16:00:00,FFNDVM,Filled,Buy,66.0,5.77,0.266574,,1214 -2020-07-10 16:00:00,BGDRAI,Filled,Buy,58.0,6.55,0.26593,,1215 -2020-07-10 16:00:00,ISIJLH,Filled,Buy,332.0,29.47,6.848827999999999,,1216 -2020-07-10 16:00:00,RUKNMV,Filled,Buy,8.0,24.15,0.13524,,1217 -2020-07-10 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1218 -2020-07-10 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1219 -2020-07-10 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1220 -2020-07-10 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1221 -2020-07-10 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1222 -2020-07-10 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1223 -2020-07-10 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1224 -2020-07-10 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1225 -2020-07-13 16:00:00,COMNHQ,Filled,Sell,-53.0,12.17,0.451507,,1218 -2020-07-13 16:00:00,RLSRXX,Filled,Buy,176.0,56.71,6.986672,,1219 -2020-07-13 16:00:00,LUZLYG,Filled,Sell,-21.0,24.39,0.35853300000000005,,1220 -2020-07-13 16:00:00,HECLON,Filled,Sell,-12.0,53.31,0.447804,,1221 -2020-07-13 16:00:00,FFNDVM,Filled,Sell,-67.0,6.17,0.289373,,1222 -2020-07-13 16:00:00,BGDRAI,Filled,Sell,-20.0,6.77,0.09478,,1223 -2020-07-13 16:00:00,ISIJLH,Filled,Sell,-332.0,30.14,7.004536,,1224 -2020-07-13 16:00:00,RUKNMV,Filled,Sell,-22.0,25.8,0.39732,,1225 -2020-07-13 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1226 -2020-07-13 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1227 -2020-07-13 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1228 -2020-07-13 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1229 -2020-07-13 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1230 -2020-07-13 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1231 -2020-07-13 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1232 -2020-07-13 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1233 -2020-07-14 16:00:00,COMNHQ,Filled,Buy,334.0,11.33,2.648954,,1226 -2020-07-14 16:00:00,RLSRXX,Filled,Sell,-176.0,53.65,6.60968,,1227 -2020-07-14 16:00:00,LUZLYG,Filled,Sell,-409.0,23.96,6.859748000000001,,1228 -2020-07-14 16:00:00,HECLON,Filled,Sell,-186.0,51.34,6.684468,,1229 -2020-07-14 16:00:00,FFNDVM,Filled,Sell,-1613.0,6.15,6.943965,,1230 -2020-07-14 16:00:00,BGDRAI,Filled,Sell,-1471.0,6.65,6.847505,,1231 -2020-07-14 16:00:00,MCCZID,Filled,Buy,382.0,35.34,9.449916,,1232 -2020-07-14 16:00:00,RUKNMV,Filled,Sell,-386.0,23.99,6.482098,,1233 -2020-07-14 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1234 -2020-07-14 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1235 -2020-07-14 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1236 -2020-07-14 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1237 -2020-07-14 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1238 -2020-07-14 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1239 -2020-07-15 16:00:00,COMNHQ,Filled,Buy,5.0,12.47,0.043645,,1234 -2020-07-15 16:00:00,HECLON,Filled,Buy,268.0,51.85,9.72706,,1235 -2020-07-15 16:00:00,FFNDVM,Filled,Buy,2116.0,6.53,9.672236000000002,,1236 -2020-07-15 16:00:00,BGDRAI,Filled,Buy,1956.0,7.09,9.707628,,1237 -2020-07-15 16:00:00,MCCZID,Filled,Sell,-382.0,35.92,9.605008,,1238 -2020-07-15 16:00:00,RUKNMV,Filled,Buy,555.0,25.04,9.72804,,1239 -2020-07-15 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1240 -2020-07-15 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1241 -2020-07-15 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1242 -2020-07-15 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1243 -2020-07-15 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1244 -2020-07-16 16:00:00,COMNHQ,Filled,Sell,-145.0,12.71,1.290065,,1240 -2020-07-16 16:00:00,HECLON,Filled,Sell,-4.0,51.44,0.144032,,1241 -2020-07-16 16:00:00,FFNDVM,Filled,Sell,-2116.0,6.65,9.84998,,1242 -2020-07-16 16:00:00,BGDRAI,Filled,Sell,-39.0,7.06,0.192738,,1243 -2020-07-16 16:00:00,RUKNMV,Filled,Sell,-15.0,24.9,0.26145,,1244 -2020-07-16 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1245 -2020-07-16 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1246 -2020-07-16 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1247 -2020-07-16 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1248 -2020-07-16 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1249 -2020-07-17 16:00:00,COMNHQ,Filled,Buy,65.0,12.47,0.567385,,1245 -2020-07-17 16:00:00,HECLON,Filled,Sell,-2.0,51.14,0.071596,,1246 -2020-07-17 16:00:00,FFNDVM,Filled,Buy,1965.0,6.9,9.49095,,1247 -2020-07-17 16:00:00,BGDRAI,Filled,Sell,-5.0,7.07,0.024745,,1248 -2020-07-17 16:00:00,RUKNMV,Filled,Sell,-540.0,25.43,9.61254,,1249 -2020-07-17 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1250 -2020-07-17 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1251 -2020-07-17 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1252 -2020-07-17 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1253 -2020-07-17 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1254 -2020-07-17 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1255 -2020-07-17 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1256 -2020-07-20 16:00:00,COMNHQ,Filled,Sell,-258.0,11.92,2.152752,,1250 -2020-07-20 16:00:00,LUZLYG,Filled,Buy,423.0,23.19,6.8665590000000005,,1251 -2020-07-20 16:00:00,HECLON,Filled,Sell,-67.0,49.88,2.339372,,1252 -2020-07-20 16:00:00,OCHCAU,Filled,Buy,210.0,46.63,6.854610000000001,,1253 -2020-07-20 16:00:00,FFNDVM,Filled,Sell,-1965.0,6.76,9.29838,,1254 -2020-07-20 16:00:00,BGDRAI,Filled,Sell,-1912.0,7.01,9.382184,,1255 -2020-07-20 16:00:00,RUKNMV,Filled,Buy,394.0,24.75,6.8260499999999995,,1256 -2020-07-20 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1257 -2020-07-20 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1258 -2020-07-20 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1259 -2020-07-20 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1260 -2020-07-20 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1261 -2020-07-20 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1262 -2020-07-21 16:00:00,COMNHQ,Filled,Buy,31.0,11.54,0.250418,,1257 -2020-07-21 16:00:00,LUZLYG,Filled,Sell,-423.0,23.72,7.023491999999999,,1258 -2020-07-21 16:00:00,HECLON,Filled,Sell,-195.0,50.85,6.941025,,1259 -2020-07-21 16:00:00,OCHCAU,Filled,Sell,-210.0,47.29,6.95163,,1260 -2020-07-21 16:00:00,BGDRAI,Filled,Buy,1430.0,6.92,6.92692,,1261 -2020-07-21 16:00:00,RUKNMV,Filled,Sell,-394.0,24.71,6.815017999999999,,1262 -2020-07-21 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1263 -2020-07-21 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1264 -2020-07-21 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1265 -2020-07-21 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1266 -2020-07-21 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1267 -2020-07-22 16:00:00,COMNHQ,Filled,Buy,1.0,11.39,0.007973000000000001,,1263 -2020-07-22 16:00:00,LUZLYG,Filled,Buy,402.0,24.27,6.829578,,1264 -2020-07-22 16:00:00,HECLON,Filled,Buy,190.0,51.54,6.85482,,1265 -2020-07-22 16:00:00,BGDRAI,Filled,Sell,-1430.0,6.97,6.976970000000001,,1266 -2020-07-22 16:00:00,RUKNMV,Filled,Buy,375.0,26.13,6.859125,,1267 -2020-07-22 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1268 -2020-07-22 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1269 -2020-07-22 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1270 -2020-07-22 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1271 -2020-07-23 16:00:00,COMNHQ,Filled,Buy,8.0,11.27,0.063112,,1268 -2020-07-23 16:00:00,LUZLYG,Filled,Sell,-402.0,24.5,6.8943,,1269 -2020-07-23 16:00:00,HECLON,Filled,Sell,-190.0,51.45,6.84285,,1270 -2020-07-23 16:00:00,RUKNMV,Filled,Sell,-375.0,26.19,6.874875,,1271 -2020-07-23 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1272 -2020-07-23 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1273 -2020-07-23 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1274 -2020-07-24 16:00:00,COMNHQ,Filled,Sell,-30.0,11.66,0.24486,,1272 -2020-07-24 16:00:00,LUZLYG,Filled,Buy,400.0,24.56,6.8768,,1273 -2020-07-24 16:00:00,HECLON,Filled,Buy,188.0,52.1,6.8563600000000005,,1274 -2020-07-24 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1275 -2020-07-24 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1276 -2020-07-24 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1277 -2020-07-24 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1278 -2020-07-24 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1279 -2020-07-27 16:00:00,COMNHQ,Filled,Buy,28.0,11.5,0.2254,,1275 -2020-07-27 16:00:00,LUZLYG,Filled,Buy,3.0,24.21,0.050841,,1276 -2020-07-27 16:00:00,HECLON,Filled,Buy,2.0,51.16,0.071624,,1277 -2020-07-27 16:00:00,ZIJVRO,Filled,Buy,194.0,51.05,6.932589999999999,,1278 -2020-07-27 16:00:00,HCDUCB,Filled,Buy,196.0,50.59,6.940948000000001,,1279 -2020-07-27 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1280 -2020-07-27 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1281 -2020-07-27 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1282 -2020-07-27 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1283 -2020-07-27 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1284 -2020-07-27 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1285 -2020-07-27 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1286 -2020-07-28 16:00:00,COMNHQ,Filled,Sell,-1.0,11.37,0.007958999999999999,,1280 -2020-07-28 16:00:00,LUZLYG,Filled,Buy,4.0,24.13,0.067564,,1281 -2020-07-28 16:00:00,HECLON,Filled,Buy,1.0,51.02,0.035714,,1282 -2020-07-28 16:00:00,ZIXTLG,Filled,Buy,724.0,13.35,6.7657799999999995,,1283 -2020-07-28 16:00:00,ZIJVRO,Filled,Sell,-194.0,49.5,6.7221,,1284 -2020-07-28 16:00:00,HCDUCB,Filled,Sell,-196.0,51.25,7.0315,,1285 -2020-07-28 16:00:00,RUKNMV,Filled,Buy,385.0,25.5,6.87225,,1286 -2020-07-28 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1287 -2020-07-28 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1288 -2020-07-28 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1289 -2020-07-28 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1290 -2020-07-28 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1291 -2020-07-29 16:00:00,COMNHQ,Filled,Buy,282.0,11.79,2.327346,,1287 -2020-07-29 16:00:00,LUZLYG,Filled,Buy,145.0,24.33,2.469495,,1288 -2020-07-29 16:00:00,HECLON,Filled,Sell,-191.0,51.17,6.841429000000001,,1289 -2020-07-29 16:00:00,ZIXTLG,Filled,Sell,-724.0,13.32,6.750576000000001,,1290 -2020-07-29 16:00:00,RUKNMV,Filled,Sell,-385.0,25.5,6.87225,,1291 -2020-07-29 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1292 -2020-07-29 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1293 -2020-07-29 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1294 -2020-07-30 16:00:00,COMNHQ,Filled,Buy,580.0,11.22,4.55532,,1292 -2020-07-30 16:00:00,LUZLYG,Filled,Buy,226.0,24.64,3.898048,,1293 -2020-07-30 16:00:00,HECLON,Filled,Buy,374.0,51.07,13.370126,,1294 -2020-07-30 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1295 -2020-07-30 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1296 -2020-07-30 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1297 -2020-07-30 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1298 -2020-07-30 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1299 -2020-07-31 16:00:00,COMNHQ,Filled,Buy,33.0,11.12,0.256872,,1295 -2020-07-31 16:00:00,LUZLYG,Filled,Sell,-778.0,24.9,13.560539999999998,,1296 -2020-07-31 16:00:00,HECLON,Filled,Buy,12.0,50.24,0.422016,,1297 -2020-07-31 16:00:00,ZIXTLG,Filled,Buy,1518.0,12.99,13.803174,,1298 -2020-07-31 16:00:00,RUKNMV,Filled,Buy,797.0,24.5,13.66855,,1299 -2020-07-31 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1300 -2020-07-31 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1301 -2020-07-31 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1302 -2020-07-31 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1303 -2020-07-31 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1304 -2020-08-03 16:00:00,COMNHQ,Filled,Buy,8.0,11.06,0.061936000000000005,,1300 -2020-08-03 16:00:00,SMDIFE,Filled,Buy,46.0,433.0,13.9426,,1301 -2020-08-03 16:00:00,HECLON,Filled,Buy,6.0,50.4,0.21168,,1302 -2020-08-03 16:00:00,ZIXTLG,Filled,Sell,-1518.0,13.15,13.97319,,1303 -2020-08-03 16:00:00,RUKNMV,Filled,Sell,-797.0,24.15,13.473285,,1304 -2020-08-03 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1305 -2020-08-03 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1306 -2020-08-03 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1307 -2020-08-03 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1308 -2020-08-03 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1309 -2020-08-04 16:00:00,COMNHQ,Filled,Sell,-380.0,11.24,2.98984,,1305 -2020-08-04 16:00:00,SMDIFE,Filled,Sell,-46.0,436.55,14.056909999999998,,1306 -2020-08-04 16:00:00,HECLON,Filled,Sell,-392.0,50.28,13.796832000000002,,1307 -2020-08-04 16:00:00,FFNDVM,Filled,Buy,2293.0,6.88,11.043088,,1308 -2020-08-04 16:00:00,BPSPGV,Filled,Buy,70.0,214.29,10.50021,,1309 -2020-08-04 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1310 -2020-08-04 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1311 -2020-08-04 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1312 -2020-08-05 16:00:00,COMNHQ,Filled,Sell,-47.0,11.85,0.389865,,1310 -2020-08-05 16:00:00,FFNDVM,Filled,Sell,-55.0,6.86,0.26411,,1311 -2020-08-05 16:00:00,BPSPGV,Filled,Sell,-70.0,214.97,10.53353,,1312 -2020-08-05 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1313 -2020-08-05 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1314 -2020-08-05 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1315 -2020-08-05 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1316 -2020-08-06 16:00:00,COMNHQ,Filled,Sell,-114.0,13.02,1.038996,,1313 -2020-08-06 16:00:00,HECLON,Filled,Buy,301.0,50.75,10.693025,,1314 -2020-08-06 16:00:00,FFNDVM,Filled,Sell,-29.0,6.93,0.140679,,1315 -2020-08-06 16:00:00,ZIXTLG,Filled,Buy,1101.0,14.0,10.7898,,1316 -2020-08-06 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1317 -2020-08-06 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1318 -2020-08-06 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1319 -2020-08-06 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1320 -2020-08-06 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1321 -2020-08-07 16:00:00,COMNHQ,Filled,Sell,-44.0,12.79,0.393932,,1317 -2020-08-07 16:00:00,HECLON,Filled,Buy,1.0,50.52,0.035364,,1318 -2020-08-07 16:00:00,FFNDVM,Filled,Sell,-2209.0,6.88,10.638544,,1319 -2020-08-07 16:00:00,ZIXTLG,Filled,Sell,-44.0,14.12,0.4348959999999999,,1320 -2020-08-07 16:00:00,BGDRAI,Filled,Buy,2432.0,6.3,10.72512,,1321 -2020-08-07 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1322 -2020-08-07 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1323 -2020-08-07 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1324 -2020-08-07 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1325 -2020-08-07 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1326 -2020-08-07 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1327 -2020-08-07 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1328 -2020-08-10 16:00:00,COMNHQ,Filled,Buy,1.0,13.27,0.009289,,1322 -2020-08-10 16:00:00,LUZLYG,Filled,Buy,589.0,26.27,10.831121,,1323 -2020-08-10 16:00:00,HECLON,Filled,Sell,-7.0,52.29,0.256221,,1324 -2020-08-10 16:00:00,YIVYGH,Filled,Buy,359.0,42.56,10.695328,,1325 -2020-08-10 16:00:00,ZIXTLG,Filled,Sell,-1057.0,14.15,10.469585,,1326 -2020-08-10 16:00:00,BGDRAI,Filled,Sell,-27.0,6.4,0.12096,,1327 -2020-08-10 16:00:00,RUKNMV,Filled,Buy,614.0,25.25,10.85245,,1328 -2020-08-10 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1329 -2020-08-10 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1330 -2020-08-10 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1331 -2020-08-10 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1332 -2020-08-10 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1333 -2020-08-10 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1334 -2020-08-10 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1335 -2020-08-11 16:00:00,COMNHQ,Filled,Sell,-79.0,15.03,0.8311589999999999,,1329 -2020-08-11 16:00:00,LUZLYG,Filled,Sell,-9.0,27.25,0.171675,,1330 -2020-08-11 16:00:00,HECLON,Filled,Sell,-4.0,54.5,0.1526,,1331 -2020-08-11 16:00:00,YIVYGH,Filled,Sell,-359.0,43.25,10.868725,,1332 -2020-08-11 16:00:00,FFNDVM,Filled,Buy,2176.0,7.24,11.027968,,1333 -2020-08-11 16:00:00,BGDRAI,Filled,Sell,-92.0,6.86,0.441784,,1334 -2020-08-11 16:00:00,RUKNMV,Filled,Buy,10.0,25.34,0.17738,,1335 -2020-08-11 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1336 -2020-08-11 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1337 -2020-08-11 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1338 -2020-08-11 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1339 -2020-08-11 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1340 -2020-08-11 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1341 -2020-08-11 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1342 -2020-08-12 16:00:00,COMNHQ,Filled,Sell,-383.0,14.04,3.764124,,1336 -2020-08-12 16:00:00,LUZLYG,Filled,Sell,-213.0,27.5,4.10025,,1337 -2020-08-12 16:00:00,HECLON,Filled,Sell,-108.0,54.86,4.147416,,1338 -2020-08-12 16:00:00,FFNDVM,Filled,Sell,-809.0,7.31,4.139653,,1339 -2020-08-12 16:00:00,ZIXTLG,Filled,Buy,708.0,14.2,7.03752,,1340 -2020-08-12 16:00:00,BGDRAI,Filled,Sell,-845.0,6.87,4.063605,,1341 -2020-08-12 16:00:00,RUKNMV,Filled,Sell,-234.0,25.98,4.255523999999999,,1342 -2020-08-12 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1343 -2020-08-12 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1344 -2020-08-12 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1345 -2020-08-12 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1346 -2020-08-12 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1347 -2020-08-12 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1348 -2020-08-12 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1349 -2020-08-13 16:00:00,COMNHQ,Filled,Buy,11.0,13.17,0.101409,,1343 -2020-08-13 16:00:00,LUZLYG,Filled,Buy,2.0,26.38,0.036932,,1344 -2020-08-13 16:00:00,HECLON,Filled,Buy,2.0,52.81,0.073934,,1345 -2020-08-13 16:00:00,FFNDVM,Filled,Buy,23.0,7.02,0.11302199999999998,,1346 -2020-08-13 16:00:00,ZIXTLG,Filled,Sell,-708.0,13.85,6.864059999999999,,1347 -2020-08-13 16:00:00,BGDRAI,Filled,Buy,2.0,6.59,0.009226,,1348 -2020-08-13 16:00:00,RUKNMV,Filled,Buy,2.0,24.93,0.034902,,1349 -2020-08-13 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1350 -2020-08-13 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1351 -2020-08-13 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1352 -2020-08-13 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1353 -2020-08-13 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1354 -2020-08-13 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1355 -2020-08-14 16:00:00,COMNHQ,Filled,Buy,12.0,13.11,0.110124,,1350 -2020-08-14 16:00:00,LUZLYG,Filled,Buy,5.0,26.06,0.09121,,1351 -2020-08-14 16:00:00,HECLON,Filled,Buy,1.0,52.45,0.036715000000000005,,1352 -2020-08-14 16:00:00,FFNDVM,Filled,Buy,14.0,6.98,0.06840399999999999,,1353 -2020-08-14 16:00:00,BGDRAI,Filled,Buy,26.0,6.52,0.118664,,1354 -2020-08-14 16:00:00,RUKNMV,Filled,Sell,-392.0,24.81,6.807863999999999,,1355 -2020-08-14 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1356 -2020-08-14 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1357 -2020-08-14 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1358 -2020-08-14 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1359 -2020-08-14 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1360 -2020-08-17 16:00:00,COMNHQ,Filled,Sell,-2.0,13.31,0.018634,,1356 -2020-08-17 16:00:00,LUZLYG,Filled,Sell,-374.0,26.31,6.887957999999999,,1357 -2020-08-17 16:00:00,FFNDVM,Filled,Sell,-2.0,7.02,0.009828,,1358 -2020-08-17 16:00:00,BGDRAI,Filled,Sell,-13.0,6.67,0.060696999999999994,,1359 -2020-08-17 16:00:00,RUKNMV,Filled,Buy,390.0,25.0,6.825,,1360 -2020-08-17 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1361 -2020-08-17 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1362 -2020-08-17 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1363 -2020-08-17 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1364 -2020-08-17 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1365 -2020-08-17 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1366 -2020-08-17 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1367 -2020-08-17 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1368 -2020-08-18 16:00:00,COMNHQ,Filled,Buy,41.0,12.61,0.361907,,1361 -2020-08-18 16:00:00,LUZLYG,Filled,Buy,380.0,25.86,6.87876,,1362 -2020-08-18 16:00:00,HECLON,Filled,Buy,5.0,51.49,0.180215,,1363 -2020-08-18 16:00:00,YIVYGH,Filled,Buy,226.0,43.71,6.914922000000001,,1364 -2020-08-18 16:00:00,FFNDVM,Filled,Buy,10.0,7.0,0.049,,1365 -2020-08-18 16:00:00,ZIXTLG,Filled,Buy,699.0,14.3,6.99699,,1366 -2020-08-18 16:00:00,BGDRAI,Filled,Buy,41.0,6.5,0.18655,,1367 -2020-08-18 16:00:00,RUKNMV,Filled,Buy,13.0,24.42,0.22222200000000003,,1368 -2020-08-18 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1369 -2020-08-18 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1370 -2020-08-18 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1371 -2020-08-18 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1372 -2020-08-18 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1373 -2020-08-18 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1374 -2020-08-18 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1375 -2020-08-18 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1376 -2020-08-18 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1377 -2020-08-18 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1378 -2020-08-19 16:00:00,COMNHQ,Filled,Buy,1.0,12.65,0.008855,,1369 -2020-08-19 16:00:00,LUZLYG,Filled,Buy,6.0,25.64,0.107688,,1370 -2020-08-19 16:00:00,HECLON,Filled,Buy,4.0,50.68,0.141904,,1371 -2020-08-19 16:00:00,YIVYGH,Filled,Sell,-226.0,43.66,6.907012,,1372 -2020-08-19 16:00:00,FFNDVM,Filled,Buy,18.0,6.88,0.086688,,1373 -2020-08-19 16:00:00,ZIXTLG,Filled,Sell,-16.0,14.55,0.16296,,1374 -2020-08-19 16:00:00,BGDRAI,Filled,Buy,6.0,6.44,0.027048,,1375 -2020-08-19 16:00:00,ZIJVRO,Filled,Buy,202.0,48.8,6.900319999999999,,1376 -2020-08-19 16:00:00,HCDUCB,Filled,Buy,221.0,44.3,6.85321,,1377 -2020-08-19 16:00:00,RUKNMV,Filled,Buy,6.0,24.0,0.1008,,1378 -2020-08-19 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1379 -2020-08-19 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1380 -2020-08-19 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1381 -2020-08-19 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1382 -2020-08-19 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1383 -2020-08-19 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1384 -2020-08-19 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1385 -2020-08-19 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1386 -2020-08-20 16:00:00,COMNHQ,Filled,Sell,-5.0,12.38,0.04333,,1379 -2020-08-20 16:00:00,LUZLYG,Filled,Sell,-386.0,25.15,6.795529999999999,,1380 -2020-08-20 16:00:00,HECLON,Filled,Buy,1.0,49.52,0.034664,,1381 -2020-08-20 16:00:00,FFNDVM,Filled,Sell,-1430.0,6.77,6.776769999999999,,1382 -2020-08-20 16:00:00,ZIXTLG,Filled,Sell,-24.0,14.6,0.24527999999999997,,1383 -2020-08-20 16:00:00,BGDRAI,Filled,Buy,14.0,6.33,0.062034000000000006,,1384 -2020-08-20 16:00:00,ZIJVRO,Filled,Buy,1.0,49.82,0.034874,,1385 -2020-08-20 16:00:00,HCDUCB,Filled,Sell,-221.0,42.68,6.602596,,1386 -2020-08-20 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1387 -2020-08-20 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1388 -2020-08-20 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1389 -2020-08-20 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1390 -2020-08-20 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1391 -2020-08-20 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1392 -2020-08-20 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1393 -2020-08-20 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1394 -2020-08-20 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1395 -2020-08-21 16:00:00,COMNHQ,Filled,Buy,10.0,12.47,0.08729,,1387 -2020-08-21 16:00:00,LUZLYG,Filled,Buy,392.0,25.0,6.86,,1388 -2020-08-21 16:00:00,HECLON,Filled,Buy,2.0,49.45,0.06923,,1389 -2020-08-21 16:00:00,ZIXTLG,Filled,Sell,-659.0,14.44,6.661172,,1390 -2020-08-21 16:00:00,BGDRAI,Filled,Buy,26.0,6.25,0.11375,,1391 -2020-08-21 16:00:00,ZIJVRO,Filled,Sell,-3.0,49.07,0.103047,,1392 -2020-08-21 16:00:00,HCDUCB,Filled,Buy,229.0,42.92,6.880076,,1393 -2020-08-21 16:00:00,MCCZID,Filled,Buy,254.0,38.85,6.9075299999999995,,1394 -2020-08-21 16:00:00,RUKNMV,Filled,Buy,5.0,23.6,0.08259999999999999,,1395 -2020-08-21 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1396 -2020-08-21 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1397 -2020-08-21 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1398 -2020-08-21 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1399 -2020-08-21 16:00:00,ZIXTLG,Submitted,Buy,0.0,0.0,0.0,,1400 -2020-08-21 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1401 -2020-08-21 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1402 -2020-08-21 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1403 -2020-08-21 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1404 -2020-08-21 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1405 -2020-08-24 16:00:00,COMNHQ,Filled,Buy,22.0,12.44,0.191576,,1396 -2020-08-24 16:00:00,LUZLYG,Filled,Buy,1.0,25.22,0.017654,,1397 -2020-08-24 16:00:00,HECLON,Filled,Buy,1.0,49.9,0.034929999999999996,,1398 -2020-08-24 16:00:00,FFNDVM,Filled,Buy,1477.0,6.73,6.958147,,1399 -2020-08-24 16:00:00,ZIXTLG,Filled,Buy,685.0,14.6,7.0007,,1400 -2020-08-24 16:00:00,BGDRAI,Filled,Sell,-11.0,6.35,0.048894999999999994,,1401 -2020-08-24 16:00:00,ZIJVRO,Filled,Sell,-1.0,49.28,0.034496,,1402 -2020-08-24 16:00:00,HCDUCB,Filled,Buy,1.0,43.17,0.030219,,1403 -2020-08-24 16:00:00,MCCZID,Filled,Sell,-254.0,39.0,6.9342,,1404 -2020-08-24 16:00:00,RUKNMV,Filled,Buy,2.0,23.76,0.033264,,1405 -2020-08-24 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1406 -2020-08-24 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1407 -2020-08-24 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1408 -2020-08-24 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1409 -2020-08-24 16:00:00,ZIXTLG,Submitted,Sell,0.0,0.0,0.0,,1410 -2020-08-24 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1411 -2020-08-24 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1412 -2020-08-24 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1413 -2020-08-24 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1414 -2020-08-25 16:00:00,COMNHQ,Filled,Sell,-75.0,13.7,0.71925,,1406 -2020-08-25 16:00:00,LUZLYG,Filled,Sell,-9.0,26.04,0.16405199999999998,,1407 -2020-08-25 16:00:00,HECLON,Filled,Sell,-6.0,51.8,0.21756,,1408 -2020-08-25 16:00:00,FFNDVM,Filled,Sell,-1477.0,7.01,7.247639,,1409 -2020-08-25 16:00:00,ZIXTLG,Filled,Sell,-685.0,14.54,6.9719299999999995,,1410 -2020-08-25 16:00:00,BGDRAI,Filled,Sell,-71.0,6.65,0.330505,,1411 -2020-08-25 16:00:00,ZIJVRO,Filled,Sell,-199.0,49.35,6.874454999999999,,1412 -2020-08-25 16:00:00,HCDUCB,Filled,Sell,-230.0,44.84,7.21924,,1413 -2020-08-25 16:00:00,RUKNMV,Filled,Sell,-13.0,24.74,0.225134,,1414 -2020-08-25 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1415 -2020-08-25 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1416 -2020-08-25 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1417 -2020-08-25 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1418 -2020-08-25 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1419 -2020-08-25 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1420 -2020-08-26 16:00:00,COMNHQ,Filled,Buy,422.0,13.1,3.86974,,1415 -2020-08-26 16:00:00,LUZLYG,Filled,Sell,-384.0,25.94,6.972672,,1416 -2020-08-26 16:00:00,HECLON,Filled,Buy,101.0,51.66,3.652362,,1417 -2020-08-26 16:00:00,BGDRAI,Filled,Sell,-1488.0,6.6,6.87456,,1418 -2020-08-26 16:00:00,HCDUCB,Filled,Buy,336.0,45.65,10.73688,,1419 -2020-08-26 16:00:00,RUKNMV,Filled,Buy,214.0,24.49,3.668602,,1420 -2020-08-26 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1421 -2020-08-26 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1422 -2020-08-26 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1423 -2020-08-26 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1424 -2020-08-26 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1425 -2020-08-27 16:00:00,COMNHQ,Filled,Buy,30.0,13.4,0.2814,,1421 -2020-08-27 16:00:00,HECLON,Filled,Buy,4.0,50.68,0.141904,,1422 -2020-08-27 16:00:00,BGDRAI,Filled,Buy,2341.0,6.5,10.65155,,1423 -2020-08-27 16:00:00,HCDUCB,Filled,Sell,-336.0,44.55,10.47816,,1424 -2020-08-27 16:00:00,RUKNMV,Filled,Buy,14.0,24.0,0.2352,,1425 -2020-08-27 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1426 -2020-08-27 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1427 -2020-08-27 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1428 -2020-08-27 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1429 -2020-08-27 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1430 -2020-08-28 16:00:00,COMNHQ,Filled,Sell,-43.0,13.58,0.408758,,1426 -2020-08-28 16:00:00,LUZLYG,Filled,Buy,582.0,26.45,10.77573,,1427 -2020-08-28 16:00:00,HECLON,Filled,Sell,-5.0,52.07,0.182245,,1428 -2020-08-28 16:00:00,BGDRAI,Filled,Sell,-2341.0,6.5,10.65155,,1429 -2020-08-28 16:00:00,RUKNMV,Filled,Sell,-14.0,24.72,0.242256,,1430 -2020-08-28 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1431 -2020-08-28 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1432 -2020-08-28 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1433 -2020-08-28 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1434 -2020-08-28 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1435 -2020-08-31 16:00:00,COMNHQ,Filled,Sell,-25.0,13.59,0.237825,,1431 -2020-08-31 16:00:00,LUZLYG,Filled,Sell,-582.0,26.09,10.629066,,1432 -2020-08-31 16:00:00,HECLON,Filled,Sell,-3.0,51.91,0.109011,,1433 -2020-08-31 16:00:00,HCDUCB,Filled,Buy,332.0,45.33,10.534692,,1434 -2020-08-31 16:00:00,RUKNMV,Filled,Sell,-617.0,24.48,10.572912,,1435 -2020-08-31 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1436 -2020-08-31 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1437 -2020-08-31 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1438 -2020-08-31 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1439 -2020-08-31 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1440 -2020-09-01 16:00:00,COMNHQ,Filled,Sell,-219.0,12.8,1.96224,,1436 -2020-09-01 16:00:00,SMDIFE,Filled,Buy,91.0,132.91,8.466367,,1437 -2020-09-01 16:00:00,HECLON,Filled,Sell,-61.0,50.88,2.1725760000000003,,1438 -2020-09-01 16:00:00,HCDUCB,Filled,Sell,-332.0,45.5,10.5742,,1439 -2020-09-01 16:00:00,RUKNMV,Filled,Buy,486.0,23.96,8.151192,,1440 -2020-09-01 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1441 -2020-09-01 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1442 -2020-09-01 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1443 -2020-09-01 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1444 -2020-09-01 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1445 -2020-09-02 16:00:00,COMNHQ,Filled,Sell,-3.0,12.92,0.027132,,1441 -2020-09-02 16:00:00,SMDIFE,Filled,Sell,-4.0,137.58,0.385224,,1442 -2020-09-02 16:00:00,HECLON,Filled,Sell,-229.0,51.01,8.176903,,1443 -2020-09-02 16:00:00,ISIJLH,Filled,Buy,398.0,29.35,8.176910000000001,,1444 -2020-09-02 16:00:00,RUKNMV,Filled,Sell,-486.0,23.98,8.157996,,1445 -2020-09-02 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1446 -2020-09-02 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1447 -2020-09-02 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1448 -2020-09-03 16:00:00,COMNHQ,Filled,Buy,139.0,13.4,1.30382,,1446 -2020-09-03 16:00:00,SMDIFE,Filled,Buy,17.0,126.97,1.510943,,1447 -2020-09-03 16:00:00,ISIJLH,Filled,Sell,-398.0,29.9,8.330139999999998,,1448 -2020-09-03 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1449 -2020-09-03 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1450 -2020-09-03 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1451 -2020-09-04 16:00:00,COMNHQ,Filled,Sell,-25.0,13.66,0.23905,,1449 -2020-09-04 16:00:00,SMDIFE,Filled,Buy,7.0,120.0,0.588,,1450 -2020-09-04 16:00:00,RLSRXX,Filled,Buy,163.0,81.4,9.28774,,1451 -2020-09-04 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1452 -2020-09-04 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1453 -2020-09-04 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1454 -2020-09-04 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1455 -2020-09-08 16:00:00,COMNHQ,Filled,Sell,-18.0,13.36,0.168336,,1452 -2020-09-08 16:00:00,RLSRXX,Filled,Sell,-163.0,78.0,8.899799999999999,,1453 -2020-09-08 16:00:00,LUZLYG,Filled,Buy,508.0,26.1,9.28116,,1454 -2020-09-08 16:00:00,HECLON,Filled,Buy,257.0,51.97,9.349403,,1455 -2020-09-08 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1456 -2020-09-08 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1457 -2020-09-08 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1458 -2020-09-08 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1459 -2020-09-08 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1460 -2020-09-09 16:00:00,COMNHQ,Filled,Sell,-271.0,13.49,2.559053,,1456 -2020-09-09 16:00:00,SMDIFE,Filled,Sell,-24.0,117.3,1.97064,,1457 -2020-09-09 16:00:00,LUZLYG,Filled,Sell,-508.0,25.65,9.12114,,1458 -2020-09-09 16:00:00,HECLON,Filled,Sell,-65.0,51.2,2.3296,,1459 -2020-09-09 16:00:00,RUKNMV,Filled,Buy,410.0,24.0,6.888,,1460 -2020-09-09 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1461 -2020-09-09 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1462 -2020-09-09 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1463 -2020-09-09 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1464 -2020-09-10 16:00:00,COMNHQ,Filled,Buy,33.0,13.2,0.30491999999999997,,1461 -2020-09-10 16:00:00,SMDIFE,Filled,Sell,-4.0,120.37,0.337036,,1462 -2020-09-10 16:00:00,HECLON,Filled,Sell,-192.0,51.72,6.951168,,1463 -2020-09-10 16:00:00,RUKNMV,Filled,Sell,-410.0,24.1,6.9167,,1464 -2020-09-10 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1465 -2020-09-10 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1466 -2020-09-10 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1467 -2020-09-10 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1468 -2020-09-11 16:00:00,COMNHQ,Filled,Buy,2.0,13.03,0.018242,,1465 -2020-09-11 16:00:00,SMDIFE,Filled,Buy,3.0,114.68,0.240828,,1466 -2020-09-11 16:00:00,BGDRAI,Filled,Buy,1639.0,6.02,6.906745999999999,,1467 -2020-09-11 16:00:00,ISIJLH,Filled,Buy,340.0,28.95,6.8901,,1468 -2020-09-11 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1469 -2020-09-11 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1470 -2020-09-11 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1471 -2020-09-11 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1472 -2020-09-11 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1473 -2020-09-11 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1474 -2020-09-14 16:00:00,COMNHQ,Filled,Sell,-756.0,13.02,6.890184,,1469 -2020-09-14 16:00:00,SMDIFE,Filled,Buy,1.0,114.78,0.080346,,1470 -2020-09-14 16:00:00,OCHCAU,Filled,Buy,246.0,40.26,6.932771999999999,,1471 -2020-09-14 16:00:00,FFNDVM,Filled,Buy,1405.0,7.01,6.894334999999999,,1472 -2020-09-14 16:00:00,BGDRAI,Filled,Sell,-1639.0,5.99,6.872327,,1473 -2020-09-14 16:00:00,ISIJLH,Filled,Sell,-1.0,29.11,0.020377,,1474 -2020-09-14 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1475 -2020-09-14 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1476 -2020-09-14 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1477 -2020-09-14 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1478 -2020-09-14 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1479 -2020-09-14 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1480 -2020-09-15 16:00:00,SMDIFE,Filled,Sell,-2.0,118.38,0.165732,,1475 -2020-09-15 16:00:00,HECLON,Filled,Buy,204.0,48.05,6.861539999999999,,1476 -2020-09-15 16:00:00,OCHCAU,Filled,Sell,-246.0,40.55,6.982709999999999,,1477 -2020-09-15 16:00:00,FFNDVM,Filled,Sell,-1405.0,7.15,7.032025,,1478 -2020-09-15 16:00:00,MCCZID,Filled,Buy,265.0,37.25,6.9098749999999995,,1479 -2020-09-15 16:00:00,ISIJLH,Filled,Sell,-2.0,29.17,0.040838,,1480 -2020-09-15 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1481 -2020-09-15 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1482 -2020-09-15 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1483 -2020-09-15 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1484 -2020-09-16 16:00:00,HECLON,Filled,Buy,15.0,45.17,0.47428500000000007,,1481 -2020-09-16 16:00:00,YIVYGH,Filled,Buy,211.0,47.05,6.949285,,1482 -2020-09-16 16:00:00,MCCZID,Filled,Sell,-265.0,37.19,6.898744999999999,,1483 -2020-09-16 16:00:00,ISIJLH,Filled,Sell,-337.0,29.13,6.871766999999999,,1484 -2020-09-16 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1485 -2020-09-16 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1486 -2020-09-16 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1487 -2020-09-16 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1488 -2020-09-16 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1489 -2020-09-16 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1490 -2020-09-16 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1491 -2020-09-17 16:00:00,COMNHQ,Filled,Buy,712.0,13.54,6.748335999999999,,1485 -2020-09-17 16:00:00,SMDIFE,Filled,Buy,2.0,109.77,0.15367799999999998,,1486 -2020-09-17 16:00:00,HECLON,Filled,Sell,-219.0,45.44,6.965951999999999,,1487 -2020-09-17 16:00:00,YIVYGH,Filled,Sell,-211.0,46.02,6.797154000000001,,1488 -2020-09-17 16:00:00,BGDRAI,Filled,Buy,1457.0,6.75,6.884325,,1489 -2020-09-17 16:00:00,MCCZID,Filled,Buy,267.0,36.79,6.876051,,1490 -2020-09-17 16:00:00,RUKNMV,Filled,Buy,382.0,25.15,6.725109999999999,,1491 -2020-09-17 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1492 -2020-09-17 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1493 -2020-09-17 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1494 -2020-09-17 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1495 -2020-09-17 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1496 -2020-09-18 16:00:00,COMNHQ,Filled,Sell,-712.0,13.5,6.7284,,1492 -2020-09-18 16:00:00,SMDIFE,Filled,Buy,2.0,110.41,0.154574,,1493 -2020-09-18 16:00:00,YIVYGH,Filled,Buy,215.0,45.48,6.844739999999999,,1494 -2020-09-18 16:00:00,BGDRAI,Filled,Sell,-1457.0,6.9,7.037310000000001,,1495 -2020-09-18 16:00:00,RUKNMV,Filled,Buy,9.0,24.92,0.15699600000000002,,1496 -2020-09-18 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1497 -2020-09-18 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1498 -2020-09-18 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1499 -2020-09-18 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1500 -2020-09-21 16:00:00,SMDIFE,Filled,Buy,3.0,104.52,0.219492,,1497 -2020-09-21 16:00:00,YIVYGH,Filled,Sell,-215.0,44.82,6.74541,,1498 -2020-09-21 16:00:00,MCCZID,Filled,Buy,4.0,36.36,0.101808,,1499 -2020-09-21 16:00:00,RUKNMV,Filled,Sell,-391.0,24.46,6.694702,,1500 -2020-09-21 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1501 -2020-09-21 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1502 -2020-09-21 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1503 -2020-09-21 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1504 -2020-09-21 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1505 -2020-09-22 16:00:00,COMNHQ,Filled,Buy,804.0,12.26,6.899927999999999,,1501 -2020-09-22 16:00:00,SMDIFE,Filled,Sell,-3.0,112.67,0.236607,,1502 -2020-09-22 16:00:00,RLSRXX,Filled,Buy,126.0,78.3,6.906059999999999,,1503 -2020-09-22 16:00:00,OCHCAU,Filled,Buy,251.0,39.18,6.883926,,1504 -2020-09-22 16:00:00,MCCZID,Filled,Buy,1.0,35.77,0.025039,,1505 -2020-09-22 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1506 -2020-09-22 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1507 -2020-09-22 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1508 -2020-09-22 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,1509 -2020-09-22 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1510 -2020-09-22 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1511 -2020-09-22 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1512 -2020-09-23 16:00:00,COMNHQ,Filled,Buy,287.0,12.52,2.515268,,1506 -2020-09-23 16:00:00,SMDIFE,Filled,Buy,31.0,111.63,2.4223709999999996,,1507 -2020-09-23 16:00:00,RLSRXX,Filled,Buy,47.0,77.42,2.547118,,1508 -2020-09-23 16:00:00,XUEHVZ,Filled,Buy,4.0,3119.42,8.734376,,1509 -2020-09-23 16:00:00,YIVYGH,Filled,Buy,291.0,46.19,9.408903,,1510 -2020-09-23 16:00:00,OCHCAU,Filled,Sell,-251.0,39.23,6.892710999999999,,1511 -2020-09-23 16:00:00,MCCZID,Filled,Buy,99.0,36.3,2.51559,,1512 -2020-09-23 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1513 -2020-09-23 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1514 -2020-09-23 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1515 -2020-09-23 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,1516 -2020-09-23 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1517 -2020-09-23 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1518 -2020-09-23 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1519 -2020-09-24 16:00:00,COMNHQ,Filled,Buy,34.0,11.72,0.278936,,1513 -2020-09-24 16:00:00,SMDIFE,Filled,Buy,5.0,105.18,0.36813000000000007,,1514 -2020-09-24 16:00:00,RLSRXX,Filled,Buy,6.0,74.35,0.31227,,1515 -2020-09-24 16:00:00,XUEHVZ,Filled,Sell,-4.0,2984.03,8.355284000000001,,1516 -2020-09-24 16:00:00,YIVYGH,Filled,Sell,-291.0,45.19,9.205203,,1517 -2020-09-24 16:00:00,MCCZID,Filled,Sell,-371.0,35.9,9.32323,,1518 -2020-09-24 16:00:00,ISIJLH,Filled,Buy,481.0,27.85,9.377095,,1519 -2020-09-24 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1520 -2020-09-24 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1521 -2020-09-24 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1522 -2020-09-24 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1523 -2020-09-25 16:00:00,COMNHQ,Filled,Buy,16.0,11.73,0.131376,,1520 -2020-09-25 16:00:00,SMDIFE,Filled,Sell,-1.0,108.49,0.075943,,1521 -2020-09-25 16:00:00,RLSRXX,Filled,Sell,-2.0,76.36,0.106904,,1522 -2020-09-25 16:00:00,ISIJLH,Filled,Sell,-481.0,27.89,9.390563,,1523 -2020-09-25 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1524 -2020-09-25 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1525 -2020-09-25 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1526 -2020-09-28 16:00:00,COMNHQ,Filled,Sell,-47.0,12.75,0.419475,,1524 -2020-09-28 16:00:00,SMDIFE,Filled,Sell,-5.0,114.91,0.402185,,1525 -2020-09-28 16:00:00,RLSRXX,Filled,Sell,-5.0,79.0,0.2765,,1526 -2020-09-28 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1527 -2020-09-28 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1528 -2020-09-28 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1529 -2020-09-29 16:00:00,COMNHQ,Filled,Sell,-292.0,12.57,2.569308,,1527 -2020-09-29 16:00:00,SMDIFE,Filled,Sell,-30.0,114.52,2.4049199999999997,,1528 -2020-09-29 16:00:00,RLSRXX,Filled,Sell,-44.0,79.3,2.44244,,1529 -2020-09-29 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1530 -2020-09-29 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1531 -2020-09-29 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1532 -2020-09-30 16:00:00,COMNHQ,Filled,Buy,33.0,12.35,0.285285,,1530 -2020-09-30 16:00:00,RLSRXX,Filled,Sell,-3.0,81.71,0.171591,,1531 -2020-09-30 16:00:00,MCCZID,Filled,Buy,283.0,36.28,7.187068,,1532 -2020-09-30 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1533 -2020-09-30 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1534 -2020-09-30 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1535 -2020-09-30 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1536 -2020-10-01 16:00:00,COMNHQ,Filled,Buy,105.0,12.44,0.91434,,1533 -2020-10-01 16:00:00,SMDIFE,Filled,Sell,-89.0,117.72,7.333956,,1534 -2020-10-01 16:00:00,RLSRXX,Filled,Buy,16.0,83.11,0.930832,,1535 -2020-10-01 16:00:00,MCCZID,Filled,Buy,32.0,36.75,0.8232,,1536 -2020-10-01 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1537 -2020-10-01 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1538 -2020-10-01 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1539 -2020-10-02 16:00:00,COMNHQ,Filled,Sell,-21.0,12.02,0.176694,,1537 -2020-10-02 16:00:00,RLSRXX,Filled,Sell,-5.0,82.57,0.28899499999999995,,1538 -2020-10-02 16:00:00,MCCZID,Filled,Sell,-315.0,36.1,7.96005,,1539 -2020-10-02 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1540 -2020-10-02 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1541 -2020-10-05 16:00:00,COMNHQ,Filled,Sell,-29.0,13.1,0.26593,,1540 -2020-10-05 16:00:00,RLSRXX,Filled,Buy,5.0,82.55,0.288925,,1541 -2020-10-05 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1542 -2020-10-05 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1543 -2020-10-06 16:00:00,COMNHQ,Filled,Sell,-8.0,13.29,0.07442399999999999,,1542 -2020-10-06 16:00:00,RLSRXX,Filled,Sell,-7.0,86.19,0.422331,,1543 -2020-10-06 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1544 -2020-10-06 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1545 -2020-10-06 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1546 -2020-10-06 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1547 -2020-10-07 16:00:00,COMNHQ,Filled,Sell,-90.0,12.97,0.81711,,1544 -2020-10-07 16:00:00,RLSRXX,Filled,Sell,-17.0,86.11,1.024709,,1545 -2020-10-07 16:00:00,LUZLYG,Filled,Buy,407.0,24.61,7.011389,,1546 -2020-10-07 16:00:00,MCCZID,Filled,Buy,274.0,36.22,6.9469959999999995,,1547 -2020-10-07 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1548 -2020-10-07 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1549 -2020-10-07 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1550 -2020-10-07 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1551 -2020-10-07 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1552 -2020-10-07 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1553 -2020-10-07 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1554 -2020-10-08 16:00:00,COMNHQ,Filled,Sell,-32.0,13.34,0.29881599999999997,,1548 -2020-10-08 16:00:00,RLSRXX,Filled,Sell,-3.0,88.01,0.184821,,1549 -2020-10-08 16:00:00,LUZLYG,Filled,Sell,-407.0,24.95,7.108255,,1550 -2020-10-08 16:00:00,OCHCAU,Filled,Buy,252.0,39.8,7.020719999999999,,1551 -2020-10-08 16:00:00,FFNDVM,Filled,Buy,1375.0,7.25,6.978125,,1552 -2020-10-08 16:00:00,MCCZID,Filled,Sell,-274.0,36.6,7.01988,,1553 -2020-10-08 16:00:00,RUKNMV,Filled,Buy,400.0,24.9,6.9719999999999995,,1554 -2020-10-08 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1555 -2020-10-08 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1556 -2020-10-08 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1557 -2020-10-08 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1558 -2020-10-09 16:00:00,COMNHQ,Filled,Sell,-5.0,13.24,0.04634,,1555 -2020-10-09 16:00:00,OCHCAU,Filled,Sell,-252.0,40.12,7.0771679999999995,,1556 -2020-10-09 16:00:00,FFNDVM,Filled,Sell,-1375.0,7.36,7.084,,1557 -2020-10-09 16:00:00,RUKNMV,Filled,Sell,-400.0,25.42,7.1176,,1558 -2020-10-09 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1559 -2020-10-09 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1560 -2020-10-09 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,1561 -2020-10-09 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1562 -2020-10-12 16:00:00,COMNHQ,Filled,Sell,-2.0,13.12,0.018368,,1559 -2020-10-12 16:00:00,RLSRXX,Filled,Buy,5.0,83.69,0.292915,,1560 -2020-10-12 16:00:00,XUEHVZ,Filled,Buy,3.0,3279.36,6.8866559999999994,,1561 -2020-10-12 16:00:00,BPSPGV,Filled,Buy,46.0,218.67,7.041174,,1562 -2020-10-12 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1563 -2020-10-12 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1564 -2020-10-12 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1565 -2020-10-12 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,1566 -2020-10-12 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,1567 -2020-10-12 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1568 -2020-10-12 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1569 -2020-10-13 16:00:00,COMNHQ,Filled,Buy,144.0,12.52,1.2620159999999998,,1563 -2020-10-13 16:00:00,RLSRXX,Filled,Buy,18.0,85.05,1.07163,,1564 -2020-10-13 16:00:00,OCHCAU,Filled,Buy,287.0,40.53,8.142477,,1565 -2020-10-13 16:00:00,CEMOJE,Filled,Buy,7.0,1569.27,7.689423,,1566 -2020-10-13 16:00:00,GTKILW,Filled,Buy,7.0,1575.35,7.719214999999999,,1567 -2020-10-13 16:00:00,ZIJVRO,Filled,Buy,215.0,54.27,8.167635,,1568 -2020-10-13 16:00:00,BPSPGV,Filled,Buy,6.0,222.47,0.934374,,1569 -2020-10-13 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1570 -2020-10-13 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1571 -2020-10-13 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,1572 -2020-10-13 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1573 -2020-10-13 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1574 -2020-10-13 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,1575 -2020-10-13 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,1576 -2020-10-13 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1577 -2020-10-13 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1578 -2020-10-14 16:00:00,COMNHQ,Filled,Buy,50.0,12.33,0.43155,,1570 -2020-10-14 16:00:00,RLSRXX,Filled,Sell,-2.0,85.86,0.120204,,1571 -2020-10-14 16:00:00,XUEHVZ,Filled,Sell,-3.0,3437.4,7.218540000000001,,1572 -2020-10-14 16:00:00,HECLON,Filled,Buy,265.0,43.6,8.0878,,1573 -2020-10-14 16:00:00,OCHCAU,Filled,Buy,3.0,39.85,0.08368500000000001,,1574 -2020-10-14 16:00:00,CEMOJE,Filled,Sell,-7.0,1580.02,7.742098,,1575 -2020-10-14 16:00:00,GTKILW,Filled,Sell,-7.0,1562.56,7.656544,,1576 -2020-10-14 16:00:00,ZIJVRO,Filled,Sell,-215.0,54.07,8.137535,,1577 -2020-10-14 16:00:00,BPSPGV,Filled,Sell,-52.0,222.96,8.115744,,1578 -2020-10-14 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1579 -2020-10-14 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1580 -2020-10-14 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,1581 -2020-10-14 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1582 -2020-10-14 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1583 -2020-10-15 16:00:00,COMNHQ,Filled,Sell,-11.0,12.22,0.094094,,1579 -2020-10-15 16:00:00,RLSRXX,Filled,Buy,2.0,83.48,0.116872,,1580 -2020-10-15 16:00:00,XUEHVZ,Filled,Buy,3.0,3339.1,7.01211,,1581 -2020-10-15 16:00:00,HECLON,Filled,Sell,-265.0,42.54,7.89117,,1582 -2020-10-15 16:00:00,BPSPGV,Filled,Buy,52.0,216.95,7.896979999999999,,1583 -2020-10-15 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1584 -2020-10-15 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1585 -2020-10-15 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,1586 -2020-10-15 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1587 -2020-10-15 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1588 -2020-10-15 16:00:00,HCDUCB,Submitted,Buy,0.0,0.0,0.0,,1589 -2020-10-16 16:00:00,COMNHQ,Filled,Buy,10.0,12.25,0.08574999999999999,,1584 -2020-10-16 16:00:00,RLSRXX,Filled,Buy,2.0,83.74,0.117236,,1585 -2020-10-16 16:00:00,XUEHVZ,Filled,Sell,-3.0,3330.58,6.994218,,1586 -2020-10-16 16:00:00,OCHCAU,Filled,Sell,-290.0,39.93,8.10579,,1587 -2020-10-16 16:00:00,BPSPGV,Filled,Sell,-52.0,220.42,8.023288,,1588 -2020-10-16 16:00:00,HCDUCB,Filled,Buy,222.0,52.19,8.110326,,1589 -2020-10-16 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1590 -2020-10-16 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1591 -2020-10-16 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1592 -2020-10-16 16:00:00,BGDRAI,Submitted,Buy,0.0,0.0,0.0,,1593 -2020-10-16 16:00:00,HCDUCB,Submitted,Sell,0.0,0.0,0.0,,1594 -2020-10-16 16:00:00,MCCZID,Submitted,Buy,0.0,0.0,0.0,,1595 -2020-10-19 16:00:00,COMNHQ,Filled,Sell,-157.0,12.64,1.389136,,1590 -2020-10-19 16:00:00,RLSRXX,Filled,Sell,-21.0,83.66,1.2298019999999998,,1591 -2020-10-19 16:00:00,OCHCAU,Filled,Buy,245.0,40.15,6.885725,,1592 -2020-10-19 16:00:00,BGDRAI,Filled,Buy,1349.0,7.39,6.978376999999999,,1593 -2020-10-19 16:00:00,HCDUCB,Filled,Sell,-222.0,51.97,8.076138,,1594 -2020-10-19 16:00:00,MCCZID,Filled,Buy,259.0,38.48,6.976424,,1595 -2020-10-19 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1596 -2020-10-19 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1597 -2020-10-19 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,1598 -2020-10-19 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1599 -2020-10-19 16:00:00,BGDRAI,Submitted,Sell,0.0,0.0,0.0,,1600 -2020-10-19 16:00:00,MCCZID,Submitted,Sell,0.0,0.0,0.0,,1601 -2020-10-20 16:00:00,COMNHQ,Filled,Sell,-6.0,12.75,0.05355,,1596 -2020-10-20 16:00:00,RLSRXX,Filled,Buy,1.0,82.17,0.057519,,1597 -2020-10-20 16:00:00,XUEHVZ,Filled,Buy,3.0,3195.54,6.710633999999999,,1598 -2020-10-20 16:00:00,OCHCAU,Filled,Buy,5.0,39.43,0.138005,,1599 -2020-10-20 16:00:00,BGDRAI,Filled,Sell,-1349.0,7.37,6.959491000000001,,1600 -2020-10-20 16:00:00,MCCZID,Filled,Sell,-259.0,37.79,6.851327,,1601 -2020-10-20 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1602 -2020-10-20 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1603 -2020-10-20 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,1604 -2020-10-20 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1605 -2020-10-21 16:00:00,COMNHQ,Filled,Sell,-15.0,12.65,0.132825,,1602 -2020-10-21 16:00:00,RLSRXX,Filled,Buy,1.0,81.78,0.057246,,1603 -2020-10-21 16:00:00,XUEHVZ,Filled,Sell,-3.0,3224.84,6.772164,,1604 -2020-10-21 16:00:00,OCHCAU,Filled,Sell,-250.0,39.31,6.87925,,1605 -2020-10-21 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1606 -2020-10-21 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1607 -2020-10-22 16:00:00,COMNHQ,Filled,Buy,3.0,12.62,0.026502,,1606 -2020-10-22 16:00:00,RLSRXX,Filled,Buy,4.0,79.61,0.222908,,1607 -2020-10-22 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1608 -2020-10-22 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1609 -2020-10-23 16:00:00,COMNHQ,Filled,Sell,-23.0,13.07,0.210427,,1608 -2020-10-23 16:00:00,RLSRXX,Filled,Sell,-124.0,80.86,7.018648,,1609 -2020-10-23 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1610 -2020-10-23 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1611 -2020-10-26 16:00:00,COMNHQ,Filled,Buy,32.0,12.4,0.27776,,1610 -2020-10-26 16:00:00,ZIJVRO,Filled,Buy,204.0,47.8,6.8258399999999995,,1611 -2020-10-26 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1612 -2020-10-26 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1613 -2020-10-26 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1614 -2020-10-27 16:00:00,COMNHQ,Filled,Buy,52.0,11.75,0.4277,,1612 -2020-10-27 16:00:00,ZIJVRO,Filled,Sell,-204.0,45.95,6.561660000000001,,1613 -2020-10-27 16:00:00,RUKNMV,Filled,Buy,432.0,22.55,6.81912,,1614 -2020-10-27 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1615 -2020-10-27 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1616 -2020-10-27 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1617 -2020-10-28 16:00:00,COMNHQ,Filled,Buy,184.0,10.94,1.409072,,1615 -2020-10-28 16:00:00,SMDIFE,Filled,Buy,97.0,114.89,7.801031,,1616 -2020-10-28 16:00:00,RUKNMV,Filled,Sell,-432.0,21.28,6.435072000000001,,1617 -2020-10-28 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1618 -2020-10-28 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1619 -2020-10-29 16:00:00,COMNHQ,Filled,Buy,775.0,10.98,5.95665,,1618 -2020-10-29 16:00:00,SMDIFE,Filled,Buy,79.0,112.42,6.216826,,1619 -2020-10-29 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1620 -2020-10-29 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1621 -2020-10-29 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1622 -2020-10-30 16:00:00,COMNHQ,Filled,Sell,-32.0,11.07,0.247968,,1620 -2020-10-30 16:00:00,SMDIFE,Filled,Sell,-6.0,111.0,0.4662,,1621 -2020-10-30 16:00:00,YIVYGH,Filled,Buy,456.0,42.3,13.50216,,1622 -2020-10-30 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1623 -2020-10-30 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1624 -2020-10-30 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1625 -2020-10-30 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1626 -2020-10-30 16:00:00,LMRIBF,Submitted,Buy,0.0,0.0,0.0,,1627 -2020-11-02 16:00:00,COMNHQ,Filled,Sell,-20.0,11.34,0.15876,,1623 -2020-11-02 16:00:00,SMDIFE,Filled,Buy,10.0,109.24,0.7646799999999999,,1624 -2020-11-02 16:00:00,RLSRXX,Filled,Buy,260.0,75.66,13.77012,,1625 -2020-11-02 16:00:00,YIVYGH,Filled,Buy,8.0,42.73,0.23928799999999997,,1626 -2020-11-02 16:00:00,LMRIBF,Filled,Buy,74.0,264.92,13.722856000000002,,1627 -2020-11-02 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1628 -2020-11-02 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1629 -2020-11-02 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1630 -2020-11-02 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1631 -2020-11-02 16:00:00,LMRIBF,Submitted,Sell,0.0,0.0,0.0,,1632 -2020-11-03 16:00:00,COMNHQ,Filled,Sell,-327.0,11.34,2.595726,,1628 -2020-11-03 16:00:00,SMDIFE,Filled,Sell,-35.0,109.71,2.6878949999999997,,1629 -2020-11-03 16:00:00,RLSRXX,Filled,Sell,-260.0,74.88,13.62816,,1630 -2020-11-03 16:00:00,YIVYGH,Filled,Sell,-464.0,41.93,13.618864,,1631 -2020-11-03 16:00:00,LMRIBF,Filled,Sell,-74.0,263.18,13.632724,,1632 -2020-11-03 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1633 -2020-11-03 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1634 -2020-11-04 16:00:00,COMNHQ,Filled,Sell,-1412.0,11.21,11.079964,,1633 -2020-11-04 16:00:00,SMDIFE,Filled,Sell,-2.0,114.17,0.159838,,1634 -2020-11-04 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1635 -2020-11-04 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1636 -2020-11-04 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1637 -2020-11-05 16:00:00,COMNHQ,Filled,Buy,1437.0,11.11,11.175549,,1635 -2020-11-05 16:00:00,SMDIFE,Filled,Sell,-6.0,118.01,0.495642,,1636 -2020-11-05 16:00:00,BPSPGV,Filled,Buy,73.0,222.0,11.3442,,1637 -2020-11-05 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1638 -2020-11-05 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1639 -2020-11-05 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1640 -2020-11-06 16:00:00,COMNHQ,Filled,Sell,-71.0,11.46,0.569562,,1638 -2020-11-06 16:00:00,SMDIFE,Filled,Sell,-4.0,118.24,0.331072,,1639 -2020-11-06 16:00:00,BPSPGV,Filled,Sell,-3.0,222.13,0.466473,,1640 -2020-11-06 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1641 -2020-11-06 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1642 -2020-11-06 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1643 -2020-11-09 16:00:00,COMNHQ,Filled,Buy,16.0,14.36,0.160832,,1641 -2020-11-09 16:00:00,BPSPGV,Filled,Sell,-70.0,224.04,10.97796,,1642 -2020-11-09 16:00:00,RUKNMV,Filled,Buy,723.0,24.27,12.283047,,1643 -2020-11-09 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1644 -2020-11-09 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1645 -2020-11-09 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1646 -2020-11-09 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1647 -2020-11-09 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1648 -2020-11-10 16:00:00,COMNHQ,Filled,Sell,-180.0,12.87,1.6216199999999998,,1644 -2020-11-10 16:00:00,SMDIFE,Filled,Buy,3.0,115.54,0.242634,,1645 -2020-11-10 16:00:00,LUZLYG,Filled,Buy,571.0,27.56,11.015731999999998,,1646 -2020-11-10 16:00:00,HECLON,Filled,Buy,333.0,48.5,11.30535,,1647 -2020-11-10 16:00:00,RUKNMV,Filled,Sell,-68.0,24.26,1.154776,,1648 -2020-11-10 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1649 -2020-11-10 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1650 -2020-11-10 16:00:00,RLSRXX,Submitted,Buy,0.0,0.0,0.0,,1651 -2020-11-10 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1652 -2020-11-10 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1653 -2020-11-10 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1654 -2020-11-10 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1655 -2020-11-10 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1656 -2020-11-11 16:00:00,COMNHQ,Filled,Sell,-408.0,12.38,3.535728,,1649 -2020-11-11 16:00:00,SMDIFE,Filled,Sell,-52.0,117.15,4.26426,,1650 -2020-11-11 16:00:00,RLSRXX,Filled,Buy,126.0,79.41,7.003962,,1651 -2020-11-11 16:00:00,LUZLYG,Filled,Sell,-571.0,27.72,11.079684,,1652 -2020-11-11 16:00:00,HECLON,Filled,Sell,-333.0,47.82,11.146842,,1653 -2020-11-11 16:00:00,ZIJVRO,Filled,Buy,216.0,45.98,6.952175999999999,,1654 -2020-11-11 16:00:00,BPSPGV,Filled,Buy,46.0,212.54,6.843788,,1655 -2020-11-11 16:00:00,RUKNMV,Filled,Sell,-655.0,24.2,11.0957,,1656 -2020-11-11 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1657 -2020-11-11 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1658 -2020-11-11 16:00:00,RLSRXX,Submitted,Sell,0.0,0.0,0.0,,1659 -2020-11-11 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1660 -2020-11-11 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1661 -2020-11-12 16:00:00,COMNHQ,Filled,Buy,22.0,11.97,0.18433800000000003,,1657 -2020-11-12 16:00:00,SMDIFE,Filled,Sell,-2.0,119.62,0.167468,,1658 -2020-11-12 16:00:00,RLSRXX,Filled,Sell,-126.0,81.3,7.17066,,1659 -2020-11-12 16:00:00,ZIJVRO,Filled,Sell,-4.0,46.13,0.129164,,1660 -2020-11-12 16:00:00,BPSPGV,Filled,Sell,-1.0,217.14,0.151998,,1661 -2020-11-12 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1662 -2020-11-12 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1663 -2020-11-12 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1664 -2020-11-12 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1665 -2020-11-13 16:00:00,COMNHQ,Filled,Sell,-816.0,11.91,6.802992,,1662 -2020-11-13 16:00:00,SMDIFE,Filled,Buy,1.0,119.43,0.08360100000000001,,1663 -2020-11-13 16:00:00,ZIJVRO,Filled,Buy,8.0,44.99,0.251944,,1664 -2020-11-13 16:00:00,BPSPGV,Filled,Sell,-45.0,216.36,6.815340000000001,,1665 -2020-11-13 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1666 -2020-11-13 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1667 -2020-11-13 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1668 -2020-11-13 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1669 -2020-11-16 16:00:00,COMNHQ,Filled,Buy,803.0,12.91,7.256710999999999,,1666 -2020-11-16 16:00:00,SMDIFE,Filled,Sell,-1.0,118.88,0.083216,,1667 -2020-11-16 16:00:00,OCHCAU,Filled,Buy,237.0,41.74,6.924666,,1668 -2020-11-16 16:00:00,ZIJVRO,Filled,Sell,-4.0,46.01,0.128828,,1669 -2020-11-16 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1670 -2020-11-16 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1671 -2020-11-16 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1672 -2020-11-16 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1673 -2020-11-16 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1674 -2020-11-16 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1675 -2020-11-17 16:00:00,COMNHQ,Filled,Sell,-803.0,12.46,7.003766000000001,,1670 -2020-11-17 16:00:00,SMDIFE,Filled,Sell,-1.0,119.46,0.08362199999999999,,1671 -2020-11-17 16:00:00,OCHCAU,Filled,Sell,-6.0,41.92,0.176064,,1672 -2020-11-17 16:00:00,ZIJVRO,Filled,Sell,-4.0,45.75,0.1281,,1673 -2020-11-17 16:00:00,BPSPGV,Filled,Buy,45.0,216.1,6.80715,,1674 -2020-11-17 16:00:00,RUKNMV,Filled,Buy,395.0,24.62,6.80743,,1675 -2020-11-17 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1676 -2020-11-17 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1677 -2020-11-17 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1678 -2020-11-17 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1679 -2020-11-17 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1680 -2020-11-18 16:00:00,SMDIFE,Filled,Buy,2.0,118.61,0.166054,,1676 -2020-11-18 16:00:00,OCHCAU,Filled,Sell,-231.0,41.88,6.771996000000001,,1677 -2020-11-18 16:00:00,ZIJVRO,Filled,Buy,6.0,45.54,0.191268,,1678 -2020-11-18 16:00:00,BPSPGV,Filled,Buy,1.0,213.51,0.14945699999999998,,1679 -2020-11-18 16:00:00,RUKNMV,Filled,Sell,-395.0,25.16,6.956740000000001,,1680 -2020-11-18 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1681 -2020-11-19 16:00:00,ISIJLH,Filled,Buy,343.0,28.49,6.840449,,1681 -2020-11-19 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1682 -2020-11-19 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1683 -2020-11-19 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1684 -2020-11-19 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1685 -2020-11-19 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1686 -2020-11-20 16:00:00,COMNHQ,Filled,Buy,768.0,12.82,6.892032,,1682 -2020-11-20 16:00:00,SMDIFE,Filled,Sell,-1.0,118.63,0.08304099999999999,,1683 -2020-11-20 16:00:00,ZIJVRO,Filled,Sell,-3.0,45.65,0.095865,,1684 -2020-11-20 16:00:00,ISIJLH,Filled,Buy,4.0,28.21,0.078988,,1685 -2020-11-20 16:00:00,RUKNMV,Filled,Buy,375.0,26.04,6.8355,,1686 -2020-11-20 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1687 -2020-11-20 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1688 -2020-11-20 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,1689 -2020-11-20 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,1690 -2020-11-20 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1691 -2020-11-20 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1692 -2020-11-20 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1693 -2020-11-23 16:00:00,COMNHQ,Filled,Buy,15.0,12.75,0.133875,,1687 -2020-11-23 16:00:00,SMDIFE,Filled,Buy,1.0,117.13,0.081991,,1688 -2020-11-23 16:00:00,CEMOJE,Filled,Buy,5.0,1737.48,6.08118,,1689 -2020-11-23 16:00:00,GTKILW,Filled,Buy,5.0,1748.97,6.121395000000001,,1690 -2020-11-23 16:00:00,ZIJVRO,Filled,Buy,1.0,45.48,0.031835999999999996,,1691 -2020-11-23 16:00:00,ISIJLH,Filled,Sell,-1.0,28.39,0.019873,,1692 -2020-11-23 16:00:00,RUKNMV,Filled,Sell,-375.0,25.96,6.8145,,1693 -2020-11-23 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1694 -2020-11-23 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1695 -2020-11-23 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1696 -2020-11-23 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,1697 -2020-11-23 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,1698 -2020-11-23 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1699 -2020-11-23 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1700 -2020-11-23 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1701 -2020-11-24 16:00:00,COMNHQ,Filled,Sell,-59.0,14.38,0.593894,,1694 -2020-11-24 16:00:00,SMDIFE,Filled,Buy,3.0,113.89,0.239169,,1695 -2020-11-24 16:00:00,LUZLYG,Filled,Buy,358.0,27.92,6.996752000000001,,1696 -2020-11-24 16:00:00,CEMOJE,Filled,Sell,-5.0,1732.68,6.06438,,1697 -2020-11-24 16:00:00,GTKILW,Filled,Sell,-5.0,1736.4,6.0774,,1698 -2020-11-24 16:00:00,ZIJVRO,Filled,Sell,-3.0,46.27,0.097167,,1699 -2020-11-24 16:00:00,BPSPGV,Filled,Sell,-46.0,209.5,6.7459,,1700 -2020-11-24 16:00:00,ISIJLH,Filled,Sell,-3.0,28.93,0.060752999999999995,,1701 -2020-11-24 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1702 -2020-11-24 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1703 -2020-11-24 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1704 -2020-11-24 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1705 -2020-11-24 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1706 -2020-11-24 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1707 -2020-11-24 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1708 -2020-11-24 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1709 -2020-11-25 16:00:00,COMNHQ,Filled,Buy,347.0,14.78,3.5900619999999996,,1702 -2020-11-25 16:00:00,SMDIFE,Filled,Buy,51.0,115.62,4.127634,,1703 -2020-11-25 16:00:00,LUZLYG,Filled,Buy,190.0,28.71,3.81843,,1704 -2020-11-25 16:00:00,HECLON,Filled,Buy,278.0,56.13,10.922898,,1705 -2020-11-25 16:00:00,ZIJVRO,Filled,Buy,124.0,47.02,4.081336,,1706 -2020-11-25 16:00:00,BPSPGV,Filled,Buy,74.0,215.29,11.152022,,1707 -2020-11-25 16:00:00,ISIJLH,Filled,Buy,200.0,29.29,4.1006,,1708 -2020-11-25 16:00:00,RUKNMV,Filled,Buy,555.0,28.24,10.97124,,1709 -2020-11-25 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1710 -2020-11-25 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1711 -2020-11-25 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,1712 -2020-11-25 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1713 -2020-11-25 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1714 -2020-11-25 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1715 -2020-11-25 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1716 -2020-11-27 13:00:00,COMNHQ,Filled,Sell,-1071.0,15.13,11.342961,,1710 -2020-11-27 13:00:00,SMDIFE,Filled,Sell,-1.0,116.53,0.081571,,1711 -2020-11-27 13:00:00,XUEHVZ,Filled,Buy,4.0,3190.96,8.934688,,1712 -2020-11-27 13:00:00,LUZLYG,Filled,Sell,-548.0,28.97,11.112892,,1713 -2020-11-27 13:00:00,HECLON,Filled,Sell,-278.0,57.0,11.0922,,1714 -2020-11-27 13:00:00,ISIJLH,Filled,Buy,5.0,29.05,0.101675,,1715 -2020-11-27 13:00:00,RUKNMV,Filled,Sell,-555.0,28.56,11.09556,,1716 -2020-11-27 13:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,1717 -2020-11-27 13:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1718 -2020-11-27 13:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1719 -2020-11-27 13:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1720 -2020-11-30 16:00:00,XUEHVZ,Filled,Sell,-4.0,3205.78,8.976184,,1717 -2020-11-30 16:00:00,ZIJVRO,Filled,Sell,-2.0,47.44,0.066416,,1718 -2020-11-30 16:00:00,BPSPGV,Filled,Sell,-1.0,214.11,0.149877,,1719 -2020-11-30 16:00:00,ISIJLH,Filled,Sell,-548.0,28.85,11.06686,,1720 -2020-11-30 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1721 -2020-11-30 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,1722 -2020-11-30 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,1723 -2020-11-30 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1724 -2020-11-30 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1725 -2020-11-30 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1726 -2020-12-01 16:00:00,SMDIFE,Filled,Sell,-30.0,121.04,2.54184,,1721 -2020-12-01 16:00:00,CEMOJE,Filled,Buy,7.0,1765.61,8.651489,,1722 -2020-12-01 16:00:00,GTKILW,Filled,Buy,7.0,1750.15,8.575735,,1723 -2020-12-01 16:00:00,ZIJVRO,Filled,Sell,-335.0,48.78,11.43891,,1724 -2020-12-01 16:00:00,BPSPGV,Filled,Sell,-14.0,214.6,2.10308,,1725 -2020-12-01 16:00:00,ISIJLH,Filled,Buy,439.0,28.83,8.859459,,1726 -2020-12-01 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1727 -2020-12-01 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1728 -2020-12-01 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1729 -2020-12-01 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1730 -2020-12-01 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1731 -2020-12-02 16:00:00,SMDIFE,Filled,Sell,-3.0,122.09,0.256389,,1727 -2020-12-02 16:00:00,YIVYGH,Filled,Buy,248.0,50.93,8.841448,,1728 -2020-12-02 16:00:00,ZIJVRO,Filled,Buy,255.0,49.18,8.77863,,1729 -2020-12-02 16:00:00,BPSPGV,Filled,Sell,-1.0,215.0,0.1505,,1730 -2020-12-02 16:00:00,ISIJLH,Filled,Sell,-1.0,28.84,0.020188,,1731 -2020-12-02 16:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1732 -2020-12-02 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1733 -2020-12-02 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1734 -2020-12-02 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,1735 -2020-12-02 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,1736 -2020-12-02 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1737 -2020-12-02 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1738 -2020-12-02 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1739 -2020-12-03 16:00:00,COMNHQ,Filled,Buy,992.0,15.19,10.547936,,1732 -2020-12-03 16:00:00,SMDIFE,Filled,Buy,16.0,123.5,1.3832,,1733 -2020-12-03 16:00:00,YIVYGH,Filled,Sell,-248.0,50.82,8.822352,,1734 -2020-12-03 16:00:00,CEMOJE,Filled,Sell,-7.0,1826.6,8.950339999999999,,1735 -2020-12-03 16:00:00,GTKILW,Filled,Sell,-7.0,1827.41,8.954309,,1736 -2020-12-03 16:00:00,ZIJVRO,Filled,Sell,-255.0,49.92,8.91072,,1737 -2020-12-03 16:00:00,BPSPGV,Filled,Sell,-58.0,214.6,8.71276,,1738 -2020-12-03 16:00:00,ISIJLH,Filled,Buy,68.0,29.02,1.381352,,1739 -2020-12-03 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1740 -2020-12-03 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1741 -2020-12-03 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1742 -2020-12-04 16:00:00,COMNHQ,Filled,Sell,-992.0,16.4,11.38816,,1740 -2020-12-04 16:00:00,SMDIFE,Filled,Buy,2.0,122.54,0.171556,,1741 -2020-12-04 16:00:00,ISIJLH,Filled,Sell,-506.0,29.35,10.39577,,1742 -2020-12-04 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1743 -2020-12-04 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1744 -2020-12-07 16:00:00,SMDIFE,Filled,Sell,-1.0,122.35,0.085645,,1743 -2020-12-07 16:00:00,BPSPGV,Filled,Buy,68.0,214.39,10.204964,,1744 -2020-12-07 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1745 -2020-12-08 16:00:00,SMDIFE,Filled,Sell,-1.0,124.35,0.087045,,1745 -2020-12-08 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1746 -2020-12-08 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1747 -2020-12-08 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1748 -2020-12-09 16:00:00,SMDIFE,Filled,Sell,-40.0,124.45,3.4846,,1746 -2020-12-09 16:00:00,BPSPGV,Filled,Sell,-23.0,215.2,3.46472,,1747 -2020-12-09 16:00:00,ISIJLH,Filled,Buy,321.0,31.03,6.972441000000001,,1748 -2020-12-09 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1749 -2020-12-09 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,1750 -2020-12-09 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,1751 -2020-12-09 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1752 -2020-12-09 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1753 -2020-12-10 16:00:00,SMDIFE,Filled,Buy,2.0,120.53,0.168742,,1749 -2020-12-10 16:00:00,CEMOJE,Filled,Buy,5.0,1787.2,6.2552,,1750 -2020-12-10 16:00:00,GTKILW,Filled,Buy,5.0,1780.18,6.23063,,1751 -2020-12-10 16:00:00,BPSPGV,Filled,Buy,1.0,211.8,0.14826,,1752 -2020-12-10 16:00:00,ISIJLH,Filled,Sell,-7.0,31.05,0.152145,,1753 -2020-12-10 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1754 -2020-12-10 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,1755 -2020-12-10 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,1756 -2020-12-10 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1757 -2020-12-10 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1758 -2020-12-11 16:00:00,SMDIFE,Filled,Sell,-1.0,122.41,0.085687,,1754 -2020-12-11 16:00:00,CEMOJE,Filled,Sell,-5.0,1766.6,6.1831,,1755 -2020-12-11 16:00:00,GTKILW,Filled,Sell,-5.0,1766.07,6.1812450000000005,,1756 -2020-12-11 16:00:00,BPSPGV,Filled,Sell,-46.0,210.2,6.768439999999999,,1757 -2020-12-11 16:00:00,ISIJLH,Filled,Buy,8.0,30.47,0.17063199999999998,,1758 -2020-12-11 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,1759 -2020-12-11 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1760 -2020-12-11 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1761 -2020-12-14 16:00:00,CEMOJE,Filled,Buy,5.0,1779.66,6.228810000000001,,1759 -2020-12-14 16:00:00,BPSPGV,Filled,Buy,46.0,212.91,6.855702,,1760 -2020-12-14 16:00:00,ISIJLH,Filled,Sell,-322.0,31.2,7.03248,,1761 -2020-12-14 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1762 -2020-12-14 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,1763 -2020-12-14 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,1764 -2020-12-14 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1765 -2020-12-15 16:00:00,SMDIFE,Filled,Buy,1.0,124.32,0.08702399999999999,,1762 -2020-12-15 16:00:00,CEMOJE,Filled,Sell,-5.0,1755.72,6.145020000000001,,1763 -2020-12-15 16:00:00,GTKILW,Filled,Buy,5.0,1752.23,6.132804999999999,,1764 -2020-12-15 16:00:00,BPSPGV,Filled,Sell,-46.0,215.17,6.928474,,1765 -2020-12-15 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1766 -2020-12-15 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1767 -2020-12-15 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,1768 -2020-12-16 16:00:00,SMDIFE,Filled,Sell,-4.0,127.45,0.35686,,1766 -2020-12-16 16:00:00,OCHCAU,Filled,Buy,221.0,44.71,6.916637,,1767 -2020-12-16 16:00:00,GTKILW,Filled,Sell,-5.0,1770.0,6.195,,1768 -2020-12-16 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1769 -2020-12-16 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,1770 -2020-12-16 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1771 -2020-12-16 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,1772 -2020-12-16 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1773 -2020-12-17 16:00:00,SMDIFE,Filled,Buy,1.0,128.98,0.090286,,1769 -2020-12-17 16:00:00,XUEHVZ,Filled,Buy,3.0,3234.68,6.792827999999999,,1770 -2020-12-17 16:00:00,OCHCAU,Filled,Sell,-221.0,44.93,6.950671000000001,,1771 -2020-12-17 16:00:00,CEMOJE,Filled,Buy,5.0,1771.95,6.201825,,1772 -2020-12-17 16:00:00,BPSPGV,Filled,Buy,45.0,219.86,6.925590000000001,,1773 -2020-12-17 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1774 -2020-12-17 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,1775 -2020-12-17 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,1776 -2020-12-17 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1777 -2020-12-17 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1778 -2020-12-18 16:00:00,SMDIFE,Filled,Sell,-2.0,129.0,0.1806,,1774 -2020-12-18 16:00:00,XUEHVZ,Filled,Sell,-3.0,3231.35,6.785835,,1775 -2020-12-18 16:00:00,GTKILW,Filled,Buy,5.0,1737.88,6.082580000000001,,1776 -2020-12-18 16:00:00,BPSPGV,Filled,Sell,-45.0,218.92,6.89598,,1777 -2020-12-18 16:00:00,ISIJLH,Filled,Buy,334.0,29.54,6.906452000000001,,1778 -2020-12-18 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1779 -2020-12-18 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1780 -2020-12-18 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1781 -2020-12-18 16:00:00,FFNDVM,Submitted,Buy,0.0,0.0,0.0,,1782 -2020-12-18 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1783 -2020-12-18 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1784 -2020-12-18 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1785 -2020-12-21 16:00:00,SMDIFE,Filled,Buy,2.0,125.1,0.17514,,1779 -2020-12-21 16:00:00,YIVYGH,Filled,Buy,194.0,50.48,6.8551839999999995,,1780 -2020-12-21 16:00:00,OCHCAU,Filled,Buy,217.0,44.47,6.754993,,1781 -2020-12-21 16:00:00,FFNDVM,Filled,Buy,1104.0,8.89,6.870192000000001,,1782 -2020-12-21 16:00:00,ZIJVRO,Filled,Buy,208.0,46.26,6.735456,,1783 -2020-12-21 16:00:00,BPSPGV,Filled,Buy,45.0,217.55,6.852825,,1784 -2020-12-21 16:00:00,ISIJLH,Filled,Sell,-334.0,29.0,6.7802,,1785 -2020-12-21 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1786 -2020-12-21 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1787 -2020-12-21 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1788 -2020-12-21 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1789 -2020-12-21 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1790 -2020-12-21 16:00:00,FFNDVM,Submitted,Sell,0.0,0.0,0.0,,1791 -2020-12-21 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1792 -2020-12-21 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1793 -2020-12-21 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1794 -2020-12-21 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1795 -2020-12-22 16:00:00,SMDIFE,Filled,Sell,-1.0,131.61,0.092127,,1786 -2020-12-22 16:00:00,LUZLYG,Filled,Buy,332.0,29.75,6.9139,,1787 -2020-12-22 16:00:00,HECLON,Filled,Buy,161.0,61.0,6.8747,,1788 -2020-12-22 16:00:00,YIVYGH,Filled,Buy,2.0,50.02,0.070028,,1789 -2020-12-22 16:00:00,OCHCAU,Filled,Sell,-217.0,44.48,6.756512,,1790 -2020-12-22 16:00:00,FFNDVM,Filled,Sell,-1104.0,8.98,6.939744,,1791 -2020-12-22 16:00:00,ZIJVRO,Filled,Buy,5.0,46.27,0.161945,,1792 -2020-12-22 16:00:00,BPSPGV,Filled,Sell,-1.0,222.57,0.155799,,1793 -2020-12-22 16:00:00,ISIJLH,Filled,Buy,341.0,29.0,6.9223,,1794 -2020-12-22 16:00:00,RUKNMV,Filled,Buy,334.0,29.6,6.9204799999999995,,1795 -2020-12-22 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1796 -2020-12-22 16:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1797 -2020-12-22 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1798 -2020-12-22 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1799 -2020-12-22 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,1800 -2020-12-22 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,1801 -2020-12-22 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1802 -2020-12-22 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1803 -2020-12-22 16:00:00,ISIJLH,Submitted,Buy,0.0,0.0,0.0,,1804 -2020-12-22 16:00:00,BPFUQM,Submitted,Buy,0.0,0.0,0.0,,1805 -2020-12-22 16:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1806 -2020-12-23 16:00:00,SMDIFE,Filled,Buy,34.0,132.17,3.1456459999999997,,1796 -2020-12-23 16:00:00,LUZLYG,Filled,Sell,-332.0,29.39,6.830235999999999,,1797 -2020-12-23 16:00:00,HECLON,Filled,Buy,87.0,60.0,3.654,,1798 -2020-12-23 16:00:00,YIVYGH,Filled,Sell,-196.0,50.15,6.880579999999999,,1799 -2020-12-23 16:00:00,CEMOJE,Filled,Sell,-5.0,1724.59,6.036064999999999,,1800 -2020-12-23 16:00:00,GTKILW,Filled,Sell,-5.0,1716.13,6.006455000000001,,1801 -2020-12-23 16:00:00,ZIJVRO,Filled,Sell,-213.0,46.21,6.889911,,1802 -2020-12-23 16:00:00,BPSPGV,Filled,Sell,-44.0,223.25,6.8761,,1803 -2020-12-23 16:00:00,ISIJLH,Filled,Buy,178.0,28.5,3.5511,,1804 -2020-12-23 16:00:00,BPFUQM,Filled,Buy,23.0,632.42,10.181962,,1805 -2020-12-23 16:00:00,RUKNMV,Filled,Buy,175.0,29.32,3.5917,,1806 -2020-12-23 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1807 -2020-12-23 16:00:00,LUZLYG,Submitted,Buy,0.0,0.0,0.0,,1808 -2020-12-23 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1809 -2020-12-23 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1810 -2020-12-23 16:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1811 -2020-12-23 16:00:00,BPFUQM,Submitted,Sell,0.0,0.0,0.0,,1812 -2020-12-23 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1813 -2020-12-24 13:00:00,SMDIFE,Filled,Buy,1.0,131.41,0.091987,,1807 -2020-12-24 13:00:00,LUZLYG,Filled,Buy,491.0,30.25,10.396925,,1808 -2020-12-24 13:00:00,HECLON,Filled,Sell,-248.0,60.87,10.567032,,1809 -2020-12-24 13:00:00,BPSPGV,Filled,Buy,66.0,221.4,10.22868,,1810 -2020-12-24 13:00:00,ISIJLH,Filled,Sell,-6.0,28.73,0.120666,,1811 -2020-12-24 13:00:00,BPFUQM,Filled,Sell,-1.0,643.01,0.450107,,1812 -2020-12-24 13:00:00,RUKNMV,Filled,Sell,-23.0,30.35,0.488635,,1813 -2020-12-24 13:00:00,COMNHQ,Submitted,Buy,0.0,0.0,0.0,,1814 -2020-12-24 13:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1815 -2020-12-24 13:00:00,LUZLYG,Submitted,Sell,0.0,0.0,0.0,,1816 -2020-12-24 13:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1817 -2020-12-24 13:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,1818 -2020-12-24 13:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,1819 -2020-12-24 13:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1820 -2020-12-24 13:00:00,ISIJLH,Submitted,Sell,0.0,0.0,0.0,,1821 -2020-12-24 13:00:00,RUKNMV,Submitted,Buy,0.0,0.0,0.0,,1822 -2020-12-28 16:00:00,COMNHQ,Filled,Buy,943.0,16.0,10.5616,,1814 -2020-12-28 16:00:00,SMDIFE,Filled,Sell,-1.0,134.0,0.0938,,1815 -2020-12-28 16:00:00,LUZLYG,Filled,Sell,-491.0,30.24,10.393487999999998,,1816 -2020-12-28 16:00:00,YIVYGH,Filled,Buy,293.0,50.78,10.414978,,1817 -2020-12-28 16:00:00,CEMOJE,Filled,Buy,8.0,1737.17,9.728152,,1818 -2020-12-28 16:00:00,GTKILW,Filled,Buy,8.0,1742.04,9.755424,,1819 -2020-12-28 16:00:00,BPSPGV,Filled,Sell,-66.0,224.44,10.369128,,1820 -2020-12-28 16:00:00,ISIJLH,Filled,Sell,-513.0,28.9,10.37799,,1821 -2020-12-28 16:00:00,RUKNMV,Filled,Buy,9.0,30.05,0.189315,,1822 -2020-12-28 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1823 -2020-12-28 16:00:00,SMDIFE,Submitted,Sell,0.0,0.0,0.0,,1824 -2020-12-28 16:00:00,XUEHVZ,Submitted,Buy,0.0,0.0,0.0,,1825 -2020-12-28 16:00:00,HECLON,Submitted,Buy,0.0,0.0,0.0,,1826 -2020-12-28 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1827 -2020-12-28 16:00:00,OCHCAU,Submitted,Buy,0.0,0.0,0.0,,1828 -2020-12-28 16:00:00,CEMOJE,Submitted,Sell,0.0,0.0,0.0,,1829 -2020-12-28 16:00:00,GTKILW,Submitted,Sell,0.0,0.0,0.0,,1830 -2020-12-28 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1831 -2020-12-28 16:00:00,BPFUQM,Submitted,Sell,0.0,0.0,0.0,,1832 -2020-12-28 16:00:00,RUKNMV,Submitted,Sell,0.0,0.0,0.0,,1833 -2020-12-29 16:00:00,COMNHQ,Filled,Sell,-250.0,16.32,2.856,,1823 -2020-12-29 16:00:00,SMDIFE,Filled,Sell,-30.0,138.05,2.89905,,1824 -2020-12-29 16:00:00,XUEHVZ,Filled,Buy,3.0,3293.73,6.9168330000000005,,1825 -2020-12-29 16:00:00,HECLON,Filled,Buy,182.0,61.1,7.784140000000001,,1826 -2020-12-29 16:00:00,YIVYGH,Filled,Sell,-293.0,51.16,10.492916,,1827 -2020-12-29 16:00:00,OCHCAU,Filled,Buy,248.0,44.99,7.810264,,1828 -2020-12-29 16:00:00,CEMOJE,Filled,Sell,-2.0,1775.96,2.486344,,1829 -2020-12-29 16:00:00,GTKILW,Filled,Sell,-2.0,1782.27,2.495178,,1830 -2020-12-29 16:00:00,BPSPGV,Filled,Buy,49.0,226.06,7.753858,,1831 -2020-12-29 16:00:00,BPFUQM,Filled,Sell,-6.0,660.86,2.7756119999999997,,1832 -2020-12-29 16:00:00,RUKNMV,Filled,Sell,-495.0,30.1,10.42965,,1833 -2020-12-29 16:00:00,COMNHQ,Submitted,Sell,0.0,0.0,0.0,,1834 -2020-12-29 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1835 -2020-12-29 16:00:00,XUEHVZ,Submitted,Sell,0.0,0.0,0.0,,1836 -2020-12-29 16:00:00,HECLON,Submitted,Sell,0.0,0.0,0.0,,1837 -2020-12-29 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1838 -2020-12-29 16:00:00,OCHCAU,Submitted,Sell,0.0,0.0,0.0,,1839 -2020-12-29 16:00:00,ZIJVRO,Submitted,Buy,0.0,0.0,0.0,,1840 -2020-12-29 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1841 -2020-12-30 16:00:00,COMNHQ,Filled,Sell,-693.0,15.86,7.693686,,1834 -2020-12-30 16:00:00,SMDIFE,Filled,Buy,1.0,135.54,0.094878,,1835 -2020-12-30 16:00:00,XUEHVZ,Filled,Sell,-3.0,3318.85,6.9695849999999995,,1836 -2020-12-30 16:00:00,HECLON,Filled,Sell,-182.0,60.91,7.759933999999999,,1837 -2020-12-30 16:00:00,YIVYGH,Filled,Buy,216.0,51.69,7.815528,,1838 -2020-12-30 16:00:00,OCHCAU,Filled,Sell,-248.0,44.76,7.770336,,1839 -2020-12-30 16:00:00,ZIJVRO,Filled,Buy,225.0,49.1,7.73325,,1840 -2020-12-30 16:00:00,BPSPGV,Filled,Sell,-49.0,225.26,7.726418,,1841 -2020-12-30 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1842 -2020-12-30 16:00:00,YIVYGH,Submitted,Sell,0.0,0.0,0.0,,1843 -2020-12-30 16:00:00,CEMOJE,Submitted,Buy,0.0,0.0,0.0,,1844 -2020-12-30 16:00:00,GTKILW,Submitted,Buy,0.0,0.0,0.0,,1845 -2020-12-30 16:00:00,ZIJVRO,Submitted,Sell,0.0,0.0,0.0,,1846 -2020-12-30 16:00:00,BPSPGV,Submitted,Buy,0.0,0.0,0.0,,1847 -2020-12-30 16:00:00,BPFUQM,Submitted,Sell,0.0,0.0,0.0,,1848 -2020-12-31 16:00:00,SMDIFE,Filled,Buy,20.0,134.0,1.876,,1842 -2020-12-31 16:00:00,YIVYGH,Filled,Sell,-216.0,51.39,7.770168,,1843 -2020-12-31 16:00:00,CEMOJE,Filled,Buy,1.0,1745.45,1.221815,,1844 -2020-12-31 16:00:00,GTKILW,Filled,Buy,1.0,1735.28,1.214696,,1845 -2020-12-31 16:00:00,ZIJVRO,Filled,Sell,-225.0,48.75,7.678125,,1846 -2020-12-31 16:00:00,BPSPGV,Filled,Buy,62.0,221.82,9.626988,,1847 -2020-12-31 16:00:00,BPFUQM,Filled,Sell,-16.0,700.0,7.84,,1848 -2020-12-31 16:00:00,SMDIFE,Submitted,Buy,0.0,0.0,0.0,,1849 -2020-12-31 16:00:00,YIVYGH,Submitted,Buy,0.0,0.0,0.0,,1850 -2020-12-31 16:00:00,BPSPGV,Submitted,Sell,0.0,0.0,0.0,,1851 +timestamp,symbol,status,direction,fill_quantity,fill_price,fee,message,order_id +2019-01-04 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1 +2019-01-07 16:00:00,MCCZID,FILLED,BUY,323.0,43.0,9.7223,,1 +2019-01-07 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,2 +2019-01-08 16:00:00,MCCZID,FILLED,SELL,-2.0,43.53,0.060942,,2 +2019-01-08 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,3 +2019-01-09 16:00:00,MCCZID,FILLED,SELL,-89.0,43.41,2.704443,,3 +2019-01-09 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,4 +2019-01-10 16:00:00,MCCZID,FILLED,BUY,1.0,43.18,0.030226,,4 +2019-01-10 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,5 +2019-01-11 16:00:00,MCCZID,FILLED,BUY,5.0,42.33,0.14815499999999998,,5 +2019-01-11 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,6 +2019-01-14 16:00:00,MCCZID,FILLED,SELL,-238.0,42.55,7.08883,,6 +2019-01-14 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,7 +2019-01-14 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,8 +2019-01-14 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,9 +2019-01-14 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,10 +2019-01-15 16:00:00,OCHCAU,FILLED,BUY,231.0,43.22,6.988674,,7 +2019-01-15 16:00:00,CEMOJE,FILLED,BUY,9.0,1043.92,6.576696,,8 +2019-01-15 16:00:00,GTKILW,FILLED,BUY,9.0,1052.01,6.627663,,9 +2019-01-15 16:00:00,MCCZID,FILLED,BUY,235.0,42.61,7.009345000000001,,10 +2019-01-15 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,11 +2019-01-15 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,12 +2019-01-16 16:00:00,OCHCAU,FILLED,SELL,-4.0,44.1,0.12348,,11 +2019-01-16 16:00:00,MCCZID,FILLED,SELL,-1.0,42.63,0.029841000000000003,,12 +2019-01-16 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,13 +2019-01-16 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,14 +2019-01-16 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,15 +2019-01-17 16:00:00,CEMOJE,FILLED,SELL,-9.0,1079.19,6.798897,,13 +2019-01-17 16:00:00,GTKILW,FILLED,SELL,-9.0,1087.08,6.848604,,14 +2019-01-17 16:00:00,MCCZID,FILLED,BUY,3.0,41.89,0.087969,,15 +2019-01-17 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,16 +2019-01-17 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,17 +2019-01-18 16:00:00,OCHCAU,FILLED,SELL,-1.0,44.61,0.031227,,16 +2019-01-18 16:00:00,MCCZID,FILLED,SELL,-2.0,42.62,0.059668,,17 +2019-01-18 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,18 +2019-01-22 16:00:00,OCHCAU,FILLED,SELL,-226.0,44.88,7.100016000000001,,18 +2019-01-22 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,19 +2019-01-23 16:00:00,MCCZID,FILLED,BUY,93.0,41.95,2.730945,,19 +2019-01-23 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,20 +2019-01-24 16:00:00,MCCZID,FILLED,SELL,-3.0,41.74,0.087654,,20 +2019-01-24 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,21 +2019-01-25 16:00:00,MCCZID,FILLED,BUY,9.0,41.14,0.25918199999999997,,21 +2019-01-25 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,22 +2019-01-28 16:00:00,MCCZID,FILLED,BUY,3.0,40.5,0.08505,,22 +2019-01-28 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,23 +2019-01-29 16:00:00,MCCZID,FILLED,SELL,-36.0,39.53,0.996156,,23 +2019-01-29 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,24 +2019-01-30 16:00:00,MCCZID,FILLED,BUY,88.0,40.81,2.513896,,24 +2019-01-30 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,25 +2019-01-30 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,26 +2019-01-31 16:00:00,MCCZID,FILLED,SELL,-8.0,41.41,0.231896,,25 +2019-01-31 16:00:00,ISIJLH,FILLED,BUY,540.0,29.47,11.13966,,26 +2019-01-31 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,27 +2019-01-31 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,28 +2019-02-01 16:00:00,MCCZID,FILLED,SELL,-7.0,42.84,0.209916,,27 +2019-02-01 16:00:00,ISIJLH,FILLED,SELL,-540.0,30.25,11.4345,,28 +2019-02-01 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,29 +2019-02-01 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,30 +2019-02-01 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,31 +2019-02-04 16:00:00,LUZLYG,FILLED,BUY,560.0,28.46,11.15632,,29 +2019-02-04 16:00:00,MCCZID,FILLED,SELL,-374.0,42.8,11.20504,,30 +2019-02-04 16:00:00,RUKNMV,FILLED,BUY,325.0,48.85,11.113375,,31 +2019-02-04 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,32 +2019-02-04 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,33 +2019-02-04 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,34 +2019-02-05 16:00:00,LUZLYG,FILLED,SELL,-560.0,28.85,11.3092,,32 +2019-02-05 16:00:00,ISIJLH,FILLED,BUY,536.0,29.64,11.120928,,33 +2019-02-05 16:00:00,RUKNMV,FILLED,SELL,-1.0,49.22,0.034454,,34 +2019-02-05 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,35 +2019-02-05 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,36 +2019-02-05 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,37 +2019-02-06 16:00:00,LUZLYG,FILLED,BUY,355.0,28.63,7.114554999999999,,35 +2019-02-06 16:00:00,ISIJLH,FILLED,SELL,-192.0,29.74,3.997056,,36 +2019-02-06 16:00:00,RUKNMV,FILLED,SELL,-117.0,49.15,4.025385,,37 +2019-02-06 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,38 +2019-02-06 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,39 +2019-02-06 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,40 +2019-02-06 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,41 +2019-02-07 16:00:00,LUZLYG,FILLED,SELL,-355.0,28.59,7.104615000000001,,38 +2019-02-07 16:00:00,MCCZID,FILLED,BUY,239.0,42.09,7.041657,,39 +2019-02-07 16:00:00,ISIJLH,FILLED,SELL,-2.0,29.5,0.0413,,40 +2019-02-07 16:00:00,RUKNMV,FILLED,SELL,-207.0,49.11,7.116039000000001,,41 +2019-02-07 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,42 +2019-02-07 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,43 +2019-02-07 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,44 +2019-02-08 16:00:00,CEMOJE,FILLED,BUY,9.0,1097.14,6.911982,,42 +2019-02-08 16:00:00,MCCZID,FILLED,BUY,3.0,41.6,0.08736000000000001,,43 +2019-02-08 16:00:00,ISIJLH,FILLED,BUY,1.0,29.4,0.02058,,44 +2019-02-08 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,45 +2019-02-08 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,46 +2019-02-08 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,47 +2019-02-11 16:00:00,CEMOJE,FILLED,SELL,-9.0,1088.34,6.856541999999999,,45 +2019-02-11 16:00:00,MCCZID,FILLED,SELL,-5.0,42.29,0.14801499999999998,,46 +2019-02-11 16:00:00,ISIJLH,FILLED,SELL,-5.0,29.6,0.1036,,47 +2019-02-11 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,48 +2019-02-11 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,49 +2019-02-11 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,50 +2019-02-12 16:00:00,FFNDVM,FILLED,BUY,1202.0,8.38,7.050932,,48 +2019-02-12 16:00:00,MCCZID,FILLED,BUY,3.0,41.71,0.087591,,49 +2019-02-12 16:00:00,ISIJLH,FILLED,SELL,-1.0,29.85,0.020895,,50 +2019-02-12 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,51 +2019-02-12 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,52 +2019-02-12 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,53 +2019-02-12 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,54 +2019-02-13 16:00:00,FFNDVM,FILLED,SELL,-18.0,8.44,0.106344,,51 +2019-02-13 16:00:00,LMRIBF,FILLED,BUY,60.0,165.38,6.9459599999999995,,52 +2019-02-13 16:00:00,MCCZID,FILLED,SELL,-1.0,41.95,0.029365,,53 +2019-02-13 16:00:00,ISIJLH,FILLED,SELL,-1.0,29.79,0.020853,,54 +2019-02-13 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,55 +2019-02-13 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,56 +2019-02-13 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,57 +2019-02-13 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,58 +2019-02-13 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,59 +2019-02-13 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,60 +2019-02-13 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,61 +2019-02-14 16:00:00,FFNDVM,FILLED,BUY,6.0,8.38,0.035196,,55 +2019-02-14 16:00:00,LMRIBF,FILLED,BUY,1.0,163.19,0.114233,,56 +2019-02-14 16:00:00,CEMOJE,FILLED,BUY,8.0,1123.96,6.294176,,57 +2019-02-14 16:00:00,GTKILW,FILLED,BUY,8.0,1124.62,6.297871999999999,,58 +2019-02-14 16:00:00,BPSPGV,FILLED,BUY,93.0,106.31,6.920781,,59 +2019-02-14 16:00:00,MCCZID,FILLED,BUY,1.0,41.74,0.029218,,60 +2019-02-14 16:00:00,ISIJLH,FILLED,SELL,-1.0,29.73,0.020811,,61 +2019-02-14 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,62 +2019-02-14 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,63 +2019-02-14 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,64 +2019-02-14 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,65 +2019-02-14 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,66 +2019-02-15 16:00:00,XUEHVZ,FILLED,BUY,6.0,1619.82,6.803244,,62 +2019-02-15 16:00:00,LUZLYG,FILLED,BUY,352.0,28.75,7.084,,63 +2019-02-15 16:00:00,FFNDVM,FILLED,SELL,-1.0,8.5,0.00595,,64 +2019-02-15 16:00:00,MCCZID,FILLED,SELL,-2.0,42.36,0.059304,,65 +2019-02-15 16:00:00,ISIJLH,FILLED,BUY,1.0,30.0,0.021,,66 +2019-02-15 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,67 +2019-02-15 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,68 +2019-02-15 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,69 +2019-02-15 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,70 +2019-02-15 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,71 +2019-02-19 16:00:00,LUZLYG,FILLED,SELL,-8.0,28.88,0.16172799999999998,,67 +2019-02-19 16:00:00,FFNDVM,FILLED,SELL,-1189.0,8.54,7.107842,,68 +2019-02-19 16:00:00,BPSPGV,FILLED,SELL,-1.0,107.79,0.075453,,69 +2019-02-19 16:00:00,MCCZID,FILLED,SELL,-238.0,42.23,7.035518,,70 +2019-02-19 16:00:00,ISIJLH,FILLED,SELL,-8.0,30.48,0.170688,,71 +2019-02-19 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,72 +2019-02-19 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,73 +2019-02-19 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,74 +2019-02-19 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,75 +2019-02-19 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,76 +2019-02-19 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,77 +2019-02-19 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,78 +2019-02-19 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,79 +2019-02-20 16:00:00,XUEHVZ,FILLED,BUY,3.0,1627.11,3.416931,,72 +2019-02-20 16:00:00,LUZLYG,FILLED,BUY,193.0,29.1,3.93141,,73 +2019-02-20 16:00:00,LMRIBF,FILLED,BUY,35.0,162.02,3.96949,,74 +2019-02-20 16:00:00,CEMOJE,FILLED,BUY,5.0,1114.2,3.8997,,75 +2019-02-20 16:00:00,GTKILW,FILLED,BUY,5.0,1123.83,3.933405,,76 +2019-02-20 16:00:00,BPSPGV,FILLED,BUY,52.0,107.84,3.925376,,77 +2019-02-20 16:00:00,MCCZID,FILLED,BUY,367.0,42.49,10.915681,,78 +2019-02-20 16:00:00,ISIJLH,FILLED,SELL,-328.0,30.63,7.032647999999999,,79 +2019-02-20 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,80 +2019-02-20 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,81 +2019-02-20 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,82 +2019-02-20 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,83 +2019-02-20 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,84 +2019-02-21 16:00:00,LUZLYG,FILLED,SELL,-5.0,29.34,0.10269,,80 +2019-02-21 16:00:00,CEMOJE,FILLED,BUY,1.0,1113.06,0.779142,,81 +2019-02-21 16:00:00,BPSPGV,FILLED,BUY,2.0,106.93,0.149702,,82 +2019-02-21 16:00:00,MCCZID,FILLED,BUY,4.0,42.0,0.1176,,83 +2019-02-21 16:00:00,ISIJLH,FILLED,BUY,507.0,30.85,10.948665,,84 +2019-02-21 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,85 +2019-02-21 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,86 +2019-02-21 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,87 +2019-02-21 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,88 +2019-02-22 16:00:00,LUZLYG,FILLED,BUY,2.0,29.04,0.040656,,85 +2019-02-22 16:00:00,LMRIBF,FILLED,BUY,1.0,160.58,0.112406,,86 +2019-02-22 16:00:00,GTKILW,FILLED,BUY,1.0,1103.12,0.7721839999999999,,87 +2019-02-22 16:00:00,BPSPGV,FILLED,SELL,-146.0,110.0,11.242,,88 +2019-02-22 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,89 +2019-02-22 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,90 +2019-02-22 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,91 +2019-02-22 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,92 +2019-02-22 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,93 +2019-02-25 16:00:00,LUZLYG,FILLED,BUY,4.0,29.16,0.081648,,89 +2019-02-25 16:00:00,LMRIBF,FILLED,SELL,-1.0,163.0,0.1141,,90 +2019-02-25 16:00:00,BPSPGV,FILLED,BUY,141.0,111.62,11.016894,,91 +2019-02-25 16:00:00,MCCZID,FILLED,SELL,-7.0,43.06,0.210994,,92 +2019-02-25 16:00:00,ISIJLH,FILLED,SELL,-5.0,31.25,0.109375,,93 +2019-02-25 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,94 +2019-02-25 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,95 +2019-02-25 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,96 +2019-02-25 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,97 +2019-02-25 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,98 +2019-02-25 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,99 +2019-02-26 16:00:00,LUZLYG,FILLED,SELL,-3.0,29.07,0.061047,,94 +2019-02-26 16:00:00,OCHCAU,FILLED,BUY,308.0,50.59,10.907204,,95 +2019-02-26 16:00:00,LMRIBF,FILLED,SELL,-1.0,164.22,0.114954,,96 +2019-02-26 16:00:00,BPSPGV,FILLED,SELL,-1.0,111.17,0.077819,,97 +2019-02-26 16:00:00,MCCZID,FILLED,SELL,-364.0,42.95,10.94366,,98 +2019-02-26 16:00:00,ISIJLH,FILLED,BUY,1.0,31.13,0.021791,,99 +2019-02-26 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,100 +2019-02-26 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,101 +2019-02-26 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,102 +2019-02-26 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,103 +2019-02-26 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,104 +2019-02-27 16:00:00,XUEHVZ,FILLED,SELL,-9.0,1639.97,10.331811,,100 +2019-02-27 16:00:00,OCHCAU,FILLED,SELL,-2.0,51.25,0.07175,,101 +2019-02-27 16:00:00,GTKILW,FILLED,SELL,-1.0,1123.85,0.7866949999999999,,102 +2019-02-27 16:00:00,BPSPGV,FILLED,SELL,-1.0,111.69,0.078183,,103 +2019-02-27 16:00:00,ISIJLH,FILLED,SELL,-503.0,31.23,10.996083,,104 +2019-02-27 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,105 +2019-02-27 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,106 +2019-02-27 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,107 +2019-02-27 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,108 +2019-02-27 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,109 +2019-02-27 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,110 +2019-02-27 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,111 +2019-02-28 16:00:00,LUZLYG,FILLED,BUY,131.0,29.55,2.709735,,105 +2019-02-28 16:00:00,OCHCAU,FILLED,SELL,-306.0,51.55,11.04201,,106 +2019-02-28 16:00:00,LMRIBF,FILLED,BUY,25.0,162.37,2.841475,,107 +2019-02-28 16:00:00,CEMOJE,FILLED,BUY,3.0,1114.86,2.341206,,108 +2019-02-28 16:00:00,GTKILW,FILLED,BUY,4.0,1126.92,3.155376,,109 +2019-02-28 16:00:00,BPSPGV,FILLED,SELL,-139.0,112.04,10.901492,,110 +2019-02-28 16:00:00,ISIJLH,FILLED,BUY,633.0,31.08,13.771548,,111 +2019-02-28 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,112 +2019-02-28 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,113 +2019-02-28 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,114 +2019-02-28 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,115 +2019-02-28 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,116 +2019-03-01 16:00:00,LUZLYG,FILLED,BUY,10.0,29.33,0.20530999999999996,,112 +2019-03-01 16:00:00,LMRIBF,FILLED,SELL,-120.0,162.58,13.656720000000002,,113 +2019-03-01 16:00:00,CEMOJE,FILLED,SELL,-17.0,1117.75,13.301225,,114 +2019-03-01 16:00:00,GTKILW,FILLED,SELL,-17.0,1128.61,13.430459,,115 +2019-03-01 16:00:00,ISIJLH,FILLED,SELL,-1.0,31.2,0.02184,,116 +2019-03-01 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,117 +2019-03-01 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,118 +2019-03-01 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,119 +2019-03-01 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,120 +2019-03-01 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,121 +2019-03-01 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,122 +2019-03-04 16:00:00,LUZLYG,FILLED,SELL,-676.0,29.3,13.86476,,117 +2019-03-04 16:00:00,OCHCAU,FILLED,BUY,382.0,51.63,13.805862,,118 +2019-03-04 16:00:00,CEMOJE,FILLED,BUY,17.0,1145.97,13.637043,,119 +2019-03-04 16:00:00,BPSPGV,FILLED,BUY,174.0,112.87,13.747566,,120 +2019-03-04 16:00:00,MCCZID,FILLED,BUY,453.0,43.56,13.812876,,121 +2019-03-04 16:00:00,ISIJLH,FILLED,BUY,6.0,30.92,0.129864,,122 +2019-03-04 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,123 +2019-03-04 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,124 +2019-03-04 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,125 +2019-03-04 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,126 +2019-03-04 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,127 +2019-03-04 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,128 +2019-03-04 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,129 +2019-03-05 16:00:00,OCHCAU,FILLED,SELL,-99.0,51.12,3.542616,,123 +2019-03-05 16:00:00,LMRIBF,FILLED,BUY,86.0,167.35,10.07447,,124 +2019-03-05 16:00:00,CEMOJE,FILLED,SELL,-17.0,1145.87,13.635852999999996,,125 +2019-03-05 16:00:00,GTKILW,FILLED,BUY,12.0,1150.68,9.665712,,126 +2019-03-05 16:00:00,BPSPGV,FILLED,SELL,-174.0,112.19,13.664742,,127 +2019-03-05 16:00:00,MCCZID,FILLED,SELL,-116.0,43.19,3.507028,,128 +2019-03-05 16:00:00,ISIJLH,FILLED,SELL,-154.0,29.98,3.231844,,129 +2019-03-05 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,130 +2019-03-05 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,131 +2019-03-05 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,132 +2019-03-05 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,133 +2019-03-05 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,134 +2019-03-06 16:00:00,OCHCAU,FILLED,SELL,-86.0,51.19,3.081638,,130 +2019-03-06 16:00:00,LMRIBF,FILLED,SELL,-27.0,172.6,3.26214,,131 +2019-03-06 16:00:00,GTKILW,FILLED,SELL,-12.0,1174.18,9.863112,,132 +2019-03-06 16:00:00,MCCZID,FILLED,SELL,-337.0,42.84,10.105956,,133 +2019-03-06 16:00:00,ISIJLH,FILLED,SELL,-146.0,30.0,3.066,,134 +2019-03-06 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,135 +2019-03-06 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,136 +2019-03-06 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,137 +2019-03-06 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,138 +2019-03-07 16:00:00,OCHCAU,FILLED,SELL,-1.0,51.52,0.036064,,135 +2019-03-07 16:00:00,LMRIBF,FILLED,SELL,-59.0,171.48,7.082123999999999,,136 +2019-03-07 16:00:00,BGDRAI,FILLED,BUY,1111.0,9.09,7.069293,,137 +2019-03-07 16:00:00,ISIJLH,FILLED,SELL,-338.0,29.9,7.074339999999999,,138 +2019-03-07 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,139 +2019-03-07 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,140 +2019-03-08 16:00:00,OCHCAU,FILLED,SELL,-196.0,50.71,6.957412,,139 +2019-03-08 16:00:00,BGDRAI,FILLED,SELL,-1111.0,9.33,7.255940999999999,,140 +2019-03-08 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,141 +2019-03-08 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,142 +2019-03-11 16:00:00,CEMOJE,FILLED,BUY,8.0,1137.85,6.37196,,141 +2019-03-11 16:00:00,MCCZID,FILLED,BUY,250.0,41.0,7.175,,142 +2019-03-11 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,143 +2019-03-11 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,144 +2019-03-11 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,145 +2019-03-12 16:00:00,LUZLYG,FILLED,BUY,502.0,29.0,10.1906,,143 +2019-03-12 16:00:00,CEMOJE,FILLED,BUY,4.0,1174.87,3.289636,,144 +2019-03-12 16:00:00,MCCZID,FILLED,SELL,-250.0,41.65,7.28875,,145 +2019-03-12 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,146 +2019-03-12 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,147 +2019-03-13 16:00:00,LMRIBF,FILLED,BUY,84.0,172.35,10.13418,,146 +2019-03-13 16:00:00,CEMOJE,FILLED,SELL,-12.0,1192.37,10.015908,,147 +2019-03-13 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,148 +2019-03-13 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,149 +2019-03-13 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,150 +2019-03-14 16:00:00,LUZLYG,FILLED,SELL,-6.0,29.31,0.123102,,148 +2019-03-14 16:00:00,LMRIBF,FILLED,SELL,-1.0,169.18,0.118426,,149 +2019-03-14 16:00:00,CEMOJE,FILLED,BUY,12.0,1191.55,10.00902,,150 +2019-03-14 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,151 +2019-03-14 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,152 +2019-03-14 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,153 +2019-03-15 16:00:00,LUZLYG,FILLED,SELL,-156.0,29.45,3.21594,,151 +2019-03-15 16:00:00,LMRIBF,FILLED,SELL,-25.0,167.15,2.925125,,152 +2019-03-15 16:00:00,CEMOJE,FILLED,SELL,-4.0,1185.11,3.3183079999999996,,153 +2019-03-15 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,154 +2019-03-15 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,155 +2019-03-15 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,156 +2019-03-18 16:00:00,LUZLYG,FILLED,BUY,2.0,29.38,0.041131999999999995,,154 +2019-03-18 16:00:00,LMRIBF,FILLED,SELL,-58.0,163.4,6.634040000000001,,155 +2019-03-18 16:00:00,CEMOJE,FILLED,SELL,-8.0,1184.54,6.633424,,156 +2019-03-18 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,157 +2019-03-18 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,158 +2019-03-18 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,159 +2019-03-19 16:00:00,LUZLYG,FILLED,SELL,-6.0,30.0,0.126,,157 +2019-03-19 16:00:00,CEMOJE,FILLED,BUY,8.0,1180.91,6.6130960000000005,,158 +2019-03-19 16:00:00,BPSPGV,FILLED,BUY,85.0,118.0,7.021,,159 +2019-03-19 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,160 +2019-03-19 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,161 +2019-03-19 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,162 +2019-03-20 16:00:00,LUZLYG,FILLED,BUY,2.0,29.62,0.041468,,160 +2019-03-20 16:00:00,CEMOJE,FILLED,SELL,-8.0,1199.02,6.714512,,161 +2019-03-20 16:00:00,BPSPGV,FILLED,SELL,-85.0,117.28,6.978159999999999,,162 +2019-03-20 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,163 +2019-03-21 16:00:00,LUZLYG,FILLED,BUY,12.0,28.4,0.23855999999999997,,163 +2019-03-21 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,164 +2019-03-22 16:00:00,LUZLYG,FILLED,BUY,5.0,27.85,0.097475,,164 +2019-03-22 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,165 +2019-03-22 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,166 +2019-03-25 16:00:00,LUZLYG,FILLED,BUY,15.0,26.94,0.28287,,165 +2019-03-25 16:00:00,HECLON,FILLED,BUY,164.0,61.1,7.014279999999999,,166 +2019-03-25 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,167 +2019-03-25 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,168 +2019-03-26 16:00:00,LUZLYG,FILLED,BUY,170.0,27.15,3.23085,,167 +2019-03-26 16:00:00,HECLON,FILLED,BUY,76.0,61.0,3.2452,,168 +2019-03-26 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,169 +2019-03-26 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,170 +2019-03-27 16:00:00,LUZLYG,FILLED,SELL,-540.0,27.12,10.25136,,169 +2019-03-27 16:00:00,HECLON,FILLED,SELL,-3.0,61.35,0.128835,,170 +2019-03-27 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,171 +2019-03-28 16:00:00,HECLON,FILLED,SELL,-237.0,60.86,10.096674,,171 +2019-03-28 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,172 +2019-03-29 16:00:00,FFNDVM,FILLED,BUY,1655.0,8.78,10.17163,,172 +2019-03-29 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,173 +2019-04-01 16:00:00,FFNDVM,FILLED,SELL,-1655.0,8.88,10.28748,,173 +2019-04-01 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,174 +2019-04-02 16:00:00,OCHCAU,FILLED,BUY,204.0,55.0,7.854,,174 +2019-04-02 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,175 +2019-04-03 16:00:00,OCHCAU,FILLED,SELL,-204.0,55.46,7.919688,,175 +2019-04-09 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,176 +2019-04-10 16:00:00,OCHCAU,FILLED,BUY,183.0,55.27,7.080087,,176 +2019-04-11 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,177 +2019-04-12 16:00:00,OCHCAU,FILLED,SELL,-1.0,55.93,0.039151,,177 +2019-04-12 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,178 +2019-04-15 16:00:00,OCHCAU,FILLED,SELL,-4.0,56.4,0.15792,,178 +2019-04-15 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,179 +2019-04-16 16:00:00,OCHCAU,FILLED,SELL,-1.0,56.63,0.039641,,179 +2019-04-16 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,180 +2019-04-17 16:00:00,OCHCAU,FILLED,SELL,-1.0,57.22,0.040054,,180 +2019-04-17 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,181 +2019-04-18 16:00:00,OCHCAU,FILLED,BUY,2.0,56.63,0.079282,,181 +2019-04-18 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,182 +2019-04-22 16:00:00,OCHCAU,FILLED,SELL,-178.0,56.16,6.997535999999999,,182 +2019-04-23 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,183 +2019-04-23 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,184 +2019-04-24 16:00:00,OCHCAU,FILLED,BUY,242.0,56.62,9.591428,,183 +2019-04-24 16:00:00,MCCZID,FILLED,BUY,348.0,39.45,9.61002,,184 +2019-04-24 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,185 +2019-04-24 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,186 +2019-04-25 16:00:00,OCHCAU,FILLED,SELL,-1.0,56.46,0.039522,,185 +2019-04-25 16:00:00,MCCZID,FILLED,SELL,-348.0,39.28,9.568608,,186 +2019-04-25 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,187 +2019-04-26 16:00:00,OCHCAU,FILLED,SELL,-241.0,56.02,9.450574,,187 +2019-05-01 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,188 +2019-05-02 16:00:00,BPSPGV,FILLED,BUY,120.0,127.98,10.75032,,188 +2019-05-02 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,189 +2019-05-02 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,190 +2019-05-03 16:00:00,BPSPGV,FILLED,BUY,2.0,127.42,0.178388,,189 +2019-05-03 16:00:00,ISIJLH,FILLED,BUY,503.0,30.63,10.784823,,190 +2019-05-03 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,191 +2019-05-03 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,192 +2019-05-06 16:00:00,BPSPGV,FILLED,SELL,-3.0,126.33,0.265293,,191 +2019-05-06 16:00:00,ISIJLH,FILLED,SELL,-503.0,30.49,10.735529,,192 +2019-05-06 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,193 +2019-05-06 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,194 +2019-05-06 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,195 +2019-05-06 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,196 +2019-05-07 16:00:00,XUEHVZ,FILLED,BUY,8.0,1957.03,10.959368,,193 +2019-05-07 16:00:00,GTKILW,FILLED,BUY,13.0,1194.82,10.872862,,194 +2019-05-07 16:00:00,BPSPGV,FILLED,BUY,3.0,126.5,0.26565,,195 +2019-05-07 16:00:00,ISIJLH,FILLED,BUY,511.0,30.47,10.899119,,196 +2019-05-07 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,197 +2019-05-07 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,198 +2019-05-07 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,199 +2019-05-07 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,200 +2019-05-08 16:00:00,XUEHVZ,FILLED,SELL,-3.0,1920.48,4.033008000000001,,197 +2019-05-08 16:00:00,GTKILW,FILLED,SELL,-13.0,1175.65,10.698415,,198 +2019-05-08 16:00:00,BPSPGV,FILLED,SELL,-43.0,125.44,3.775744,,199 +2019-05-08 16:00:00,ISIJLH,FILLED,SELL,-511.0,30.4,10.87408,,200 +2019-05-08 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,201 +2019-05-08 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,202 +2019-05-08 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,203 +2019-05-09 16:00:00,XUEHVZ,FILLED,SELL,-5.0,1925.62,6.7396699999999985,,201 +2019-05-09 16:00:00,BPSPGV,FILLED,BUY,1.0,124.26,0.086982,,202 +2019-05-09 16:00:00,ISIJLH,FILLED,BUY,333.0,30.17,7.032627000000001,,203 +2019-05-09 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,204 +2019-05-09 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,205 +2019-05-09 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,206 +2019-05-09 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,207 +2019-05-09 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,208 +2019-05-09 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,209 +2019-05-10 16:00:00,SMDIFE,FILLED,BUY,50.0,197.47,6.91145,,204 +2019-05-10 16:00:00,XUEHVZ,FILLED,BUY,5.0,1903.74,6.66309,,205 +2019-05-10 16:00:00,FFNDVM,FILLED,BUY,991.0,10.32,7.158984,,206 +2019-05-10 16:00:00,ZIJVRO,FILLED,BUY,216.0,46.48,7.0277759999999985,,207 +2019-05-10 16:00:00,BPSPGV,FILLED,SELL,-80.0,125.23,7.01288,,208 +2019-05-10 16:00:00,ISIJLH,FILLED,SELL,-333.0,30.25,7.0512749999999995,,209 +2019-05-10 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,210 +2019-05-10 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,211 +2019-05-10 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,212 +2019-05-13 16:00:00,SMDIFE,FILLED,BUY,1.0,187.48,0.131236,,210 +2019-05-13 16:00:00,FFNDVM,FILLED,SELL,-18.0,10.15,0.12789,,211 +2019-05-13 16:00:00,ZIJVRO,FILLED,BUY,2.0,45.2,0.06328,,212 +2019-05-13 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,213 +2019-05-13 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,214 +2019-05-13 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,215 +2019-05-13 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,216 +2019-05-13 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,217 +2019-05-13 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,218 +2019-05-13 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,219 +2019-05-13 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,220 +2019-05-14 16:00:00,SMDIFE,FILLED,BUY,31.0,186.33,4.043361,,213 +2019-05-14 16:00:00,XUEHVZ,FILLED,BUY,3.0,1833.7,3.85077,,214 +2019-05-14 16:00:00,FFNDVM,FILLED,BUY,552.0,10.15,3.92196,,215 +2019-05-14 16:00:00,LMRIBF,FILLED,BUY,84.0,182.72,10.743936,,216 +2019-05-14 16:00:00,CEMOJE,FILLED,BUY,13.0,1128.99,10.273809,,217 +2019-05-14 16:00:00,GTKILW,FILLED,BUY,13.0,1132.11,10.302200999999998,,218 +2019-05-14 16:00:00,ZIJVRO,FILLED,BUY,125.0,45.26,3.96025,,219 +2019-05-14 16:00:00,BPSPGV,FILLED,BUY,124.0,123.89,10.753652,,220 +2019-05-14 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,221 +2019-05-14 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,222 +2019-05-14 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,223 +2019-05-14 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,224 +2019-05-14 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,225 +2019-05-14 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,226 +2019-05-15 16:00:00,SMDIFE,FILLED,SELL,-1.0,186.27,0.130389,,221 +2019-05-15 16:00:00,FFNDVM,FILLED,SELL,-24.0,10.2,0.17135999999999998,,222 +2019-05-15 16:00:00,LMRIBF,FILLED,BUY,1.0,180.08,0.126056,,223 +2019-05-15 16:00:00,CEMOJE,FILLED,SELL,-13.0,1117.25,10.166975,,224 +2019-05-15 16:00:00,ZIJVRO,FILLED,SELL,-3.0,44.83,0.094143,,225 +2019-05-15 16:00:00,BPSPGV,FILLED,SELL,-124.0,124.06,10.768408,,226 +2019-05-15 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,227 +2019-05-15 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,228 +2019-05-15 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,229 +2019-05-15 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,230 +2019-05-15 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,231 +2019-05-15 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,232 +2019-05-16 16:00:00,SMDIFE,FILLED,SELL,-1.0,189.88,0.132916,,227 +2019-05-16 16:00:00,XUEHVZ,FILLED,SELL,-8.0,1882.36,10.541216,,228 +2019-05-16 16:00:00,FFNDVM,FILLED,SELL,-1501.0,10.31,10.832717,,229 +2019-05-16 16:00:00,LMRIBF,FILLED,SELL,-85.0,185.18,11.01821,,230 +2019-05-16 16:00:00,GTKILW,FILLED,SELL,-13.0,1164.5,10.59695,,231 +2019-05-16 16:00:00,ZIJVRO,FILLED,SELL,-3.0,45.58,0.095718,,232 +2019-05-16 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,233 +2019-05-16 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,234 +2019-05-17 16:00:00,SMDIFE,FILLED,BUY,1.0,187.04,0.130928,,233 +2019-05-17 16:00:00,ZIJVRO,FILLED,BUY,1.0,45.14,0.031598,,234 +2019-05-17 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,235 +2019-05-17 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,236 +2019-05-17 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,237 +2019-05-17 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,238 +2019-05-20 16:00:00,SMDIFE,FILLED,SELL,-81.0,183.5,10.40445,,235 +2019-05-20 16:00:00,CEMOJE,FILLED,BUY,8.0,1161.99,6.507144,,236 +2019-05-20 16:00:00,GTKILW,FILLED,BUY,8.0,1163.32,6.5145919999999995,,237 +2019-05-20 16:00:00,ZIJVRO,FILLED,SELL,-116.0,44.0,3.5728,,238 +2019-05-20 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,239 +2019-05-20 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,240 +2019-05-21 16:00:00,GTKILW,FILLED,SELL,-8.0,1143.45,6.40332,,239 +2019-05-21 16:00:00,ZIJVRO,FILLED,BUY,7.0,44.32,0.217168,,240 +2019-05-21 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,241 +2019-05-21 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,242 +2019-05-21 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,243 +2019-05-22 16:00:00,FFNDVM,FILLED,BUY,976.0,10.17,6.948144,,241 +2019-05-22 16:00:00,CEMOJE,FILLED,SELL,-8.0,1148.39,6.4309840000000005,,242 +2019-05-22 16:00:00,ZIJVRO,FILLED,SELL,-5.0,44.15,0.154525,,243 +2019-05-22 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,244 +2019-05-22 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,245 +2019-05-22 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,246 +2019-05-22 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,247 +2019-05-22 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,248 +2019-05-22 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,249 +2019-05-23 16:00:00,SMDIFE,FILLED,BUY,54.0,179.72,6.793416,,244 +2019-05-23 16:00:00,FFNDVM,FILLED,BUY,26.0,9.85,0.17926999999999998,,245 +2019-05-23 16:00:00,LMRIBF,FILLED,BUY,53.0,182.42,6.767782,,246 +2019-05-23 16:00:00,CEMOJE,FILLED,BUY,8.0,1150.2,6.441120000000001,,247 +2019-05-23 16:00:00,GTKILW,FILLED,BUY,8.0,1150.78,6.444368,,248 +2019-05-23 16:00:00,ZIJVRO,FILLED,BUY,3.0,43.33,0.090993,,249 +2019-05-23 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,250 +2019-05-23 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,251 +2019-05-23 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,252 +2019-05-23 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,253 +2019-05-23 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,254 +2019-05-24 16:00:00,SMDIFE,FILLED,BUY,1.0,180.2,0.12614,,250 +2019-05-24 16:00:00,XUEHVZ,FILLED,BUY,5.0,1818.85,6.365975,,251 +2019-05-24 16:00:00,FFNDVM,FILLED,BUY,12.0,9.92,0.083328,,252 +2019-05-24 16:00:00,LMRIBF,FILLED,BUY,2.0,182.32,0.255248,,253 +2019-05-24 16:00:00,ZIJVRO,FILLED,SELL,-3.0,44.59,0.093639,,254 +2019-05-24 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,255 +2019-05-24 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,256 +2019-05-24 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,257 +2019-05-28 16:00:00,XUEHVZ,FILLED,SELL,-5.0,1819.7,6.36895,,255 +2019-05-28 16:00:00,FFNDVM,FILLED,BUY,2.0,9.87,0.013818,,256 +2019-05-28 16:00:00,LMRIBF,FILLED,SELL,-55.0,181.54,6.98929,,257 +2019-05-28 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,258 +2019-05-28 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,259 +2019-05-28 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,260 +2019-05-28 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,261 +2019-05-28 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,262 +2019-05-29 16:00:00,SMDIFE,FILLED,SELL,-55.0,176.44,6.792940000000001,,258 +2019-05-29 16:00:00,FFNDVM,FILLED,BUY,531.0,9.7,3.60549,,259 +2019-05-29 16:00:00,CEMOJE,FILLED,BUY,5.0,1135.26,3.97341,,260 +2019-05-29 16:00:00,GTKILW,FILLED,SELL,-8.0,1140.99,6.389544,,261 +2019-05-29 16:00:00,ZIJVRO,FILLED,SELL,-224.0,43.36,6.798848,,262 +2019-05-29 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,263 +2019-05-29 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,264 +2019-05-29 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,265 +2019-05-29 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,266 +2019-05-30 16:00:00,OCHCAU,FILLED,BUY,361.0,53.44,13.504288,,263 +2019-05-30 16:00:00,FFNDVM,FILLED,BUY,430.0,9.74,2.93174,,264 +2019-05-30 16:00:00,LMRIBF,FILLED,BUY,105.0,183.08,13.45638,,265 +2019-05-30 16:00:00,CEMOJE,FILLED,BUY,4.0,1115.74,3.124072,,266 +2019-05-30 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,267 +2019-05-30 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,268 +2019-05-30 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,269 +2019-05-30 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,270 +2019-05-31 16:00:00,OCHCAU,FILLED,SELL,-361.0,52.79,13.340032999999998,,267 +2019-05-31 16:00:00,FFNDVM,FILLED,SELL,-6.0,9.5,0.0399,,268 +2019-05-31 16:00:00,LMRIBF,FILLED,SELL,-1.0,180.28,0.126196,,269 +2019-05-31 16:00:00,CEMOJE,FILLED,SELL,-17.0,1114.66,13.264454,,270 +2019-05-31 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,271 +2019-05-31 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,272 +2019-05-31 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,273 +2019-06-03 16:00:00,OCHCAU,FILLED,BUY,368.0,52.05,13.408079999999998,,271 +2019-06-03 16:00:00,FFNDVM,FILLED,BUY,43.0,9.61,0.289261,,272 +2019-06-03 16:00:00,LMRIBF,FILLED,BUY,4.0,175.0,0.49,,273 +2019-06-03 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,274 +2019-06-03 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,275 +2019-06-03 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,276 +2019-06-04 16:00:00,OCHCAU,FILLED,SELL,-90.0,52.48,3.30624,,274 +2019-06-04 16:00:00,FFNDVM,FILLED,SELL,-513.0,9.73,3.494043,,275 +2019-06-04 16:00:00,LMRIBF,FILLED,SELL,-21.0,163.81,2.408007,,276 +2019-06-04 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,277 +2019-06-04 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,278 +2019-06-04 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,279 +2019-06-05 16:00:00,OCHCAU,FILLED,SELL,-278.0,53.85,10.47921,,277 +2019-06-05 16:00:00,FFNDVM,FILLED,SELL,-45.0,9.87,0.310905,,278 +2019-06-05 16:00:00,LMRIBF,FILLED,SELL,-1.0,167.49,0.117243,,279 +2019-06-05 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,280 +2019-06-05 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,281 +2019-06-05 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,282 +2019-06-05 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,283 +2019-06-05 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,284 +2019-06-06 16:00:00,FFNDVM,FILLED,BUY,21.0,9.71,0.142737,,280 +2019-06-06 16:00:00,LMRIBF,FILLED,SELL,-1.0,168.3,0.11781,,281 +2019-06-06 16:00:00,CEMOJE,FILLED,BUY,13.0,1042.05,9.482655,,282 +2019-06-06 16:00:00,GTKILW,FILLED,BUY,13.0,1041.12,9.474192,,283 +2019-06-06 16:00:00,MCCZID,FILLED,BUY,340.0,42.67,10.15546,,284 +2019-06-06 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,285 +2019-06-06 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,286 +2019-06-06 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,287 +2019-06-06 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,288 +2019-06-07 16:00:00,FFNDVM,FILLED,BUY,5.0,9.76,0.034159999999999996,,285 +2019-06-07 16:00:00,CEMOJE,FILLED,SELL,-13.0,1043.4,9.49494,,286 +2019-06-07 16:00:00,GTKILW,FILLED,SELL,-13.0,1041.84,9.480743999999998,,287 +2019-06-07 16:00:00,MCCZID,FILLED,SELL,-2.0,43.02,0.060228,,288 +2019-06-07 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,289 +2019-06-07 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,290 +2019-06-07 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,291 +2019-06-10 16:00:00,FFNDVM,FILLED,SELL,-1.0,9.89,0.006923,,289 +2019-06-10 16:00:00,LMRIBF,FILLED,SELL,-85.0,174.54,10.38513,,290 +2019-06-10 16:00:00,MCCZID,FILLED,SELL,-2.0,43.2,0.060480000000000006,,291 +2019-06-10 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,292 +2019-06-10 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,293 +2019-06-11 16:00:00,FFNDVM,FILLED,SELL,-1481.0,9.87,10.232229,,292 +2019-06-11 16:00:00,MCCZID,FILLED,SELL,-1.0,43.15,0.030205,,293 +2019-06-11 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,294 +2019-06-12 16:00:00,MCCZID,FILLED,SELL,-335.0,42.51,9.968595,,294 +2019-06-13 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,295 +2019-06-14 16:00:00,MCCZID,FILLED,BUY,237.0,42.57,7.062363,,295 +2019-06-14 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,296 +2019-06-17 16:00:00,MCCZID,FILLED,SELL,-237.0,42.73,7.088906999999999,,296 +2019-06-19 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,297 +2019-06-20 16:00:00,FFNDVM,FILLED,BUY,1003.0,10.13,7.112273000000001,,297 +2019-06-20 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,298 +2019-06-21 16:00:00,FFNDVM,FILLED,SELL,-10.0,10.05,0.07035,,298 +2019-06-21 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,299 +2019-06-24 16:00:00,FFNDVM,FILLED,SELL,-993.0,9.95,6.916244999999999,,299 +2019-06-24 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,300 +2019-06-25 16:00:00,FFNDVM,FILLED,BUY,1002.0,9.97,6.992958000000001,,300 +2019-06-25 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,301 +2019-06-25 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,302 +2019-06-26 16:00:00,YIVYGH,FILLED,BUY,338.0,42.66,10.093355999999998,,301 +2019-06-26 16:00:00,FFNDVM,FILLED,BUY,466.0,9.87,3.219594,,302 +2019-06-26 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,303 +2019-06-26 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,304 +2019-06-27 16:00:00,YIVYGH,FILLED,SELL,-338.0,42.29,10.005814,,303 +2019-06-27 16:00:00,FFNDVM,FILLED,SELL,-10.0,10.04,0.07028,,304 +2019-06-27 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,305 +2019-06-28 16:00:00,FFNDVM,FILLED,SELL,-1458.0,10.2,10.41012,,305 +2019-07-03 13:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,306 +2019-07-05 16:00:00,FFNDVM,FILLED,BUY,1358.0,10.17,9.667602,,306 +2019-07-05 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,307 +2019-07-08 16:00:00,FFNDVM,FILLED,SELL,-1358.0,10.2,9.69612,,307 +2019-07-10 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,308 +2019-07-11 16:00:00,HECLON,FILLED,BUY,141.0,71.4,7.047180000000001,,308 +2019-07-11 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,309 +2019-07-12 16:00:00,HECLON,FILLED,SELL,-141.0,71.83,7.089621,,309 +2019-07-23 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,310 +2019-07-24 16:00:00,BPSPGV,FILLED,BUY,98.0,139.0,9.5354,,310 +2019-07-24 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,311 +2019-07-25 16:00:00,BPSPGV,FILLED,SELL,-1.0,140.28,0.098196,,311 +2019-07-25 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,312 +2019-07-25 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,313 +2019-07-26 16:00:00,BPSPGV,FILLED,SELL,-97.0,140.36,9.530444,,312 +2019-07-26 16:00:00,ISIJLH,FILLED,BUY,404.0,33.7,9.53036,,313 +2019-07-26 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,314 +2019-07-26 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,315 +2019-07-29 16:00:00,FFNDVM,FILLED,BUY,1428.0,9.58,9.576168,,314 +2019-07-29 16:00:00,ISIJLH,FILLED,SELL,-4.0,34.15,0.09562,,315 +2019-07-29 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,316 +2019-07-29 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,317 +2019-07-29 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,318 +2019-07-30 16:00:00,FFNDVM,FILLED,SELL,-191.0,9.53,1.274161,,316 +2019-07-30 16:00:00,BPSPGV,FILLED,BUY,84.0,140.0,8.232,,317 +2019-07-30 16:00:00,ISIJLH,FILLED,SELL,-400.0,34.44,9.6432,,318 +2019-07-30 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,319 +2019-07-31 16:00:00,FFNDVM,FILLED,SELL,-1237.0,9.55,8.269345,,319 +2019-07-31 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,320 +2019-07-31 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,321 +2019-07-31 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,322 +2019-07-31 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,323 +2019-08-01 16:00:00,LUZLYG,FILLED,BUY,500.0,30.57,10.6995,,320 +2019-08-01 16:00:00,HECLON,FILLED,BUY,215.0,70.76,10.64938,,321 +2019-08-01 16:00:00,FFNDVM,FILLED,BUY,1610.0,9.55,10.762850000000002,,322 +2019-08-01 16:00:00,BPSPGV,FILLED,BUY,28.0,137.0,2.6852,,323 +2019-08-01 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,324 +2019-08-01 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,325 +2019-08-01 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,326 +2019-08-01 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,327 +2019-08-01 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,328 +2019-08-02 16:00:00,LUZLYG,FILLED,SELL,-500.0,29.36,10.276,,324 +2019-08-02 16:00:00,HECLON,FILLED,SELL,-215.0,67.56,10.16778,,325 +2019-08-02 16:00:00,FFNDVM,FILLED,SELL,-1610.0,9.26,10.43602,,326 +2019-08-02 16:00:00,BPSPGV,FILLED,SELL,-1.0,138.05,0.096635,,327 +2019-08-02 16:00:00,ISIJLH,FILLED,BUY,449.0,33.83,10.632769,,328 +2019-08-02 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,329 +2019-08-05 16:00:00,ISIJLH,FILLED,SELL,-1.0,33.76,0.023631999999999997,,329 +2019-08-05 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,330 +2019-08-05 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,331 +2019-08-05 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,332 +2019-08-05 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,333 +2019-08-06 16:00:00,CEMOJE,FILLED,BUY,13.0,1148.14,10.448074,,330 +2019-08-06 16:00:00,GTKILW,FILLED,BUY,13.0,1149.24,10.458084,,331 +2019-08-06 16:00:00,BPSPGV,FILLED,BUY,4.0,133.91,0.374948,,332 +2019-08-06 16:00:00,ISIJLH,FILLED,BUY,9.0,33.5,0.21105,,333 +2019-08-06 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,334 +2019-08-06 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,335 +2019-08-06 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,336 +2019-08-06 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,337 +2019-08-07 16:00:00,CEMOJE,FILLED,SELL,-13.0,1172.06,10.665746,,334 +2019-08-07 16:00:00,GTKILW,FILLED,SELL,-13.0,1175.74,10.699234,,335 +2019-08-07 16:00:00,BPSPGV,FILLED,SELL,-115.0,133.59,10.753995,,336 +2019-08-07 16:00:00,ISIJLH,FILLED,SELL,-457.0,33.62,10.755038,,337 +2019-08-07 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,338 +2019-08-07 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,339 +2019-08-07 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,340 +2019-08-08 16:00:00,HECLON,FILLED,BUY,154.0,65.9,7.10402,,338 +2019-08-08 16:00:00,CEMOJE,FILLED,BUY,8.0,1172.39,6.565384000000001,,339 +2019-08-08 16:00:00,GTKILW,FILLED,BUY,8.0,1177.82,6.595791999999999,,340 +2019-08-08 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,341 +2019-08-08 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,342 +2019-08-08 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,343 +2019-08-09 16:00:00,HECLON,FILLED,SELL,-154.0,66.26,7.142828000000001,,341 +2019-08-09 16:00:00,GTKILW,FILLED,SELL,-8.0,1206.67,6.757352,,342 +2019-08-09 16:00:00,ISIJLH,FILLED,BUY,291.0,34.38,7.003206,,343 +2019-08-09 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,344 +2019-08-09 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,345 +2019-08-12 16:00:00,GTKILW,FILLED,BUY,8.0,1185.6,6.639359999999999,,344 +2019-08-12 16:00:00,ISIJLH,FILLED,BUY,3.0,34.42,0.072282,,345 +2019-08-12 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,346 +2019-08-12 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,347 +2019-08-12 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,348 +2019-08-12 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,349 +2019-08-13 16:00:00,CEMOJE,FILLED,BUY,5.0,1171.29,4.099515,,346 +2019-08-13 16:00:00,GTKILW,FILLED,BUY,5.0,1169.01,4.091535,,347 +2019-08-13 16:00:00,ZIJVRO,FILLED,BUY,336.0,45.49,10.699248,,348 +2019-08-13 16:00:00,ISIJLH,FILLED,BUY,150.0,34.46,3.6183,,349 +2019-08-13 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,350 +2019-08-13 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,351 +2019-08-13 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,352 +2019-08-13 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,353 +2019-08-13 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,354 +2019-08-14 16:00:00,FFNDVM,FILLED,BUY,1657.0,9.11,10.566688999999998,,350 +2019-08-14 16:00:00,CEMOJE,FILLED,SELL,-1.0,1199.86,0.8399019999999999,,351 +2019-08-14 16:00:00,GTKILW,FILLED,SELL,-13.0,1194.47,10.869677,,352 +2019-08-14 16:00:00,ZIJVRO,FILLED,SELL,-336.0,46.1,10.84272,,353 +2019-08-14 16:00:00,ISIJLH,FILLED,SELL,-4.0,34.6,0.09688,,354 +2019-08-14 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,355 +2019-08-14 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,356 +2019-08-14 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,357 +2019-08-14 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,358 +2019-08-14 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,359 +2019-08-15 16:00:00,FFNDVM,FILLED,BUY,45.0,9.04,0.28475999999999996,,355 +2019-08-15 16:00:00,CEMOJE,FILLED,BUY,1.0,1163.43,0.814401,,356 +2019-08-15 16:00:00,GTKILW,FILLED,BUY,13.0,1157.66,10.534706000000002,,357 +2019-08-15 16:00:00,MCCZID,FILLED,BUY,447.0,34.29,10.729341,,358 +2019-08-15 16:00:00,ISIJLH,FILLED,BUY,9.0,34.16,0.21520799999999995,,359 +2019-08-15 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,360 +2019-08-15 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,361 +2019-08-15 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,362 +2019-08-15 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,363 +2019-08-16 16:00:00,FFNDVM,FILLED,SELL,-1702.0,8.94,10.651116,,360 +2019-08-16 16:00:00,GTKILW,FILLED,SELL,-13.0,1168.24,10.630984,,361 +2019-08-16 16:00:00,MCCZID,FILLED,SELL,-3.0,34.74,0.072954,,362 +2019-08-16 16:00:00,ISIJLH,FILLED,SELL,-449.0,34.51,10.846493,,363 +2019-08-16 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,364 +2019-08-16 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,365 +2019-08-16 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,366 +2019-08-19 16:00:00,OCHCAU,FILLED,BUY,212.0,47.92,7.111328,,364 +2019-08-19 16:00:00,CEMOJE,FILLED,SELL,-13.0,1173.48,10.678668,,365 +2019-08-19 16:00:00,MCCZID,FILLED,SELL,-157.0,34.86,3.831113999999999,,366 +2019-08-19 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,367 +2019-08-19 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,368 +2019-08-19 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,369 +2019-08-19 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,370 +2019-08-20 16:00:00,OCHCAU,FILLED,SELL,-212.0,48.53,7.201852000000001,,367 +2019-08-20 16:00:00,CEMOJE,FILLED,BUY,8.0,1194.18,6.6874080000000005,,368 +2019-08-20 16:00:00,GTKILW,FILLED,BUY,8.0,1204.73,6.746488,,369 +2019-08-20 16:00:00,MCCZID,FILLED,SELL,-287.0,35.12,7.055607999999999,,370 +2019-08-21 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,371 +2019-08-21 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,372 +2019-08-22 16:00:00,FFNDVM,FILLED,BUY,1102.0,9.07,6.996598,,371 +2019-08-22 16:00:00,ZIJVRO,FILLED,BUY,211.0,47.28,6.983256,,372 +2019-08-22 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,373 +2019-08-22 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,374 +2019-08-22 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,375 +2019-08-23 16:00:00,FFNDVM,FILLED,SELL,-1102.0,8.9,6.865460000000001,,373 +2019-08-23 16:00:00,GTKILW,FILLED,SELL,-8.0,1193.08,6.681247999999999,,374 +2019-08-23 16:00:00,ZIJVRO,FILLED,SELL,-211.0,46.37,6.8488489999999995,,375 +2019-08-23 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,376 +2019-08-26 16:00:00,CEMOJE,FILLED,SELL,-8.0,1151.74,6.449744,,376 +2019-08-27 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,377 +2019-08-27 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,378 +2019-08-28 16:00:00,CEMOJE,FILLED,BUY,12.0,1168.45,9.81498,,377 +2019-08-28 16:00:00,GTKILW,FILLED,BUY,12.0,1167.17,9.804228,,378 +2019-08-28 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,379 +2019-08-28 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,380 +2019-08-28 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,381 +2019-08-29 16:00:00,OCHCAU,FILLED,BUY,408.0,47.59,13.591704,,379 +2019-08-29 16:00:00,CEMOJE,FILLED,BUY,4.0,1172.85,3.2839799999999997,,380 +2019-08-29 16:00:00,GTKILW,FILLED,BUY,4.0,1178.91,3.300948,,381 +2019-08-29 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,382 +2019-08-29 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,383 +2019-08-30 16:00:00,OCHCAU,FILLED,SELL,-3.0,47.52,0.099792,,382 +2019-08-30 16:00:00,ISIJLH,FILLED,BUY,545.0,35.17,13.417355,,383 +2019-08-30 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,384 +2019-08-30 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,385 +2019-09-03 16:00:00,OCHCAU,FILLED,BUY,4.0,46.63,0.130564,,384 +2019-09-03 16:00:00,ISIJLH,FILLED,SELL,-2.0,35.1,0.04914,,385 +2019-09-03 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,386 +2019-09-03 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,387 +2019-09-03 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,388 +2019-09-03 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,389 +2019-09-04 16:00:00,OCHCAU,FILLED,SELL,-409.0,47.02,13.461826,,386 +2019-09-04 16:00:00,CEMOJE,FILLED,SELL,-5.0,1164.1,4.07435,,387 +2019-09-04 16:00:00,GTKILW,FILLED,SELL,-5.0,1171.63,4.1007050000000005,,388 +2019-09-04 16:00:00,ISIJLH,FILLED,SELL,-543.0,35.55,13.512555,,389 +2019-09-04 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,390 +2019-09-05 16:00:00,ISIJLH,FILLED,BUY,376.0,35.9,9.44888,,390 +2019-09-05 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,391 +2019-09-06 16:00:00,ISIJLH,FILLED,SELL,-1.0,35.95,0.025165000000000003,,391 +2019-09-06 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,392 +2019-09-09 16:00:00,ISIJLH,FILLED,SELL,-4.0,37.75,0.1057,,392 +2019-09-09 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,393 +2019-09-10 16:00:00,ISIJLH,FILLED,SELL,-371.0,37.19,9.658243,,393 +2019-09-10 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,394 +2019-09-10 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,395 +2019-09-11 16:00:00,CEMOJE,FILLED,SELL,-3.0,1203.75,2.527875,,394 +2019-09-11 16:00:00,GTKILW,FILLED,SELL,-3.0,1203.16,2.5266360000000003,,395 +2019-09-17 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,396 +2019-09-18 16:00:00,ISIJLH,FILLED,BUY,268.0,36.75,6.8943,,396 +2019-09-18 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,397 +2019-09-19 16:00:00,ISIJLH,FILLED,BUY,3.0,37.0,0.0777,,397 +2019-09-19 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,398 +2019-09-19 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,399 +2019-09-20 16:00:00,SMDIFE,FILLED,BUY,45.0,221.5,6.97725,,398 +2019-09-20 16:00:00,ISIJLH,FILLED,SELL,-3.0,37.31,0.078351,,399 +2019-09-20 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,400 +2019-09-20 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,401 +2019-09-23 16:00:00,YIVYGH,FILLED,BUY,215.0,46.17,6.9485850000000005,,400 +2019-09-23 16:00:00,ISIJLH,FILLED,SELL,-268.0,37.63,7.059388,,401 +2019-09-23 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,402 +2019-09-23 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,403 +2019-09-24 16:00:00,SMDIFE,FILLED,SELL,-45.0,221.08,6.9640200000000005,,402 +2019-09-24 16:00:00,YIVYGH,FILLED,SELL,-215.0,46.62,7.01631,,403 +2019-09-24 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,404 +2019-09-24 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,405 +2019-09-25 16:00:00,CEMOJE,FILLED,BUY,3.0,1219.79,2.561559,,404 +2019-09-25 16:00:00,GTKILW,FILLED,BUY,3.0,1211.09,2.5432889999999997,,405 +2019-09-25 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,406 +2019-09-25 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,407 +2019-09-26 16:00:00,CEMOJE,FILLED,SELL,-1.0,1244.48,0.871136,,406 +2019-09-26 16:00:00,GTKILW,FILLED,SELL,-1.0,1246.61,0.8726269999999999,,407 +2019-09-27 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,408 +2019-09-27 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,409 +2019-09-30 16:00:00,FFNDVM,FILLED,BUY,1485.0,9.14,9.50103,,408 +2019-09-30 16:00:00,CEMOJE,FILLED,BUY,1.0,1224.57,0.8571989999999999,,409 +2019-09-30 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,410 +2019-09-30 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,411 +2019-09-30 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,412 +2019-10-01 16:00:00,FFNDVM,FILLED,SELL,-1485.0,9.19,9.553005,,410 +2019-10-01 16:00:00,CEMOJE,FILLED,SELL,-11.0,1220.7,9.39939,,411 +2019-10-01 16:00:00,GTKILW,FILLED,SELL,-10.0,1210.63,8.47441,,412 +2019-10-04 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,413 +2019-10-07 16:00:00,RUKNMV,FILLED,BUY,235.0,48.91,8.045694999999998,,413 +2019-10-07 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,414 +2019-10-08 16:00:00,RUKNMV,FILLED,BUY,2.0,48.25,0.06755,,414 +2019-10-08 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,415 +2019-10-08 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,416 +2019-10-09 16:00:00,ISIJLH,FILLED,BUY,266.0,37.08,6.9042959999999995,,415 +2019-10-09 16:00:00,RUKNMV,FILLED,SELL,-29.0,48.18,0.978054,,416 +2019-10-09 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,417 +2019-10-09 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,418 +2019-10-10 16:00:00,ISIJLH,FILLED,BUY,3.0,37.0,0.0777,,417 +2019-10-10 16:00:00,RUKNMV,FILLED,SELL,-1.0,48.32,0.033824,,418 +2019-10-11 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,419 +2019-10-11 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,420 +2019-10-14 16:00:00,ISIJLH,FILLED,SELL,-4.0,37.58,0.105224,,419 +2019-10-14 16:00:00,RUKNMV,FILLED,SELL,-5.0,49.15,0.172025,,420 +2019-10-14 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,421 +2019-10-15 16:00:00,ISIJLH,FILLED,BUY,1.0,37.46,0.026222,,421 +2019-10-15 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,422 +2019-10-15 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,423 +2019-10-15 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,424 +2019-10-16 16:00:00,HECLON,FILLED,BUY,140.0,71.11,6.96878,,422 +2019-10-16 16:00:00,ISIJLH,FILLED,SELL,-3.0,37.9,0.07959,,423 +2019-10-16 16:00:00,RUKNMV,FILLED,SELL,-3.0,50.14,0.105294,,424 +2019-10-16 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,425 +2019-10-16 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,426 +2019-10-16 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,427 +2019-10-17 16:00:00,HECLON,FILLED,SELL,-140.0,70.08,6.867839999999999,,425 +2019-10-17 16:00:00,ISIJLH,FILLED,BUY,1.0,37.8,0.026459999999999997,,426 +2019-10-17 16:00:00,RUKNMV,FILLED,SELL,-199.0,49.9,6.9510700000000005,,427 +2019-10-17 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,428 +2019-10-18 16:00:00,ISIJLH,FILLED,SELL,-1.0,37.81,0.026467,,428 +2019-10-18 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,429 +2019-10-21 16:00:00,ISIJLH,FILLED,SELL,-4.0,38.42,0.107576,,429 +2019-10-21 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,430 +2019-10-21 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,431 +2019-10-22 16:00:00,ISIJLH,FILLED,BUY,2.0,37.83,0.052961999999999995,,430 +2019-10-22 16:00:00,RUKNMV,FILLED,BUY,197.0,50.46,6.9584340000000005,,431 +2019-10-22 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,432 +2019-10-22 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,433 +2019-10-23 16:00:00,ISIJLH,FILLED,BUY,43.0,38.0,1.1438,,432 +2019-10-23 16:00:00,RUKNMV,FILLED,BUY,32.0,50.76,1.137024,,433 +2019-10-23 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,434 +2019-10-23 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,435 +2019-10-24 16:00:00,ISIJLH,FILLED,SELL,-304.0,37.74,8.031072,,434 +2019-10-24 16:00:00,RUKNMV,FILLED,SELL,-2.0,50.98,0.07137199999999999,,435 +2019-10-25 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,436 +2019-10-28 16:00:00,RUKNMV,FILLED,SELL,-2.0,51.98,0.07277199999999999,,436 +2019-10-28 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,437 +2019-10-28 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,438 +2019-10-29 16:00:00,YIVYGH,FILLED,BUY,255.0,45.19,8.066415,,437 +2019-10-29 16:00:00,RUKNMV,FILLED,SELL,-1.0,51.53,0.036071,,438 +2019-10-29 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,439 +2019-10-29 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,440 +2019-10-30 16:00:00,YIVYGH,FILLED,SELL,-255.0,45.35,8.094975,,439 +2019-10-30 16:00:00,RUKNMV,FILLED,SELL,-2.0,51.88,0.072632,,440 +2019-10-30 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,441 +2019-10-30 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,442 +2019-10-30 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,443 +2019-10-31 16:00:00,YIVYGH,FILLED,BUY,429.0,44.75,13.438425,,441 +2019-10-31 16:00:00,MCCZID,FILLED,BUY,498.0,38.39,13.382754,,442 +2019-10-31 16:00:00,RUKNMV,FILLED,BUY,146.0,51.73,5.286806,,443 +2019-10-31 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,444 +2019-10-31 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,445 +2019-10-31 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,446 +2019-11-01 16:00:00,YIVYGH,FILLED,SELL,-429.0,45.19,13.570557,,444 +2019-11-01 16:00:00,MCCZID,FILLED,BUY,2.0,38.67,0.054138,,445 +2019-11-01 16:00:00,RUKNMV,FILLED,BUY,3.0,52.18,0.109578,,446 +2019-11-01 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,447 +2019-11-01 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,448 +2019-11-01 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,449 +2019-11-04 16:00:00,YIVYGH,FILLED,BUY,429.0,45.17,13.564551,,447 +2019-11-04 16:00:00,BPSPGV,FILLED,BUY,133.0,144.96,13.495776,,448 +2019-11-04 16:00:00,RUKNMV,FILLED,SELL,-4.0,52.52,0.14705600000000002,,449 +2019-11-04 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,450 +2019-11-04 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,451 +2019-11-04 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,452 +2019-11-04 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,453 +2019-11-05 16:00:00,YIVYGH,FILLED,SELL,-74.0,43.89,2.273502,,450 +2019-11-05 16:00:00,BPSPGV,FILLED,SELL,-26.0,145.0,2.639,,451 +2019-11-05 16:00:00,MCCZID,FILLED,SELL,-500.0,38.05,13.3175,,452 +2019-11-05 16:00:00,RUKNMV,FILLED,SELL,-72.0,52.83,2.662632,,453 +2019-11-05 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,454 +2019-11-05 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,455 +2019-11-05 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,456 +2019-11-05 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,457 +2019-11-06 16:00:00,YIVYGH,FILLED,SELL,-128.0,44.32,3.971072,,454 +2019-11-06 16:00:00,BPSPGV,FILLED,SELL,-107.0,144.17,10.798333,,455 +2019-11-06 16:00:00,MCCZID,FILLED,BUY,269.0,37.62,7.083845999999999,,456 +2019-11-06 16:00:00,RUKNMV,FILLED,SELL,-295.0,53.29,11.004385,,457 +2019-11-06 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,458 +2019-11-07 16:00:00,MCCZID,FILLED,SELL,-1.0,37.36,0.026152,,458 +2019-11-07 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,459 +2019-11-07 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,460 +2019-11-08 16:00:00,YIVYGH,FILLED,SELL,-227.0,44.68,7.099652000000001,,459 +2019-11-08 16:00:00,MCCZID,FILLED,BUY,5.0,36.86,0.12901,,460 +2019-11-08 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,461 +2019-11-11 16:00:00,MCCZID,FILLED,BUY,1.0,36.91,0.025837,,461 +2019-11-11 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,462 +2019-11-11 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,463 +2019-11-11 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,464 +2019-11-12 16:00:00,BPSPGV,FILLED,BUY,106.0,146.2,10.84804,,462 +2019-11-12 16:00:00,MCCZID,FILLED,BUY,148.0,36.88,3.8207680000000006,,463 +2019-11-12 16:00:00,ISIJLH,FILLED,BUY,396.0,39.4,10.92168,,464 +2019-11-12 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,465 +2019-11-12 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,466 +2019-11-12 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,467 +2019-11-13 16:00:00,HECLON,FILLED,BUY,207.0,74.3,10.76607,,465 +2019-11-13 16:00:00,MCCZID,FILLED,SELL,-1.0,36.91,0.025837,,466 +2019-11-13 16:00:00,ISIJLH,FILLED,BUY,2.0,39.17,0.054838000000000005,,467 +2019-11-13 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,468 +2019-11-13 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,469 +2019-11-13 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,470 +2019-11-13 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,471 +2019-11-14 16:00:00,BPSPGV,FILLED,SELL,-2.0,147.11,0.20595400000000005,,468 +2019-11-14 16:00:00,MCCZID,FILLED,SELL,-2.0,36.6,0.05124,,469 +2019-11-14 16:00:00,ISIJLH,FILLED,SELL,-7.0,38.95,0.190855,,470 +2019-11-14 16:00:00,RUKNMV,FILLED,BUY,288.0,53.27,10.739232,,471 +2019-11-14 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,472 +2019-11-14 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,473 +2019-11-14 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,474 +2019-11-14 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,475 +2019-11-15 16:00:00,ZIJVRO,FILLED,BUY,265.0,58.17,10.790535,,472 +2019-11-15 16:00:00,BPSPGV,FILLED,SELL,-104.0,149.0,10.8472,,473 +2019-11-15 16:00:00,ISIJLH,FILLED,BUY,3.0,39.17,0.082257,,474 +2019-11-15 16:00:00,RUKNMV,FILLED,SELL,-2.0,53.75,0.07525,,475 +2019-11-15 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,476 +2019-11-15 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,477 +2019-11-15 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,478 +2019-11-15 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,479 +2019-11-15 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,480 +2019-11-15 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,481 +2019-11-18 16:00:00,HECLON,FILLED,SELL,-73.0,74.37,3.800307,,476 +2019-11-18 16:00:00,ZIJVRO,FILLED,SELL,-265.0,57.71,10.705205,,477 +2019-11-18 16:00:00,BPSPGV,FILLED,BUY,66.0,150.0,6.93,,478 +2019-11-18 16:00:00,MCCZID,FILLED,SELL,-152.0,37.4,3.97936,,479 +2019-11-18 16:00:00,ISIJLH,FILLED,SELL,-142.0,39.25,3.90145,,480 +2019-11-18 16:00:00,RUKNMV,FILLED,SELL,-101.0,53.84,3.806488,,481 +2019-11-18 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,482 +2019-11-18 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,483 +2019-11-18 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,484 +2019-11-18 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,485 +2019-11-19 16:00:00,BPSPGV,FILLED,SELL,-66.0,150.85,6.96927,,482 +2019-11-19 16:00:00,MCCZID,FILLED,BUY,1.0,37.45,0.026215,,483 +2019-11-19 16:00:00,ISIJLH,FILLED,SELL,-1.0,38.92,0.027244,,484 +2019-11-19 16:00:00,RUKNMV,FILLED,SELL,-185.0,54.15,7.012425,,485 +2019-11-19 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,486 +2019-11-19 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,487 +2019-11-19 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,488 +2019-11-19 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,489 +2019-11-19 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,490 +2019-11-20 16:00:00,LUZLYG,FILLED,BUY,303.0,32.8,6.95688,,486 +2019-11-20 16:00:00,HECLON,FILLED,SELL,-1.0,74.7,0.05229,,487 +2019-11-20 16:00:00,MCCZID,FILLED,SELL,-268.0,37.59,7.051884,,488 +2019-11-20 16:00:00,ISIJLH,FILLED,BUY,11.0,37.24,0.286748,,489 +2019-11-20 16:00:00,RUKNMV,FILLED,BUY,184.0,53.71,6.917847999999999,,490 +2019-11-20 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,491 +2019-11-20 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,492 +2019-11-20 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,493 +2019-11-20 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,494 +2019-11-21 16:00:00,LUZLYG,FILLED,BUY,2.0,32.82,0.045948,,491 +2019-11-21 16:00:00,HECLON,FILLED,BUY,2.0,74.01,0.103614,,492 +2019-11-21 16:00:00,ISIJLH,FILLED,BUY,6.0,37.06,0.155652,,493 +2019-11-21 16:00:00,RUKNMV,FILLED,BUY,2.0,53.84,0.075376,,494 +2019-11-21 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,495 +2019-11-21 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,496 +2019-11-22 16:00:00,LUZLYG,FILLED,SELL,-305.0,32.96,7.0369600000000005,,495 +2019-11-22 16:00:00,ISIJLH,FILLED,SELL,-3.0,37.76,0.079296,,496 +2019-11-22 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,497 +2019-11-22 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,498 +2019-11-22 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,499 +2019-11-25 16:00:00,HECLON,FILLED,SELL,-2.0,74.9,0.10486,,497 +2019-11-25 16:00:00,ISIJLH,FILLED,SELL,-1.0,37.87,0.026509,,498 +2019-11-25 16:00:00,RUKNMV,FILLED,SELL,-3.0,54.4,0.11424,,499 +2019-11-25 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,500 +2019-11-25 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,501 +2019-11-26 16:00:00,ISIJLH,FILLED,BUY,6.0,37.21,0.156282,,500 +2019-11-26 16:00:00,RUKNMV,FILLED,BUY,3.0,53.98,0.113358,,501 +2019-11-26 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,502 +2019-11-26 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,503 +2019-11-26 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,504 +2019-11-26 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,505 +2019-11-26 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,506 +2019-11-26 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,507 +2019-11-27 16:00:00,LUZLYG,FILLED,BUY,460.0,33.49,10.78378,,502 +2019-11-27 16:00:00,HECLON,FILLED,BUY,70.0,75.84,3.71616,,503 +2019-11-27 16:00:00,ZIJVRO,FILLED,BUY,260.0,58.53,10.65246,,504 +2019-11-27 16:00:00,BPSPGV,FILLED,BUY,101.0,152.33,10.769731000000002,,505 +2019-11-27 16:00:00,ISIJLH,FILLED,BUY,140.0,37.42,3.66716,,506 +2019-11-27 16:00:00,RUKNMV,FILLED,BUY,99.0,54.14,3.751902,,507 +2019-11-27 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,508 +2019-11-27 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,509 +2019-11-27 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,510 +2019-11-27 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,511 +2019-11-27 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,512 +2019-11-27 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,513 +2019-11-27 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,514 +2019-11-29 13:00:00,SMDIFE,FILLED,BUY,57.0,266.2,10.62138,,508 +2019-11-29 13:00:00,LUZLYG,FILLED,SELL,-1.0,33.37,0.023359,,509 +2019-11-29 13:00:00,HECLON,FILLED,SELL,-1.0,75.49,0.052842999999999994,,510 +2019-11-29 13:00:00,ZIJVRO,FILLED,BUY,2.0,58.15,0.08141,,511 +2019-11-29 13:00:00,BPSPGV,FILLED,SELL,-101.0,152.0,10.7464,,512 +2019-11-29 13:00:00,ISIJLH,FILLED,SELL,-410.0,37.74,10.83138,,513 +2019-11-29 13:00:00,RUKNMV,FILLED,SELL,-3.0,54.29,0.114009,,514 +2019-11-29 13:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,515 +2019-11-29 13:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,516 +2019-11-29 13:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,517 +2019-11-29 13:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,518 +2019-11-29 13:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,519 +2019-12-02 16:00:00,SMDIFE,FILLED,SELL,-57.0,267.33,10.666467,,515 +2019-12-02 16:00:00,LUZLYG,FILLED,BUY,1.0,33.45,0.023415,,516 +2019-12-02 16:00:00,HECLON,FILLED,BUY,2.0,75.44,0.105616,,517 +2019-12-02 16:00:00,ZIJVRO,FILLED,BUY,2.0,58.55,0.08197,,518 +2019-12-02 16:00:00,RUKNMV,FILLED,SELL,-1.0,54.3,0.038009999999999995,,519 +2019-12-02 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,520 +2019-12-02 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,521 +2019-12-02 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,522 +2019-12-02 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,523 +2019-12-03 16:00:00,LUZLYG,FILLED,SELL,-92.0,32.84,2.1148960000000003,,520 +2019-12-03 16:00:00,HECLON,FILLED,SELL,-39.0,73.2,1.99836,,521 +2019-12-03 16:00:00,ZIJVRO,FILLED,SELL,-51.0,56.83,2.028831,,522 +2019-12-03 16:00:00,RUKNMV,FILLED,SELL,-52.0,52.99,1.928836,,523 +2019-12-03 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,524 +2019-12-03 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,525 +2019-12-03 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,526 +2019-12-03 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,527 +2019-12-03 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,528 +2019-12-03 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,529 +2019-12-04 16:00:00,SMDIFE,FILLED,BUY,47.0,261.0,8.5869,,524 +2019-12-04 16:00:00,LUZLYG,FILLED,BUY,6.0,33.08,0.138936,,525 +2019-12-04 16:00:00,HECLON,FILLED,BUY,2.0,73.56,0.102984,,526 +2019-12-04 16:00:00,ZIJVRO,FILLED,BUY,6.0,56.61,0.23776199999999997,,527 +2019-12-04 16:00:00,MCCZID,FILLED,BUY,323.0,38.16,8.627975999999999,,528 +2019-12-04 16:00:00,RUKNMV,FILLED,BUY,5.0,52.58,0.18402999999999997,,529 +2019-12-04 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,530 +2019-12-04 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,531 +2019-12-04 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,532 +2019-12-04 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,533 +2019-12-04 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,534 +2019-12-04 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,535 +2019-12-04 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,536 +2019-12-05 16:00:00,SMDIFE,FILLED,BUY,8.0,263.8,1.47728,,530 +2019-12-05 16:00:00,LUZLYG,FILLED,BUY,61.0,33.16,1.4159319999999995,,531 +2019-12-05 16:00:00,HECLON,FILLED,BUY,27.0,74.51,1.4082390000000002,,532 +2019-12-05 16:00:00,OCHCAU,FILLED,BUY,329.0,44.05,10.144715,,533 +2019-12-05 16:00:00,ZIJVRO,FILLED,SELL,-219.0,56.41,8.647653,,534 +2019-12-05 16:00:00,MCCZID,FILLED,BUY,55.0,38.35,1.476475,,535 +2019-12-05 16:00:00,RUKNMV,FILLED,BUY,37.0,53.31,1.380729,,536 +2019-12-05 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,537 +2019-12-05 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,538 +2019-12-05 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,539 +2019-12-05 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,540 +2019-12-05 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,541 +2019-12-05 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,542 +2019-12-05 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,543 +2019-12-06 16:00:00,SMDIFE,FILLED,SELL,-55.0,267.58,10.30183,,537 +2019-12-06 16:00:00,LUZLYG,FILLED,BUY,1.0,33.69,0.023583,,538 +2019-12-06 16:00:00,HECLON,FILLED,SELL,-1.0,75.91,0.053137,,539 +2019-12-06 16:00:00,OCHCAU,FILLED,BUY,3.0,43.89,0.092169,,540 +2019-12-06 16:00:00,ZIJVRO,FILLED,BUY,257.0,56.67,10.194933,,541 +2019-12-06 16:00:00,BPSPGV,FILLED,BUY,96.0,151.0,10.1472,,542 +2019-12-06 16:00:00,MCCZID,FILLED,BUY,1.0,38.24,0.026768,,543 +2019-12-06 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,544 +2019-12-06 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,545 +2019-12-06 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,546 +2019-12-06 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,547 +2019-12-06 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,548 +2019-12-06 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,549 +2019-12-06 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,550 +2019-12-09 16:00:00,LUZLYG,FILLED,SELL,-7.0,33.49,0.164101,,544 +2019-12-09 16:00:00,HECLON,FILLED,SELL,-3.0,75.25,0.158025,,545 +2019-12-09 16:00:00,OCHCAU,FILLED,SELL,-2.0,43.89,0.061446,,546 +2019-12-09 16:00:00,ZIJVRO,FILLED,SELL,-257.0,56.5,10.16435,,547 +2019-12-09 16:00:00,BPSPGV,FILLED,SELL,-96.0,151.05,10.15056,,548 +2019-12-09 16:00:00,MCCZID,FILLED,SELL,-2.0,38.2,0.05348000000000001,,549 +2019-12-09 16:00:00,RUKNMV,FILLED,SELL,-5.0,54.18,0.18963,,550 +2019-12-09 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,551 +2019-12-09 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,552 +2019-12-09 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,553 +2019-12-09 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,554 +2019-12-09 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,555 +2019-12-09 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,556 +2019-12-10 16:00:00,SMDIFE,FILLED,BUY,54.0,268.67,10.155726,,551 +2019-12-10 16:00:00,LUZLYG,FILLED,BUY,2.0,33.4,0.04676,,552 +2019-12-10 16:00:00,HECLON,FILLED,SELL,-190.0,75.1,9.9883,,553 +2019-12-10 16:00:00,OCHCAU,FILLED,SELL,-1.0,43.84,0.030688000000000003,,554 +2019-12-10 16:00:00,ZIJVRO,FILLED,BUY,255.0,56.73,10.126305,,555 +2019-12-10 16:00:00,RUKNMV,FILLED,BUY,2.0,53.46,0.074844,,556 +2019-12-10 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,557 +2019-12-10 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,558 +2019-12-10 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,559 +2019-12-10 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,560 +2019-12-10 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,561 +2019-12-10 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,562 +2019-12-10 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,563 +2019-12-11 16:00:00,SMDIFE,FILLED,SELL,-54.0,268.73,10.157994,,557 +2019-12-11 16:00:00,LUZLYG,FILLED,SELL,-431.0,33.55,10.122035,,558 +2019-12-11 16:00:00,OCHCAU,FILLED,SELL,-101.0,44.3,3.1320099999999993,,559 +2019-12-11 16:00:00,CEMOJE,FILLED,BUY,7.0,1351.52,6.6224479999999994,,560 +2019-12-11 16:00:00,ZIJVRO,FILLED,SELL,-255.0,56.91,10.158435,,561 +2019-12-11 16:00:00,MCCZID,FILLED,SELL,-116.0,38.36,3.1148320000000003,,562 +2019-12-11 16:00:00,RUKNMV,FILLED,SELL,-81.0,53.74,3.0470580000000003,,563 +2019-12-11 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,564 +2019-12-11 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,565 +2019-12-11 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,566 +2019-12-11 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,567 +2019-12-12 16:00:00,OCHCAU,FILLED,SELL,-228.0,44.52,7.105392000000001,,564 +2019-12-12 16:00:00,MCCZID,FILLED,SELL,-261.0,38.21,6.980967,,565 +2019-12-12 16:00:00,ISIJLH,FILLED,BUY,264.0,38.2,7.059360000000001,,566 +2019-12-12 16:00:00,RUKNMV,FILLED,BUY,2.0,53.37,0.07471799999999999,,567 +2019-12-12 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,568 +2019-12-12 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,569 +2019-12-12 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,570 +2019-12-12 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,571 +2019-12-13 16:00:00,BPSPGV,FILLED,BUY,65.0,153.23,6.971964999999999,,568 +2019-12-13 16:00:00,MCCZID,FILLED,BUY,261.0,38.52,7.037604000000001,,569 +2019-12-13 16:00:00,ISIJLH,FILLED,SELL,-264.0,38.2,7.059360000000001,,570 +2019-12-13 16:00:00,RUKNMV,FILLED,SELL,-4.0,53.99,0.151172,,571 +2019-12-13 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,572 +2019-12-13 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,573 +2019-12-13 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,574 +2019-12-13 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,575 +2019-12-16 16:00:00,GTKILW,FILLED,BUY,7.0,1349.45,6.612305,,572 +2019-12-16 16:00:00,BPSPGV,FILLED,SELL,-65.0,155.11,7.057505000000001,,573 +2019-12-16 16:00:00,MCCZID,FILLED,SELL,-1.0,38.7,0.027090000000000003,,574 +2019-12-16 16:00:00,ISIJLH,FILLED,BUY,260.0,38.38,6.9851600000000005,,575 +2019-12-16 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,576 +2019-12-16 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,577 +2019-12-16 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,578 +2019-12-16 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,579 +2019-12-17 16:00:00,GTKILW,FILLED,SELL,-7.0,1360.62,6.667038,,576 +2019-12-17 16:00:00,MCCZID,FILLED,SELL,-260.0,39.33,7.158059999999999,,577 +2019-12-17 16:00:00,ISIJLH,FILLED,SELL,-260.0,38.6,7.0252,,578 +2019-12-17 16:00:00,RUKNMV,FILLED,SELL,-1.0,54.11,0.037877,,579 +2019-12-17 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,580 +2019-12-17 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,581 +2019-12-17 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,582 +2019-12-18 16:00:00,CEMOJE,FILLED,SELL,-7.0,1353.28,6.631072,,580 +2019-12-18 16:00:00,MCCZID,FILLED,BUY,256.0,39.0,6.9888,,581 +2019-12-18 16:00:00,RUKNMV,FILLED,SELL,-1.0,54.35,0.038045,,582 +2019-12-18 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,583 +2019-12-18 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,584 +2019-12-18 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,585 +2019-12-19 16:00:00,CEMOJE,FILLED,BUY,7.0,1349.94,6.614706,,583 +2019-12-19 16:00:00,MCCZID,FILLED,SELL,-256.0,39.0,6.9888,,584 +2019-12-19 16:00:00,RUKNMV,FILLED,SELL,-183.0,53.74,6.884094,,585 +2019-12-19 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,586 +2019-12-19 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,587 +2019-12-19 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,588 +2019-12-20 16:00:00,LUZLYG,FILLED,BUY,288.0,35.15,7.086239999999999,,586 +2019-12-20 16:00:00,CEMOJE,FILLED,SELL,-7.0,1356.32,6.645968,,587 +2019-12-20 16:00:00,MCCZID,FILLED,BUY,258.0,39.13,7.066878000000001,,588 +2019-12-20 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,589 +2019-12-20 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,590 +2019-12-20 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,591 +2019-12-23 16:00:00,LUZLYG,FILLED,SELL,-3.0,35.02,0.073542,,589 +2019-12-23 16:00:00,MCCZID,FILLED,SELL,-4.0,39.32,0.110096,,590 +2019-12-23 16:00:00,RUKNMV,FILLED,BUY,187.0,53.3,6.976970000000001,,591 +2019-12-23 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,592 +2019-12-23 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,593 +2019-12-23 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,594 +2019-12-23 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,595 +2019-12-23 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,596 +2019-12-23 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,597 +2019-12-23 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,598 +2019-12-24 13:00:00,LUZLYG,FILLED,BUY,1.0,35.19,0.024633,,592 +2019-12-24 13:00:00,CEMOJE,FILLED,BUY,7.0,1343.69,6.584081,,593 +2019-12-24 13:00:00,GTKILW,FILLED,BUY,7.0,1355.01,6.639549,,594 +2019-12-24 13:00:00,ZIJVRO,FILLED,BUY,170.0,59.25,7.05075,,595 +2019-12-24 13:00:00,BPSPGV,FILLED,BUY,64.0,157.41,7.051968,,596 +2019-12-24 13:00:00,MCCZID,FILLED,BUY,2.0,39.33,0.055062,,597 +2019-12-24 13:00:00,ISIJLH,FILLED,BUY,258.0,39.12,7.065071999999999,,598 +2019-12-24 13:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,599 +2019-12-24 13:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,600 +2019-12-24 13:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,601 +2019-12-24 13:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,602 +2019-12-24 13:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,603 +2019-12-24 13:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,604 +2019-12-24 13:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,605 +2019-12-24 13:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,606 +2019-12-26 16:00:00,LUZLYG,FILLED,SELL,-286.0,35.32,7.071064,,599 +2019-12-26 16:00:00,CEMOJE,FILLED,BUY,3.0,1344.92,2.824332,,600 +2019-12-26 16:00:00,GTKILW,FILLED,BUY,3.0,1343.5,2.82135,,601 +2019-12-26 16:00:00,ZIJVRO,FILLED,SELL,-170.0,59.41,7.069789999999999,,602 +2019-12-26 16:00:00,BPSPGV,FILLED,SELL,-64.0,157.56,7.058688,,603 +2019-12-26 16:00:00,MCCZID,FILLED,BUY,117.0,39.3,3.2186699999999995,,604 +2019-12-26 16:00:00,ISIJLH,FILLED,SELL,-258.0,39.0,7.0434,,605 +2019-12-26 16:00:00,RUKNMV,FILLED,BUY,85.0,54.05,3.215975,,606 +2019-12-26 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,607 +2019-12-26 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,608 +2019-12-27 16:00:00,MCCZID,FILLED,SELL,-1.0,39.45,0.027615,,607 +2019-12-27 16:00:00,RUKNMV,FILLED,SELL,-272.0,54.27,10.333008,,608 +2019-12-27 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,609 +2019-12-30 16:00:00,MCCZID,FILLED,BUY,1.0,39.3,0.027509999999999996,,609 +2019-12-30 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,610 +2019-12-30 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,611 +2019-12-30 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,612 +2019-12-30 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,613 +2019-12-30 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,614 +2019-12-31 16:00:00,LUZLYG,FILLED,BUY,322.0,35.04,7.898015999999999,,610 +2019-12-31 16:00:00,CEMOJE,FILLED,SELL,-2.0,1332.4,1.86536,,611 +2019-12-31 16:00:00,GTKILW,FILLED,SELL,-2.0,1337.35,1.87229,,612 +2019-12-31 16:00:00,BPSPGV,FILLED,BUY,71.0,156.83,7.794451,,613 +2019-12-31 16:00:00,MCCZID,FILLED,SELL,-82.0,38.78,2.225972,,614 +2019-12-31 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,615 +2019-12-31 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,616 +2020-01-02 16:00:00,BPSPGV,FILLED,SELL,-71.0,158.65,7.884905,,615 +2020-01-02 16:00:00,MCCZID,FILLED,SELL,-2.0,39.3,0.05501999999999999,,616 +2020-01-02 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,617 +2020-01-02 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,618 +2020-01-02 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,619 +2020-01-02 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,620 +2020-01-03 16:00:00,LUZLYG,FILLED,BUY,61.0,34.99,1.4940730000000002,,617 +2020-01-03 16:00:00,CEMOJE,FILLED,BUY,2.0,1370.23,1.918322,,618 +2020-01-03 16:00:00,GTKILW,FILLED,BUY,2.0,1371.68,1.920352,,619 +2020-01-03 16:00:00,MCCZID,FILLED,BUY,60.0,38.7,1.6254,,620 +2020-01-03 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,621 +2020-01-03 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,622 +2020-01-03 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,623 +2020-01-03 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,624 +2020-01-03 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,625 +2020-01-03 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,626 +2020-01-03 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,627 +2020-01-03 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,628 +2020-01-03 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,629 +2020-01-06 16:00:00,COMNHQ,FILLED,BUY,494.0,27.19,9.402302,,621 +2020-01-06 16:00:00,LUZLYG,FILLED,SELL,-383.0,34.41,9.225321,,622 +2020-01-06 16:00:00,HECLON,FILLED,BUY,171.0,78.85,9.438344999999998,,623 +2020-01-06 16:00:00,FFNDVM,FILLED,BUY,1485.0,9.1,9.45945,,624 +2020-01-06 16:00:00,BGDRAI,FILLED,BUY,1142.0,11.86,9.480884,,625 +2020-01-06 16:00:00,CEMOJE,FILLED,SELL,-10.0,1355.66,9.48962,,626 +2020-01-06 16:00:00,GTKILW,FILLED,SELL,-10.0,1359.69,9.517830000000002,,627 +2020-01-06 16:00:00,BPSPGV,FILLED,BUY,86.0,156.98,9.450195999999998,,628 +2020-01-06 16:00:00,MCCZID,FILLED,SELL,-349.0,38.82,9.483726,,629 +2020-01-06 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,630 +2020-01-06 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,631 +2020-01-06 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,632 +2020-01-06 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,633 +2020-01-06 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,634 +2020-01-06 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,635 +2020-01-07 16:00:00,COMNHQ,FILLED,SELL,-494.0,27.56,9.530248,,630 +2020-01-07 16:00:00,HECLON,FILLED,SELL,-171.0,79.19,9.479043,,631 +2020-01-07 16:00:00,FFNDVM,FILLED,SELL,-1485.0,9.15,9.511425,,632 +2020-01-07 16:00:00,CEMOJE,FILLED,BUY,9.0,1386.25,8.733375,,633 +2020-01-07 16:00:00,GTKILW,FILLED,BUY,9.0,1400.57,8.823590999999999,,634 +2020-01-07 16:00:00,BPSPGV,FILLED,SELL,-86.0,159.35,9.59287,,635 +2020-01-07 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,636 +2020-01-07 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,637 +2020-01-07 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,638 +2020-01-07 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,639 +2020-01-08 16:00:00,FFNDVM,FILLED,BUY,1079.0,9.23,6.971419,,636 +2020-01-08 16:00:00,BGDRAI,FILLED,SELL,-314.0,11.98,2.633204,,637 +2020-01-08 16:00:00,CEMOJE,FILLED,SELL,-9.0,1391.64,8.767332,,638 +2020-01-08 16:00:00,GTKILW,FILLED,SELL,-9.0,1390.61,8.760843,,639 +2020-01-08 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,640 +2020-01-08 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,641 +2020-01-08 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,642 +2020-01-09 16:00:00,FFNDVM,FILLED,SELL,-1079.0,9.29,7.016737,,640 +2020-01-09 16:00:00,BGDRAI,FILLED,BUY,16.0,12.05,0.13496,,641 +2020-01-09 16:00:00,MCCZID,FILLED,BUY,258.0,39.2,7.0795200000000005,,642 +2020-01-09 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,643 +2020-01-09 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,644 +2020-01-09 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,645 +2020-01-10 16:00:00,ZIXTLG,FILLED,BUY,786.0,12.9,7.09758,,643 +2020-01-10 16:00:00,BGDRAI,FILLED,SELL,-844.0,11.85,7.000979999999999,,644 +2020-01-10 16:00:00,MCCZID,FILLED,SELL,-258.0,38.98,7.039787999999999,,645 +2020-01-10 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,646 +2020-01-10 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,647 +2020-01-10 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,648 +2020-01-13 16:00:00,ZIXTLG,FILLED,SELL,-786.0,13.05,7.180110000000001,,646 +2020-01-13 16:00:00,BGDRAI,FILLED,BUY,873.0,11.71,7.155981,,647 +2020-01-13 16:00:00,MCCZID,FILLED,BUY,258.0,39.53,7.139118,,648 +2020-01-13 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,649 +2020-01-13 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,650 +2020-01-13 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,651 +2020-01-13 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,652 +2020-01-14 16:00:00,OCHCAU,FILLED,BUY,289.0,47.96,9.702308,,649 +2020-01-14 16:00:00,ZIXTLG,FILLED,BUY,1025.0,13.33,9.564275,,650 +2020-01-14 16:00:00,BGDRAI,FILLED,BUY,271.0,12.12,2.299164,,651 +2020-01-14 16:00:00,MCCZID,FILLED,SELL,-258.0,39.31,7.099386000000001,,652 +2020-01-14 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,653 +2020-01-14 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,654 +2020-01-14 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,655 +2020-01-14 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,656 +2020-01-15 16:00:00,OCHCAU,FILLED,SELL,-289.0,47.92,9.694216,,653 +2020-01-15 16:00:00,ZIXTLG,FILLED,SELL,-1025.0,13.06,9.37055,,654 +2020-01-15 16:00:00,BGDRAI,FILLED,BUY,8.0,12.0,0.0672,,655 +2020-01-15 16:00:00,MCCZID,FILLED,BUY,346.0,40.25,9.74855,,656 +2020-01-15 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,657 +2020-01-15 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,658 +2020-01-15 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,659 +2020-01-15 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,660 +2020-01-16 16:00:00,HECLON,FILLED,BUY,170.0,81.94,9.75086,,657 +2020-01-16 16:00:00,OCHCAU,FILLED,BUY,288.0,48.37,9.751392,,658 +2020-01-16 16:00:00,BGDRAI,FILLED,BUY,16.0,11.92,0.133504,,659 +2020-01-16 16:00:00,MCCZID,FILLED,SELL,-6.0,40.79,0.171318,,660 +2020-01-16 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,661 +2020-01-16 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,662 +2020-01-16 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,663 +2020-01-16 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,664 +2020-01-16 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,665 +2020-01-17 16:00:00,HECLON,FILLED,SELL,-170.0,81.11,9.65209,,661 +2020-01-17 16:00:00,OCHCAU,FILLED,SELL,-6.0,49.32,0.207144,,662 +2020-01-17 16:00:00,BGDRAI,FILLED,SELL,-1168.0,11.84,9.680383999999998,,663 +2020-01-17 16:00:00,BPSPGV,FILLED,BUY,83.0,167.41,9.726521,,664 +2020-01-17 16:00:00,MCCZID,FILLED,SELL,-340.0,40.65,9.6747,,665 +2020-01-17 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,666 +2020-01-17 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,667 +2020-01-17 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,668 +2020-01-21 16:00:00,OCHCAU,FILLED,SELL,-282.0,48.93,9.658782,,666 +2020-01-21 16:00:00,ZIJVRO,FILLED,BUY,167.0,59.81,6.991789,,667 +2020-01-21 16:00:00,BPSPGV,FILLED,SELL,-83.0,166.78,9.689918,,668 +2020-01-21 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,669 +2020-01-21 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,670 +2020-01-21 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,671 +2020-01-21 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,672 +2020-01-22 16:00:00,HECLON,FILLED,BUY,124.0,80.09,6.951811999999999,,669 +2020-01-22 16:00:00,BGDRAI,FILLED,BUY,856.0,11.71,7.016632,,670 +2020-01-22 16:00:00,ZIJVRO,FILLED,SELL,-167.0,61.04,7.135576,,671 +2020-01-22 16:00:00,MCCZID,FILLED,BUY,247.0,40.33,6.973057,,672 +2020-01-22 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,673 +2020-01-22 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,674 +2020-01-22 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,675 +2020-01-22 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,676 +2020-01-23 16:00:00,HECLON,FILLED,SELL,-124.0,79.51,6.9014679999999995,,673 +2020-01-23 16:00:00,OCHCAU,FILLED,BUY,203.0,49.0,6.9629,,674 +2020-01-23 16:00:00,BGDRAI,FILLED,BUY,21.0,11.75,0.172725,,675 +2020-01-23 16:00:00,MCCZID,FILLED,SELL,-247.0,40.17,6.945393,,676 +2020-01-23 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,677 +2020-01-23 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,678 +2020-01-23 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,679 +2020-01-23 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,680 +2020-01-23 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,681 +2020-01-23 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,682 +2020-01-24 16:00:00,COMNHQ,FILLED,BUY,346.0,28.85,6.98747,,677 +2020-01-24 16:00:00,YIVYGH,FILLED,BUY,218.0,44.9,6.8517399999999995,,678 +2020-01-24 16:00:00,OCHCAU,FILLED,SELL,-203.0,49.22,6.994162,,679 +2020-01-24 16:00:00,ZIXTLG,FILLED,BUY,834.0,11.8,6.88884,,680 +2020-01-24 16:00:00,BGDRAI,FILLED,SELL,-29.0,11.84,0.240352,,681 +2020-01-24 16:00:00,MCCZID,FILLED,BUY,245.0,40.93,7.019495,,682 +2020-01-24 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,683 +2020-01-24 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,684 +2020-01-24 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,685 +2020-01-24 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,686 +2020-01-24 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,687 +2020-01-24 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,688 +2020-01-27 16:00:00,COMNHQ,FILLED,SELL,-346.0,26.57,6.435254,,683 +2020-01-27 16:00:00,YIVYGH,FILLED,SELL,-218.0,43.92,6.702191999999999,,684 +2020-01-27 16:00:00,ZIXTLG,FILLED,SELL,-834.0,11.32,6.6086160000000005,,685 +2020-01-27 16:00:00,BGDRAI,FILLED,SELL,-848.0,11.45,6.796719999999999,,686 +2020-01-27 16:00:00,ZIJVRO,FILLED,BUY,145.0,66.72,6.77208,,687 +2020-01-27 16:00:00,MCCZID,FILLED,BUY,5.0,39.4,0.1379,,688 +2020-01-27 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,689 +2020-01-27 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,690 +2020-01-27 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,691 +2020-01-27 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,692 +2020-01-27 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,693 +2020-01-27 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,694 +2020-01-28 16:00:00,OCHCAU,FILLED,BUY,209.0,47.68,6.9755840000000005,,689 +2020-01-28 16:00:00,ZIXTLG,FILLED,BUY,914.0,11.11,7.108178,,690 +2020-01-28 16:00:00,GTKILW,FILLED,BUY,6.0,1430.73,6.009066000000001,,691 +2020-01-28 16:00:00,ZIJVRO,FILLED,SELL,-145.0,66.5,6.74975,,692 +2020-01-28 16:00:00,HCDUCB,FILLED,BUY,179.0,56.25,7.048125,,693 +2020-01-28 16:00:00,MCCZID,FILLED,SELL,-250.0,39.32,6.881,,694 +2020-01-28 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,695 +2020-01-28 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,696 +2020-01-28 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,697 +2020-01-28 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,698 +2020-01-28 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,699 +2020-01-29 16:00:00,OCHCAU,FILLED,SELL,-209.0,47.97,7.018011,,695 +2020-01-29 16:00:00,ZIXTLG,FILLED,BUY,123.0,11.42,0.983262,,696 +2020-01-29 16:00:00,BGDRAI,FILLED,BUY,999.0,12.55,8.776215,,697 +2020-01-29 16:00:00,GTKILW,FILLED,SELL,-6.0,1450.49,6.092058000000001,,698 +2020-01-29 16:00:00,HCDUCB,FILLED,SELL,-179.0,56.16,7.036847999999999,,699 +2020-01-29 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,700 +2020-01-29 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,701 +2020-01-29 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,702 +2020-01-29 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,703 +2020-01-30 16:00:00,OCHCAU,FILLED,BUY,325.0,46.54,10.58785,,700 +2020-01-30 16:00:00,ZIXTLG,FILLED,SELL,-1037.0,11.1,8.05749,,701 +2020-01-30 16:00:00,BGDRAI,FILLED,BUY,186.0,12.93,1.683486,,702 +2020-01-30 16:00:00,ISIJLH,FILLED,BUY,413.0,36.47,10.543477,,703 +2020-01-30 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,704 +2020-01-30 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,705 +2020-01-30 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,706 +2020-01-31 16:00:00,OCHCAU,FILLED,SELL,-325.0,46.91,10.672024999999998,,704 +2020-01-31 16:00:00,BGDRAI,FILLED,SELL,-1185.0,12.65,10.493175,,705 +2020-01-31 16:00:00,ISIJLH,FILLED,SELL,-413.0,37.3,10.78343,,706 +2020-01-31 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,707 +2020-01-31 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,708 +2020-02-03 16:00:00,XUEHVZ,FILLED,BUY,7.0,2013.51,9.866199,,707 +2020-02-03 16:00:00,ZIXTLG,FILLED,BUY,1381.0,11.19,10.817373,,708 +2020-02-03 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,709 +2020-02-03 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,710 +2020-02-04 16:00:00,XUEHVZ,FILLED,SELL,-7.0,2009.98,9.848902,,709 +2020-02-04 16:00:00,ZIXTLG,FILLED,SELL,-41.0,11.88,0.34095600000000004,,710 +2020-02-04 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,711 +2020-02-04 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,712 +2020-02-04 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,713 +2020-02-05 16:00:00,YIVYGH,FILLED,BUY,346.0,44.74,10.836028,,711 +2020-02-05 16:00:00,OCHCAU,FILLED,BUY,322.0,48.33,10.893582,,712 +2020-02-05 16:00:00,ZIXTLG,FILLED,SELL,-65.0,12.42,0.56511,,713 +2020-02-05 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,714 +2020-02-05 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,715 +2020-02-05 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,716 +2020-02-05 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,717 +2020-02-06 16:00:00,YIVYGH,FILLED,SELL,-346.0,44.76,10.840872,,714 +2020-02-06 16:00:00,OCHCAU,FILLED,SELL,-322.0,48.71,10.979234,,715 +2020-02-06 16:00:00,ZIXTLG,FILLED,SELL,-1275.0,12.4,11.067,,716 +2020-02-06 16:00:00,RUKNMV,FILLED,BUY,317.0,48.36,10.731084,,717 +2020-02-06 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,718 +2020-02-06 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,719 +2020-02-06 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,720 +2020-02-06 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,721 +2020-02-07 16:00:00,CEMOJE,FILLED,BUY,10.0,1477.66,10.34362,,718 +2020-02-07 16:00:00,GTKILW,FILLED,BUY,10.0,1473.15,10.31205,,719 +2020-02-07 16:00:00,HCDUCB,FILLED,BUY,257.0,57.97,10.428802999999998,,720 +2020-02-07 16:00:00,RUKNMV,FILLED,SELL,-317.0,47.77,10.600163,,721 +2020-02-07 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,722 +2020-02-07 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,723 +2020-02-07 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,724 +2020-02-07 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,725 +2020-02-10 16:00:00,ZIXTLG,FILLED,BUY,1301.0,11.67,10.627869,,722 +2020-02-10 16:00:00,CEMOJE,FILLED,SELL,-10.0,1479.31,10.35517,,723 +2020-02-10 16:00:00,GTKILW,FILLED,SELL,-10.0,1479.84,10.35888,,724 +2020-02-10 16:00:00,HCDUCB,FILLED,BUY,12.0,56.4,0.47376,,725 +2020-02-10 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,726 +2020-02-10 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,727 +2020-02-10 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,728 +2020-02-10 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,729 +2020-02-11 16:00:00,RLSRXX,FILLED,BUY,289.0,53.19,10.760337,,726 +2020-02-11 16:00:00,XUEHVZ,FILLED,BUY,7.0,2149.23,10.531227,,727 +2020-02-11 16:00:00,ZIXTLG,FILLED,SELL,-1301.0,12.44,11.329108,,728 +2020-02-11 16:00:00,HCDUCB,FILLED,SELL,-269.0,57.93,10.908219,,729 +2020-02-11 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,730 +2020-02-11 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,731 +2020-02-12 16:00:00,RLSRXX,FILLED,SELL,-289.0,54.52,11.029396,,730 +2020-02-12 16:00:00,XUEHVZ,FILLED,SELL,-7.0,2158.24,10.575376,,731 +2020-02-12 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,732 +2020-02-12 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,733 +2020-02-13 16:00:00,YIVYGH,FILLED,BUY,221.0,45.9,7.1007299999999995,,732 +2020-02-13 16:00:00,HCDUCB,FILLED,BUY,172.0,59.09,7.114436000000001,,733 +2020-02-13 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,734 +2020-02-13 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,735 +2020-02-13 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,736 +2020-02-14 16:00:00,YIVYGH,FILLED,SELL,-221.0,46.08,7.128576,,734 +2020-02-14 16:00:00,HCDUCB,FILLED,SELL,-172.0,60.15,7.24206,,735 +2020-02-14 16:00:00,MCCZID,FILLED,BUY,276.0,36.96,7.140672,,736 +2020-02-14 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,737 +2020-02-18 16:00:00,MCCZID,FILLED,SELL,-276.0,36.51,7.053732,,737 +2020-02-18 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,738 +2020-02-19 16:00:00,RUKNMV,FILLED,BUY,212.0,47.28,7.016352,,738 +2020-02-19 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,739 +2020-02-19 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,740 +2020-02-20 16:00:00,HCDUCB,FILLED,BUY,166.0,59.99,6.970838,,739 +2020-02-20 16:00:00,RUKNMV,FILLED,SELL,-212.0,47.01,6.976283999999999,,740 +2020-02-20 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,741 +2020-02-20 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,742 +2020-02-21 16:00:00,HCDUCB,FILLED,SELL,-166.0,58.63,6.812806,,741 +2020-02-21 16:00:00,MCCZID,FILLED,BUY,278.0,35.75,6.95695,,742 +2020-02-21 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,743 +2020-02-21 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,744 +2020-02-21 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,745 +2020-02-21 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,746 +2020-02-21 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,747 +2020-02-24 16:00:00,RLSRXX,FILLED,BUY,187.0,48.09,6.294981,,743 +2020-02-24 16:00:00,CEMOJE,FILLED,BUY,6.0,1482.62,6.227003999999999,,744 +2020-02-24 16:00:00,GTKILW,FILLED,BUY,6.0,1479.45,6.213690000000001,,745 +2020-02-24 16:00:00,HCDUCB,FILLED,BUY,175.0,53.06,6.49985,,746 +2020-02-24 16:00:00,MCCZID,FILLED,SELL,-278.0,35.25,6.85965,,747 +2020-02-24 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,748 +2020-02-24 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,749 +2020-02-24 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,750 +2020-02-24 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,751 +2020-02-24 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,752 +2020-02-24 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,753 +2020-02-25 16:00:00,RLSRXX,FILLED,BUY,16.0,51.15,0.57288,,748 +2020-02-25 16:00:00,YIVYGH,FILLED,BUY,223.0,44.69,6.976108999999999,,749 +2020-02-25 16:00:00,CEMOJE,FILLED,BUY,1.0,1421.28,0.994896,,750 +2020-02-25 16:00:00,GTKILW,FILLED,BUY,1.0,1428.36,0.999852,,751 +2020-02-25 16:00:00,HCDUCB,FILLED,SELL,-175.0,54.75,6.706875,,752 +2020-02-25 16:00:00,MCCZID,FILLED,BUY,288.0,34.7,6.99552,,753 +2020-02-25 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,754 +2020-02-25 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,755 +2020-02-25 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,756 +2020-02-25 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,757 +2020-02-25 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,758 +2020-02-25 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,759 +2020-02-25 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,760 +2020-02-26 16:00:00,COMNHQ,FILLED,BUY,653.0,23.57,10.773847,,754 +2020-02-26 16:00:00,RLSRXX,FILLED,SELL,-203.0,47.63,6.768223000000001,,755 +2020-02-26 16:00:00,YIVYGH,FILLED,BUY,127.0,44.06,3.916934,,756 +2020-02-26 16:00:00,CEMOJE,FILLED,SELL,-7.0,1389.4,6.808060000000001,,757 +2020-02-26 16:00:00,GTKILW,FILLED,SELL,-7.0,1385.45,6.788704999999999,,758 +2020-02-26 16:00:00,HCDUCB,FILLED,BUY,290.0,52.77,10.71231,,759 +2020-02-26 16:00:00,MCCZID,FILLED,SELL,-288.0,34.26,6.906815999999999,,760 +2020-02-26 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,761 +2020-02-26 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,762 +2020-02-26 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,763 +2020-02-26 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,764 +2020-02-27 16:00:00,COMNHQ,FILLED,BUY,222.0,20.82,3.2354279999999997,,761 +2020-02-27 16:00:00,YIVYGH,FILLED,BUY,112.0,41.86,3.281824,,762 +2020-02-27 16:00:00,HCDUCB,FILLED,SELL,-290.0,50.64,10.27992,,763 +2020-02-27 16:00:00,MCCZID,FILLED,BUY,562.0,34.5,13.5723,,764 +2020-02-27 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,765 +2020-02-27 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,766 +2020-02-27 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,767 +2020-02-27 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,768 +2020-02-27 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,769 +2020-02-27 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,770 +2020-02-27 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,771 +2020-02-28 16:00:00,COMNHQ,FILLED,BUY,52.0,19.8,0.7207200000000001,,765 +2020-02-28 16:00:00,YIVYGH,FILLED,BUY,3.0,40.0,0.084,,766 +2020-02-28 16:00:00,CEMOJE,FILLED,BUY,14.0,1325.64,12.991272000000002,,767 +2020-02-28 16:00:00,GTKILW,FILLED,BUY,14.0,1315.22,12.889156000000002,,768 +2020-02-28 16:00:00,ZIJVRO,FILLED,BUY,342.0,54.3,12.99942,,769 +2020-02-28 16:00:00,MCCZID,FILLED,SELL,-562.0,33.42,13.147428,,770 +2020-02-28 16:00:00,ISIJLH,FILLED,BUY,534.0,34.05,12.72789,,771 +2020-02-28 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,772 +2020-02-28 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,773 +2020-02-28 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,774 +2020-02-28 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,775 +2020-02-28 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,776 +2020-02-28 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,777 +2020-02-28 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,778 +2020-02-28 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,779 +2020-03-02 16:00:00,COMNHQ,FILLED,BUY,75.0,19.02,0.99855,,772 +2020-03-02 16:00:00,LUZLYG,FILLED,BUY,670.0,28.38,13.31022,,773 +2020-03-02 16:00:00,YIVYGH,FILLED,BUY,7.0,40.34,0.197666,,774 +2020-03-02 16:00:00,CEMOJE,FILLED,SELL,-14.0,1347.29,13.203442,,775 +2020-03-02 16:00:00,GTKILW,FILLED,SELL,-14.0,1345.94,13.190212,,776 +2020-03-02 16:00:00,ZIJVRO,FILLED,SELL,-342.0,55.87,13.375278,,777 +2020-03-02 16:00:00,HCDUCB,FILLED,BUY,363.0,53.27,13.535907000000002,,778 +2020-03-02 16:00:00,ISIJLH,FILLED,SELL,-534.0,35.39,13.228782,,779 +2020-03-02 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,780 +2020-03-02 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,781 +2020-03-02 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,782 +2020-03-02 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,783 +2020-03-02 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,784 +2020-03-02 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,785 +2020-03-02 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,786 +2020-03-02 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,787 +2020-03-02 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,788 +2020-03-03 16:00:00,COMNHQ,FILLED,SELL,-226.0,19.66,3.110212,,780 +2020-03-03 16:00:00,SMDIFE,FILLED,BUY,48.0,303.75,10.206,,781 +2020-03-03 16:00:00,LUZLYG,FILLED,SELL,-172.0,29.39,3.538556,,782 +2020-03-03 16:00:00,YIVYGH,FILLED,SELL,-128.0,42.07,3.769472,,783 +2020-03-03 16:00:00,ZIXTLG,FILLED,BUY,1394.0,10.4,10.14832,,784 +2020-03-03 16:00:00,ZIJVRO,FILLED,BUY,251.0,58.08,10.204656,,785 +2020-03-03 16:00:00,HCDUCB,FILLED,SELL,-363.0,54.64,13.884024,,786 +2020-03-03 16:00:00,MCCZID,FILLED,BUY,419.0,34.93,10.244969,,787 +2020-03-03 16:00:00,ISIJLH,FILLED,BUY,393.0,37.15,10.219964999999998,,788 +2020-03-03 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,789 +2020-03-03 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,790 +2020-03-03 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,791 +2020-03-03 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,792 +2020-03-03 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,793 +2020-03-03 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,794 +2020-03-03 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,795 +2020-03-03 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,796 +2020-03-03 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,797 +2020-03-03 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,798 +2020-03-04 16:00:00,COMNHQ,FILLED,BUY,40.0,18.36,0.51408,,789 +2020-03-04 16:00:00,SMDIFE,FILLED,SELL,-48.0,296.8,9.97248,,790 +2020-03-04 16:00:00,LUZLYG,FILLED,SELL,-498.0,28.11,9.799146,,791 +2020-03-04 16:00:00,YIVYGH,FILLED,SELL,-344.0,41.97,10.106376,,792 +2020-03-04 16:00:00,LMRIBF,FILLED,BUY,78.0,189.17,10.328682,,793 +2020-03-04 16:00:00,ZIXTLG,FILLED,SELL,-1394.0,10.31,10.060498,,794 +2020-03-04 16:00:00,ZIJVRO,FILLED,SELL,-251.0,57.01,10.016657,,795 +2020-03-04 16:00:00,HCDUCB,FILLED,BUY,281.0,53.04,10.432968,,796 +2020-03-04 16:00:00,MCCZID,FILLED,SELL,-419.0,35.06,10.283098,,797 +2020-03-04 16:00:00,ISIJLH,FILLED,SELL,-393.0,36.97,10.170447,,798 +2020-03-04 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,799 +2020-03-04 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,800 +2020-03-04 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,801 +2020-03-04 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,802 +2020-03-04 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,803 +2020-03-05 16:00:00,COMNHQ,FILLED,SELL,-27.0,17.54,0.33150599999999997,,799 +2020-03-05 16:00:00,YIVYGH,FILLED,BUY,344.0,41.27,9.937816,,800 +2020-03-05 16:00:00,LMRIBF,FILLED,SELL,-78.0,186.97,10.208562,,801 +2020-03-05 16:00:00,HCDUCB,FILLED,SELL,-17.0,53.45,0.636055,,802 +2020-03-05 16:00:00,MCCZID,FILLED,BUY,401.0,35.64,10.004148,,803 +2020-03-05 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,804 +2020-03-05 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,805 +2020-03-05 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,806 +2020-03-05 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,807 +2020-03-05 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,808 +2020-03-06 16:00:00,COMNHQ,FILLED,BUY,119.0,15.0,1.2495,,804 +2020-03-06 16:00:00,YIVYGH,FILLED,BUY,13.0,38.91,0.3540809999999999,,805 +2020-03-06 16:00:00,FFNDVM,FILLED,BUY,2163.0,6.57,9.947637,,806 +2020-03-06 16:00:00,HCDUCB,FILLED,SELL,-264.0,52.2,9.64656,,807 +2020-03-06 16:00:00,MCCZID,FILLED,SELL,-401.0,34.73,9.748711,,808 +2020-03-06 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,809 +2020-03-06 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,810 +2020-03-06 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,811 +2020-03-06 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,812 +2020-03-06 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,813 +2020-03-09 16:00:00,COMNHQ,FILLED,BUY,4.0,14.92,0.041776,,809 +2020-03-09 16:00:00,YIVYGH,FILLED,SELL,-357.0,38.17,9.538683,,810 +2020-03-09 16:00:00,FFNDVM,FILLED,SELL,-2163.0,5.99,9.069459,,811 +2020-03-09 16:00:00,ZIXTLG,FILLED,BUY,1544.0,8.16,8.819328,,812 +2020-03-09 16:00:00,BGDRAI,FILLED,BUY,1549.0,8.34,9.043062,,813 +2020-03-09 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,814 +2020-03-09 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,815 +2020-03-09 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,816 +2020-03-09 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,817 +2020-03-09 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,818 +2020-03-09 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,819 +2020-03-10 16:00:00,COMNHQ,FILLED,BUY,72.0,15.82,0.7973279999999999,,814 +2020-03-10 16:00:00,YIVYGH,FILLED,BUY,383.0,38.64,10.359384,,815 +2020-03-10 16:00:00,ZIXTLG,FILLED,BUY,220.0,8.97,1.38138,,816 +2020-03-10 16:00:00,BGDRAI,FILLED,BUY,219.0,8.78,1.345974,,817 +2020-03-10 16:00:00,ZIJVRO,FILLED,BUY,285.0,52.76,10.525619999999998,,818 +2020-03-10 16:00:00,HCDUCB,FILLED,BUY,315.0,48.18,10.62369,,819 +2020-03-10 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,820 +2020-03-10 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,821 +2020-03-10 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,822 +2020-03-10 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,823 +2020-03-10 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,824 +2020-03-10 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,825 +2020-03-10 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,826 +2020-03-10 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,827 +2020-03-10 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,828 +2020-03-10 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,829 +2020-03-10 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,830 +2020-03-11 16:00:00,COMNHQ,FILLED,SELL,-401.0,16.29,4.572603,,820 +2020-03-11 16:00:00,LUZLYG,FILLED,BUY,420.0,22.84,6.71496,,821 +2020-03-11 16:00:00,HECLON,FILLED,BUY,178.0,53.61,6.679806,,822 +2020-03-11 16:00:00,YIVYGH,FILLED,SELL,-130.0,37.77,3.4370700000000003,,823 +2020-03-11 16:00:00,OCHCAU,FILLED,BUY,247.0,39.02,6.746558,,824 +2020-03-11 16:00:00,FFNDVM,FILLED,BUY,1584.0,6.05,6.708239999999999,,825 +2020-03-11 16:00:00,LMRIBF,FILLED,BUY,55.0,174.01,6.6993849999999995,,826 +2020-03-11 16:00:00,ZIXTLG,FILLED,SELL,-662.0,8.66,4.013044,,827 +2020-03-11 16:00:00,BGDRAI,FILLED,SELL,-648.0,8.63,3.914568000000001,,828 +2020-03-11 16:00:00,ZIJVRO,FILLED,SELL,-102.0,52.39,3.740646,,829 +2020-03-11 16:00:00,HCDUCB,FILLED,SELL,-108.0,46.14,3.488184,,830 +2020-03-11 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,831 +2020-03-11 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,832 +2020-03-11 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,833 +2020-03-11 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,834 +2020-03-11 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,835 +2020-03-11 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,836 +2020-03-11 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,837 +2020-03-11 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,838 +2020-03-11 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,839 +2020-03-11 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,840 +2020-03-11 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,841 +2020-03-12 16:00:00,COMNHQ,FILLED,BUY,23.0,14.19,0.228459,,831 +2020-03-12 16:00:00,LUZLYG,FILLED,BUY,14.0,20.73,0.20315400000000003,,832 +2020-03-12 16:00:00,HECLON,FILLED,BUY,16.0,45.29,0.507248,,833 +2020-03-12 16:00:00,YIVYGH,FILLED,BUY,6.0,35.58,0.149436,,834 +2020-03-12 16:00:00,OCHCAU,FILLED,BUY,19.0,34.61,0.460313,,835 +2020-03-12 16:00:00,FFNDVM,FILLED,BUY,86.0,5.37,0.323274,,836 +2020-03-12 16:00:00,LMRIBF,FILLED,SELL,-55.0,159.95,6.158075,,837 +2020-03-12 16:00:00,ZIXTLG,FILLED,BUY,111.0,7.15,0.555555,,838 +2020-03-12 16:00:00,BGDRAI,FILLED,BUY,80.0,7.35,0.4116,,839 +2020-03-12 16:00:00,ZIJVRO,FILLED,BUY,7.0,47.99,0.235151,,840 +2020-03-12 16:00:00,HCDUCB,FILLED,BUY,18.0,39.26,0.4946759999999999,,841 +2020-03-12 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,842 +2020-03-12 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,843 +2020-03-12 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,844 +2020-03-12 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,845 +2020-03-12 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,846 +2020-03-12 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,847 +2020-03-12 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,848 +2020-03-12 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,849 +2020-03-12 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,850 +2020-03-12 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,851 +2020-03-12 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,852 +2020-03-12 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,853 +2020-03-13 16:00:00,COMNHQ,FILLED,BUY,133.0,15.3,1.42443,,842 +2020-03-13 16:00:00,LUZLYG,FILLED,BUY,50.0,22.5,0.7875,,843 +2020-03-13 16:00:00,HECLON,FILLED,BUY,35.0,47.74,1.16963,,844 +2020-03-13 16:00:00,YIVYGH,FILLED,BUY,25.0,36.3,0.6352499999999999,,845 +2020-03-13 16:00:00,OCHCAU,FILLED,SELL,-266.0,35.18,6.550515999999999,,846 +2020-03-13 16:00:00,FFNDVM,FILLED,SELL,-1670.0,5.85,6.83865,,847 +2020-03-13 16:00:00,LMRIBF,FILLED,BUY,64.0,163.12,7.307776,,848 +2020-03-13 16:00:00,ZIXTLG,FILLED,BUY,173.0,7.8,0.94458,,849 +2020-03-13 16:00:00,BGDRAI,FILLED,BUY,174.0,7.81,0.9512579999999998,,850 +2020-03-13 16:00:00,ZIJVRO,FILLED,BUY,28.0,47.79,0.936684,,851 +2020-03-13 16:00:00,HCDUCB,FILLED,BUY,31.0,41.44,0.8992479999999999,,852 +2020-03-13 16:00:00,MCCZID,FILLED,BUY,331.0,31.0,7.1827,,853 +2020-03-13 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,854 +2020-03-13 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,855 +2020-03-13 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,856 +2020-03-13 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,857 +2020-03-13 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,858 +2020-03-13 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,859 +2020-03-13 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,860 +2020-03-13 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,861 +2020-03-13 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,862 +2020-03-13 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,863 +2020-03-13 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,864 +2020-03-13 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,865 +2020-03-16 16:00:00,COMNHQ,FILLED,SELL,-51.0,12.8,0.45696,,854 +2020-03-16 16:00:00,LUZLYG,FILLED,SELL,-77.0,20.0,1.078,,855 +2020-03-16 16:00:00,HECLON,FILLED,SELL,-36.0,43.27,1.090404,,856 +2020-03-16 16:00:00,YIVYGH,FILLED,SELL,-34.0,34.64,0.8244319999999999,,857 +2020-03-16 16:00:00,LMRIBF,FILLED,SELL,-7.0,149.0,0.7301,,858 +2020-03-16 16:00:00,ZIXTLG,FILLED,SELL,-78.0,6.44,0.35162400000000005,,859 +2020-03-16 16:00:00,BGDRAI,FILLED,SELL,-119.0,7.0,0.5831,,860 +2020-03-16 16:00:00,ZIJVRO,FILLED,SELL,-37.0,47.48,1.229732,,861 +2020-03-16 16:00:00,HCDUCB,FILLED,SELL,-27.0,37.35,0.7059150000000001,,862 +2020-03-16 16:00:00,MCCZID,FILLED,SELL,-331.0,30.0,6.951,,863 +2020-03-16 16:00:00,ISIJLH,FILLED,BUY,285.0,31.0,6.1845,,864 +2020-03-16 16:00:00,RUKNMV,FILLED,BUY,319.0,26.87,6.000071,,865 +2020-03-16 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,866 +2020-03-16 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,867 +2020-03-16 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,868 +2020-03-16 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,869 +2020-03-16 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,870 +2020-03-16 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,871 +2020-03-16 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,872 +2020-03-16 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,873 +2020-03-16 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,874 +2020-03-16 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,875 +2020-03-16 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,876 +2020-03-16 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,877 +2020-03-17 16:00:00,COMNHQ,FILLED,SELL,-78.0,15.83,0.864318,,866 +2020-03-17 16:00:00,LUZLYG,FILLED,SELL,-407.0,21.06,5.999994,,867 +2020-03-17 16:00:00,HECLON,FILLED,SELL,-193.0,42.14,5.6931140000000005,,868 +2020-03-17 16:00:00,YIVYGH,FILLED,SELL,-250.0,36.55,6.39625,,869 +2020-03-17 16:00:00,FFNDVM,FILLED,BUY,1939.0,5.08,6.895084000000001,,870 +2020-03-17 16:00:00,LMRIBF,FILLED,SELL,-57.0,150.8,6.01692,,871 +2020-03-17 16:00:00,ZIXTLG,FILLED,SELL,-1308.0,6.38,5.841527999999999,,872 +2020-03-17 16:00:00,BGDRAI,FILLED,BUY,203.0,6.91,0.981911,,873 +2020-03-17 16:00:00,ZIJVRO,FILLED,SELL,-181.0,45.74,5.7952580000000005,,874 +2020-03-17 16:00:00,HCDUCB,FILLED,SELL,-229.0,35.49,5.689047,,875 +2020-03-17 16:00:00,ISIJLH,FILLED,SELL,-285.0,32.36,6.45582,,876 +2020-03-17 16:00:00,RUKNMV,FILLED,SELL,-319.0,27.5,6.14075,,877 +2020-03-17 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,878 +2020-03-17 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,879 +2020-03-17 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,880 +2020-03-17 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,881 +2020-03-17 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,882 +2020-03-18 16:00:00,COMNHQ,FILLED,BUY,14.0,14.24,0.139552,,878 +2020-03-18 16:00:00,RLSRXX,FILLED,BUY,232.0,39.67,6.442408,,879 +2020-03-18 16:00:00,FFNDVM,FILLED,BUY,4.0,4.74,0.013272,,880 +2020-03-18 16:00:00,ZIXTLG,FILLED,BUY,1502.0,5.86,6.161204000000001,,881 +2020-03-18 16:00:00,BGDRAI,FILLED,SELL,-83.0,6.55,0.380555,,882 +2020-03-18 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,883 +2020-03-18 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,884 +2020-03-18 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,885 +2020-03-18 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,886 +2020-03-18 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,887 +2020-03-18 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,888 +2020-03-19 16:00:00,COMNHQ,FILLED,BUY,207.0,11.61,1.682289,,883 +2020-03-19 16:00:00,RLSRXX,FILLED,SELL,-232.0,39.56,6.424544,,884 +2020-03-19 16:00:00,YIVYGH,FILLED,BUY,271.0,35.64,6.760908000000001,,885 +2020-03-19 16:00:00,FFNDVM,FILLED,SELL,-1943.0,4.3,5.84843,,886 +2020-03-19 16:00:00,ZIXTLG,FILLED,BUY,322.0,5.14,1.158556,,887 +2020-03-19 16:00:00,BGDRAI,FILLED,BUY,92.0,6.39,0.411516,,888 +2020-03-19 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,889 +2020-03-19 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,890 +2020-03-19 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,891 +2020-03-19 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,892 +2020-03-19 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,893 +2020-03-20 16:00:00,COMNHQ,FILLED,BUY,119.0,10.66,0.8879779999999999,,889 +2020-03-20 16:00:00,YIVYGH,FILLED,BUY,1.0,36.09,0.025263,,890 +2020-03-20 16:00:00,FFNDVM,FILLED,BUY,2187.0,4.54,6.950285999999999,,891 +2020-03-20 16:00:00,ZIXTLG,FILLED,SELL,-121.0,6.02,0.509894,,892 +2020-03-20 16:00:00,BGDRAI,FILLED,BUY,41.0,7.0,0.2009,,893 +2020-03-20 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,894 +2020-03-20 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,895 +2020-03-20 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,896 +2020-03-20 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,897 +2020-03-20 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,898 +2020-03-23 16:00:00,COMNHQ,FILLED,SELL,-10.0,10.92,0.07644000000000001,,894 +2020-03-23 16:00:00,YIVYGH,FILLED,SELL,-272.0,32.93,6.2698719999999994,,895 +2020-03-23 16:00:00,FFNDVM,FILLED,BUY,67.0,4.25,0.199325,,896 +2020-03-23 16:00:00,ZIXTLG,FILLED,BUY,65.0,5.46,0.24843,,897 +2020-03-23 16:00:00,BGDRAI,FILLED,SELL,-1508.0,6.44,6.798064,,898 +2020-03-23 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,899 +2020-03-23 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,900 +2020-03-23 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,901 +2020-03-23 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,902 +2020-03-24 16:00:00,COMNHQ,FILLED,BUY,1.0,11.99,0.008393,,899 +2020-03-24 16:00:00,LUZLYG,FILLED,BUY,533.0,19.42,7.245602000000001,,900 +2020-03-24 16:00:00,FFNDVM,FILLED,BUY,153.0,4.51,0.483021,,901 +2020-03-24 16:00:00,ZIXTLG,FILLED,BUY,22.0,6.13,0.094402,,902 +2020-03-24 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,903 +2020-03-24 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,904 +2020-03-24 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,905 +2020-03-24 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,906 +2020-03-25 16:00:00,COMNHQ,FILLED,BUY,88.0,16.81,1.035496,,903 +2020-03-25 16:00:00,LUZLYG,FILLED,SELL,-533.0,21.6,8.05896,,904 +2020-03-25 16:00:00,FFNDVM,FILLED,SELL,-2407.0,5.73,9.654477,,905 +2020-03-25 16:00:00,ZIXTLG,FILLED,BUY,260.0,6.96,1.2667199999999998,,906 +2020-03-25 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,907 +2020-03-25 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,908 +2020-03-25 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,909 +2020-03-26 16:00:00,COMNHQ,FILLED,SELL,-94.0,16.11,1.060038,,907 +2020-03-26 16:00:00,YIVYGH,FILLED,BUY,428.0,33.19,9.943724,,908 +2020-03-26 16:00:00,ZIXTLG,FILLED,SELL,-66.0,7.37,0.340494,,909 +2020-03-26 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,910 +2020-03-26 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,911 +2020-03-26 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,912 +2020-03-27 16:00:00,COMNHQ,FILLED,SELL,-15.0,14.98,0.15729,,910 +2020-03-27 16:00:00,YIVYGH,FILLED,SELL,-428.0,35.59,10.662764,,911 +2020-03-27 16:00:00,ZIXTLG,FILLED,SELL,-1984.0,6.63,9.207744,,912 +2020-03-27 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,913 +2020-03-27 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,914 +2020-03-30 16:00:00,COMNHQ,FILLED,BUY,103.0,13.15,0.948115,,913 +2020-03-30 16:00:00,ZIXTLG,FILLED,BUY,2317.0,6.27,10.169313,,914 +2020-03-30 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,915 +2020-03-30 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,916 +2020-03-31 16:00:00,COMNHQ,FILLED,SELL,-119.0,12.9,1.07457,,915 +2020-03-31 16:00:00,ZIXTLG,FILLED,SELL,-2317.0,6.32,10.250408,,916 +2020-03-31 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,917 +2020-03-31 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,918 +2020-04-01 16:00:00,COMNHQ,FILLED,SELL,-904.0,11.48,7.264544,,917 +2020-04-01 16:00:00,ZIXTLG,FILLED,BUY,1642.0,6.35,7.298689999999999,,918 +2020-04-01 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,919 +2020-04-02 16:00:00,ZIXTLG,FILLED,BUY,474.0,6.54,2.169972,,919 +2020-04-02 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,920 +2020-04-02 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,921 +2020-04-03 16:00:00,COMNHQ,FILLED,BUY,1327.0,10.35,9.614115,,920 +2020-04-03 16:00:00,ZIXTLG,FILLED,SELL,-2116.0,6.36,9.420432,,921 +2020-04-03 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,922 +2020-04-06 16:00:00,COMNHQ,FILLED,BUY,112.0,9.72,0.7620480000000001,,922 +2020-04-06 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,923 +2020-04-06 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,924 +2020-04-07 16:00:00,COMNHQ,FILLED,SELL,-16.0,11.08,0.124096,,923 +2020-04-07 16:00:00,ZIXTLG,FILLED,BUY,1880.0,7.86,10.34376,,924 +2020-04-07 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,925 +2020-04-07 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,926 +2020-04-08 16:00:00,COMNHQ,FILLED,SELL,-461.0,10.9,3.5174300000000005,,925 +2020-04-08 16:00:00,ZIXTLG,FILLED,SELL,-1880.0,7.64,10.054239999999998,,926 +2020-04-08 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,927 +2020-04-08 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,928 +2020-04-08 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,929 +2020-04-08 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,930 +2020-04-09 16:00:00,COMNHQ,FILLED,SELL,-93.0,12.62,0.8215619999999999,,927 +2020-04-09 16:00:00,LUZLYG,FILLED,BUY,420.0,24.05,7.0706999999999995,,928 +2020-04-09 16:00:00,YIVYGH,FILLED,BUY,261.0,37.41,6.834806999999999,,929 +2020-04-09 16:00:00,ZIXTLG,FILLED,BUY,1227.0,8.31,7.137459000000001,,930 +2020-04-09 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,931 +2020-04-09 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,932 +2020-04-09 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,933 +2020-04-09 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,934 +2020-04-09 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,935 +2020-04-09 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,936 +2020-04-09 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,937 +2020-04-09 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,938 +2020-04-09 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,939 +2020-04-13 16:00:00,COMNHQ,FILLED,SELL,-81.0,12.94,0.7336979999999999,,931 +2020-04-13 16:00:00,LUZLYG,FILLED,SELL,-24.0,24.85,0.4174800000000001,,932 +2020-04-13 16:00:00,HECLON,FILLED,BUY,208.0,47.5,6.916,,933 +2020-04-13 16:00:00,YIVYGH,FILLED,SELL,-261.0,37.48,6.847595999999999,,934 +2020-04-13 16:00:00,ZIXTLG,FILLED,SELL,-1227.0,8.28,7.111692,,935 +2020-04-13 16:00:00,BGDRAI,FILLED,BUY,1382.0,7.1,6.868539999999999,,936 +2020-04-13 16:00:00,MCCZID,FILLED,BUY,278.0,35.94,6.993924,,937 +2020-04-13 16:00:00,ISIJLH,FILLED,BUY,321.0,30.52,6.857844,,938 +2020-04-13 16:00:00,RUKNMV,FILLED,BUY,297.0,33.22,6.906438,,939 +2020-04-13 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,940 +2020-04-13 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,941 +2020-04-13 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,942 +2020-04-13 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,943 +2020-04-13 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,944 +2020-04-13 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,945 +2020-04-13 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,946 +2020-04-14 16:00:00,COMNHQ,FILLED,BUY,63.0,12.22,0.538902,,940 +2020-04-14 16:00:00,LUZLYG,FILLED,SELL,-396.0,24.55,6.8052600000000005,,941 +2020-04-14 16:00:00,HECLON,FILLED,BUY,2.0,47.66,0.06672399999999999,,942 +2020-04-14 16:00:00,BGDRAI,FILLED,SELL,-1382.0,7.12,6.887888,,943 +2020-04-14 16:00:00,MCCZID,FILLED,SELL,-278.0,36.0,7.0056,,944 +2020-04-14 16:00:00,ISIJLH,FILLED,BUY,5.0,30.69,0.107415,,945 +2020-04-14 16:00:00,RUKNMV,FILLED,BUY,16.0,32.11,0.359632,,946 +2020-04-14 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,947 +2020-04-14 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,948 +2020-04-14 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,949 +2020-04-14 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,950 +2020-04-14 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,951 +2020-04-14 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,952 +2020-04-14 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,953 +2020-04-14 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,954 +2020-04-15 16:00:00,COMNHQ,FILLED,SELL,-27.0,12.53,0.236817,,947 +2020-04-15 16:00:00,SMDIFE,FILLED,BUY,34.0,282.62,6.726356,,948 +2020-04-15 16:00:00,HECLON,FILLED,BUY,6.0,43.25,0.18165,,949 +2020-04-15 16:00:00,FFNDVM,FILLED,BUY,1862.0,5.04,6.569135999999999,,950 +2020-04-15 16:00:00,BGDRAI,FILLED,BUY,1421.0,6.69,6.654542999999999,,951 +2020-04-15 16:00:00,BPSPGV,FILLED,BUY,56.0,171.01,6.703592,,952 +2020-04-15 16:00:00,ISIJLH,FILLED,SELL,-10.0,30.63,0.21441,,953 +2020-04-15 16:00:00,RUKNMV,FILLED,BUY,13.0,28.68,0.260988,,954 +2020-04-15 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,955 +2020-04-15 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,956 +2020-04-15 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,957 +2020-04-15 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,958 +2020-04-15 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,959 +2020-04-15 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,960 +2020-04-15 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,961 +2020-04-15 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,962 +2020-04-15 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,963 +2020-04-16 16:00:00,COMNHQ,FILLED,SELL,-32.0,11.91,0.266784,,955 +2020-04-16 16:00:00,SMDIFE,FILLED,SELL,-34.0,287.25,6.83655,,956 +2020-04-16 16:00:00,HECLON,FILLED,BUY,11.0,42.8,0.32955999999999996,,957 +2020-04-16 16:00:00,YIVYGH,FILLED,BUY,262.0,37.53,6.883002,,958 +2020-04-16 16:00:00,FFNDVM,FILLED,SELL,-1862.0,5.01,6.530033999999999,,959 +2020-04-16 16:00:00,BGDRAI,FILLED,BUY,77.0,6.45,0.34765500000000005,,960 +2020-04-16 16:00:00,BPSPGV,FILLED,SELL,-56.0,174.36,6.834912,,961 +2020-04-16 16:00:00,ISIJLH,FILLED,BUY,7.0,30.27,0.14832299999999998,,962 +2020-04-16 16:00:00,RUKNMV,FILLED,SELL,-326.0,28.18,6.430676,,963 +2020-04-16 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,964 +2020-04-16 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,965 +2020-04-16 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,966 +2020-04-16 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,967 +2020-04-16 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,968 +2020-04-16 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,969 +2020-04-16 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,970 +2020-04-16 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,971 +2020-04-17 16:00:00,COMNHQ,FILLED,BUY,86.0,11.87,0.7145739999999999,,964 +2020-04-17 16:00:00,LUZLYG,FILLED,BUY,453.0,22.33,7.080843,,965 +2020-04-17 16:00:00,HECLON,FILLED,BUY,12.0,43.0,0.3612,,966 +2020-04-17 16:00:00,YIVYGH,FILLED,SELL,-5.0,38.55,0.134925,,967 +2020-04-17 16:00:00,BGDRAI,FILLED,BUY,60.0,6.42,0.26964,,968 +2020-04-17 16:00:00,BPSPGV,FILLED,BUY,54.0,179.56,6.787368,,969 +2020-04-17 16:00:00,ISIJLH,FILLED,SELL,-1.0,30.8,0.02156,,970 +2020-04-17 16:00:00,RUKNMV,FILLED,BUY,361.0,28.15,7.113505,,971 +2020-04-17 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,972 +2020-04-17 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,973 +2020-04-17 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,974 +2020-04-17 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,975 +2020-04-17 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,976 +2020-04-17 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,977 +2020-04-17 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,978 +2020-04-17 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,979 +2020-04-17 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,980 +2020-04-20 16:00:00,COMNHQ,FILLED,SELL,-35.0,11.13,0.272685,,972 +2020-04-20 16:00:00,LUZLYG,FILLED,SELL,-34.0,22.57,0.537166,,973 +2020-04-20 16:00:00,HECLON,FILLED,SELL,-25.0,43.4,0.7595,,974 +2020-04-20 16:00:00,YIVYGH,FILLED,SELL,-1.0,37.68,0.026376,,975 +2020-04-20 16:00:00,OCHCAU,FILLED,BUY,229.0,41.92,6.719776,,976 +2020-04-20 16:00:00,BGDRAI,FILLED,SELL,-132.0,6.61,0.6107640000000001,,977 +2020-04-20 16:00:00,BPSPGV,FILLED,SELL,-54.0,176.6,6.675479999999999,,978 +2020-04-20 16:00:00,ISIJLH,FILLED,SELL,-10.0,30.85,0.21595,,979 +2020-04-20 16:00:00,RUKNMV,FILLED,SELL,-18.0,27.29,0.343854,,980 +2020-04-20 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,981 +2020-04-20 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,982 +2020-04-20 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,983 +2020-04-20 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,984 +2020-04-20 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,985 +2020-04-20 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,986 +2020-04-20 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,987 +2020-04-20 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,988 +2020-04-20 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,989 +2020-04-20 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,990 +2020-04-21 16:00:00,COMNHQ,FILLED,BUY,37.0,10.75,0.278425,,981 +2020-04-21 16:00:00,LUZLYG,FILLED,BUY,13.0,21.88,0.199108,,982 +2020-04-21 16:00:00,HECLON,FILLED,BUY,7.0,42.35,0.207515,,983 +2020-04-21 16:00:00,YIVYGH,FILLED,BUY,5.0,36.75,0.128625,,984 +2020-04-21 16:00:00,OCHCAU,FILLED,SELL,-229.0,41.81,6.7021429999999995,,985 +2020-04-21 16:00:00,FFNDVM,FILLED,BUY,1954.0,4.82,6.592796000000001,,986 +2020-04-21 16:00:00,ZIXTLG,FILLED,BUY,1213.0,7.5,6.36825,,987 +2020-04-21 16:00:00,BGDRAI,FILLED,BUY,69.0,6.34,0.306222,,988 +2020-04-21 16:00:00,ISIJLH,FILLED,BUY,2.0,30.5,0.0427,,989 +2020-04-21 16:00:00,RUKNMV,FILLED,BUY,8.0,26.89,0.150584,,990 +2020-04-21 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,991 +2020-04-21 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,992 +2020-04-21 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,993 +2020-04-21 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,994 +2020-04-21 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,995 +2020-04-21 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,996 +2020-04-21 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,997 +2020-04-21 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,998 +2020-04-21 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,999 +2020-04-22 16:00:00,COMNHQ,FILLED,BUY,345.0,11.09,2.678235,,991 +2020-04-22 16:00:00,LUZLYG,FILLED,SELL,-432.0,22.16,6.7011840000000005,,992 +2020-04-22 16:00:00,HECLON,FILLED,SELL,-221.0,42.99,6.650553,,993 +2020-04-22 16:00:00,YIVYGH,FILLED,SELL,-261.0,36.23,6.619220999999999,,994 +2020-04-22 16:00:00,FFNDVM,FILLED,SELL,-1954.0,4.87,6.661186,,995 +2020-04-22 16:00:00,ZIXTLG,FILLED,BUY,606.0,7.55,3.20271,,996 +2020-04-22 16:00:00,BGDRAI,FILLED,BUY,586.0,6.59,2.7032179999999997,,997 +2020-04-22 16:00:00,ISIJLH,FILLED,SELL,-314.0,30.9,6.79182,,998 +2020-04-22 16:00:00,RUKNMV,FILLED,SELL,-351.0,27.5,6.75675,,999 +2020-04-22 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1000 +2020-04-22 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1001 +2020-04-22 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1002 +2020-04-22 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1003 +2020-04-23 16:00:00,COMNHQ,FILLED,BUY,88.0,10.38,0.639408,,1000 +2020-04-23 16:00:00,ZIXTLG,FILLED,SELL,-53.0,7.87,0.291977,,1001 +2020-04-23 16:00:00,BGDRAI,FILLED,SELL,-2081.0,6.46,9.410282,,1002 +2020-04-23 16:00:00,ISIJLH,FILLED,BUY,457.0,29.41,9.408259,,1003 +2020-04-23 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1004 +2020-04-23 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1005 +2020-04-23 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1006 +2020-04-23 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1007 +2020-04-24 16:00:00,COMNHQ,FILLED,BUY,3.0,10.4,0.02184,,1004 +2020-04-24 16:00:00,ZIXTLG,FILLED,SELL,-1766.0,8.22,10.161564,,1005 +2020-04-24 16:00:00,ISIJLH,FILLED,SELL,-457.0,29.49,9.433851,,1006 +2020-04-24 16:00:00,RUKNMV,FILLED,BUY,508.0,26.8,9.53008,,1007 +2020-04-24 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1008 +2020-04-24 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1009 +2020-04-24 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1010 +2020-04-27 16:00:00,COMNHQ,FILLED,SELL,-6.0,10.52,0.044184,,1008 +2020-04-27 16:00:00,BGDRAI,FILLED,BUY,2158.0,6.37,9.622522,,1009 +2020-04-27 16:00:00,RUKNMV,FILLED,SELL,-508.0,27.28,9.700768,,1010 +2020-04-27 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1011 +2020-04-27 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1012 +2020-04-27 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1013 +2020-04-28 16:00:00,COMNHQ,FILLED,BUY,38.0,10.28,0.27344799999999997,,1011 +2020-04-28 16:00:00,BGDRAI,FILLED,SELL,-2158.0,6.6,9.96996,,1012 +2020-04-28 16:00:00,RUKNMV,FILLED,BUY,475.0,29.6,9.842,,1013 +2020-04-28 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1014 +2020-04-28 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1015 +2020-04-29 16:00:00,COMNHQ,FILLED,SELL,-147.0,12.11,1.246119,,1014 +2020-04-29 16:00:00,RUKNMV,FILLED,SELL,-7.0,30.1,0.14749,,1015 +2020-04-29 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1016 +2020-04-29 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1017 +2020-04-29 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1018 +2020-04-29 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1019 +2020-04-30 16:00:00,COMNHQ,FILLED,BUY,315.0,11.92,2.6283600000000003,,1016 +2020-04-30 16:00:00,BGDRAI,FILLED,BUY,2910.0,6.54,13.321980000000002,,1017 +2020-04-30 16:00:00,HCDUCB,FILLED,BUY,384.0,49.5,13.3056,,1018 +2020-04-30 16:00:00,RUKNMV,FILLED,BUY,170.0,29.27,3.4831299999999996,,1019 +2020-04-30 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1020 +2020-04-30 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1021 +2020-04-30 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1022 +2020-04-30 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1023 +2020-04-30 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1024 +2020-05-01 16:00:00,COMNHQ,FILLED,BUY,76.0,11.38,0.6054160000000001,,1020 +2020-05-01 16:00:00,BGDRAI,FILLED,SELL,-97.0,6.65,0.451535,,1021 +2020-05-01 16:00:00,HCDUCB,FILLED,SELL,-384.0,46.36,12.461567999999998,,1022 +2020-05-01 16:00:00,ISIJLH,FILLED,BUY,627.0,30.77,13.504953,,1023 +2020-05-01 16:00:00,RUKNMV,FILLED,BUY,20.0,28.5,0.399,,1024 +2020-05-01 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1025 +2020-05-01 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1026 +2020-05-01 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1027 +2020-05-01 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1028 +2020-05-04 16:00:00,COMNHQ,FILLED,BUY,196.0,9.42,1.292424,,1025 +2020-05-04 16:00:00,BGDRAI,FILLED,BUY,114.0,6.3,0.50274,,1026 +2020-05-04 16:00:00,ISIJLH,FILLED,SELL,-627.0,29.63,13.004606999999998,,1027 +2020-05-04 16:00:00,RUKNMV,FILLED,BUY,31.0,26.91,0.583947,,1028 +2020-05-04 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1029 +2020-05-04 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1030 +2020-05-04 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1031 +2020-05-04 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1032 +2020-05-04 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1033 +2020-05-05 16:00:00,COMNHQ,FILLED,SELL,-272.0,10.27,1.955408,,1029 +2020-05-05 16:00:00,OCHCAU,FILLED,BUY,360.0,41.63,10.49076,,1030 +2020-05-05 16:00:00,BGDRAI,FILLED,SELL,-529.0,6.3,2.33289,,1031 +2020-05-05 16:00:00,ISIJLH,FILLED,BUY,503.0,29.74,10.471454,,1032 +2020-05-05 16:00:00,RUKNMV,FILLED,SELL,-145.0,27.52,2.79328,,1033 +2020-05-05 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1034 +2020-05-05 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1035 +2020-05-05 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1036 +2020-05-05 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1037 +2020-05-05 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1038 +2020-05-05 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1039 +2020-05-06 16:00:00,COMNHQ,FILLED,SELL,-500.0,9.56,3.346,,1034 +2020-05-06 16:00:00,OCHCAU,FILLED,SELL,-360.0,41.53,10.46556,,1035 +2020-05-06 16:00:00,BGDRAI,FILLED,SELL,-839.0,6.2,3.64126,,1036 +2020-05-06 16:00:00,MCCZID,FILLED,BUY,251.0,38.8,6.817159999999999,,1037 +2020-05-06 16:00:00,ISIJLH,FILLED,SELL,-503.0,29.74,10.471454,,1038 +2020-05-06 16:00:00,RUKNMV,FILLED,SELL,-177.0,26.5,3.28335,,1039 +2020-05-06 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1040 +2020-05-06 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1041 +2020-05-06 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1042 +2020-05-06 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1043 +2020-05-06 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1044 +2020-05-06 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1045 +2020-05-07 16:00:00,COMNHQ,FILLED,BUY,28.0,9.33,0.182868,,1040 +2020-05-07 16:00:00,HECLON,FILLED,BUY,224.0,43.52,6.823936000000001,,1041 +2020-05-07 16:00:00,BGDRAI,FILLED,BUY,56.0,6.06,0.23755199999999996,,1042 +2020-05-07 16:00:00,MCCZID,FILLED,SELL,-251.0,38.32,6.732824,,1043 +2020-05-07 16:00:00,ISIJLH,FILLED,BUY,335.0,29.13,6.830984999999999,,1044 +2020-05-07 16:00:00,RUKNMV,FILLED,BUY,10.0,25.53,0.17871,,1045 +2020-05-07 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1046 +2020-05-07 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1047 +2020-05-07 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1048 +2020-05-07 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1049 +2020-05-07 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1050 +2020-05-07 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1051 +2020-05-08 16:00:00,COMNHQ,FILLED,SELL,-21.0,9.79,0.143913,,1046 +2020-05-08 16:00:00,HECLON,FILLED,SELL,-224.0,45.32,7.1061760000000005,,1047 +2020-05-08 16:00:00,BGDRAI,FILLED,SELL,-17.0,6.21,0.07389899999999999,,1048 +2020-05-08 16:00:00,MCCZID,FILLED,BUY,264.0,37.23,6.880103999999999,,1049 +2020-05-08 16:00:00,ISIJLH,FILLED,SELL,-335.0,29.31,6.873195,,1050 +2020-05-08 16:00:00,RUKNMV,FILLED,BUY,10.0,25.64,0.17947999999999997,,1051 +2020-05-08 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1052 +2020-05-08 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1053 +2020-05-08 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1054 +2020-05-08 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1055 +2020-05-08 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1056 +2020-05-11 16:00:00,COMNHQ,FILLED,SELL,-59.0,9.92,0.4096959999999999,,1052 +2020-05-11 16:00:00,OCHCAU,FILLED,BUY,227.0,42.78,6.7977419999999995,,1053 +2020-05-11 16:00:00,BGDRAI,FILLED,SELL,-44.0,6.24,0.192192,,1054 +2020-05-11 16:00:00,MCCZID,FILLED,SELL,-264.0,37.25,6.8838,,1055 +2020-05-11 16:00:00,RUKNMV,FILLED,SELL,-3.0,25.11,0.052731,,1056 +2020-05-11 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1057 +2020-05-11 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1058 +2020-05-11 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1059 +2020-05-11 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1060 +2020-05-11 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1061 +2020-05-11 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1062 +2020-05-12 16:00:00,COMNHQ,FILLED,BUY,532.0,10.01,3.727724,,1057 +2020-05-12 16:00:00,HECLON,FILLED,BUY,343.0,44.39,10.658039,,1058 +2020-05-12 16:00:00,OCHCAU,FILLED,SELL,-227.0,43.9,6.975709999999999,,1059 +2020-05-12 16:00:00,BGDRAI,FILLED,SELL,-1554.0,6.21,6.755238,,1060 +2020-05-12 16:00:00,MCCZID,FILLED,BUY,396.0,38.12,10.566864,,1061 +2020-05-12 16:00:00,RUKNMV,FILLED,BUY,226.0,24.96,3.948672,,1062 +2020-05-12 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1063 +2020-05-12 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1064 +2020-05-12 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1065 +2020-05-12 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1066 +2020-05-12 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1067 +2020-05-13 16:00:00,COMNHQ,FILLED,BUY,67.0,9.5,0.44555,,1063 +2020-05-13 16:00:00,HECLON,FILLED,BUY,13.0,42.03,0.382473,,1064 +2020-05-13 16:00:00,BGDRAI,FILLED,BUY,2514.0,6.0,10.5588,,1065 +2020-05-13 16:00:00,MCCZID,FILLED,SELL,-396.0,37.31,10.342332,,1066 +2020-05-13 16:00:00,RUKNMV,FILLED,BUY,17.0,23.92,0.284648,,1067 +2020-05-13 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1068 +2020-05-13 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1069 +2020-05-13 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1070 +2020-05-13 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1071 +2020-05-13 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1072 +2020-05-13 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1073 +2020-05-14 16:00:00,COMNHQ,FILLED,BUY,88.0,8.75,0.539,,1068 +2020-05-14 16:00:00,HECLON,FILLED,BUY,14.0,39.87,0.390726,,1069 +2020-05-14 16:00:00,FFNDVM,FILLED,BUY,3186.0,4.63,10.325826,,1070 +2020-05-14 16:00:00,BGDRAI,FILLED,SELL,-2514.0,5.62,9.890076,,1071 +2020-05-14 16:00:00,ISIJLH,FILLED,BUY,535.0,28.0,10.486,,1072 +2020-05-14 16:00:00,RUKNMV,FILLED,BUY,40.0,22.14,0.61992,,1073 +2020-05-14 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1074 +2020-05-14 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1075 +2020-05-14 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1076 +2020-05-14 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1077 +2020-05-14 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1078 +2020-05-14 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1079 +2020-05-14 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1080 +2020-05-14 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1081 +2020-05-15 16:00:00,COMNHQ,FILLED,SELL,-29.0,8.92,0.181076,,1074 +2020-05-15 16:00:00,HECLON,FILLED,SELL,-18.0,41.53,0.523278,,1075 +2020-05-15 16:00:00,FFNDVM,FILLED,SELL,-3186.0,4.8,10.70496,,1076 +2020-05-15 16:00:00,ZIJVRO,FILLED,BUY,251.0,57.47,10.097479,,1077 +2020-05-15 16:00:00,HCDUCB,FILLED,BUY,324.0,43.4,9.84312,,1078 +2020-05-15 16:00:00,MCCZID,FILLED,BUY,391.0,37.96,10.389652,,1079 +2020-05-15 16:00:00,ISIJLH,FILLED,SELL,-535.0,28.28,10.59086,,1080 +2020-05-15 16:00:00,RUKNMV,FILLED,SELL,-50.0,23.69,0.8291499999999999,,1081 +2020-05-15 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1082 +2020-05-15 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1083 +2020-05-15 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1084 +2020-05-15 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1085 +2020-05-15 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1086 +2020-05-15 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1087 +2020-05-15 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1088 +2020-05-18 16:00:00,COMNHQ,FILLED,SELL,-545.0,9.6,3.6624,,1082 +2020-05-18 16:00:00,HECLON,FILLED,SELL,-352.0,44.05,10.85392,,1083 +2020-05-18 16:00:00,BGDRAI,FILLED,BUY,1774.0,5.78,7.1776040000000005,,1084 +2020-05-18 16:00:00,ZIJVRO,FILLED,SELL,-84.0,59.75,3.5133,,1085 +2020-05-18 16:00:00,HCDUCB,FILLED,SELL,-324.0,45.86,10.401048,,1086 +2020-05-18 16:00:00,MCCZID,FILLED,SELL,-391.0,38.34,10.493658,,1087 +2020-05-18 16:00:00,RUKNMV,FILLED,SELL,-201.0,24.56,3.455592,,1088 +2020-05-18 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1089 +2020-05-18 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1090 +2020-05-18 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1091 +2020-05-18 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1092 +2020-05-19 16:00:00,COMNHQ,FILLED,SELL,-96.0,10.12,0.680064,,1089 +2020-05-19 16:00:00,BGDRAI,FILLED,SELL,-229.0,6.27,1.005081,,1090 +2020-05-19 16:00:00,ZIJVRO,FILLED,SELL,-167.0,60.1,7.025690000000001,,1091 +2020-05-19 16:00:00,RUKNMV,FILLED,SELL,-35.0,25.0,0.6125,,1092 +2020-05-19 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1093 +2020-05-19 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1094 +2020-05-19 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1095 +2020-05-20 16:00:00,COMNHQ,FILLED,BUY,23.0,9.9,0.15939,,1093 +2020-05-20 16:00:00,BGDRAI,FILLED,SELL,-1545.0,6.34,6.85671,,1094 +2020-05-20 16:00:00,RUKNMV,FILLED,BUY,23.0,24.45,0.393645,,1095 +2020-05-20 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1096 +2020-05-20 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1097 +2020-05-21 16:00:00,COMNHQ,FILLED,SELL,-1004.0,9.87,6.936636,,1096 +2020-05-21 16:00:00,RUKNMV,FILLED,SELL,-9.0,24.39,0.153657,,1097 +2020-05-21 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1098 +2020-05-22 16:00:00,RUKNMV,FILLED,SELL,-395.0,24.47,6.765955,,1098 +2020-05-22 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1099 +2020-05-22 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1100 +2020-05-26 16:00:00,COMNHQ,FILLED,BUY,998.0,10.25,7.1606499999999995,,1099 +2020-05-26 16:00:00,RUKNMV,FILLED,BUY,400.0,25.1,7.028,,1100 +2020-05-26 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1101 +2020-05-26 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1102 +2020-05-26 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1103 +2020-05-26 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1104 +2020-05-27 16:00:00,COMNHQ,FILLED,BUY,342.0,12.5,2.9925,,1101 +2020-05-27 16:00:00,LUZLYG,FILLED,BUY,614.0,26.15,11.23927,,1102 +2020-05-27 16:00:00,HECLON,FILLED,BUY,309.0,51.75,11.193525,,1103 +2020-05-27 16:00:00,RUKNMV,FILLED,BUY,168.0,27.86,3.2763359999999997,,1104 +2020-05-27 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1105 +2020-05-27 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1106 +2020-05-27 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1107 +2020-05-27 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1108 +2020-05-28 16:00:00,COMNHQ,FILLED,SELL,-93.0,11.83,0.7701330000000001,,1105 +2020-05-28 16:00:00,LUZLYG,FILLED,SELL,-39.0,26.06,0.7114379999999999,,1106 +2020-05-28 16:00:00,HECLON,FILLED,SELL,-23.0,52.85,0.850885,,1107 +2020-05-28 16:00:00,RUKNMV,FILLED,SELL,-34.0,28.32,0.674016,,1108 +2020-05-28 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1109 +2020-05-28 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1110 +2020-05-28 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1111 +2020-05-28 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1112 +2020-05-28 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1113 +2020-05-29 16:00:00,COMNHQ,FILLED,BUY,110.0,10.43,0.80311,,1109 +2020-05-29 16:00:00,LUZLYG,FILLED,BUY,24.0,24.42,0.410256,,1110 +2020-05-29 16:00:00,HECLON,FILLED,BUY,17.0,48.0,0.5712,,1111 +2020-05-29 16:00:00,HCDUCB,FILLED,BUY,320.0,46.61,10.44064,,1112 +2020-05-29 16:00:00,RUKNMV,FILLED,BUY,13.0,26.5,0.24115,,1113 +2020-05-29 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1114 +2020-05-29 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1115 +2020-05-29 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1116 +2020-05-29 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1117 +2020-05-29 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1118 +2020-05-29 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1119 +2020-06-01 16:00:00,COMNHQ,FILLED,BUY,60.0,10.81,0.45402,,1114 +2020-06-01 16:00:00,LUZLYG,FILLED,BUY,17.0,24.28,0.28893199999999997,,1115 +2020-06-01 16:00:00,HECLON,FILLED,BUY,7.0,48.14,0.235886,,1116 +2020-06-01 16:00:00,OCHCAU,FILLED,BUY,311.0,47.14,10.262378,,1117 +2020-06-01 16:00:00,HCDUCB,FILLED,SELL,-10.0,47.44,0.33208,,1118 +2020-06-01 16:00:00,RUKNMV,FILLED,BUY,15.0,26.61,0.27940499999999996,,1119 +2020-06-01 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1120 +2020-06-01 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1121 +2020-06-01 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1122 +2020-06-01 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1123 +2020-06-01 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1124 +2020-06-01 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1125 +2020-06-02 16:00:00,COMNHQ,FILLED,SELL,-328.0,11.4,2.61744,,1120 +2020-06-02 16:00:00,LUZLYG,FILLED,SELL,-616.0,24.99,10.775688,,1121 +2020-06-02 16:00:00,HECLON,FILLED,SELL,-66.0,50.71,2.3428020000000003,,1122 +2020-06-02 16:00:00,OCHCAU,FILLED,SELL,-50.0,46.35,1.62225,,1123 +2020-06-02 16:00:00,HCDUCB,FILLED,SELL,-49.0,46.49,1.594607,,1124 +2020-06-02 16:00:00,RUKNMV,FILLED,SELL,-116.0,27.58,2.239496,,1125 +2020-06-02 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1126 +2020-06-02 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1127 +2020-06-02 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1128 +2020-06-02 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1129 +2020-06-02 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1130 +2020-06-03 16:00:00,COMNHQ,FILLED,SELL,-9.0,11.57,0.072891,,1126 +2020-06-03 16:00:00,HECLON,FILLED,SELL,-244.0,52.5,8.967,,1127 +2020-06-03 16:00:00,OCHCAU,FILLED,SELL,-261.0,47.0,8.5869,,1128 +2020-06-03 16:00:00,HCDUCB,FILLED,SELL,-261.0,48.1,8.78787,,1129 +2020-06-03 16:00:00,RUKNMV,FILLED,SELL,-446.0,28.39,8.863358,,1130 +2020-06-03 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1131 +2020-06-03 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1132 +2020-06-03 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1133 +2020-06-03 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1134 +2020-06-04 16:00:00,COMNHQ,FILLED,BUY,143.0,12.85,1.286285,,1131 +2020-06-04 16:00:00,LUZLYG,FILLED,BUY,557.0,25.75,10.039925,,1132 +2020-06-04 16:00:00,HECLON,FILLED,BUY,271.0,53.3,10.11101,,1133 +2020-06-04 16:00:00,RUKNMV,FILLED,BUY,502.0,29.4,10.33116,,1134 +2020-06-04 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1135 +2020-06-04 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1136 +2020-06-04 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1137 +2020-06-04 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1138 +2020-06-04 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1139 +2020-06-05 16:00:00,COMNHQ,FILLED,SELL,-350.0,21.24,5.203799999999999,,1135 +2020-06-05 16:00:00,LUZLYG,FILLED,SELL,-12.0,29.0,0.2436,,1136 +2020-06-05 16:00:00,HECLON,FILLED,SELL,-9.0,61.54,0.387702,,1137 +2020-06-05 16:00:00,HCDUCB,FILLED,BUY,285.0,52.69,10.511655,,1138 +2020-06-05 16:00:00,RUKNMV,FILLED,SELL,-19.0,33.8,0.44953999999999994,,1139 +2020-06-05 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1140 +2020-06-05 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1141 +2020-06-05 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1142 +2020-06-05 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1143 +2020-06-05 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1144 +2020-06-05 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1145 +2020-06-08 16:00:00,COMNHQ,FILLED,SELL,-873.0,19.9,12.160889999999998,,1140 +2020-06-08 16:00:00,LUZLYG,FILLED,SELL,-23.0,28.6,0.46046,,1141 +2020-06-08 16:00:00,HECLON,FILLED,SELL,-262.0,60.7,11.13238,,1142 +2020-06-08 16:00:00,ZIXTLG,FILLED,BUY,1353.0,11.17,10.579107,,1143 +2020-06-08 16:00:00,HCDUCB,FILLED,SELL,-285.0,54.5,10.87275,,1144 +2020-06-08 16:00:00,RUKNMV,FILLED,SELL,-19.0,32.79,0.436107,,1145 +2020-06-08 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1146 +2020-06-08 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1147 +2020-06-08 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1148 +2020-06-09 16:00:00,LUZLYG,FILLED,SELL,-522.0,27.65,10.10331,,1146 +2020-06-09 16:00:00,ZIXTLG,FILLED,SELL,-23.0,11.0,0.1771,,1147 +2020-06-09 16:00:00,RUKNMV,FILLED,SELL,-15.0,32.4,0.3402,,1148 +2020-06-09 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1149 +2020-06-09 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1150 +2020-06-09 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1151 +2020-06-09 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1152 +2020-06-09 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1153 +2020-06-10 16:00:00,COMNHQ,FILLED,BUY,532.0,17.69,6.587756,,1149 +2020-06-10 16:00:00,SMDIFE,FILLED,BUY,28.0,347.97,6.820212,,1150 +2020-06-10 16:00:00,LUZLYG,FILLED,BUY,349.0,27.97,6.8330709999999995,,1151 +2020-06-10 16:00:00,ZIXTLG,FILLED,SELL,-1330.0,11.32,10.53892,,1152 +2020-06-10 16:00:00,RUKNMV,FILLED,SELL,-449.0,32.3,10.15189,,1153 +2020-06-10 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1154 +2020-06-10 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1155 +2020-06-10 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1156 +2020-06-10 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1157 +2020-06-10 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1158 +2020-06-11 16:00:00,COMNHQ,FILLED,BUY,47.0,14.52,0.477708,,1154 +2020-06-11 16:00:00,SMDIFE,FILLED,SELL,-1.0,349.3,0.24451,,1155 +2020-06-11 16:00:00,LUZLYG,FILLED,BUY,21.0,25.0,0.3675,,1156 +2020-06-11 16:00:00,HECLON,FILLED,BUY,176.0,51.67,6.365744,,1157 +2020-06-11 16:00:00,BPSPGV,FILLED,BUY,50.0,193.13,6.75955,,1158 +2020-06-11 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1159 +2020-06-11 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1160 +2020-06-11 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1161 +2020-06-11 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1162 +2020-06-11 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1163 +2020-06-11 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1164 +2020-06-12 16:00:00,COMNHQ,FILLED,SELL,-579.0,16.82,6.817146,,1159 +2020-06-12 16:00:00,SMDIFE,FILLED,SELL,-27.0,344.9,6.51861,,1160 +2020-06-12 16:00:00,LUZLYG,FILLED,SELL,-370.0,25.05,6.48795,,1161 +2020-06-12 16:00:00,HECLON,FILLED,BUY,29.0,51.42,1.043826,,1162 +2020-06-12 16:00:00,ZIXTLG,FILLED,BUY,1001.0,10.48,7.343336,,1163 +2020-06-12 16:00:00,BPSPGV,FILLED,SELL,-50.0,190.55,6.66925,,1164 +2020-06-12 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1165 +2020-06-12 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1166 +2020-06-15 16:00:00,HECLON,FILLED,SELL,-205.0,50.0,7.175,,1165 +2020-06-15 16:00:00,ZIXTLG,FILLED,SELL,-62.0,10.0,0.434,,1166 +2020-06-15 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1167 +2020-06-16 16:00:00,ZIXTLG,FILLED,SELL,-939.0,11.13,7.315749000000001,,1167 +2020-06-16 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1168 +2020-06-17 16:00:00,HECLON,FILLED,BUY,180.0,54.56,6.874560000000001,,1168 +2020-06-17 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1169 +2020-06-18 16:00:00,HECLON,FILLED,BUY,5.0,52.67,0.184345,,1169 +2020-06-18 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1170 +2020-06-18 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1171 +2020-06-19 16:00:00,HECLON,FILLED,SELL,-185.0,54.02,6.995590000000001,,1170 +2020-06-19 16:00:00,ZIXTLG,FILLED,BUY,932.0,10.83,7.065492,,1171 +2020-06-19 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1172 +2020-06-22 16:00:00,ZIXTLG,FILLED,BUY,6.0,10.57,0.044394,,1172 +2020-06-22 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1173 +2020-06-22 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1174 +2020-06-23 16:00:00,HECLON,FILLED,BUY,189.0,52.95,7.005285000000001,,1173 +2020-06-23 16:00:00,ZIXTLG,FILLED,SELL,-25.0,11.09,0.194075,,1174 +2020-06-23 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1175 +2020-06-23 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1176 +2020-06-24 16:00:00,HECLON,FILLED,SELL,-189.0,51.7,6.839910000000001,,1175 +2020-06-24 16:00:00,ZIXTLG,FILLED,BUY,414.0,10.92,3.164616,,1176 +2020-06-24 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1177 +2020-06-25 16:00:00,ZIXTLG,FILLED,SELL,-1327.0,10.56,9.809184,,1177 +2020-06-25 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1178 +2020-06-25 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1179 +2020-06-25 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1180 +2020-06-26 16:00:00,HECLON,FILLED,BUY,283.0,51.9,10.281389999999998,,1178 +2020-06-26 16:00:00,ZIXTLG,FILLED,BUY,1346.0,11.0,10.3642,,1179 +2020-06-26 16:00:00,RUKNMV,FILLED,BUY,545.0,26.2,9.9953,,1180 +2020-06-26 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1181 +2020-06-26 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1182 +2020-06-26 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1183 +2020-06-26 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1184 +2020-06-29 16:00:00,COMNHQ,FILLED,BUY,1185.0,12.55,10.410225,,1181 +2020-06-29 16:00:00,HECLON,FILLED,BUY,12.0,50.28,0.422352,,1182 +2020-06-29 16:00:00,ZIXTLG,FILLED,BUY,14.0,10.94,0.107212,,1183 +2020-06-29 16:00:00,RUKNMV,FILLED,SELL,-545.0,25.64,9.78166,,1184 +2020-06-29 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1185 +2020-06-29 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1186 +2020-06-29 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1187 +2020-06-30 16:00:00,COMNHQ,FILLED,SELL,-345.0,13.11,3.1660649999999997,,1185 +2020-06-30 16:00:00,HECLON,FILLED,SELL,-295.0,49.7,10.26305,,1186 +2020-06-30 16:00:00,ZIXTLG,FILLED,SELL,-1360.0,11.07,10.53864,,1187 +2020-06-30 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1188 +2020-06-30 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1189 +2020-07-01 16:00:00,COMNHQ,FILLED,BUY,15.0,13.46,0.14133,,1188 +2020-07-01 16:00:00,ZIXTLG,FILLED,BUY,966.0,11.64,7.870968,,1189 +2020-07-01 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1190 +2020-07-01 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1191 +2020-07-01 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1192 +2020-07-02 16:00:00,COMNHQ,FILLED,BUY,211.0,13.36,1.973272,,1190 +2020-07-02 16:00:00,FFNDVM,FILLED,BUY,2285.0,6.1,9.75695,,1191 +2020-07-02 16:00:00,ZIXTLG,FILLED,SELL,-966.0,11.65,7.87773,,1192 +2020-07-02 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1193 +2020-07-02 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1194 +2020-07-06 16:00:00,COMNHQ,FILLED,BUY,26.0,12.82,0.233324,,1193 +2020-07-06 16:00:00,FFNDVM,FILLED,SELL,-27.0,6.15,0.116235,,1194 +2020-07-06 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1195 +2020-07-06 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1196 +2020-07-06 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1197 +2020-07-06 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1198 +2020-07-07 16:00:00,COMNHQ,FILLED,SELL,-25.0,12.51,0.218925,,1195 +2020-07-07 16:00:00,HECLON,FILLED,BUY,263.0,51.25,9.435125,,1196 +2020-07-07 16:00:00,FFNDVM,FILLED,SELL,-50.0,6.13,0.21455,,1197 +2020-07-07 16:00:00,ZIXTLG,FILLED,BUY,1072.0,12.7,9.53008,,1198 +2020-07-07 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1199 +2020-07-07 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1200 +2020-07-07 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1201 +2020-07-07 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1202 +2020-07-07 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1203 +2020-07-07 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1204 +2020-07-08 16:00:00,COMNHQ,FILLED,SELL,-242.0,11.59,1.963346,,1199 +2020-07-08 16:00:00,LUZLYG,FILLED,BUY,427.0,22.98,6.868722000000001,,1200 +2020-07-08 16:00:00,HECLON,FILLED,SELL,-68.0,50.2,2.38952,,1201 +2020-07-08 16:00:00,FFNDVM,FILLED,SELL,-602.0,6.12,2.578968,,1202 +2020-07-08 16:00:00,ZIXTLG,FILLED,SELL,-1072.0,12.93,9.702672,,1203 +2020-07-08 16:00:00,RUKNMV,FILLED,BUY,401.0,24.44,6.860308,,1204 +2020-07-08 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1205 +2020-07-08 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1206 +2020-07-08 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1207 +2020-07-08 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1208 +2020-07-08 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1209 +2020-07-08 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1210 +2020-07-09 16:00:00,COMNHQ,FILLED,SELL,-5.0,11.92,0.04172,,1205 +2020-07-09 16:00:00,LUZLYG,FILLED,SELL,-2.0,22.92,0.032088000000000005,,1206 +2020-07-09 16:00:00,HECLON,FILLED,SELL,-2.0,50.73,0.071022,,1207 +2020-07-09 16:00:00,FFNDVM,FILLED,BUY,8.0,6.09,0.034103999999999995,,1208 +2020-07-09 16:00:00,BGDRAI,FILLED,BUY,1433.0,6.79,6.811049,,1209 +2020-07-09 16:00:00,RUKNMV,FILLED,SELL,-1.0,24.45,0.017115,,1210 +2020-07-09 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1211 +2020-07-09 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1212 +2020-07-09 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1213 +2020-07-09 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1214 +2020-07-09 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1215 +2020-07-09 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1216 +2020-07-09 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1217 +2020-07-10 16:00:00,COMNHQ,FILLED,BUY,57.0,11.0,0.4389,,1211 +2020-07-10 16:00:00,LUZLYG,FILLED,BUY,5.0,22.71,0.07948500000000001,,1212 +2020-07-10 16:00:00,HECLON,FILLED,BUY,5.0,49.52,0.17332,,1213 +2020-07-10 16:00:00,FFNDVM,FILLED,BUY,66.0,5.77,0.266574,,1214 +2020-07-10 16:00:00,BGDRAI,FILLED,BUY,58.0,6.55,0.26593,,1215 +2020-07-10 16:00:00,ISIJLH,FILLED,BUY,332.0,29.47,6.848827999999999,,1216 +2020-07-10 16:00:00,RUKNMV,FILLED,BUY,8.0,24.15,0.13524,,1217 +2020-07-10 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1218 +2020-07-10 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1219 +2020-07-10 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1220 +2020-07-10 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1221 +2020-07-10 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1222 +2020-07-10 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1223 +2020-07-10 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1224 +2020-07-10 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1225 +2020-07-13 16:00:00,COMNHQ,FILLED,SELL,-53.0,12.17,0.451507,,1218 +2020-07-13 16:00:00,RLSRXX,FILLED,BUY,176.0,56.71,6.986672,,1219 +2020-07-13 16:00:00,LUZLYG,FILLED,SELL,-21.0,24.39,0.35853300000000005,,1220 +2020-07-13 16:00:00,HECLON,FILLED,SELL,-12.0,53.31,0.447804,,1221 +2020-07-13 16:00:00,FFNDVM,FILLED,SELL,-67.0,6.17,0.289373,,1222 +2020-07-13 16:00:00,BGDRAI,FILLED,SELL,-20.0,6.77,0.09478,,1223 +2020-07-13 16:00:00,ISIJLH,FILLED,SELL,-332.0,30.14,7.004536,,1224 +2020-07-13 16:00:00,RUKNMV,FILLED,SELL,-22.0,25.8,0.39732,,1225 +2020-07-13 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1226 +2020-07-13 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1227 +2020-07-13 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1228 +2020-07-13 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1229 +2020-07-13 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1230 +2020-07-13 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1231 +2020-07-13 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1232 +2020-07-13 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1233 +2020-07-14 16:00:00,COMNHQ,FILLED,BUY,334.0,11.33,2.648954,,1226 +2020-07-14 16:00:00,RLSRXX,FILLED,SELL,-176.0,53.65,6.60968,,1227 +2020-07-14 16:00:00,LUZLYG,FILLED,SELL,-409.0,23.96,6.859748000000001,,1228 +2020-07-14 16:00:00,HECLON,FILLED,SELL,-186.0,51.34,6.684468,,1229 +2020-07-14 16:00:00,FFNDVM,FILLED,SELL,-1613.0,6.15,6.943965,,1230 +2020-07-14 16:00:00,BGDRAI,FILLED,SELL,-1471.0,6.65,6.847505,,1231 +2020-07-14 16:00:00,MCCZID,FILLED,BUY,382.0,35.34,9.449916,,1232 +2020-07-14 16:00:00,RUKNMV,FILLED,SELL,-386.0,23.99,6.482098,,1233 +2020-07-14 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1234 +2020-07-14 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1235 +2020-07-14 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1236 +2020-07-14 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1237 +2020-07-14 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1238 +2020-07-14 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1239 +2020-07-15 16:00:00,COMNHQ,FILLED,BUY,5.0,12.47,0.043645,,1234 +2020-07-15 16:00:00,HECLON,FILLED,BUY,268.0,51.85,9.72706,,1235 +2020-07-15 16:00:00,FFNDVM,FILLED,BUY,2116.0,6.53,9.672236000000002,,1236 +2020-07-15 16:00:00,BGDRAI,FILLED,BUY,1956.0,7.09,9.707628,,1237 +2020-07-15 16:00:00,MCCZID,FILLED,SELL,-382.0,35.92,9.605008,,1238 +2020-07-15 16:00:00,RUKNMV,FILLED,BUY,555.0,25.04,9.72804,,1239 +2020-07-15 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1240 +2020-07-15 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1241 +2020-07-15 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1242 +2020-07-15 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1243 +2020-07-15 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1244 +2020-07-16 16:00:00,COMNHQ,FILLED,SELL,-145.0,12.71,1.290065,,1240 +2020-07-16 16:00:00,HECLON,FILLED,SELL,-4.0,51.44,0.144032,,1241 +2020-07-16 16:00:00,FFNDVM,FILLED,SELL,-2116.0,6.65,9.84998,,1242 +2020-07-16 16:00:00,BGDRAI,FILLED,SELL,-39.0,7.06,0.192738,,1243 +2020-07-16 16:00:00,RUKNMV,FILLED,SELL,-15.0,24.9,0.26145,,1244 +2020-07-16 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1245 +2020-07-16 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1246 +2020-07-16 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1247 +2020-07-16 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1248 +2020-07-16 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1249 +2020-07-17 16:00:00,COMNHQ,FILLED,BUY,65.0,12.47,0.567385,,1245 +2020-07-17 16:00:00,HECLON,FILLED,SELL,-2.0,51.14,0.071596,,1246 +2020-07-17 16:00:00,FFNDVM,FILLED,BUY,1965.0,6.9,9.49095,,1247 +2020-07-17 16:00:00,BGDRAI,FILLED,SELL,-5.0,7.07,0.024745,,1248 +2020-07-17 16:00:00,RUKNMV,FILLED,SELL,-540.0,25.43,9.61254,,1249 +2020-07-17 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1250 +2020-07-17 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1251 +2020-07-17 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1252 +2020-07-17 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1253 +2020-07-17 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1254 +2020-07-17 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1255 +2020-07-17 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1256 +2020-07-20 16:00:00,COMNHQ,FILLED,SELL,-258.0,11.92,2.152752,,1250 +2020-07-20 16:00:00,LUZLYG,FILLED,BUY,423.0,23.19,6.8665590000000005,,1251 +2020-07-20 16:00:00,HECLON,FILLED,SELL,-67.0,49.88,2.339372,,1252 +2020-07-20 16:00:00,OCHCAU,FILLED,BUY,210.0,46.63,6.854610000000001,,1253 +2020-07-20 16:00:00,FFNDVM,FILLED,SELL,-1965.0,6.76,9.29838,,1254 +2020-07-20 16:00:00,BGDRAI,FILLED,SELL,-1912.0,7.01,9.382184,,1255 +2020-07-20 16:00:00,RUKNMV,FILLED,BUY,394.0,24.75,6.8260499999999995,,1256 +2020-07-20 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1257 +2020-07-20 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1258 +2020-07-20 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1259 +2020-07-20 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1260 +2020-07-20 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1261 +2020-07-20 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1262 +2020-07-21 16:00:00,COMNHQ,FILLED,BUY,31.0,11.54,0.250418,,1257 +2020-07-21 16:00:00,LUZLYG,FILLED,SELL,-423.0,23.72,7.023491999999999,,1258 +2020-07-21 16:00:00,HECLON,FILLED,SELL,-195.0,50.85,6.941025,,1259 +2020-07-21 16:00:00,OCHCAU,FILLED,SELL,-210.0,47.29,6.95163,,1260 +2020-07-21 16:00:00,BGDRAI,FILLED,BUY,1430.0,6.92,6.92692,,1261 +2020-07-21 16:00:00,RUKNMV,FILLED,SELL,-394.0,24.71,6.815017999999999,,1262 +2020-07-21 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1263 +2020-07-21 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1264 +2020-07-21 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1265 +2020-07-21 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1266 +2020-07-21 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1267 +2020-07-22 16:00:00,COMNHQ,FILLED,BUY,1.0,11.39,0.007973000000000001,,1263 +2020-07-22 16:00:00,LUZLYG,FILLED,BUY,402.0,24.27,6.829578,,1264 +2020-07-22 16:00:00,HECLON,FILLED,BUY,190.0,51.54,6.85482,,1265 +2020-07-22 16:00:00,BGDRAI,FILLED,SELL,-1430.0,6.97,6.976970000000001,,1266 +2020-07-22 16:00:00,RUKNMV,FILLED,BUY,375.0,26.13,6.859125,,1267 +2020-07-22 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1268 +2020-07-22 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1269 +2020-07-22 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1270 +2020-07-22 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1271 +2020-07-23 16:00:00,COMNHQ,FILLED,BUY,8.0,11.27,0.063112,,1268 +2020-07-23 16:00:00,LUZLYG,FILLED,SELL,-402.0,24.5,6.8943,,1269 +2020-07-23 16:00:00,HECLON,FILLED,SELL,-190.0,51.45,6.84285,,1270 +2020-07-23 16:00:00,RUKNMV,FILLED,SELL,-375.0,26.19,6.874875,,1271 +2020-07-23 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1272 +2020-07-23 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1273 +2020-07-23 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1274 +2020-07-24 16:00:00,COMNHQ,FILLED,SELL,-30.0,11.66,0.24486,,1272 +2020-07-24 16:00:00,LUZLYG,FILLED,BUY,400.0,24.56,6.8768,,1273 +2020-07-24 16:00:00,HECLON,FILLED,BUY,188.0,52.1,6.8563600000000005,,1274 +2020-07-24 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1275 +2020-07-24 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1276 +2020-07-24 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1277 +2020-07-24 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1278 +2020-07-24 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1279 +2020-07-27 16:00:00,COMNHQ,FILLED,BUY,28.0,11.5,0.2254,,1275 +2020-07-27 16:00:00,LUZLYG,FILLED,BUY,3.0,24.21,0.050841,,1276 +2020-07-27 16:00:00,HECLON,FILLED,BUY,2.0,51.16,0.071624,,1277 +2020-07-27 16:00:00,ZIJVRO,FILLED,BUY,194.0,51.05,6.932589999999999,,1278 +2020-07-27 16:00:00,HCDUCB,FILLED,BUY,196.0,50.59,6.940948000000001,,1279 +2020-07-27 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1280 +2020-07-27 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1281 +2020-07-27 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1282 +2020-07-27 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1283 +2020-07-27 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1284 +2020-07-27 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1285 +2020-07-27 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1286 +2020-07-28 16:00:00,COMNHQ,FILLED,SELL,-1.0,11.37,0.007958999999999999,,1280 +2020-07-28 16:00:00,LUZLYG,FILLED,BUY,4.0,24.13,0.067564,,1281 +2020-07-28 16:00:00,HECLON,FILLED,BUY,1.0,51.02,0.035714,,1282 +2020-07-28 16:00:00,ZIXTLG,FILLED,BUY,724.0,13.35,6.7657799999999995,,1283 +2020-07-28 16:00:00,ZIJVRO,FILLED,SELL,-194.0,49.5,6.7221,,1284 +2020-07-28 16:00:00,HCDUCB,FILLED,SELL,-196.0,51.25,7.0315,,1285 +2020-07-28 16:00:00,RUKNMV,FILLED,BUY,385.0,25.5,6.87225,,1286 +2020-07-28 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1287 +2020-07-28 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1288 +2020-07-28 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1289 +2020-07-28 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1290 +2020-07-28 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1291 +2020-07-29 16:00:00,COMNHQ,FILLED,BUY,282.0,11.79,2.327346,,1287 +2020-07-29 16:00:00,LUZLYG,FILLED,BUY,145.0,24.33,2.469495,,1288 +2020-07-29 16:00:00,HECLON,FILLED,SELL,-191.0,51.17,6.841429000000001,,1289 +2020-07-29 16:00:00,ZIXTLG,FILLED,SELL,-724.0,13.32,6.750576000000001,,1290 +2020-07-29 16:00:00,RUKNMV,FILLED,SELL,-385.0,25.5,6.87225,,1291 +2020-07-29 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1292 +2020-07-29 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1293 +2020-07-29 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1294 +2020-07-30 16:00:00,COMNHQ,FILLED,BUY,580.0,11.22,4.55532,,1292 +2020-07-30 16:00:00,LUZLYG,FILLED,BUY,226.0,24.64,3.898048,,1293 +2020-07-30 16:00:00,HECLON,FILLED,BUY,374.0,51.07,13.370126,,1294 +2020-07-30 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1295 +2020-07-30 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1296 +2020-07-30 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1297 +2020-07-30 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1298 +2020-07-30 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1299 +2020-07-31 16:00:00,COMNHQ,FILLED,BUY,33.0,11.12,0.256872,,1295 +2020-07-31 16:00:00,LUZLYG,FILLED,SELL,-778.0,24.9,13.560539999999998,,1296 +2020-07-31 16:00:00,HECLON,FILLED,BUY,12.0,50.24,0.422016,,1297 +2020-07-31 16:00:00,ZIXTLG,FILLED,BUY,1518.0,12.99,13.803174,,1298 +2020-07-31 16:00:00,RUKNMV,FILLED,BUY,797.0,24.5,13.66855,,1299 +2020-07-31 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1300 +2020-07-31 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1301 +2020-07-31 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1302 +2020-07-31 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1303 +2020-07-31 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1304 +2020-08-03 16:00:00,COMNHQ,FILLED,BUY,8.0,11.06,0.061936000000000005,,1300 +2020-08-03 16:00:00,SMDIFE,FILLED,BUY,46.0,433.0,13.9426,,1301 +2020-08-03 16:00:00,HECLON,FILLED,BUY,6.0,50.4,0.21168,,1302 +2020-08-03 16:00:00,ZIXTLG,FILLED,SELL,-1518.0,13.15,13.97319,,1303 +2020-08-03 16:00:00,RUKNMV,FILLED,SELL,-797.0,24.15,13.473285,,1304 +2020-08-03 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1305 +2020-08-03 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1306 +2020-08-03 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1307 +2020-08-03 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1308 +2020-08-03 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1309 +2020-08-04 16:00:00,COMNHQ,FILLED,SELL,-380.0,11.24,2.98984,,1305 +2020-08-04 16:00:00,SMDIFE,FILLED,SELL,-46.0,436.55,14.056909999999998,,1306 +2020-08-04 16:00:00,HECLON,FILLED,SELL,-392.0,50.28,13.796832000000002,,1307 +2020-08-04 16:00:00,FFNDVM,FILLED,BUY,2293.0,6.88,11.043088,,1308 +2020-08-04 16:00:00,BPSPGV,FILLED,BUY,70.0,214.29,10.50021,,1309 +2020-08-04 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1310 +2020-08-04 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1311 +2020-08-04 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1312 +2020-08-05 16:00:00,COMNHQ,FILLED,SELL,-47.0,11.85,0.389865,,1310 +2020-08-05 16:00:00,FFNDVM,FILLED,SELL,-55.0,6.86,0.26411,,1311 +2020-08-05 16:00:00,BPSPGV,FILLED,SELL,-70.0,214.97,10.53353,,1312 +2020-08-05 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1313 +2020-08-05 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1314 +2020-08-05 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1315 +2020-08-05 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1316 +2020-08-06 16:00:00,COMNHQ,FILLED,SELL,-114.0,13.02,1.038996,,1313 +2020-08-06 16:00:00,HECLON,FILLED,BUY,301.0,50.75,10.693025,,1314 +2020-08-06 16:00:00,FFNDVM,FILLED,SELL,-29.0,6.93,0.140679,,1315 +2020-08-06 16:00:00,ZIXTLG,FILLED,BUY,1101.0,14.0,10.7898,,1316 +2020-08-06 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1317 +2020-08-06 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1318 +2020-08-06 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1319 +2020-08-06 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1320 +2020-08-06 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1321 +2020-08-07 16:00:00,COMNHQ,FILLED,SELL,-44.0,12.79,0.393932,,1317 +2020-08-07 16:00:00,HECLON,FILLED,BUY,1.0,50.52,0.035364,,1318 +2020-08-07 16:00:00,FFNDVM,FILLED,SELL,-2209.0,6.88,10.638544,,1319 +2020-08-07 16:00:00,ZIXTLG,FILLED,SELL,-44.0,14.12,0.4348959999999999,,1320 +2020-08-07 16:00:00,BGDRAI,FILLED,BUY,2432.0,6.3,10.72512,,1321 +2020-08-07 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1322 +2020-08-07 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1323 +2020-08-07 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1324 +2020-08-07 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1325 +2020-08-07 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1326 +2020-08-07 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1327 +2020-08-07 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1328 +2020-08-10 16:00:00,COMNHQ,FILLED,BUY,1.0,13.27,0.009289,,1322 +2020-08-10 16:00:00,LUZLYG,FILLED,BUY,589.0,26.27,10.831121,,1323 +2020-08-10 16:00:00,HECLON,FILLED,SELL,-7.0,52.29,0.256221,,1324 +2020-08-10 16:00:00,YIVYGH,FILLED,BUY,359.0,42.56,10.695328,,1325 +2020-08-10 16:00:00,ZIXTLG,FILLED,SELL,-1057.0,14.15,10.469585,,1326 +2020-08-10 16:00:00,BGDRAI,FILLED,SELL,-27.0,6.4,0.12096,,1327 +2020-08-10 16:00:00,RUKNMV,FILLED,BUY,614.0,25.25,10.85245,,1328 +2020-08-10 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1329 +2020-08-10 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1330 +2020-08-10 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1331 +2020-08-10 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1332 +2020-08-10 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1333 +2020-08-10 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1334 +2020-08-10 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1335 +2020-08-11 16:00:00,COMNHQ,FILLED,SELL,-79.0,15.03,0.8311589999999999,,1329 +2020-08-11 16:00:00,LUZLYG,FILLED,SELL,-9.0,27.25,0.171675,,1330 +2020-08-11 16:00:00,HECLON,FILLED,SELL,-4.0,54.5,0.1526,,1331 +2020-08-11 16:00:00,YIVYGH,FILLED,SELL,-359.0,43.25,10.868725,,1332 +2020-08-11 16:00:00,FFNDVM,FILLED,BUY,2176.0,7.24,11.027968,,1333 +2020-08-11 16:00:00,BGDRAI,FILLED,SELL,-92.0,6.86,0.441784,,1334 +2020-08-11 16:00:00,RUKNMV,FILLED,BUY,10.0,25.34,0.17738,,1335 +2020-08-11 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1336 +2020-08-11 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1337 +2020-08-11 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1338 +2020-08-11 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1339 +2020-08-11 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1340 +2020-08-11 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1341 +2020-08-11 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1342 +2020-08-12 16:00:00,COMNHQ,FILLED,SELL,-383.0,14.04,3.764124,,1336 +2020-08-12 16:00:00,LUZLYG,FILLED,SELL,-213.0,27.5,4.10025,,1337 +2020-08-12 16:00:00,HECLON,FILLED,SELL,-108.0,54.86,4.147416,,1338 +2020-08-12 16:00:00,FFNDVM,FILLED,SELL,-809.0,7.31,4.139653,,1339 +2020-08-12 16:00:00,ZIXTLG,FILLED,BUY,708.0,14.2,7.03752,,1340 +2020-08-12 16:00:00,BGDRAI,FILLED,SELL,-845.0,6.87,4.063605,,1341 +2020-08-12 16:00:00,RUKNMV,FILLED,SELL,-234.0,25.98,4.255523999999999,,1342 +2020-08-12 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1343 +2020-08-12 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1344 +2020-08-12 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1345 +2020-08-12 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1346 +2020-08-12 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1347 +2020-08-12 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1348 +2020-08-12 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1349 +2020-08-13 16:00:00,COMNHQ,FILLED,BUY,11.0,13.17,0.101409,,1343 +2020-08-13 16:00:00,LUZLYG,FILLED,BUY,2.0,26.38,0.036932,,1344 +2020-08-13 16:00:00,HECLON,FILLED,BUY,2.0,52.81,0.073934,,1345 +2020-08-13 16:00:00,FFNDVM,FILLED,BUY,23.0,7.02,0.11302199999999998,,1346 +2020-08-13 16:00:00,ZIXTLG,FILLED,SELL,-708.0,13.85,6.864059999999999,,1347 +2020-08-13 16:00:00,BGDRAI,FILLED,BUY,2.0,6.59,0.009226,,1348 +2020-08-13 16:00:00,RUKNMV,FILLED,BUY,2.0,24.93,0.034902,,1349 +2020-08-13 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1350 +2020-08-13 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1351 +2020-08-13 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1352 +2020-08-13 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1353 +2020-08-13 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1354 +2020-08-13 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1355 +2020-08-14 16:00:00,COMNHQ,FILLED,BUY,12.0,13.11,0.110124,,1350 +2020-08-14 16:00:00,LUZLYG,FILLED,BUY,5.0,26.06,0.09121,,1351 +2020-08-14 16:00:00,HECLON,FILLED,BUY,1.0,52.45,0.036715000000000005,,1352 +2020-08-14 16:00:00,FFNDVM,FILLED,BUY,14.0,6.98,0.06840399999999999,,1353 +2020-08-14 16:00:00,BGDRAI,FILLED,BUY,26.0,6.52,0.118664,,1354 +2020-08-14 16:00:00,RUKNMV,FILLED,SELL,-392.0,24.81,6.807863999999999,,1355 +2020-08-14 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1356 +2020-08-14 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1357 +2020-08-14 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1358 +2020-08-14 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1359 +2020-08-14 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1360 +2020-08-17 16:00:00,COMNHQ,FILLED,SELL,-2.0,13.31,0.018634,,1356 +2020-08-17 16:00:00,LUZLYG,FILLED,SELL,-374.0,26.31,6.887957999999999,,1357 +2020-08-17 16:00:00,FFNDVM,FILLED,SELL,-2.0,7.02,0.009828,,1358 +2020-08-17 16:00:00,BGDRAI,FILLED,SELL,-13.0,6.67,0.060696999999999994,,1359 +2020-08-17 16:00:00,RUKNMV,FILLED,BUY,390.0,25.0,6.825,,1360 +2020-08-17 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1361 +2020-08-17 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1362 +2020-08-17 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1363 +2020-08-17 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1364 +2020-08-17 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1365 +2020-08-17 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1366 +2020-08-17 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1367 +2020-08-17 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1368 +2020-08-18 16:00:00,COMNHQ,FILLED,BUY,41.0,12.61,0.361907,,1361 +2020-08-18 16:00:00,LUZLYG,FILLED,BUY,380.0,25.86,6.87876,,1362 +2020-08-18 16:00:00,HECLON,FILLED,BUY,5.0,51.49,0.180215,,1363 +2020-08-18 16:00:00,YIVYGH,FILLED,BUY,226.0,43.71,6.914922000000001,,1364 +2020-08-18 16:00:00,FFNDVM,FILLED,BUY,10.0,7.0,0.049,,1365 +2020-08-18 16:00:00,ZIXTLG,FILLED,BUY,699.0,14.3,6.99699,,1366 +2020-08-18 16:00:00,BGDRAI,FILLED,BUY,41.0,6.5,0.18655,,1367 +2020-08-18 16:00:00,RUKNMV,FILLED,BUY,13.0,24.42,0.22222200000000003,,1368 +2020-08-18 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1369 +2020-08-18 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1370 +2020-08-18 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1371 +2020-08-18 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1372 +2020-08-18 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1373 +2020-08-18 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1374 +2020-08-18 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1375 +2020-08-18 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1376 +2020-08-18 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1377 +2020-08-18 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1378 +2020-08-19 16:00:00,COMNHQ,FILLED,BUY,1.0,12.65,0.008855,,1369 +2020-08-19 16:00:00,LUZLYG,FILLED,BUY,6.0,25.64,0.107688,,1370 +2020-08-19 16:00:00,HECLON,FILLED,BUY,4.0,50.68,0.141904,,1371 +2020-08-19 16:00:00,YIVYGH,FILLED,SELL,-226.0,43.66,6.907012,,1372 +2020-08-19 16:00:00,FFNDVM,FILLED,BUY,18.0,6.88,0.086688,,1373 +2020-08-19 16:00:00,ZIXTLG,FILLED,SELL,-16.0,14.55,0.16296,,1374 +2020-08-19 16:00:00,BGDRAI,FILLED,BUY,6.0,6.44,0.027048,,1375 +2020-08-19 16:00:00,ZIJVRO,FILLED,BUY,202.0,48.8,6.900319999999999,,1376 +2020-08-19 16:00:00,HCDUCB,FILLED,BUY,221.0,44.3,6.85321,,1377 +2020-08-19 16:00:00,RUKNMV,FILLED,BUY,6.0,24.0,0.1008,,1378 +2020-08-19 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1379 +2020-08-19 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1380 +2020-08-19 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1381 +2020-08-19 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1382 +2020-08-19 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1383 +2020-08-19 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1384 +2020-08-19 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1385 +2020-08-19 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1386 +2020-08-20 16:00:00,COMNHQ,FILLED,SELL,-5.0,12.38,0.04333,,1379 +2020-08-20 16:00:00,LUZLYG,FILLED,SELL,-386.0,25.15,6.795529999999999,,1380 +2020-08-20 16:00:00,HECLON,FILLED,BUY,1.0,49.52,0.034664,,1381 +2020-08-20 16:00:00,FFNDVM,FILLED,SELL,-1430.0,6.77,6.776769999999999,,1382 +2020-08-20 16:00:00,ZIXTLG,FILLED,SELL,-24.0,14.6,0.24527999999999997,,1383 +2020-08-20 16:00:00,BGDRAI,FILLED,BUY,14.0,6.33,0.062034000000000006,,1384 +2020-08-20 16:00:00,ZIJVRO,FILLED,BUY,1.0,49.82,0.034874,,1385 +2020-08-20 16:00:00,HCDUCB,FILLED,SELL,-221.0,42.68,6.602596,,1386 +2020-08-20 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1387 +2020-08-20 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1388 +2020-08-20 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1389 +2020-08-20 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1390 +2020-08-20 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1391 +2020-08-20 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1392 +2020-08-20 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1393 +2020-08-20 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1394 +2020-08-20 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1395 +2020-08-21 16:00:00,COMNHQ,FILLED,BUY,10.0,12.47,0.08729,,1387 +2020-08-21 16:00:00,LUZLYG,FILLED,BUY,392.0,25.0,6.86,,1388 +2020-08-21 16:00:00,HECLON,FILLED,BUY,2.0,49.45,0.06923,,1389 +2020-08-21 16:00:00,ZIXTLG,FILLED,SELL,-659.0,14.44,6.661172,,1390 +2020-08-21 16:00:00,BGDRAI,FILLED,BUY,26.0,6.25,0.11375,,1391 +2020-08-21 16:00:00,ZIJVRO,FILLED,SELL,-3.0,49.07,0.103047,,1392 +2020-08-21 16:00:00,HCDUCB,FILLED,BUY,229.0,42.92,6.880076,,1393 +2020-08-21 16:00:00,MCCZID,FILLED,BUY,254.0,38.85,6.9075299999999995,,1394 +2020-08-21 16:00:00,RUKNMV,FILLED,BUY,5.0,23.6,0.08259999999999999,,1395 +2020-08-21 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1396 +2020-08-21 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1397 +2020-08-21 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1398 +2020-08-21 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1399 +2020-08-21 16:00:00,ZIXTLG,SUBMITTED,BUY,0.0,0.0,0.0,,1400 +2020-08-21 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1401 +2020-08-21 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1402 +2020-08-21 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1403 +2020-08-21 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1404 +2020-08-21 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1405 +2020-08-24 16:00:00,COMNHQ,FILLED,BUY,22.0,12.44,0.191576,,1396 +2020-08-24 16:00:00,LUZLYG,FILLED,BUY,1.0,25.22,0.017654,,1397 +2020-08-24 16:00:00,HECLON,FILLED,BUY,1.0,49.9,0.034929999999999996,,1398 +2020-08-24 16:00:00,FFNDVM,FILLED,BUY,1477.0,6.73,6.958147,,1399 +2020-08-24 16:00:00,ZIXTLG,FILLED,BUY,685.0,14.6,7.0007,,1400 +2020-08-24 16:00:00,BGDRAI,FILLED,SELL,-11.0,6.35,0.048894999999999994,,1401 +2020-08-24 16:00:00,ZIJVRO,FILLED,SELL,-1.0,49.28,0.034496,,1402 +2020-08-24 16:00:00,HCDUCB,FILLED,BUY,1.0,43.17,0.030219,,1403 +2020-08-24 16:00:00,MCCZID,FILLED,SELL,-254.0,39.0,6.9342,,1404 +2020-08-24 16:00:00,RUKNMV,FILLED,BUY,2.0,23.76,0.033264,,1405 +2020-08-24 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1406 +2020-08-24 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1407 +2020-08-24 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1408 +2020-08-24 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1409 +2020-08-24 16:00:00,ZIXTLG,SUBMITTED,SELL,0.0,0.0,0.0,,1410 +2020-08-24 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1411 +2020-08-24 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1412 +2020-08-24 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1413 +2020-08-24 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1414 +2020-08-25 16:00:00,COMNHQ,FILLED,SELL,-75.0,13.7,0.71925,,1406 +2020-08-25 16:00:00,LUZLYG,FILLED,SELL,-9.0,26.04,0.16405199999999998,,1407 +2020-08-25 16:00:00,HECLON,FILLED,SELL,-6.0,51.8,0.21756,,1408 +2020-08-25 16:00:00,FFNDVM,FILLED,SELL,-1477.0,7.01,7.247639,,1409 +2020-08-25 16:00:00,ZIXTLG,FILLED,SELL,-685.0,14.54,6.9719299999999995,,1410 +2020-08-25 16:00:00,BGDRAI,FILLED,SELL,-71.0,6.65,0.330505,,1411 +2020-08-25 16:00:00,ZIJVRO,FILLED,SELL,-199.0,49.35,6.874454999999999,,1412 +2020-08-25 16:00:00,HCDUCB,FILLED,SELL,-230.0,44.84,7.21924,,1413 +2020-08-25 16:00:00,RUKNMV,FILLED,SELL,-13.0,24.74,0.225134,,1414 +2020-08-25 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1415 +2020-08-25 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1416 +2020-08-25 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1417 +2020-08-25 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1418 +2020-08-25 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1419 +2020-08-25 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1420 +2020-08-26 16:00:00,COMNHQ,FILLED,BUY,422.0,13.1,3.86974,,1415 +2020-08-26 16:00:00,LUZLYG,FILLED,SELL,-384.0,25.94,6.972672,,1416 +2020-08-26 16:00:00,HECLON,FILLED,BUY,101.0,51.66,3.652362,,1417 +2020-08-26 16:00:00,BGDRAI,FILLED,SELL,-1488.0,6.6,6.87456,,1418 +2020-08-26 16:00:00,HCDUCB,FILLED,BUY,336.0,45.65,10.73688,,1419 +2020-08-26 16:00:00,RUKNMV,FILLED,BUY,214.0,24.49,3.668602,,1420 +2020-08-26 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1421 +2020-08-26 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1422 +2020-08-26 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1423 +2020-08-26 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1424 +2020-08-26 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1425 +2020-08-27 16:00:00,COMNHQ,FILLED,BUY,30.0,13.4,0.2814,,1421 +2020-08-27 16:00:00,HECLON,FILLED,BUY,4.0,50.68,0.141904,,1422 +2020-08-27 16:00:00,BGDRAI,FILLED,BUY,2341.0,6.5,10.65155,,1423 +2020-08-27 16:00:00,HCDUCB,FILLED,SELL,-336.0,44.55,10.47816,,1424 +2020-08-27 16:00:00,RUKNMV,FILLED,BUY,14.0,24.0,0.2352,,1425 +2020-08-27 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1426 +2020-08-27 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1427 +2020-08-27 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1428 +2020-08-27 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1429 +2020-08-27 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1430 +2020-08-28 16:00:00,COMNHQ,FILLED,SELL,-43.0,13.58,0.408758,,1426 +2020-08-28 16:00:00,LUZLYG,FILLED,BUY,582.0,26.45,10.77573,,1427 +2020-08-28 16:00:00,HECLON,FILLED,SELL,-5.0,52.07,0.182245,,1428 +2020-08-28 16:00:00,BGDRAI,FILLED,SELL,-2341.0,6.5,10.65155,,1429 +2020-08-28 16:00:00,RUKNMV,FILLED,SELL,-14.0,24.72,0.242256,,1430 +2020-08-28 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1431 +2020-08-28 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1432 +2020-08-28 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1433 +2020-08-28 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1434 +2020-08-28 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1435 +2020-08-31 16:00:00,COMNHQ,FILLED,SELL,-25.0,13.59,0.237825,,1431 +2020-08-31 16:00:00,LUZLYG,FILLED,SELL,-582.0,26.09,10.629066,,1432 +2020-08-31 16:00:00,HECLON,FILLED,SELL,-3.0,51.91,0.109011,,1433 +2020-08-31 16:00:00,HCDUCB,FILLED,BUY,332.0,45.33,10.534692,,1434 +2020-08-31 16:00:00,RUKNMV,FILLED,SELL,-617.0,24.48,10.572912,,1435 +2020-08-31 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1436 +2020-08-31 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1437 +2020-08-31 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1438 +2020-08-31 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1439 +2020-08-31 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1440 +2020-09-01 16:00:00,COMNHQ,FILLED,SELL,-219.0,12.8,1.96224,,1436 +2020-09-01 16:00:00,SMDIFE,FILLED,BUY,91.0,132.91,8.466367,,1437 +2020-09-01 16:00:00,HECLON,FILLED,SELL,-61.0,50.88,2.1725760000000003,,1438 +2020-09-01 16:00:00,HCDUCB,FILLED,SELL,-332.0,45.5,10.5742,,1439 +2020-09-01 16:00:00,RUKNMV,FILLED,BUY,486.0,23.96,8.151192,,1440 +2020-09-01 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1441 +2020-09-01 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1442 +2020-09-01 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1443 +2020-09-01 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1444 +2020-09-01 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1445 +2020-09-02 16:00:00,COMNHQ,FILLED,SELL,-3.0,12.92,0.027132,,1441 +2020-09-02 16:00:00,SMDIFE,FILLED,SELL,-4.0,137.58,0.385224,,1442 +2020-09-02 16:00:00,HECLON,FILLED,SELL,-229.0,51.01,8.176903,,1443 +2020-09-02 16:00:00,ISIJLH,FILLED,BUY,398.0,29.35,8.176910000000001,,1444 +2020-09-02 16:00:00,RUKNMV,FILLED,SELL,-486.0,23.98,8.157996,,1445 +2020-09-02 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1446 +2020-09-02 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1447 +2020-09-02 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1448 +2020-09-03 16:00:00,COMNHQ,FILLED,BUY,139.0,13.4,1.30382,,1446 +2020-09-03 16:00:00,SMDIFE,FILLED,BUY,17.0,126.97,1.510943,,1447 +2020-09-03 16:00:00,ISIJLH,FILLED,SELL,-398.0,29.9,8.330139999999998,,1448 +2020-09-03 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1449 +2020-09-03 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1450 +2020-09-03 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1451 +2020-09-04 16:00:00,COMNHQ,FILLED,SELL,-25.0,13.66,0.23905,,1449 +2020-09-04 16:00:00,SMDIFE,FILLED,BUY,7.0,120.0,0.588,,1450 +2020-09-04 16:00:00,RLSRXX,FILLED,BUY,163.0,81.4,9.28774,,1451 +2020-09-04 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1452 +2020-09-04 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1453 +2020-09-04 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1454 +2020-09-04 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1455 +2020-09-08 16:00:00,COMNHQ,FILLED,SELL,-18.0,13.36,0.168336,,1452 +2020-09-08 16:00:00,RLSRXX,FILLED,SELL,-163.0,78.0,8.899799999999999,,1453 +2020-09-08 16:00:00,LUZLYG,FILLED,BUY,508.0,26.1,9.28116,,1454 +2020-09-08 16:00:00,HECLON,FILLED,BUY,257.0,51.97,9.349403,,1455 +2020-09-08 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1456 +2020-09-08 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1457 +2020-09-08 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1458 +2020-09-08 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1459 +2020-09-08 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1460 +2020-09-09 16:00:00,COMNHQ,FILLED,SELL,-271.0,13.49,2.559053,,1456 +2020-09-09 16:00:00,SMDIFE,FILLED,SELL,-24.0,117.3,1.97064,,1457 +2020-09-09 16:00:00,LUZLYG,FILLED,SELL,-508.0,25.65,9.12114,,1458 +2020-09-09 16:00:00,HECLON,FILLED,SELL,-65.0,51.2,2.3296,,1459 +2020-09-09 16:00:00,RUKNMV,FILLED,BUY,410.0,24.0,6.888,,1460 +2020-09-09 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1461 +2020-09-09 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1462 +2020-09-09 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1463 +2020-09-09 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1464 +2020-09-10 16:00:00,COMNHQ,FILLED,BUY,33.0,13.2,0.30491999999999997,,1461 +2020-09-10 16:00:00,SMDIFE,FILLED,SELL,-4.0,120.37,0.337036,,1462 +2020-09-10 16:00:00,HECLON,FILLED,SELL,-192.0,51.72,6.951168,,1463 +2020-09-10 16:00:00,RUKNMV,FILLED,SELL,-410.0,24.1,6.9167,,1464 +2020-09-10 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1465 +2020-09-10 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1466 +2020-09-10 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1467 +2020-09-10 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1468 +2020-09-11 16:00:00,COMNHQ,FILLED,BUY,2.0,13.03,0.018242,,1465 +2020-09-11 16:00:00,SMDIFE,FILLED,BUY,3.0,114.68,0.240828,,1466 +2020-09-11 16:00:00,BGDRAI,FILLED,BUY,1639.0,6.02,6.906745999999999,,1467 +2020-09-11 16:00:00,ISIJLH,FILLED,BUY,340.0,28.95,6.8901,,1468 +2020-09-11 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1469 +2020-09-11 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1470 +2020-09-11 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1471 +2020-09-11 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1472 +2020-09-11 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1473 +2020-09-11 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1474 +2020-09-14 16:00:00,COMNHQ,FILLED,SELL,-756.0,13.02,6.890184,,1469 +2020-09-14 16:00:00,SMDIFE,FILLED,BUY,1.0,114.78,0.080346,,1470 +2020-09-14 16:00:00,OCHCAU,FILLED,BUY,246.0,40.26,6.932771999999999,,1471 +2020-09-14 16:00:00,FFNDVM,FILLED,BUY,1405.0,7.01,6.894334999999999,,1472 +2020-09-14 16:00:00,BGDRAI,FILLED,SELL,-1639.0,5.99,6.872327,,1473 +2020-09-14 16:00:00,ISIJLH,FILLED,SELL,-1.0,29.11,0.020377,,1474 +2020-09-14 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1475 +2020-09-14 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1476 +2020-09-14 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1477 +2020-09-14 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1478 +2020-09-14 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1479 +2020-09-14 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1480 +2020-09-15 16:00:00,SMDIFE,FILLED,SELL,-2.0,118.38,0.165732,,1475 +2020-09-15 16:00:00,HECLON,FILLED,BUY,204.0,48.05,6.861539999999999,,1476 +2020-09-15 16:00:00,OCHCAU,FILLED,SELL,-246.0,40.55,6.982709999999999,,1477 +2020-09-15 16:00:00,FFNDVM,FILLED,SELL,-1405.0,7.15,7.032025,,1478 +2020-09-15 16:00:00,MCCZID,FILLED,BUY,265.0,37.25,6.9098749999999995,,1479 +2020-09-15 16:00:00,ISIJLH,FILLED,SELL,-2.0,29.17,0.040838,,1480 +2020-09-15 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1481 +2020-09-15 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1482 +2020-09-15 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1483 +2020-09-15 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1484 +2020-09-16 16:00:00,HECLON,FILLED,BUY,15.0,45.17,0.47428500000000007,,1481 +2020-09-16 16:00:00,YIVYGH,FILLED,BUY,211.0,47.05,6.949285,,1482 +2020-09-16 16:00:00,MCCZID,FILLED,SELL,-265.0,37.19,6.898744999999999,,1483 +2020-09-16 16:00:00,ISIJLH,FILLED,SELL,-337.0,29.13,6.871766999999999,,1484 +2020-09-16 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1485 +2020-09-16 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1486 +2020-09-16 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1487 +2020-09-16 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1488 +2020-09-16 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1489 +2020-09-16 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1490 +2020-09-16 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1491 +2020-09-17 16:00:00,COMNHQ,FILLED,BUY,712.0,13.54,6.748335999999999,,1485 +2020-09-17 16:00:00,SMDIFE,FILLED,BUY,2.0,109.77,0.15367799999999998,,1486 +2020-09-17 16:00:00,HECLON,FILLED,SELL,-219.0,45.44,6.965951999999999,,1487 +2020-09-17 16:00:00,YIVYGH,FILLED,SELL,-211.0,46.02,6.797154000000001,,1488 +2020-09-17 16:00:00,BGDRAI,FILLED,BUY,1457.0,6.75,6.884325,,1489 +2020-09-17 16:00:00,MCCZID,FILLED,BUY,267.0,36.79,6.876051,,1490 +2020-09-17 16:00:00,RUKNMV,FILLED,BUY,382.0,25.15,6.725109999999999,,1491 +2020-09-17 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1492 +2020-09-17 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1493 +2020-09-17 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1494 +2020-09-17 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1495 +2020-09-17 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1496 +2020-09-18 16:00:00,COMNHQ,FILLED,SELL,-712.0,13.5,6.7284,,1492 +2020-09-18 16:00:00,SMDIFE,FILLED,BUY,2.0,110.41,0.154574,,1493 +2020-09-18 16:00:00,YIVYGH,FILLED,BUY,215.0,45.48,6.844739999999999,,1494 +2020-09-18 16:00:00,BGDRAI,FILLED,SELL,-1457.0,6.9,7.037310000000001,,1495 +2020-09-18 16:00:00,RUKNMV,FILLED,BUY,9.0,24.92,0.15699600000000002,,1496 +2020-09-18 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1497 +2020-09-18 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1498 +2020-09-18 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1499 +2020-09-18 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1500 +2020-09-21 16:00:00,SMDIFE,FILLED,BUY,3.0,104.52,0.219492,,1497 +2020-09-21 16:00:00,YIVYGH,FILLED,SELL,-215.0,44.82,6.74541,,1498 +2020-09-21 16:00:00,MCCZID,FILLED,BUY,4.0,36.36,0.101808,,1499 +2020-09-21 16:00:00,RUKNMV,FILLED,SELL,-391.0,24.46,6.694702,,1500 +2020-09-21 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1501 +2020-09-21 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1502 +2020-09-21 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1503 +2020-09-21 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1504 +2020-09-21 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1505 +2020-09-22 16:00:00,COMNHQ,FILLED,BUY,804.0,12.26,6.899927999999999,,1501 +2020-09-22 16:00:00,SMDIFE,FILLED,SELL,-3.0,112.67,0.236607,,1502 +2020-09-22 16:00:00,RLSRXX,FILLED,BUY,126.0,78.3,6.906059999999999,,1503 +2020-09-22 16:00:00,OCHCAU,FILLED,BUY,251.0,39.18,6.883926,,1504 +2020-09-22 16:00:00,MCCZID,FILLED,BUY,1.0,35.77,0.025039,,1505 +2020-09-22 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1506 +2020-09-22 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1507 +2020-09-22 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1508 +2020-09-22 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,1509 +2020-09-22 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1510 +2020-09-22 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1511 +2020-09-22 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1512 +2020-09-23 16:00:00,COMNHQ,FILLED,BUY,287.0,12.52,2.515268,,1506 +2020-09-23 16:00:00,SMDIFE,FILLED,BUY,31.0,111.63,2.4223709999999996,,1507 +2020-09-23 16:00:00,RLSRXX,FILLED,BUY,47.0,77.42,2.547118,,1508 +2020-09-23 16:00:00,XUEHVZ,FILLED,BUY,4.0,3119.42,8.734376,,1509 +2020-09-23 16:00:00,YIVYGH,FILLED,BUY,291.0,46.19,9.408903,,1510 +2020-09-23 16:00:00,OCHCAU,FILLED,SELL,-251.0,39.23,6.892710999999999,,1511 +2020-09-23 16:00:00,MCCZID,FILLED,BUY,99.0,36.3,2.51559,,1512 +2020-09-23 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1513 +2020-09-23 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1514 +2020-09-23 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1515 +2020-09-23 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,1516 +2020-09-23 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1517 +2020-09-23 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1518 +2020-09-23 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1519 +2020-09-24 16:00:00,COMNHQ,FILLED,BUY,34.0,11.72,0.278936,,1513 +2020-09-24 16:00:00,SMDIFE,FILLED,BUY,5.0,105.18,0.36813000000000007,,1514 +2020-09-24 16:00:00,RLSRXX,FILLED,BUY,6.0,74.35,0.31227,,1515 +2020-09-24 16:00:00,XUEHVZ,FILLED,SELL,-4.0,2984.03,8.355284000000001,,1516 +2020-09-24 16:00:00,YIVYGH,FILLED,SELL,-291.0,45.19,9.205203,,1517 +2020-09-24 16:00:00,MCCZID,FILLED,SELL,-371.0,35.9,9.32323,,1518 +2020-09-24 16:00:00,ISIJLH,FILLED,BUY,481.0,27.85,9.377095,,1519 +2020-09-24 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1520 +2020-09-24 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1521 +2020-09-24 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1522 +2020-09-24 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1523 +2020-09-25 16:00:00,COMNHQ,FILLED,BUY,16.0,11.73,0.131376,,1520 +2020-09-25 16:00:00,SMDIFE,FILLED,SELL,-1.0,108.49,0.075943,,1521 +2020-09-25 16:00:00,RLSRXX,FILLED,SELL,-2.0,76.36,0.106904,,1522 +2020-09-25 16:00:00,ISIJLH,FILLED,SELL,-481.0,27.89,9.390563,,1523 +2020-09-25 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1524 +2020-09-25 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1525 +2020-09-25 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1526 +2020-09-28 16:00:00,COMNHQ,FILLED,SELL,-47.0,12.75,0.419475,,1524 +2020-09-28 16:00:00,SMDIFE,FILLED,SELL,-5.0,114.91,0.402185,,1525 +2020-09-28 16:00:00,RLSRXX,FILLED,SELL,-5.0,79.0,0.2765,,1526 +2020-09-28 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1527 +2020-09-28 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1528 +2020-09-28 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1529 +2020-09-29 16:00:00,COMNHQ,FILLED,SELL,-292.0,12.57,2.569308,,1527 +2020-09-29 16:00:00,SMDIFE,FILLED,SELL,-30.0,114.52,2.4049199999999997,,1528 +2020-09-29 16:00:00,RLSRXX,FILLED,SELL,-44.0,79.3,2.44244,,1529 +2020-09-29 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1530 +2020-09-29 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1531 +2020-09-29 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1532 +2020-09-30 16:00:00,COMNHQ,FILLED,BUY,33.0,12.35,0.285285,,1530 +2020-09-30 16:00:00,RLSRXX,FILLED,SELL,-3.0,81.71,0.171591,,1531 +2020-09-30 16:00:00,MCCZID,FILLED,BUY,283.0,36.28,7.187068,,1532 +2020-09-30 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1533 +2020-09-30 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1534 +2020-09-30 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1535 +2020-09-30 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1536 +2020-10-01 16:00:00,COMNHQ,FILLED,BUY,105.0,12.44,0.91434,,1533 +2020-10-01 16:00:00,SMDIFE,FILLED,SELL,-89.0,117.72,7.333956,,1534 +2020-10-01 16:00:00,RLSRXX,FILLED,BUY,16.0,83.11,0.930832,,1535 +2020-10-01 16:00:00,MCCZID,FILLED,BUY,32.0,36.75,0.8232,,1536 +2020-10-01 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1537 +2020-10-01 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1538 +2020-10-01 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1539 +2020-10-02 16:00:00,COMNHQ,FILLED,SELL,-21.0,12.02,0.176694,,1537 +2020-10-02 16:00:00,RLSRXX,FILLED,SELL,-5.0,82.57,0.28899499999999995,,1538 +2020-10-02 16:00:00,MCCZID,FILLED,SELL,-315.0,36.1,7.96005,,1539 +2020-10-02 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1540 +2020-10-02 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1541 +2020-10-05 16:00:00,COMNHQ,FILLED,SELL,-29.0,13.1,0.26593,,1540 +2020-10-05 16:00:00,RLSRXX,FILLED,BUY,5.0,82.55,0.288925,,1541 +2020-10-05 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1542 +2020-10-05 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1543 +2020-10-06 16:00:00,COMNHQ,FILLED,SELL,-8.0,13.29,0.07442399999999999,,1542 +2020-10-06 16:00:00,RLSRXX,FILLED,SELL,-7.0,86.19,0.422331,,1543 +2020-10-06 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1544 +2020-10-06 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1545 +2020-10-06 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1546 +2020-10-06 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1547 +2020-10-07 16:00:00,COMNHQ,FILLED,SELL,-90.0,12.97,0.81711,,1544 +2020-10-07 16:00:00,RLSRXX,FILLED,SELL,-17.0,86.11,1.024709,,1545 +2020-10-07 16:00:00,LUZLYG,FILLED,BUY,407.0,24.61,7.011389,,1546 +2020-10-07 16:00:00,MCCZID,FILLED,BUY,274.0,36.22,6.9469959999999995,,1547 +2020-10-07 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1548 +2020-10-07 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1549 +2020-10-07 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1550 +2020-10-07 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1551 +2020-10-07 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1552 +2020-10-07 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1553 +2020-10-07 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1554 +2020-10-08 16:00:00,COMNHQ,FILLED,SELL,-32.0,13.34,0.29881599999999997,,1548 +2020-10-08 16:00:00,RLSRXX,FILLED,SELL,-3.0,88.01,0.184821,,1549 +2020-10-08 16:00:00,LUZLYG,FILLED,SELL,-407.0,24.95,7.108255,,1550 +2020-10-08 16:00:00,OCHCAU,FILLED,BUY,252.0,39.8,7.020719999999999,,1551 +2020-10-08 16:00:00,FFNDVM,FILLED,BUY,1375.0,7.25,6.978125,,1552 +2020-10-08 16:00:00,MCCZID,FILLED,SELL,-274.0,36.6,7.01988,,1553 +2020-10-08 16:00:00,RUKNMV,FILLED,BUY,400.0,24.9,6.9719999999999995,,1554 +2020-10-08 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1555 +2020-10-08 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1556 +2020-10-08 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1557 +2020-10-08 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1558 +2020-10-09 16:00:00,COMNHQ,FILLED,SELL,-5.0,13.24,0.04634,,1555 +2020-10-09 16:00:00,OCHCAU,FILLED,SELL,-252.0,40.12,7.0771679999999995,,1556 +2020-10-09 16:00:00,FFNDVM,FILLED,SELL,-1375.0,7.36,7.084,,1557 +2020-10-09 16:00:00,RUKNMV,FILLED,SELL,-400.0,25.42,7.1176,,1558 +2020-10-09 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1559 +2020-10-09 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1560 +2020-10-09 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,1561 +2020-10-09 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1562 +2020-10-12 16:00:00,COMNHQ,FILLED,SELL,-2.0,13.12,0.018368,,1559 +2020-10-12 16:00:00,RLSRXX,FILLED,BUY,5.0,83.69,0.292915,,1560 +2020-10-12 16:00:00,XUEHVZ,FILLED,BUY,3.0,3279.36,6.8866559999999994,,1561 +2020-10-12 16:00:00,BPSPGV,FILLED,BUY,46.0,218.67,7.041174,,1562 +2020-10-12 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1563 +2020-10-12 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1564 +2020-10-12 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1565 +2020-10-12 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,1566 +2020-10-12 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,1567 +2020-10-12 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1568 +2020-10-12 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1569 +2020-10-13 16:00:00,COMNHQ,FILLED,BUY,144.0,12.52,1.2620159999999998,,1563 +2020-10-13 16:00:00,RLSRXX,FILLED,BUY,18.0,85.05,1.07163,,1564 +2020-10-13 16:00:00,OCHCAU,FILLED,BUY,287.0,40.53,8.142477,,1565 +2020-10-13 16:00:00,CEMOJE,FILLED,BUY,7.0,1569.27,7.689423,,1566 +2020-10-13 16:00:00,GTKILW,FILLED,BUY,7.0,1575.35,7.719214999999999,,1567 +2020-10-13 16:00:00,ZIJVRO,FILLED,BUY,215.0,54.27,8.167635,,1568 +2020-10-13 16:00:00,BPSPGV,FILLED,BUY,6.0,222.47,0.934374,,1569 +2020-10-13 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1570 +2020-10-13 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1571 +2020-10-13 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,1572 +2020-10-13 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1573 +2020-10-13 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1574 +2020-10-13 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,1575 +2020-10-13 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,1576 +2020-10-13 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1577 +2020-10-13 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1578 +2020-10-14 16:00:00,COMNHQ,FILLED,BUY,50.0,12.33,0.43155,,1570 +2020-10-14 16:00:00,RLSRXX,FILLED,SELL,-2.0,85.86,0.120204,,1571 +2020-10-14 16:00:00,XUEHVZ,FILLED,SELL,-3.0,3437.4,7.218540000000001,,1572 +2020-10-14 16:00:00,HECLON,FILLED,BUY,265.0,43.6,8.0878,,1573 +2020-10-14 16:00:00,OCHCAU,FILLED,BUY,3.0,39.85,0.08368500000000001,,1574 +2020-10-14 16:00:00,CEMOJE,FILLED,SELL,-7.0,1580.02,7.742098,,1575 +2020-10-14 16:00:00,GTKILW,FILLED,SELL,-7.0,1562.56,7.656544,,1576 +2020-10-14 16:00:00,ZIJVRO,FILLED,SELL,-215.0,54.07,8.137535,,1577 +2020-10-14 16:00:00,BPSPGV,FILLED,SELL,-52.0,222.96,8.115744,,1578 +2020-10-14 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1579 +2020-10-14 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1580 +2020-10-14 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,1581 +2020-10-14 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1582 +2020-10-14 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1583 +2020-10-15 16:00:00,COMNHQ,FILLED,SELL,-11.0,12.22,0.094094,,1579 +2020-10-15 16:00:00,RLSRXX,FILLED,BUY,2.0,83.48,0.116872,,1580 +2020-10-15 16:00:00,XUEHVZ,FILLED,BUY,3.0,3339.1,7.01211,,1581 +2020-10-15 16:00:00,HECLON,FILLED,SELL,-265.0,42.54,7.89117,,1582 +2020-10-15 16:00:00,BPSPGV,FILLED,BUY,52.0,216.95,7.896979999999999,,1583 +2020-10-15 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1584 +2020-10-15 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1585 +2020-10-15 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,1586 +2020-10-15 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1587 +2020-10-15 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1588 +2020-10-15 16:00:00,HCDUCB,SUBMITTED,BUY,0.0,0.0,0.0,,1589 +2020-10-16 16:00:00,COMNHQ,FILLED,BUY,10.0,12.25,0.08574999999999999,,1584 +2020-10-16 16:00:00,RLSRXX,FILLED,BUY,2.0,83.74,0.117236,,1585 +2020-10-16 16:00:00,XUEHVZ,FILLED,SELL,-3.0,3330.58,6.994218,,1586 +2020-10-16 16:00:00,OCHCAU,FILLED,SELL,-290.0,39.93,8.10579,,1587 +2020-10-16 16:00:00,BPSPGV,FILLED,SELL,-52.0,220.42,8.023288,,1588 +2020-10-16 16:00:00,HCDUCB,FILLED,BUY,222.0,52.19,8.110326,,1589 +2020-10-16 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1590 +2020-10-16 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1591 +2020-10-16 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1592 +2020-10-16 16:00:00,BGDRAI,SUBMITTED,BUY,0.0,0.0,0.0,,1593 +2020-10-16 16:00:00,HCDUCB,SUBMITTED,SELL,0.0,0.0,0.0,,1594 +2020-10-16 16:00:00,MCCZID,SUBMITTED,BUY,0.0,0.0,0.0,,1595 +2020-10-19 16:00:00,COMNHQ,FILLED,SELL,-157.0,12.64,1.389136,,1590 +2020-10-19 16:00:00,RLSRXX,FILLED,SELL,-21.0,83.66,1.2298019999999998,,1591 +2020-10-19 16:00:00,OCHCAU,FILLED,BUY,245.0,40.15,6.885725,,1592 +2020-10-19 16:00:00,BGDRAI,FILLED,BUY,1349.0,7.39,6.978376999999999,,1593 +2020-10-19 16:00:00,HCDUCB,FILLED,SELL,-222.0,51.97,8.076138,,1594 +2020-10-19 16:00:00,MCCZID,FILLED,BUY,259.0,38.48,6.976424,,1595 +2020-10-19 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1596 +2020-10-19 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1597 +2020-10-19 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,1598 +2020-10-19 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1599 +2020-10-19 16:00:00,BGDRAI,SUBMITTED,SELL,0.0,0.0,0.0,,1600 +2020-10-19 16:00:00,MCCZID,SUBMITTED,SELL,0.0,0.0,0.0,,1601 +2020-10-20 16:00:00,COMNHQ,FILLED,SELL,-6.0,12.75,0.05355,,1596 +2020-10-20 16:00:00,RLSRXX,FILLED,BUY,1.0,82.17,0.057519,,1597 +2020-10-20 16:00:00,XUEHVZ,FILLED,BUY,3.0,3195.54,6.710633999999999,,1598 +2020-10-20 16:00:00,OCHCAU,FILLED,BUY,5.0,39.43,0.138005,,1599 +2020-10-20 16:00:00,BGDRAI,FILLED,SELL,-1349.0,7.37,6.959491000000001,,1600 +2020-10-20 16:00:00,MCCZID,FILLED,SELL,-259.0,37.79,6.851327,,1601 +2020-10-20 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1602 +2020-10-20 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1603 +2020-10-20 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,1604 +2020-10-20 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1605 +2020-10-21 16:00:00,COMNHQ,FILLED,SELL,-15.0,12.65,0.132825,,1602 +2020-10-21 16:00:00,RLSRXX,FILLED,BUY,1.0,81.78,0.057246,,1603 +2020-10-21 16:00:00,XUEHVZ,FILLED,SELL,-3.0,3224.84,6.772164,,1604 +2020-10-21 16:00:00,OCHCAU,FILLED,SELL,-250.0,39.31,6.87925,,1605 +2020-10-21 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1606 +2020-10-21 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1607 +2020-10-22 16:00:00,COMNHQ,FILLED,BUY,3.0,12.62,0.026502,,1606 +2020-10-22 16:00:00,RLSRXX,FILLED,BUY,4.0,79.61,0.222908,,1607 +2020-10-22 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1608 +2020-10-22 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1609 +2020-10-23 16:00:00,COMNHQ,FILLED,SELL,-23.0,13.07,0.210427,,1608 +2020-10-23 16:00:00,RLSRXX,FILLED,SELL,-124.0,80.86,7.018648,,1609 +2020-10-23 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1610 +2020-10-23 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1611 +2020-10-26 16:00:00,COMNHQ,FILLED,BUY,32.0,12.4,0.27776,,1610 +2020-10-26 16:00:00,ZIJVRO,FILLED,BUY,204.0,47.8,6.8258399999999995,,1611 +2020-10-26 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1612 +2020-10-26 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1613 +2020-10-26 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1614 +2020-10-27 16:00:00,COMNHQ,FILLED,BUY,52.0,11.75,0.4277,,1612 +2020-10-27 16:00:00,ZIJVRO,FILLED,SELL,-204.0,45.95,6.561660000000001,,1613 +2020-10-27 16:00:00,RUKNMV,FILLED,BUY,432.0,22.55,6.81912,,1614 +2020-10-27 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1615 +2020-10-27 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1616 +2020-10-27 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1617 +2020-10-28 16:00:00,COMNHQ,FILLED,BUY,184.0,10.94,1.409072,,1615 +2020-10-28 16:00:00,SMDIFE,FILLED,BUY,97.0,114.89,7.801031,,1616 +2020-10-28 16:00:00,RUKNMV,FILLED,SELL,-432.0,21.28,6.435072000000001,,1617 +2020-10-28 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1618 +2020-10-28 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1619 +2020-10-29 16:00:00,COMNHQ,FILLED,BUY,775.0,10.98,5.95665,,1618 +2020-10-29 16:00:00,SMDIFE,FILLED,BUY,79.0,112.42,6.216826,,1619 +2020-10-29 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1620 +2020-10-29 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1621 +2020-10-29 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1622 +2020-10-30 16:00:00,COMNHQ,FILLED,SELL,-32.0,11.07,0.247968,,1620 +2020-10-30 16:00:00,SMDIFE,FILLED,SELL,-6.0,111.0,0.4662,,1621 +2020-10-30 16:00:00,YIVYGH,FILLED,BUY,456.0,42.3,13.50216,,1622 +2020-10-30 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1623 +2020-10-30 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1624 +2020-10-30 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1625 +2020-10-30 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1626 +2020-10-30 16:00:00,LMRIBF,SUBMITTED,BUY,0.0,0.0,0.0,,1627 +2020-11-02 16:00:00,COMNHQ,FILLED,SELL,-20.0,11.34,0.15876,,1623 +2020-11-02 16:00:00,SMDIFE,FILLED,BUY,10.0,109.24,0.7646799999999999,,1624 +2020-11-02 16:00:00,RLSRXX,FILLED,BUY,260.0,75.66,13.77012,,1625 +2020-11-02 16:00:00,YIVYGH,FILLED,BUY,8.0,42.73,0.23928799999999997,,1626 +2020-11-02 16:00:00,LMRIBF,FILLED,BUY,74.0,264.92,13.722856000000002,,1627 +2020-11-02 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1628 +2020-11-02 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1629 +2020-11-02 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1630 +2020-11-02 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1631 +2020-11-02 16:00:00,LMRIBF,SUBMITTED,SELL,0.0,0.0,0.0,,1632 +2020-11-03 16:00:00,COMNHQ,FILLED,SELL,-327.0,11.34,2.595726,,1628 +2020-11-03 16:00:00,SMDIFE,FILLED,SELL,-35.0,109.71,2.6878949999999997,,1629 +2020-11-03 16:00:00,RLSRXX,FILLED,SELL,-260.0,74.88,13.62816,,1630 +2020-11-03 16:00:00,YIVYGH,FILLED,SELL,-464.0,41.93,13.618864,,1631 +2020-11-03 16:00:00,LMRIBF,FILLED,SELL,-74.0,263.18,13.632724,,1632 +2020-11-03 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1633 +2020-11-03 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1634 +2020-11-04 16:00:00,COMNHQ,FILLED,SELL,-1412.0,11.21,11.079964,,1633 +2020-11-04 16:00:00,SMDIFE,FILLED,SELL,-2.0,114.17,0.159838,,1634 +2020-11-04 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1635 +2020-11-04 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1636 +2020-11-04 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1637 +2020-11-05 16:00:00,COMNHQ,FILLED,BUY,1437.0,11.11,11.175549,,1635 +2020-11-05 16:00:00,SMDIFE,FILLED,SELL,-6.0,118.01,0.495642,,1636 +2020-11-05 16:00:00,BPSPGV,FILLED,BUY,73.0,222.0,11.3442,,1637 +2020-11-05 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1638 +2020-11-05 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1639 +2020-11-05 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1640 +2020-11-06 16:00:00,COMNHQ,FILLED,SELL,-71.0,11.46,0.569562,,1638 +2020-11-06 16:00:00,SMDIFE,FILLED,SELL,-4.0,118.24,0.331072,,1639 +2020-11-06 16:00:00,BPSPGV,FILLED,SELL,-3.0,222.13,0.466473,,1640 +2020-11-06 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1641 +2020-11-06 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1642 +2020-11-06 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1643 +2020-11-09 16:00:00,COMNHQ,FILLED,BUY,16.0,14.36,0.160832,,1641 +2020-11-09 16:00:00,BPSPGV,FILLED,SELL,-70.0,224.04,10.97796,,1642 +2020-11-09 16:00:00,RUKNMV,FILLED,BUY,723.0,24.27,12.283047,,1643 +2020-11-09 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1644 +2020-11-09 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1645 +2020-11-09 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1646 +2020-11-09 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1647 +2020-11-09 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1648 +2020-11-10 16:00:00,COMNHQ,FILLED,SELL,-180.0,12.87,1.6216199999999998,,1644 +2020-11-10 16:00:00,SMDIFE,FILLED,BUY,3.0,115.54,0.242634,,1645 +2020-11-10 16:00:00,LUZLYG,FILLED,BUY,571.0,27.56,11.015731999999998,,1646 +2020-11-10 16:00:00,HECLON,FILLED,BUY,333.0,48.5,11.30535,,1647 +2020-11-10 16:00:00,RUKNMV,FILLED,SELL,-68.0,24.26,1.154776,,1648 +2020-11-10 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1649 +2020-11-10 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1650 +2020-11-10 16:00:00,RLSRXX,SUBMITTED,BUY,0.0,0.0,0.0,,1651 +2020-11-10 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1652 +2020-11-10 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1653 +2020-11-10 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1654 +2020-11-10 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1655 +2020-11-10 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1656 +2020-11-11 16:00:00,COMNHQ,FILLED,SELL,-408.0,12.38,3.535728,,1649 +2020-11-11 16:00:00,SMDIFE,FILLED,SELL,-52.0,117.15,4.26426,,1650 +2020-11-11 16:00:00,RLSRXX,FILLED,BUY,126.0,79.41,7.003962,,1651 +2020-11-11 16:00:00,LUZLYG,FILLED,SELL,-571.0,27.72,11.079684,,1652 +2020-11-11 16:00:00,HECLON,FILLED,SELL,-333.0,47.82,11.146842,,1653 +2020-11-11 16:00:00,ZIJVRO,FILLED,BUY,216.0,45.98,6.952175999999999,,1654 +2020-11-11 16:00:00,BPSPGV,FILLED,BUY,46.0,212.54,6.843788,,1655 +2020-11-11 16:00:00,RUKNMV,FILLED,SELL,-655.0,24.2,11.0957,,1656 +2020-11-11 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1657 +2020-11-11 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1658 +2020-11-11 16:00:00,RLSRXX,SUBMITTED,SELL,0.0,0.0,0.0,,1659 +2020-11-11 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1660 +2020-11-11 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1661 +2020-11-12 16:00:00,COMNHQ,FILLED,BUY,22.0,11.97,0.18433800000000003,,1657 +2020-11-12 16:00:00,SMDIFE,FILLED,SELL,-2.0,119.62,0.167468,,1658 +2020-11-12 16:00:00,RLSRXX,FILLED,SELL,-126.0,81.3,7.17066,,1659 +2020-11-12 16:00:00,ZIJVRO,FILLED,SELL,-4.0,46.13,0.129164,,1660 +2020-11-12 16:00:00,BPSPGV,FILLED,SELL,-1.0,217.14,0.151998,,1661 +2020-11-12 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1662 +2020-11-12 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1663 +2020-11-12 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1664 +2020-11-12 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1665 +2020-11-13 16:00:00,COMNHQ,FILLED,SELL,-816.0,11.91,6.802992,,1662 +2020-11-13 16:00:00,SMDIFE,FILLED,BUY,1.0,119.43,0.08360100000000001,,1663 +2020-11-13 16:00:00,ZIJVRO,FILLED,BUY,8.0,44.99,0.251944,,1664 +2020-11-13 16:00:00,BPSPGV,FILLED,SELL,-45.0,216.36,6.815340000000001,,1665 +2020-11-13 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1666 +2020-11-13 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1667 +2020-11-13 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1668 +2020-11-13 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1669 +2020-11-16 16:00:00,COMNHQ,FILLED,BUY,803.0,12.91,7.256710999999999,,1666 +2020-11-16 16:00:00,SMDIFE,FILLED,SELL,-1.0,118.88,0.083216,,1667 +2020-11-16 16:00:00,OCHCAU,FILLED,BUY,237.0,41.74,6.924666,,1668 +2020-11-16 16:00:00,ZIJVRO,FILLED,SELL,-4.0,46.01,0.128828,,1669 +2020-11-16 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1670 +2020-11-16 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1671 +2020-11-16 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1672 +2020-11-16 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1673 +2020-11-16 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1674 +2020-11-16 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1675 +2020-11-17 16:00:00,COMNHQ,FILLED,SELL,-803.0,12.46,7.003766000000001,,1670 +2020-11-17 16:00:00,SMDIFE,FILLED,SELL,-1.0,119.46,0.08362199999999999,,1671 +2020-11-17 16:00:00,OCHCAU,FILLED,SELL,-6.0,41.92,0.176064,,1672 +2020-11-17 16:00:00,ZIJVRO,FILLED,SELL,-4.0,45.75,0.1281,,1673 +2020-11-17 16:00:00,BPSPGV,FILLED,BUY,45.0,216.1,6.80715,,1674 +2020-11-17 16:00:00,RUKNMV,FILLED,BUY,395.0,24.62,6.80743,,1675 +2020-11-17 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1676 +2020-11-17 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1677 +2020-11-17 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1678 +2020-11-17 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1679 +2020-11-17 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1680 +2020-11-18 16:00:00,SMDIFE,FILLED,BUY,2.0,118.61,0.166054,,1676 +2020-11-18 16:00:00,OCHCAU,FILLED,SELL,-231.0,41.88,6.771996000000001,,1677 +2020-11-18 16:00:00,ZIJVRO,FILLED,BUY,6.0,45.54,0.191268,,1678 +2020-11-18 16:00:00,BPSPGV,FILLED,BUY,1.0,213.51,0.14945699999999998,,1679 +2020-11-18 16:00:00,RUKNMV,FILLED,SELL,-395.0,25.16,6.956740000000001,,1680 +2020-11-18 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1681 +2020-11-19 16:00:00,ISIJLH,FILLED,BUY,343.0,28.49,6.840449,,1681 +2020-11-19 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1682 +2020-11-19 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1683 +2020-11-19 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1684 +2020-11-19 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1685 +2020-11-19 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1686 +2020-11-20 16:00:00,COMNHQ,FILLED,BUY,768.0,12.82,6.892032,,1682 +2020-11-20 16:00:00,SMDIFE,FILLED,SELL,-1.0,118.63,0.08304099999999999,,1683 +2020-11-20 16:00:00,ZIJVRO,FILLED,SELL,-3.0,45.65,0.095865,,1684 +2020-11-20 16:00:00,ISIJLH,FILLED,BUY,4.0,28.21,0.078988,,1685 +2020-11-20 16:00:00,RUKNMV,FILLED,BUY,375.0,26.04,6.8355,,1686 +2020-11-20 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1687 +2020-11-20 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1688 +2020-11-20 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,1689 +2020-11-20 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,1690 +2020-11-20 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1691 +2020-11-20 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1692 +2020-11-20 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1693 +2020-11-23 16:00:00,COMNHQ,FILLED,BUY,15.0,12.75,0.133875,,1687 +2020-11-23 16:00:00,SMDIFE,FILLED,BUY,1.0,117.13,0.081991,,1688 +2020-11-23 16:00:00,CEMOJE,FILLED,BUY,5.0,1737.48,6.08118,,1689 +2020-11-23 16:00:00,GTKILW,FILLED,BUY,5.0,1748.97,6.121395000000001,,1690 +2020-11-23 16:00:00,ZIJVRO,FILLED,BUY,1.0,45.48,0.031835999999999996,,1691 +2020-11-23 16:00:00,ISIJLH,FILLED,SELL,-1.0,28.39,0.019873,,1692 +2020-11-23 16:00:00,RUKNMV,FILLED,SELL,-375.0,25.96,6.8145,,1693 +2020-11-23 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1694 +2020-11-23 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1695 +2020-11-23 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1696 +2020-11-23 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,1697 +2020-11-23 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,1698 +2020-11-23 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1699 +2020-11-23 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1700 +2020-11-23 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1701 +2020-11-24 16:00:00,COMNHQ,FILLED,SELL,-59.0,14.38,0.593894,,1694 +2020-11-24 16:00:00,SMDIFE,FILLED,BUY,3.0,113.89,0.239169,,1695 +2020-11-24 16:00:00,LUZLYG,FILLED,BUY,358.0,27.92,6.996752000000001,,1696 +2020-11-24 16:00:00,CEMOJE,FILLED,SELL,-5.0,1732.68,6.06438,,1697 +2020-11-24 16:00:00,GTKILW,FILLED,SELL,-5.0,1736.4,6.0774,,1698 +2020-11-24 16:00:00,ZIJVRO,FILLED,SELL,-3.0,46.27,0.097167,,1699 +2020-11-24 16:00:00,BPSPGV,FILLED,SELL,-46.0,209.5,6.7459,,1700 +2020-11-24 16:00:00,ISIJLH,FILLED,SELL,-3.0,28.93,0.060752999999999995,,1701 +2020-11-24 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1702 +2020-11-24 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1703 +2020-11-24 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1704 +2020-11-24 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1705 +2020-11-24 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1706 +2020-11-24 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1707 +2020-11-24 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1708 +2020-11-24 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1709 +2020-11-25 16:00:00,COMNHQ,FILLED,BUY,347.0,14.78,3.5900619999999996,,1702 +2020-11-25 16:00:00,SMDIFE,FILLED,BUY,51.0,115.62,4.127634,,1703 +2020-11-25 16:00:00,LUZLYG,FILLED,BUY,190.0,28.71,3.81843,,1704 +2020-11-25 16:00:00,HECLON,FILLED,BUY,278.0,56.13,10.922898,,1705 +2020-11-25 16:00:00,ZIJVRO,FILLED,BUY,124.0,47.02,4.081336,,1706 +2020-11-25 16:00:00,BPSPGV,FILLED,BUY,74.0,215.29,11.152022,,1707 +2020-11-25 16:00:00,ISIJLH,FILLED,BUY,200.0,29.29,4.1006,,1708 +2020-11-25 16:00:00,RUKNMV,FILLED,BUY,555.0,28.24,10.97124,,1709 +2020-11-25 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1710 +2020-11-25 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1711 +2020-11-25 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,1712 +2020-11-25 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1713 +2020-11-25 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1714 +2020-11-25 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1715 +2020-11-25 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1716 +2020-11-27 13:00:00,COMNHQ,FILLED,SELL,-1071.0,15.13,11.342961,,1710 +2020-11-27 13:00:00,SMDIFE,FILLED,SELL,-1.0,116.53,0.081571,,1711 +2020-11-27 13:00:00,XUEHVZ,FILLED,BUY,4.0,3190.96,8.934688,,1712 +2020-11-27 13:00:00,LUZLYG,FILLED,SELL,-548.0,28.97,11.112892,,1713 +2020-11-27 13:00:00,HECLON,FILLED,SELL,-278.0,57.0,11.0922,,1714 +2020-11-27 13:00:00,ISIJLH,FILLED,BUY,5.0,29.05,0.101675,,1715 +2020-11-27 13:00:00,RUKNMV,FILLED,SELL,-555.0,28.56,11.09556,,1716 +2020-11-27 13:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,1717 +2020-11-27 13:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1718 +2020-11-27 13:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1719 +2020-11-27 13:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1720 +2020-11-30 16:00:00,XUEHVZ,FILLED,SELL,-4.0,3205.78,8.976184,,1717 +2020-11-30 16:00:00,ZIJVRO,FILLED,SELL,-2.0,47.44,0.066416,,1718 +2020-11-30 16:00:00,BPSPGV,FILLED,SELL,-1.0,214.11,0.149877,,1719 +2020-11-30 16:00:00,ISIJLH,FILLED,SELL,-548.0,28.85,11.06686,,1720 +2020-11-30 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1721 +2020-11-30 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,1722 +2020-11-30 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,1723 +2020-11-30 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1724 +2020-11-30 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1725 +2020-11-30 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1726 +2020-12-01 16:00:00,SMDIFE,FILLED,SELL,-30.0,121.04,2.54184,,1721 +2020-12-01 16:00:00,CEMOJE,FILLED,BUY,7.0,1765.61,8.651489,,1722 +2020-12-01 16:00:00,GTKILW,FILLED,BUY,7.0,1750.15,8.575735,,1723 +2020-12-01 16:00:00,ZIJVRO,FILLED,SELL,-335.0,48.78,11.43891,,1724 +2020-12-01 16:00:00,BPSPGV,FILLED,SELL,-14.0,214.6,2.10308,,1725 +2020-12-01 16:00:00,ISIJLH,FILLED,BUY,439.0,28.83,8.859459,,1726 +2020-12-01 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1727 +2020-12-01 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1728 +2020-12-01 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1729 +2020-12-01 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1730 +2020-12-01 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1731 +2020-12-02 16:00:00,SMDIFE,FILLED,SELL,-3.0,122.09,0.256389,,1727 +2020-12-02 16:00:00,YIVYGH,FILLED,BUY,248.0,50.93,8.841448,,1728 +2020-12-02 16:00:00,ZIJVRO,FILLED,BUY,255.0,49.18,8.77863,,1729 +2020-12-02 16:00:00,BPSPGV,FILLED,SELL,-1.0,215.0,0.1505,,1730 +2020-12-02 16:00:00,ISIJLH,FILLED,SELL,-1.0,28.84,0.020188,,1731 +2020-12-02 16:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1732 +2020-12-02 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1733 +2020-12-02 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1734 +2020-12-02 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,1735 +2020-12-02 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,1736 +2020-12-02 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1737 +2020-12-02 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1738 +2020-12-02 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1739 +2020-12-03 16:00:00,COMNHQ,FILLED,BUY,992.0,15.19,10.547936,,1732 +2020-12-03 16:00:00,SMDIFE,FILLED,BUY,16.0,123.5,1.3832,,1733 +2020-12-03 16:00:00,YIVYGH,FILLED,SELL,-248.0,50.82,8.822352,,1734 +2020-12-03 16:00:00,CEMOJE,FILLED,SELL,-7.0,1826.6,8.950339999999999,,1735 +2020-12-03 16:00:00,GTKILW,FILLED,SELL,-7.0,1827.41,8.954309,,1736 +2020-12-03 16:00:00,ZIJVRO,FILLED,SELL,-255.0,49.92,8.91072,,1737 +2020-12-03 16:00:00,BPSPGV,FILLED,SELL,-58.0,214.6,8.71276,,1738 +2020-12-03 16:00:00,ISIJLH,FILLED,BUY,68.0,29.02,1.381352,,1739 +2020-12-03 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1740 +2020-12-03 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1741 +2020-12-03 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1742 +2020-12-04 16:00:00,COMNHQ,FILLED,SELL,-992.0,16.4,11.38816,,1740 +2020-12-04 16:00:00,SMDIFE,FILLED,BUY,2.0,122.54,0.171556,,1741 +2020-12-04 16:00:00,ISIJLH,FILLED,SELL,-506.0,29.35,10.39577,,1742 +2020-12-04 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1743 +2020-12-04 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1744 +2020-12-07 16:00:00,SMDIFE,FILLED,SELL,-1.0,122.35,0.085645,,1743 +2020-12-07 16:00:00,BPSPGV,FILLED,BUY,68.0,214.39,10.204964,,1744 +2020-12-07 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1745 +2020-12-08 16:00:00,SMDIFE,FILLED,SELL,-1.0,124.35,0.087045,,1745 +2020-12-08 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1746 +2020-12-08 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1747 +2020-12-08 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1748 +2020-12-09 16:00:00,SMDIFE,FILLED,SELL,-40.0,124.45,3.4846,,1746 +2020-12-09 16:00:00,BPSPGV,FILLED,SELL,-23.0,215.2,3.46472,,1747 +2020-12-09 16:00:00,ISIJLH,FILLED,BUY,321.0,31.03,6.972441000000001,,1748 +2020-12-09 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1749 +2020-12-09 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,1750 +2020-12-09 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,1751 +2020-12-09 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1752 +2020-12-09 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1753 +2020-12-10 16:00:00,SMDIFE,FILLED,BUY,2.0,120.53,0.168742,,1749 +2020-12-10 16:00:00,CEMOJE,FILLED,BUY,5.0,1787.2,6.2552,,1750 +2020-12-10 16:00:00,GTKILW,FILLED,BUY,5.0,1780.18,6.23063,,1751 +2020-12-10 16:00:00,BPSPGV,FILLED,BUY,1.0,211.8,0.14826,,1752 +2020-12-10 16:00:00,ISIJLH,FILLED,SELL,-7.0,31.05,0.152145,,1753 +2020-12-10 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1754 +2020-12-10 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,1755 +2020-12-10 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,1756 +2020-12-10 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1757 +2020-12-10 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1758 +2020-12-11 16:00:00,SMDIFE,FILLED,SELL,-1.0,122.41,0.085687,,1754 +2020-12-11 16:00:00,CEMOJE,FILLED,SELL,-5.0,1766.6,6.1831,,1755 +2020-12-11 16:00:00,GTKILW,FILLED,SELL,-5.0,1766.07,6.1812450000000005,,1756 +2020-12-11 16:00:00,BPSPGV,FILLED,SELL,-46.0,210.2,6.768439999999999,,1757 +2020-12-11 16:00:00,ISIJLH,FILLED,BUY,8.0,30.47,0.17063199999999998,,1758 +2020-12-11 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,1759 +2020-12-11 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1760 +2020-12-11 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1761 +2020-12-14 16:00:00,CEMOJE,FILLED,BUY,5.0,1779.66,6.228810000000001,,1759 +2020-12-14 16:00:00,BPSPGV,FILLED,BUY,46.0,212.91,6.855702,,1760 +2020-12-14 16:00:00,ISIJLH,FILLED,SELL,-322.0,31.2,7.03248,,1761 +2020-12-14 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1762 +2020-12-14 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,1763 +2020-12-14 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,1764 +2020-12-14 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1765 +2020-12-15 16:00:00,SMDIFE,FILLED,BUY,1.0,124.32,0.08702399999999999,,1762 +2020-12-15 16:00:00,CEMOJE,FILLED,SELL,-5.0,1755.72,6.145020000000001,,1763 +2020-12-15 16:00:00,GTKILW,FILLED,BUY,5.0,1752.23,6.132804999999999,,1764 +2020-12-15 16:00:00,BPSPGV,FILLED,SELL,-46.0,215.17,6.928474,,1765 +2020-12-15 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1766 +2020-12-15 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1767 +2020-12-15 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,1768 +2020-12-16 16:00:00,SMDIFE,FILLED,SELL,-4.0,127.45,0.35686,,1766 +2020-12-16 16:00:00,OCHCAU,FILLED,BUY,221.0,44.71,6.916637,,1767 +2020-12-16 16:00:00,GTKILW,FILLED,SELL,-5.0,1770.0,6.195,,1768 +2020-12-16 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1769 +2020-12-16 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,1770 +2020-12-16 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1771 +2020-12-16 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,1772 +2020-12-16 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1773 +2020-12-17 16:00:00,SMDIFE,FILLED,BUY,1.0,128.98,0.090286,,1769 +2020-12-17 16:00:00,XUEHVZ,FILLED,BUY,3.0,3234.68,6.792827999999999,,1770 +2020-12-17 16:00:00,OCHCAU,FILLED,SELL,-221.0,44.93,6.950671000000001,,1771 +2020-12-17 16:00:00,CEMOJE,FILLED,BUY,5.0,1771.95,6.201825,,1772 +2020-12-17 16:00:00,BPSPGV,FILLED,BUY,45.0,219.86,6.925590000000001,,1773 +2020-12-17 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1774 +2020-12-17 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,1775 +2020-12-17 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,1776 +2020-12-17 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1777 +2020-12-17 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1778 +2020-12-18 16:00:00,SMDIFE,FILLED,SELL,-2.0,129.0,0.1806,,1774 +2020-12-18 16:00:00,XUEHVZ,FILLED,SELL,-3.0,3231.35,6.785835,,1775 +2020-12-18 16:00:00,GTKILW,FILLED,BUY,5.0,1737.88,6.082580000000001,,1776 +2020-12-18 16:00:00,BPSPGV,FILLED,SELL,-45.0,218.92,6.89598,,1777 +2020-12-18 16:00:00,ISIJLH,FILLED,BUY,334.0,29.54,6.906452000000001,,1778 +2020-12-18 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1779 +2020-12-18 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1780 +2020-12-18 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1781 +2020-12-18 16:00:00,FFNDVM,SUBMITTED,BUY,0.0,0.0,0.0,,1782 +2020-12-18 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1783 +2020-12-18 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1784 +2020-12-18 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1785 +2020-12-21 16:00:00,SMDIFE,FILLED,BUY,2.0,125.1,0.17514,,1779 +2020-12-21 16:00:00,YIVYGH,FILLED,BUY,194.0,50.48,6.8551839999999995,,1780 +2020-12-21 16:00:00,OCHCAU,FILLED,BUY,217.0,44.47,6.754993,,1781 +2020-12-21 16:00:00,FFNDVM,FILLED,BUY,1104.0,8.89,6.870192000000001,,1782 +2020-12-21 16:00:00,ZIJVRO,FILLED,BUY,208.0,46.26,6.735456,,1783 +2020-12-21 16:00:00,BPSPGV,FILLED,BUY,45.0,217.55,6.852825,,1784 +2020-12-21 16:00:00,ISIJLH,FILLED,SELL,-334.0,29.0,6.7802,,1785 +2020-12-21 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1786 +2020-12-21 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1787 +2020-12-21 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1788 +2020-12-21 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1789 +2020-12-21 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1790 +2020-12-21 16:00:00,FFNDVM,SUBMITTED,SELL,0.0,0.0,0.0,,1791 +2020-12-21 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1792 +2020-12-21 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1793 +2020-12-21 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1794 +2020-12-21 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1795 +2020-12-22 16:00:00,SMDIFE,FILLED,SELL,-1.0,131.61,0.092127,,1786 +2020-12-22 16:00:00,LUZLYG,FILLED,BUY,332.0,29.75,6.9139,,1787 +2020-12-22 16:00:00,HECLON,FILLED,BUY,161.0,61.0,6.8747,,1788 +2020-12-22 16:00:00,YIVYGH,FILLED,BUY,2.0,50.02,0.070028,,1789 +2020-12-22 16:00:00,OCHCAU,FILLED,SELL,-217.0,44.48,6.756512,,1790 +2020-12-22 16:00:00,FFNDVM,FILLED,SELL,-1104.0,8.98,6.939744,,1791 +2020-12-22 16:00:00,ZIJVRO,FILLED,BUY,5.0,46.27,0.161945,,1792 +2020-12-22 16:00:00,BPSPGV,FILLED,SELL,-1.0,222.57,0.155799,,1793 +2020-12-22 16:00:00,ISIJLH,FILLED,BUY,341.0,29.0,6.9223,,1794 +2020-12-22 16:00:00,RUKNMV,FILLED,BUY,334.0,29.6,6.9204799999999995,,1795 +2020-12-22 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1796 +2020-12-22 16:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1797 +2020-12-22 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1798 +2020-12-22 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1799 +2020-12-22 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,1800 +2020-12-22 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,1801 +2020-12-22 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1802 +2020-12-22 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1803 +2020-12-22 16:00:00,ISIJLH,SUBMITTED,BUY,0.0,0.0,0.0,,1804 +2020-12-22 16:00:00,BPFUQM,SUBMITTED,BUY,0.0,0.0,0.0,,1805 +2020-12-22 16:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1806 +2020-12-23 16:00:00,SMDIFE,FILLED,BUY,34.0,132.17,3.1456459999999997,,1796 +2020-12-23 16:00:00,LUZLYG,FILLED,SELL,-332.0,29.39,6.830235999999999,,1797 +2020-12-23 16:00:00,HECLON,FILLED,BUY,87.0,60.0,3.654,,1798 +2020-12-23 16:00:00,YIVYGH,FILLED,SELL,-196.0,50.15,6.880579999999999,,1799 +2020-12-23 16:00:00,CEMOJE,FILLED,SELL,-5.0,1724.59,6.036064999999999,,1800 +2020-12-23 16:00:00,GTKILW,FILLED,SELL,-5.0,1716.13,6.006455000000001,,1801 +2020-12-23 16:00:00,ZIJVRO,FILLED,SELL,-213.0,46.21,6.889911,,1802 +2020-12-23 16:00:00,BPSPGV,FILLED,SELL,-44.0,223.25,6.8761,,1803 +2020-12-23 16:00:00,ISIJLH,FILLED,BUY,178.0,28.5,3.5511,,1804 +2020-12-23 16:00:00,BPFUQM,FILLED,BUY,23.0,632.42,10.181962,,1805 +2020-12-23 16:00:00,RUKNMV,FILLED,BUY,175.0,29.32,3.5917,,1806 +2020-12-23 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1807 +2020-12-23 16:00:00,LUZLYG,SUBMITTED,BUY,0.0,0.0,0.0,,1808 +2020-12-23 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1809 +2020-12-23 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1810 +2020-12-23 16:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1811 +2020-12-23 16:00:00,BPFUQM,SUBMITTED,SELL,0.0,0.0,0.0,,1812 +2020-12-23 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1813 +2020-12-24 13:00:00,SMDIFE,FILLED,BUY,1.0,131.41,0.091987,,1807 +2020-12-24 13:00:00,LUZLYG,FILLED,BUY,491.0,30.25,10.396925,,1808 +2020-12-24 13:00:00,HECLON,FILLED,SELL,-248.0,60.87,10.567032,,1809 +2020-12-24 13:00:00,BPSPGV,FILLED,BUY,66.0,221.4,10.22868,,1810 +2020-12-24 13:00:00,ISIJLH,FILLED,SELL,-6.0,28.73,0.120666,,1811 +2020-12-24 13:00:00,BPFUQM,FILLED,SELL,-1.0,643.01,0.450107,,1812 +2020-12-24 13:00:00,RUKNMV,FILLED,SELL,-23.0,30.35,0.488635,,1813 +2020-12-24 13:00:00,COMNHQ,SUBMITTED,BUY,0.0,0.0,0.0,,1814 +2020-12-24 13:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1815 +2020-12-24 13:00:00,LUZLYG,SUBMITTED,SELL,0.0,0.0,0.0,,1816 +2020-12-24 13:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1817 +2020-12-24 13:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,1818 +2020-12-24 13:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,1819 +2020-12-24 13:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1820 +2020-12-24 13:00:00,ISIJLH,SUBMITTED,SELL,0.0,0.0,0.0,,1821 +2020-12-24 13:00:00,RUKNMV,SUBMITTED,BUY,0.0,0.0,0.0,,1822 +2020-12-28 16:00:00,COMNHQ,FILLED,BUY,943.0,16.0,10.5616,,1814 +2020-12-28 16:00:00,SMDIFE,FILLED,SELL,-1.0,134.0,0.0938,,1815 +2020-12-28 16:00:00,LUZLYG,FILLED,SELL,-491.0,30.24,10.393487999999998,,1816 +2020-12-28 16:00:00,YIVYGH,FILLED,BUY,293.0,50.78,10.414978,,1817 +2020-12-28 16:00:00,CEMOJE,FILLED,BUY,8.0,1737.17,9.728152,,1818 +2020-12-28 16:00:00,GTKILW,FILLED,BUY,8.0,1742.04,9.755424,,1819 +2020-12-28 16:00:00,BPSPGV,FILLED,SELL,-66.0,224.44,10.369128,,1820 +2020-12-28 16:00:00,ISIJLH,FILLED,SELL,-513.0,28.9,10.37799,,1821 +2020-12-28 16:00:00,RUKNMV,FILLED,BUY,9.0,30.05,0.189315,,1822 +2020-12-28 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1823 +2020-12-28 16:00:00,SMDIFE,SUBMITTED,SELL,0.0,0.0,0.0,,1824 +2020-12-28 16:00:00,XUEHVZ,SUBMITTED,BUY,0.0,0.0,0.0,,1825 +2020-12-28 16:00:00,HECLON,SUBMITTED,BUY,0.0,0.0,0.0,,1826 +2020-12-28 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1827 +2020-12-28 16:00:00,OCHCAU,SUBMITTED,BUY,0.0,0.0,0.0,,1828 +2020-12-28 16:00:00,CEMOJE,SUBMITTED,SELL,0.0,0.0,0.0,,1829 +2020-12-28 16:00:00,GTKILW,SUBMITTED,SELL,0.0,0.0,0.0,,1830 +2020-12-28 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1831 +2020-12-28 16:00:00,BPFUQM,SUBMITTED,SELL,0.0,0.0,0.0,,1832 +2020-12-28 16:00:00,RUKNMV,SUBMITTED,SELL,0.0,0.0,0.0,,1833 +2020-12-29 16:00:00,COMNHQ,FILLED,SELL,-250.0,16.32,2.856,,1823 +2020-12-29 16:00:00,SMDIFE,FILLED,SELL,-30.0,138.05,2.89905,,1824 +2020-12-29 16:00:00,XUEHVZ,FILLED,BUY,3.0,3293.73,6.9168330000000005,,1825 +2020-12-29 16:00:00,HECLON,FILLED,BUY,182.0,61.1,7.784140000000001,,1826 +2020-12-29 16:00:00,YIVYGH,FILLED,SELL,-293.0,51.16,10.492916,,1827 +2020-12-29 16:00:00,OCHCAU,FILLED,BUY,248.0,44.99,7.810264,,1828 +2020-12-29 16:00:00,CEMOJE,FILLED,SELL,-2.0,1775.96,2.486344,,1829 +2020-12-29 16:00:00,GTKILW,FILLED,SELL,-2.0,1782.27,2.495178,,1830 +2020-12-29 16:00:00,BPSPGV,FILLED,BUY,49.0,226.06,7.753858,,1831 +2020-12-29 16:00:00,BPFUQM,FILLED,SELL,-6.0,660.86,2.7756119999999997,,1832 +2020-12-29 16:00:00,RUKNMV,FILLED,SELL,-495.0,30.1,10.42965,,1833 +2020-12-29 16:00:00,COMNHQ,SUBMITTED,SELL,0.0,0.0,0.0,,1834 +2020-12-29 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1835 +2020-12-29 16:00:00,XUEHVZ,SUBMITTED,SELL,0.0,0.0,0.0,,1836 +2020-12-29 16:00:00,HECLON,SUBMITTED,SELL,0.0,0.0,0.0,,1837 +2020-12-29 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1838 +2020-12-29 16:00:00,OCHCAU,SUBMITTED,SELL,0.0,0.0,0.0,,1839 +2020-12-29 16:00:00,ZIJVRO,SUBMITTED,BUY,0.0,0.0,0.0,,1840 +2020-12-29 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1841 +2020-12-30 16:00:00,COMNHQ,FILLED,SELL,-693.0,15.86,7.693686,,1834 +2020-12-30 16:00:00,SMDIFE,FILLED,BUY,1.0,135.54,0.094878,,1835 +2020-12-30 16:00:00,XUEHVZ,FILLED,SELL,-3.0,3318.85,6.9695849999999995,,1836 +2020-12-30 16:00:00,HECLON,FILLED,SELL,-182.0,60.91,7.759933999999999,,1837 +2020-12-30 16:00:00,YIVYGH,FILLED,BUY,216.0,51.69,7.815528,,1838 +2020-12-30 16:00:00,OCHCAU,FILLED,SELL,-248.0,44.76,7.770336,,1839 +2020-12-30 16:00:00,ZIJVRO,FILLED,BUY,225.0,49.1,7.73325,,1840 +2020-12-30 16:00:00,BPSPGV,FILLED,SELL,-49.0,225.26,7.726418,,1841 +2020-12-30 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1842 +2020-12-30 16:00:00,YIVYGH,SUBMITTED,SELL,0.0,0.0,0.0,,1843 +2020-12-30 16:00:00,CEMOJE,SUBMITTED,BUY,0.0,0.0,0.0,,1844 +2020-12-30 16:00:00,GTKILW,SUBMITTED,BUY,0.0,0.0,0.0,,1845 +2020-12-30 16:00:00,ZIJVRO,SUBMITTED,SELL,0.0,0.0,0.0,,1846 +2020-12-30 16:00:00,BPSPGV,SUBMITTED,BUY,0.0,0.0,0.0,,1847 +2020-12-30 16:00:00,BPFUQM,SUBMITTED,SELL,0.0,0.0,0.0,,1848 +2020-12-31 16:00:00,SMDIFE,FILLED,BUY,20.0,134.0,1.876,,1842 +2020-12-31 16:00:00,YIVYGH,FILLED,SELL,-216.0,51.39,7.770168,,1843 +2020-12-31 16:00:00,CEMOJE,FILLED,BUY,1.0,1745.45,1.221815,,1844 +2020-12-31 16:00:00,GTKILW,FILLED,BUY,1.0,1735.28,1.214696,,1845 +2020-12-31 16:00:00,ZIJVRO,FILLED,SELL,-225.0,48.75,7.678125,,1846 +2020-12-31 16:00:00,BPSPGV,FILLED,BUY,62.0,221.82,9.626988,,1847 +2020-12-31 16:00:00,BPFUQM,FILLED,SELL,-16.0,700.0,7.84,,1848 +2020-12-31 16:00:00,SMDIFE,SUBMITTED,BUY,0.0,0.0,0.0,,1849 +2020-12-31 16:00:00,YIVYGH,SUBMITTED,BUY,0.0,0.0,0.0,,1850 +2020-12-31 16:00:00,BPSPGV,SUBMITTED,SELL,0.0,0.0,0.0,,1851 diff --git a/validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part01.xz b/validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part01.xz index 41a4f4de..6d39a245 100644 Binary files a/validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part01.xz and b/validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part01.xz differ diff --git a/validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part02.xz b/validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part02.xz index 05eaf81f..45834cb4 100644 Binary files a/validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part02.xz and b/validation/lean/workspace/chapter16_us_equities_panel/ml4t_order_events.csv.part02.xz differ diff --git a/validation/native/backtrader_behavior.py b/validation/native/backtrader_behavior.py new file mode 100644 index 00000000..b4bbba3d --- /dev/null +++ b/validation/native/backtrader_behavior.py @@ -0,0 +1,779 @@ +#!/usr/bin/env python3 +"""Measure frozen Backtrader behavior without importing ML4T comparison code.""" + +from __future__ import annotations + +import argparse +import hashlib +import importlib +import importlib.metadata +import inspect +import json +import math +import sys +import warnings +from pathlib import Path +from typing import Any + +import pandas as pd + +with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="invalid escape sequence.*", category=SyntaxWarning) + bt: Any = importlib.import_module("backtrader") + +VERSION = "1.9.78.123" +ARTIFACT = "backtrader-1.9.78.123-py2.py3-none-any.whl" +ARTIFACT_SHA256 = "9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd" +SOURCE = "https://pypi.org/project/backtrader/1.9.78.123/" + + +def _frame( + opens: list[float], + *, + closes: list[float] | None = None, + lows: list[float] | None = None, + highs: list[float] | None = None, + dates: list[str] | None = None, +) -> pd.DataFrame: + closes = closes or opens + lows = lows or [min(open_, close) for open_, close in zip(opens, closes, strict=True)] + highs = highs or [max(open_, close) for open_, close in zip(opens, closes, strict=True)] + index = ( + pd.to_datetime(dates) + if dates is not None + else pd.date_range("2024-01-01", periods=len(opens)) + ) + return pd.DataFrame( + {"open": opens, "high": highs, "low": lows, "close": closes, "volume": 1_000.0}, + index=index, + ) + + +def _feed(frame: pd.DataFrame, name: str = "asset") -> Any: + return bt.feeds.PandasData(dataname=frame, name=name) + + +def _run( + strategy: type, + *frames: tuple[str, pd.DataFrame], + cash: float = 1_000.0, + configure: Any = None, + **strategy_kwargs: Any, +) -> tuple[Any, Any]: + cerebro = bt.Cerebro() + cerebro.broker.setcash(cash) + if configure is not None: + configure(cerebro.broker) + for name, frame in frames: + cerebro.adddata(_feed(frame, name)) + cerebro.addstrategy(strategy, **strategy_kwargs) + instance = cerebro.run()[0] + return cerebro, instance + + +def _terminal(order: Any) -> bool: + return order.status in {order.Completed, order.Margin, order.Rejected, order.Canceled} + + +def _defaults() -> dict[str, Any]: + broker = bt.Cerebro().broker + commission = bt.CommInfoBase() + return { + "cash": broker.p.cash, + "checksubmit": broker.p.checksubmit, + "cheat_on_close": broker.p.coc, + "cheat_on_open": broker.p.coo, + "commission": commission.p.commission, + "leverage": commission.p.leverage, + "short_cash": broker.p.shortcash, + "slippage_fixed": broker.p.slip_fixed, + "slippage_percent": broker.p.slip_perc, + } + + +def _timing(coc: bool = False) -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + self.buy(size=1) + + def notify_order(self, order: Any) -> None: + if order.status == order.Completed: + self.events.append( + { + "date": bt.num2date(order.executed.dt).date().isoformat(), + "price": order.executed.price, + "size": order.executed.size, + } + ) + + def configure(broker: Any) -> None: + broker.set_coc(coc) + + _, strategy = _run( + Strategy, + ("asset", _frame([100.0, 110.0, 120.0], closes=[100.0, 105.0, 120.0])), + configure=configure, + ) + return strategy.events + + +def _target_percent(target: float, commission: float = 0.0) -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + self.order_target_percent(target=target) + + def notify_order(self, order: Any) -> None: + if _terminal(order): + self.events.append( + { + "status": order.getstatusname(), + "created_size": order.created.size, + "executed_size": order.executed.size, + "price": order.executed.price, + "commission": order.executed.comm, + } + ) + + def configure(broker: Any) -> None: + broker.setcommission(commission=commission) + + _, strategy = _run( + Strategy, + ("asset", _frame([100.0, 100.0])), + configure=configure, + ) + return strategy.events + + +def _cash_and_margin(leverage: float) -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + self.buy(size=20) + + def notify_order(self, order: Any) -> None: + if _terminal(order): + self.events.append({"status": order.getstatusname(), "size": order.executed.size}) + + def configure(broker: Any) -> None: + broker.setcommission(leverage=leverage) + + _, strategy = _run( + Strategy, + ("asset", _frame([100.0, 100.0])), + configure=configure, + ) + return strategy.events + + +def _submission_sequence(reverse: bool) -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + data_sequence = list(reversed(self.datas)) if reverse else self.datas + for data in data_sequence: + self.order_target_percent(data=data, target=0.6) + + def notify_order(self, order: Any) -> None: + if _terminal(order): + self.events.append( + { + "asset": order.data._name, + "created_size": order.created.size, + "reference": order.ref, + "status": order.getstatusname(), + } + ) + + _, strategy = _run( + Strategy, + ("a", _frame([100.0, 100.0])), + ("b", _frame([100.0, 100.0])), + cash=1_000.0, + ) + return [ + { + "asset": event["asset"], + "created_size": event["created_size"], + "status": event["status"], + } + for event in sorted(strategy.events, key=lambda event: event["reference"]) + ] + + +def _losing_short_cover() -> dict[str, Any]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + self.sell(size=1) + elif len(self) == 2: + self.buy(size=1) + + def notify_order(self, order: Any) -> None: + if _terminal(order): + self.events.append( + { + "status": order.getstatusname(), + "size": order.executed.size, + "price": order.executed.price, + } + ) + + cerebro, strategy = _run( + Strategy, + ("asset", _frame([100.0, 100.0, 250.0], closes=[100.0, 250.0, 250.0])), + cash=100.0, + ) + return { + "events": strategy.events, + "cash": cerebro.broker.getcash(), + "position": strategy.getposition().size, + } + + +def _gap_reversal() -> dict[str, Any]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + self.sell(size=1) + elif len(self) == 2: + self.buy(size=2) + + def notify_order(self, order: Any) -> None: + if _terminal(order): + self.events.append( + { + "status": order.getstatusname(), + "created_size": order.created.size, + "executed_size": order.executed.size, + "price": order.executed.price, + } + ) + + cerebro, strategy = _run( + Strategy, + ("asset", _frame([100.0, 100.0, 250.0], closes=[100.0, 90.0, 250.0])), + cash=100.0, + ) + return { + "events": strategy.events, + "cash": cerebro.broker.getcash(), + "position": strategy.getposition().size, + } + + +def _signal_price_stop() -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + self.buy(size=1) + self.sell(size=1, exectype=bt.Order.Stop, price=self.data.close[0] * 0.9) + + def notify_order(self, order: Any) -> None: + if order.status == order.Completed: + self.events.append( + { + "created_price": order.created.price, + "executed_price": order.executed.price, + "size": order.executed.size, + } + ) + + _, strategy = _run( + Strategy, + ( + "asset", + _frame( + [100.0, 110.0, 95.0], + closes=[100.0, 100.0, 95.0], + highs=[101.0, 111.0, 96.0], + lows=[99.0, 85.0, 94.0], + ), + ), + ) + return strategy.events + + +def _trailing_stop() -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + self.buy(size=1) + self.sell(size=1, exectype=bt.Order.StopTrail, trailpercent=0.1) + + def notify_order(self, order: Any) -> None: + if order.status == order.Completed: + self.events.append( + { + "date": bt.num2date(order.executed.dt).date().isoformat(), + "executed_price": order.executed.price, + "size": order.executed.size, + } + ) + + _, strategy = _run( + Strategy, + ( + "asset", + _frame( + [100.0, 110.0, 95.0, 100.0], + closes=[100.0, 95.0, 90.0, 100.0], + highs=[101.0, 111.0, 96.0, 101.0], + lows=[99.0, 94.0, 85.0, 99.0], + ), + ), + ) + return strategy.events + + +def _short_cash(short_cash: bool) -> dict[str, Any]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.event: dict[str, Any] = {} + + def next(self) -> None: + if len(self) == 1: + self.sell(size=1) + + def notify_order(self, order: Any) -> None: + if order.status == order.Completed: + self.event = { + "cash": self.broker.getcash(), + "position": self.position.size, + "price": order.executed.price, + } + + def configure(broker: Any) -> None: + broker.set_shortcash(short_cash) + + _, strategy = _run( + Strategy, + ("asset", _frame([100.0, 100.0, 100.0])), + configure=configure, + ) + return strategy.event + + +def _missing_and_late_bars() -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def prenext(self) -> None: + self._record("prenext") + + def nextstart(self) -> None: + self._record("nextstart") + + def next(self) -> None: + self._record("next") + + def _record(self, callback: str) -> None: + self.events.append( + { + "callback": callback, + "date": self.datetime.date().isoformat(), + "lengths": [len(data) for data in self.datas], + "values": [float(data.close[0]) if len(data) else None for data in self.datas], + } + ) + + _, strategy = _run( + Strategy, + ( + "a", + _frame( + [100.0, 120.0], + dates=["2024-01-01", "2024-01-03"], + ), + ), + ( + "b", + _frame( + [200.0, 210.0, 220.0], + dates=["2024-01-01", "2024-01-02", "2024-01-03"], + ), + ), + ) + return strategy.events + + +def _late_start() -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def prenext(self) -> None: + self._record("prenext") + + def nextstart(self) -> None: + self._record("nextstart") + + def next(self) -> None: + self._record("next") + + def _record(self, callback: str) -> None: + self.events.append( + { + "callback": callback, + "date": self.datetime.date().isoformat(), + "lengths": [len(data) for data in self.datas], + } + ) + + _, strategy = _run( + Strategy, + ("a", _frame([100.0, 100.0, 100.0])), + ( + "b", + _frame([100.0, 100.0], dates=["2024-01-02", "2024-01-03"]), + ), + ) + return strategy.events + + +def _final_bar_order() -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 2: + self.buy(size=1) + + def notify_order(self, order: Any) -> None: + if order.status == order.Completed: + self.events.append({"price": order.executed.price}) + + _, strategy = _run(Strategy, ("asset", _frame([100.0, 110.0]))) + return strategy.events + + +def _trade_record() -> list[dict[str, Any]]: + class Strategy(bt.Strategy): + def __init__(self) -> None: + self.events: list[dict[str, Any]] = [] + + def next(self) -> None: + if len(self) == 1: + self.buy(size=2) + elif len(self) == 2: + self.close() + + def notify_trade(self, trade: Any) -> None: + if trade.isclosed: + self.events.append( + { + "commission": trade.commission, + "entry_price": trade.price, + "is_long": trade.long, + "pnl": trade.pnl, + "pnl_after_commission": trade.pnlcomm, + } + ) + + def configure(broker: Any) -> None: + broker.setcommission(commission=0.01) + + _, strategy = _run( + Strategy, + ("asset", _frame([100.0, 110.0, 120.0, 130.0])), + configure=configure, + ) + return strategy.events + + +def _source_location(function: Any) -> dict[str, Any]: + source_file = inspect.getsourcefile(function) + if source_file is None: + raise RuntimeError(f"Could not locate source for {function}") + package_root = Path(bt.__file__).resolve().parent.parent + relative_path = Path(source_file).resolve().relative_to(package_root).as_posix() + return { + "artifact": ARTIFACT, + "artifact_sha256": ARTIFACT_SHA256, + "line": inspect.getsourcelines(function)[1], + "module": function.__module__, + "path": relative_path, + "qualname": function.__qualname__, + "source": SOURCE, + } + + +def _equal(actual: Any, expected: Any) -> bool: + if isinstance(actual, float) and isinstance(expected, (float, int)): + return math.isclose(actual, float(expected), rel_tol=0.0, abs_tol=1e-12) + if isinstance(actual, list) and isinstance(expected, list) and len(actual) == len(expected): + return all(_equal(left, right) for left, right in zip(actual, expected, strict=True)) + if isinstance(actual, dict) and isinstance(expected, dict) and actual.keys() == expected.keys(): + return all(_equal(actual[key], expected[key]) for key in actual) + return bool(actual == expected) + + +def run() -> dict[str, Any]: + """Execute Backtrader directly and return framework-native evidence.""" + actual_version = importlib.metadata.version("backtrader") + if actual_version != VERSION: + raise RuntimeError(f"backtrader version differs: {actual_version} != {VERSION}") + + measurements = [ + ( + "defaults", + _defaults(), + { + "cash": 10_000.0, + "checksubmit": True, + "cheat_on_close": False, + "cheat_on_open": False, + "commission": 0.0, + "leverage": 1.0, + "short_cash": True, + "slippage_fixed": 0.0, + "slippage_percent": 0.0, + }, + ), + ( + "next_bar_open_and_gap", + _timing(), + [{"date": "2024-01-02", "price": 110.0, "size": 1}], + ), + ( + "cheat_on_close", + _timing(coc=True), + [{"date": "2024-01-01", "price": 100.0, "size": 1}], + ), + ( + "integer_target_percent", + _target_percent(0.5), + [ + { + "status": "Completed", + "created_size": 5, + "executed_size": 5, + "price": 100.0, + "commission": 0.0, + } + ], + ), + ( + "commission_headroom", + {"full": _target_percent(1.0, 0.001), "headroom": _target_percent(0.998, 0.001)}, + { + "full": [ + { + "status": "Margin", + "created_size": 10, + "executed_size": 0, + "price": 0.0, + "commission": 0.0, + } + ], + "headroom": [ + { + "status": "Completed", + "created_size": 9, + "executed_size": 9, + "price": 100.0, + "commission": 0.9000000000000001, + } + ], + }, + ), + ( + "cash_rejection_and_configured_leverage", + {"default": _cash_and_margin(1.0), "leverage_2": _cash_and_margin(2.0)}, + { + "default": [{"status": "Margin", "size": 0}], + "leverage_2": [{"status": "Completed", "size": 20}], + }, + ), + ( + "submission_sequence", + {"forward": _submission_sequence(False), "reverse": _submission_sequence(True)}, + { + "forward": [ + {"asset": "a", "created_size": 6, "status": "Completed"}, + {"asset": "b", "created_size": 6, "status": "Margin"}, + ], + "reverse": [ + {"asset": "b", "created_size": 6, "status": "Completed"}, + {"asset": "a", "created_size": 6, "status": "Margin"}, + ], + }, + ), + ( + "losing_short_cover_submission_rejection", + _losing_short_cover(), + { + "events": [ + {"status": "Completed", "size": -1, "price": 100.0}, + {"status": "Margin", "size": 0, "price": 0.0}, + ], + "cash": 200.0, + "position": -1, + }, + ), + ( + "gap_reversal_executes_close_leg_despite_margin", + _gap_reversal(), + { + "events": [ + { + "status": "Completed", + "created_size": -1, + "executed_size": -1, + "price": 100.0, + }, + { + "status": "Margin", + "created_size": 2, + "executed_size": 1, + "price": 250.0, + }, + ], + "cash": -50.0, + "position": 0, + }, + ), + ( + "signal_price_stop_basis", + _signal_price_stop(), + [ + {"created_price": 100.0, "executed_price": 110.0, "size": 1}, + {"created_price": 90.0, "executed_price": 90.0, "size": -1}, + ], + ), + ( + "trailing_stop_signal_close_and_lagged", + _trailing_stop(), + [ + {"date": "2024-01-02", "executed_price": 110.0, "size": 1}, + {"date": "2024-01-03", "executed_price": 90.0, "size": -1}, + ], + ), + ( + "short_cash", + {"credit": _short_cash(True), "debit": _short_cash(False)}, + { + "credit": {"cash": 1_100.0, "position": -1, "price": 100.0}, + "debit": {"cash": 900.0, "position": -1, "price": 100.0}, + }, + ), + ( + "missing_bar_uses_last_value", + _missing_and_late_bars(), + [ + { + "callback": "nextstart", + "date": "2024-01-01", + "lengths": [1, 1], + "values": [100.0, 200.0], + }, + { + "callback": "nextstart", + "date": "2024-01-02", + "lengths": [1, 2], + "values": [100.0, 210.0], + }, + { + "callback": "next", + "date": "2024-01-03", + "lengths": [2, 3], + "values": [120.0, 220.0], + }, + ], + ), + ( + "late_feed_start", + _late_start(), + [ + {"callback": "prenext", "date": "2024-01-01", "lengths": [1, 0]}, + {"callback": "nextstart", "date": "2024-01-02", "lengths": [2, 1]}, + {"callback": "next", "date": "2024-01-03", "lengths": [3, 2]}, + ], + ), + ("final_bar_market_order", _final_bar_order(), []), + ( + "trade_record", + _trade_record(), + [ + { + "commission": 4.6, + "entry_price": 110.0, + "is_long": True, + "pnl": 20.0, + "pnl_after_commission": 15.4, + } + ], + ), + ] + checks = [ + {"id": check_id, "actual": actual, "expected": expected, "passed": _equal(actual, expected)} + for check_id, actual, expected in measurements + ] + return { + "schema_version": 1, + "framework": "backtrader", + "package": "backtrader", + "version": actual_version, + "artifact": ARTIFACT, + "artifact_sha256": ARTIFACT_SHA256, + "oracle_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + "source_locations": { + "broker_next": _source_location(bt.brokers.BackBroker.next), + "order_execute": _source_location(bt.Order.execute), + "target_percent": _source_location(bt.Strategy.order_target_percent), + "target_size": _source_location(bt.CommInfoBase.getsize), + }, + "checks": checks, + "passed": all(check["passed"] for check in checks), + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + try: + evidence = run() + except (ImportError, OSError, RuntimeError, ValueError) as error: + print(f"Backtrader native behavior run failed: {error}", file=sys.stderr) + return 2 + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8") + failed = [check["id"] for check in evidence["checks"] if not check["passed"]] + if failed: + print(f"Backtrader native behavior differs: {failed}", file=sys.stderr) + return 1 + print(f"Backtrader native behavior passed: {len(evidence['checks'])} checks") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/native/evidence/backtrader-1.9.78.123.json b/validation/native/evidence/backtrader-1.9.78.123.json new file mode 100644 index 00000000..fc28d7a1 --- /dev/null +++ b/validation/native/evidence/backtrader-1.9.78.123.json @@ -0,0 +1,590 @@ +{ + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "artifact_sha256": "9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "checks": [ + { + "actual": { + "cash": 10000.0, + "cheat_on_close": false, + "cheat_on_open": false, + "checksubmit": true, + "commission": 0.0, + "leverage": 1.0, + "short_cash": true, + "slippage_fixed": 0.0, + "slippage_percent": 0.0 + }, + "expected": { + "cash": 10000.0, + "cheat_on_close": false, + "cheat_on_open": false, + "checksubmit": true, + "commission": 0.0, + "leverage": 1.0, + "short_cash": true, + "slippage_fixed": 0.0, + "slippage_percent": 0.0 + }, + "id": "defaults", + "passed": true + }, + { + "actual": [ + { + "date": "2024-01-02", + "price": 110.0, + "size": 1 + } + ], + "expected": [ + { + "date": "2024-01-02", + "price": 110.0, + "size": 1 + } + ], + "id": "next_bar_open_and_gap", + "passed": true + }, + { + "actual": [ + { + "date": "2024-01-01", + "price": 100.0, + "size": 1 + } + ], + "expected": [ + { + "date": "2024-01-01", + "price": 100.0, + "size": 1 + } + ], + "id": "cheat_on_close", + "passed": true + }, + { + "actual": [ + { + "commission": 0.0, + "created_size": 5, + "executed_size": 5, + "price": 100.0, + "status": "Completed" + } + ], + "expected": [ + { + "commission": 0.0, + "created_size": 5, + "executed_size": 5, + "price": 100.0, + "status": "Completed" + } + ], + "id": "integer_target_percent", + "passed": true + }, + { + "actual": { + "full": [ + { + "commission": 0.0, + "created_size": 10, + "executed_size": 0, + "price": 0.0, + "status": "Margin" + } + ], + "headroom": [ + { + "commission": 0.9000000000000001, + "created_size": 9, + "executed_size": 9, + "price": 100.0, + "status": "Completed" + } + ] + }, + "expected": { + "full": [ + { + "commission": 0.0, + "created_size": 10, + "executed_size": 0, + "price": 0.0, + "status": "Margin" + } + ], + "headroom": [ + { + "commission": 0.9000000000000001, + "created_size": 9, + "executed_size": 9, + "price": 100.0, + "status": "Completed" + } + ] + }, + "id": "commission_headroom", + "passed": true + }, + { + "actual": { + "default": [ + { + "size": 0, + "status": "Margin" + } + ], + "leverage_2": [ + { + "size": 20, + "status": "Completed" + } + ] + }, + "expected": { + "default": [ + { + "size": 0, + "status": "Margin" + } + ], + "leverage_2": [ + { + "size": 20, + "status": "Completed" + } + ] + }, + "id": "cash_rejection_and_configured_leverage", + "passed": true + }, + { + "actual": { + "forward": [ + { + "asset": "a", + "created_size": 6, + "status": "Completed" + }, + { + "asset": "b", + "created_size": 6, + "status": "Margin" + } + ], + "reverse": [ + { + "asset": "b", + "created_size": 6, + "status": "Completed" + }, + { + "asset": "a", + "created_size": 6, + "status": "Margin" + } + ] + }, + "expected": { + "forward": [ + { + "asset": "a", + "created_size": 6, + "status": "Completed" + }, + { + "asset": "b", + "created_size": 6, + "status": "Margin" + } + ], + "reverse": [ + { + "asset": "b", + "created_size": 6, + "status": "Completed" + }, + { + "asset": "a", + "created_size": 6, + "status": "Margin" + } + ] + }, + "id": "submission_sequence", + "passed": true + }, + { + "actual": { + "cash": 200.0, + "events": [ + { + "price": 100.0, + "size": -1, + "status": "Completed" + }, + { + "price": 0.0, + "size": 0, + "status": "Margin" + } + ], + "position": -1 + }, + "expected": { + "cash": 200.0, + "events": [ + { + "price": 100.0, + "size": -1, + "status": "Completed" + }, + { + "price": 0.0, + "size": 0, + "status": "Margin" + } + ], + "position": -1 + }, + "id": "losing_short_cover_submission_rejection", + "passed": true + }, + { + "actual": { + "cash": -50.0, + "events": [ + { + "created_size": -1, + "executed_size": -1, + "price": 100.0, + "status": "Completed" + }, + { + "created_size": 2, + "executed_size": 1, + "price": 250.0, + "status": "Margin" + } + ], + "position": 0 + }, + "expected": { + "cash": -50.0, + "events": [ + { + "created_size": -1, + "executed_size": -1, + "price": 100.0, + "status": "Completed" + }, + { + "created_size": 2, + "executed_size": 1, + "price": 250.0, + "status": "Margin" + } + ], + "position": 0 + }, + "id": "gap_reversal_executes_close_leg_despite_margin", + "passed": true + }, + { + "actual": [ + { + "created_price": 100.0, + "executed_price": 110.0, + "size": 1 + }, + { + "created_price": 90.0, + "executed_price": 90.0, + "size": -1 + } + ], + "expected": [ + { + "created_price": 100.0, + "executed_price": 110.0, + "size": 1 + }, + { + "created_price": 90.0, + "executed_price": 90.0, + "size": -1 + } + ], + "id": "signal_price_stop_basis", + "passed": true + }, + { + "actual": [ + { + "date": "2024-01-02", + "executed_price": 110.0, + "size": 1 + }, + { + "date": "2024-01-03", + "executed_price": 90.0, + "size": -1 + } + ], + "expected": [ + { + "date": "2024-01-02", + "executed_price": 110.0, + "size": 1 + }, + { + "date": "2024-01-03", + "executed_price": 90.0, + "size": -1 + } + ], + "id": "trailing_stop_signal_close_and_lagged", + "passed": true + }, + { + "actual": { + "credit": { + "cash": 1100.0, + "position": -1, + "price": 100.0 + }, + "debit": { + "cash": 900.0, + "position": -1, + "price": 100.0 + } + }, + "expected": { + "credit": { + "cash": 1100.0, + "position": -1, + "price": 100.0 + }, + "debit": { + "cash": 900.0, + "position": -1, + "price": 100.0 + } + }, + "id": "short_cash", + "passed": true + }, + { + "actual": [ + { + "callback": "nextstart", + "date": "2024-01-01", + "lengths": [ + 1, + 1 + ], + "values": [ + 100.0, + 200.0 + ] + }, + { + "callback": "nextstart", + "date": "2024-01-02", + "lengths": [ + 1, + 2 + ], + "values": [ + 100.0, + 210.0 + ] + }, + { + "callback": "next", + "date": "2024-01-03", + "lengths": [ + 2, + 3 + ], + "values": [ + 120.0, + 220.0 + ] + } + ], + "expected": [ + { + "callback": "nextstart", + "date": "2024-01-01", + "lengths": [ + 1, + 1 + ], + "values": [ + 100.0, + 200.0 + ] + }, + { + "callback": "nextstart", + "date": "2024-01-02", + "lengths": [ + 1, + 2 + ], + "values": [ + 100.0, + 210.0 + ] + }, + { + "callback": "next", + "date": "2024-01-03", + "lengths": [ + 2, + 3 + ], + "values": [ + 120.0, + 220.0 + ] + } + ], + "id": "missing_bar_uses_last_value", + "passed": true + }, + { + "actual": [ + { + "callback": "prenext", + "date": "2024-01-01", + "lengths": [ + 1, + 0 + ] + }, + { + "callback": "nextstart", + "date": "2024-01-02", + "lengths": [ + 2, + 1 + ] + }, + { + "callback": "next", + "date": "2024-01-03", + "lengths": [ + 3, + 2 + ] + } + ], + "expected": [ + { + "callback": "prenext", + "date": "2024-01-01", + "lengths": [ + 1, + 0 + ] + }, + { + "callback": "nextstart", + "date": "2024-01-02", + "lengths": [ + 2, + 1 + ] + }, + { + "callback": "next", + "date": "2024-01-03", + "lengths": [ + 3, + 2 + ] + } + ], + "id": "late_feed_start", + "passed": true + }, + { + "actual": [], + "expected": [], + "id": "final_bar_market_order", + "passed": true + }, + { + "actual": [ + { + "commission": 4.6, + "entry_price": 110.0, + "is_long": true, + "pnl": 20.0, + "pnl_after_commission": 15.4 + } + ], + "expected": [ + { + "commission": 4.6, + "entry_price": 110.0, + "is_long": true, + "pnl": 20.0, + "pnl_after_commission": 15.4 + } + ], + "id": "trade_record", + "passed": true + } + ], + "framework": "backtrader", + "oracle_sha256": "f516fb0bfb3b2cbebc076b092ce86f12cca502aec81735f240063512edbbf8df", + "package": "backtrader", + "passed": true, + "schema_version": 1, + "source_locations": { + "broker_next": { + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "artifact_sha256": "9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "line": 1176, + "module": "backtrader.brokers.bbroker", + "path": "backtrader/brokers/bbroker.py", + "qualname": "BackBroker.next", + "source": "https://pypi.org/project/backtrader/1.9.78.123/" + }, + "order_execute": { + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "artifact_sha256": "9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "line": 566, + "module": "backtrader.order", + "path": "backtrader/order.py", + "qualname": "Order.execute", + "source": "https://pypi.org/project/backtrader/1.9.78.123/" + }, + "target_percent": { + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "artifact_sha256": "9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "line": 1330, + "module": "backtrader.strategy", + "path": "backtrader/strategy.py", + "qualname": "Strategy.order_target_percent", + "source": "https://pypi.org/project/backtrader/1.9.78.123/" + }, + "target_size": { + "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl", + "artifact_sha256": "9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd", + "line": 192, + "module": "backtrader.comminfo", + "path": "backtrader/comminfo.py", + "qualname": "CommInfoBase.getsize", + "source": "https://pypi.org/project/backtrader/1.9.78.123/" + } + }, + "version": "1.9.78.123" +} diff --git a/validation/native/evidence/lean-18001.json b/validation/native/evidence/lean-18001.json new file mode 100644 index 00000000..ee4640e7 --- /dev/null +++ b/validation/native/evidence/lean-18001.json @@ -0,0 +1,2276 @@ +{ + "checks": [ + { + "actual": { + "case": "timing", + "cash": 9889.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 1.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 1.0, + "submitted": [ + { + "order_id": 1, + "quantity": 1.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 1.0, + "total_portfolio_value": 10060.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": 9889.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10060.0 + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": 9889.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10060.0 + } + }, + "id": "timing", + "passed": true + }, + { + "actual": { + "case": "default_models", + "cash": 9889.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 1.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 1.0, + "submitted": [ + { + "order_id": 1, + "quantity": 1.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 1.0, + "total_portfolio_value": 10060.0 + }, + "contract_actual": { + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + } + }, + "expected": { + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + } + }, + "id": "default_models", + "passed": true + }, + { + "actual": { + "case": "target_sizing", + "cash": -781.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 98.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 98.0, + "submitted": [ + { + "order_id": 1, + "quantity": 98.0, + "status": "SUBMITTED" + } + ], + "target_quantity": 98.0, + "total_fees": 1.0, + "total_portfolio_value": 15977.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 98.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": -781.0, + "position": 98.0, + "total_fees": 1.0, + "total_portfolio_value": 15977.0 + }, + "target_quantity": 98.0 + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 98.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": -781.0, + "position": 98.0, + "total_fees": 1.0, + "total_portfolio_value": 15977.0 + }, + "target_quantity": 98.0 + }, + "id": "target_sizing", + "passed": true + }, + { + "actual": { + "case": "submission_sequence", + "cash": 9998.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "SELL", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 2, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 1.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + }, + { + "direction": "SELL", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": -1.0, + "message": "", + "order_id": 2, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 0.0, + "submitted": [ + { + "order_id": 1, + "quantity": 1.0, + "status": "SUBMITTED" + }, + { + "order_id": 2, + "quantity": -1.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 2.0, + "total_portfolio_value": 9998.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "SUBMITTED", + "SELL", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ], + [ + "FILLED", + "SELL", + -1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": 9998.0, + "position": 0.0, + "total_fees": 2.0, + "total_portfolio_value": 9998.0 + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "SUBMITTED", + "SELL", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ], + [ + "FILLED", + "SELL", + -1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": 9998.0, + "position": 0.0, + "total_fees": 2.0, + "total_portfolio_value": 9998.0 + } + }, + "id": "submission_sequence", + "passed": true + }, + { + "actual": { + "case": "buying_power_allowed", + "cash": -6501.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 150.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 150.0, + "submitted": [ + { + "order_id": 1, + "quantity": 150.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 150.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 150.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + } + }, + "id": "buying_power_allowed", + "passed": true + }, + { + "actual": { + "case": "buying_power_rejected", + "cash": 10000.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "Order Error: ids: [1], Insufficient buying power to complete orders (Value:[25250]), Reason: Id: 1, Initial Margin: 12626.25, Free Margin: 10000.", + "order_id": 1, + "status": "INVALID", + "time": "2024-01-02 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 0.0, + "submitted": [ + { + "order_id": 1, + "quantity": 250.0, + "status": "INVALID" + } + ], + "target_quantity": null, + "total_fees": 0.0, + "total_portfolio_value": 10000.0 + }, + "contract_actual": { + "events": [ + [ + "INVALID", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ] + ], + "final": { + "cash": 10000.0, + "position": 0.0, + "total_fees": 0.0, + "total_portfolio_value": 10000.0 + } + }, + "expected": { + "events": [ + [ + "INVALID", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ] + ], + "final": { + "cash": 10000.0, + "position": 0.0, + "total_fees": 0.0, + "total_portfolio_value": 10000.0 + } + }, + "id": "buying_power_rejected", + "passed": true + }, + { + "actual": { + "case": "buying_power_sequence", + "cash": -6501.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 2, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 150.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "Order Error: ids: [2], Insufficient buying power to complete orders (Value:[16650]), Reason: Id: 2, Initial Margin: 8326, Free Margin: 1824.", + "order_id": 2, + "status": "INVALID", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 150.0, + "submitted": [ + { + "order_id": 1, + "quantity": 150.0, + "status": "SUBMITTED" + }, + { + "order_id": 2, + "quantity": 150.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 150.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ], + [ + "INVALID", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 150.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ], + [ + "INVALID", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + } + }, + "id": "buying_power_sequence", + "passed": true + }, + { + "actual": { + "case": "explicit_costs", + "cash": 9888.889, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.111, + "fill_quantity": 1.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "ConstantFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "ConstantSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 1.0, + "submitted": [ + { + "order_id": 1, + "quantity": 1.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 1.0, + "total_portfolio_value": 10059.889 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.111, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": 9888.889, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10059.889 + }, + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "ConstantFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "ConstantSlippageModel" + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.111, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": 9888.889, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10059.889 + }, + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "ConstantFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "ConstantSlippageModel" + } + }, + "id": "explicit_costs", + "passed": true + }, + { + "actual": { + "case": "default_full_fill", + "cash": -6501.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 150.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 150.0, + "submitted": [ + { + "order_id": 1, + "quantity": 150.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 150.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + }, + "source_volume": 100.0 + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 150.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0 + }, + "source_volume": 100.0 + }, + "id": "default_full_fill", + "passed": true + }, + { + "actual": { + "case": "fill_forward", + "cash": 9879.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-03 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-04 21:00:00", + "fee": 1.0, + "fill_price": 120.0, + "fill_quantity": 1.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-04 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 101.0, + "date": "2024-01-03", + "fill_forward": true, + "open": 100.0, + "volume": 0.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 1.0, + "submitted": [ + { + "order_id": 1, + "quantity": 1.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 1.0, + "total_portfolio_value": 10050.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-03 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 120.0, + 1.0, + "2024-01-04 21:00:00" + ] + ], + "final": { + "cash": 9879.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10050.0 + }, + "synthetic_bar": { + "close": 101.0, + "date": "2024-01-03", + "fill_forward": true, + "open": 100.0, + "volume": 0.0 + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-03 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 120.0, + 1.0, + "2024-01-04 21:00:00" + ] + ], + "final": { + "cash": 9879.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10050.0 + }, + "synthetic_bar": { + "close": 101.0, + "date": "2024-01-03", + "fill_forward": true, + "open": 100.0, + "volume": 0.0 + } + }, + "id": "fill_forward", + "passed": true + }, + { + "actual": { + "case": "terminal_holding", + "cash": 9889.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 1.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 1.0, + "submitted": [ + { + "order_id": 1, + "quantity": 1.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 1.0, + "total_portfolio_value": 10060.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": 9889.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10060.0 + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ] + ], + "final": { + "cash": 9889.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10060.0 + } + }, + "id": "terminal_holding", + "passed": true + }, + { + "actual": { + "case": "final_bar_order", + "cash": 10000.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-11 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-11 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 0.0, + "submitted": [ + { + "order_id": 1, + "quantity": 1.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 0.0, + "total_portfolio_value": 10000.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-11 21:00:00" + ] + ], + "final": { + "cash": 10000.0, + "position": 0.0, + "total_fees": 0.0, + "total_portfolio_value": 10000.0 + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-11 21:00:00" + ] + ], + "final": { + "cash": 10000.0, + "position": 0.0, + "total_fees": 0.0, + "total_portfolio_value": 10000.0 + } + }, + "id": "final_bar_order", + "passed": true + }, + { + "actual": { + "case": "liquidation", + "cash": 10058.0, + "events": [ + { + "direction": "BUY", + "event_time_utc": "2024-01-02 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 1, + "status": "SUBMITTED", + "time": "2024-01-02 16:00:00" + }, + { + "direction": "BUY", + "event_time_utc": "2024-01-03 21:00:00", + "fee": 1.0, + "fill_price": 110.0, + "fill_quantity": 1.0, + "message": "", + "order_id": 1, + "status": "FILLED", + "time": "2024-01-03 16:00:00" + }, + { + "direction": "SELL", + "event_time_utc": "2024-01-10 21:00:00", + "fee": 0.0, + "fill_price": 0.0, + "fill_quantity": 0.0, + "message": "", + "order_id": 2, + "status": "SUBMITTED", + "time": "2024-01-10 16:00:00" + }, + { + "direction": "SELL", + "event_time_utc": "2024-01-11 21:00:00", + "fee": 1.0, + "fill_price": 170.0, + "fill_quantity": -1.0, + "message": "", + "order_id": 2, + "status": "FILLED", + "time": "2024-01-11 16:00:00" + } + ], + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel" + }, + "observations": [ + { + "close": 101.0, + "date": "2024-01-02", + "fill_forward": false, + "open": 100.0, + "volume": 100.0 + }, + { + "close": 111.0, + "date": "2024-01-03", + "fill_forward": false, + "open": 110.0, + "volume": 100.0 + }, + { + "close": 121.0, + "date": "2024-01-04", + "fill_forward": false, + "open": 120.0, + "volume": 100.0 + }, + { + "close": 131.0, + "date": "2024-01-05", + "fill_forward": false, + "open": 130.0, + "volume": 100.0 + }, + { + "close": 141.0, + "date": "2024-01-08", + "fill_forward": false, + "open": 140.0, + "volume": 100.0 + }, + { + "close": 151.0, + "date": "2024-01-09", + "fill_forward": false, + "open": 150.0, + "volume": 100.0 + }, + { + "close": 161.0, + "date": "2024-01-10", + "fill_forward": false, + "open": 160.0, + "volume": 100.0 + }, + { + "close": 171.0, + "date": "2024-01-11", + "fill_forward": false, + "open": 170.0, + "volume": 100.0 + } + ], + "position": 0.0, + "submitted": [ + { + "order_id": 1, + "quantity": 1.0, + "status": "SUBMITTED" + }, + { + "order_id": 2, + "quantity": -1.0, + "status": "SUBMITTED" + } + ], + "target_quantity": null, + "total_fees": 2.0, + "total_portfolio_value": 10058.0 + }, + "contract_actual": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ], + [ + "SUBMITTED", + "SELL", + 0.0, + 0.0, + 0.0, + "2024-01-10 21:00:00" + ], + [ + "FILLED", + "SELL", + -1.0, + 170.0, + 1.0, + "2024-01-11 21:00:00" + ] + ], + "final": { + "cash": 10058.0, + "position": 0.0, + "total_fees": 2.0, + "total_portfolio_value": 10058.0 + } + }, + "expected": { + "events": [ + [ + "SUBMITTED", + "BUY", + 0.0, + 0.0, + 0.0, + "2024-01-02 21:00:00" + ], + [ + "FILLED", + "BUY", + 1.0, + 110.0, + 1.0, + "2024-01-03 21:00:00" + ], + [ + "SUBMITTED", + "SELL", + 0.0, + 0.0, + 0.0, + "2024-01-10 21:00:00" + ], + [ + "FILLED", + "SELL", + -1.0, + 170.0, + 1.0, + "2024-01-11 21:00:00" + ] + ], + "final": { + "cash": 10058.0, + "position": 0.0, + "total_fees": 2.0, + "total_portfolio_value": 10058.0 + } + }, + "id": "liquidation", + "passed": true + } + ], + "cli": { + "immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c", + "package": "lean", + "version": "1.0.228" + }, + "data": { + "format": "LEAN local equity daily zip, raw prices scaled by 10000", + "payload_sha256": "b3f483a7d5cb3a2de611bde72b900f8bbb08c13cae86e08d5337edfd33c252fe", + "sessions": [ + "2024-01-02", + "2024-01-03", + "2024-01-04", + "2024-01-05", + "2024-01-08", + "2024-01-09", + "2024-01-10", + "2024-01-11" + ] + }, + "engine": { + "engine_version": "18001", + "image": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70", + "image_id": "sha256:1ef05df55300c30a3e75f142b62e858e26b054f75445986e7599edde3c32fc20", + "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307", + "python_version": "3.11", + "source_commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792", + "target_framework": "net10.0" + }, + "framework": "lean", + "models": { + "account_type": "Margin", + "brokerage": "DefaultBrokerageModel", + "security": "Equity USA, daily, adjusted normalization, leverage 2" + }, + "oracle_files": { + "config.json": "5b7ec7bf073127d026e6086ec18771dcb700375570ba51def97739d85009351c", + "main.py": "04aab940df029bf37e7aa1a9d3d8ab0996fce0bb3a10fa4dd4e15ca685e83e19" + }, + "oracle_sha256": "1675f062ce54f29727d2bf7d17afc5c9db4e439e9f921e270feec49cde065d66", + "passed": true, + "schema_version": 1, + "source_references": { + "algorithm_settings": "https://github.com/QuantConnect/Lean/blob/278fcb3d1b815b63ccadba68d7ae54422e34b792/Common/AlgorithmSettings.cs", + "brokerage": "https://github.com/QuantConnect/Lean/blob/278fcb3d1b815b63ccadba68d7ae54422e34b792/Common/Brokerages/DefaultBrokerageModel.cs", + "fee": "https://github.com/QuantConnect/Lean/blob/278fcb3d1b815b63ccadba68d7ae54422e34b792/Common/Orders/Fees/InteractiveBrokersFeeModel.cs", + "fill": "https://github.com/QuantConnect/Lean/blob/278fcb3d1b815b63ccadba68d7ae54422e34b792/Common/Orders/Fills/EquityFillModel.cs", + "margin": "https://github.com/QuantConnect/Lean/blob/278fcb3d1b815b63ccadba68d7ae54422e34b792/Common/Securities/SecurityMarginModel.cs", + "slippage": "https://github.com/QuantConnect/Lean/blob/278fcb3d1b815b63ccadba68d7ae54422e34b792/Common/Orders/Slippage/ConstantSlippageModel.cs" + }, + "support_files": { + "data/market-hours/market-hours-database.json": "935079bc33409373f37163eddb539f09e81a1efbd0e617cbc8fdb487c76dab2b", + "data/symbol-properties/symbol-properties-database.csv": "56b6dc80202bca88f212c78c4d4670c2e070e6f1e7386f7436232aafe5000e93", + "lean.json": "fa15d6d81f560fd1665b004c338b026458fa834a7645e015d16d861dd73540f4" + } +} diff --git a/validation/native/evidence/vectorbt_oss-1.1.0.json b/validation/native/evidence/vectorbt_oss-1.1.0.json new file mode 100644 index 00000000..b45cca60 --- /dev/null +++ b/validation/native/evidence/vectorbt_oss-1.1.0.json @@ -0,0 +1,372 @@ +{ + "checks": [ + { + "actual": { + "accumulate": false, + "allow_partial": true, + "call_seq": "default", + "cash_sharing": false, + "fees": 0.0, + "ffill_val_price": true, + "fillna_close": true, + "fixed_fees": 0.0, + "raise_reject": false, + "slippage": 0.0, + "update_value": false, + "upon_dir_conflict": "ignore", + "upon_long_conflict": "ignore", + "upon_opposite_entry": "reversereduce", + "upon_short_conflict": "ignore" + }, + "expected": { + "accumulate": false, + "allow_partial": true, + "call_seq": "default", + "cash_sharing": false, + "fees": 0.0, + "ffill_val_price": true, + "fillna_close": true, + "fixed_fees": 0.0, + "raise_reject": false, + "slippage": 0.0, + "update_value": false, + "upon_dir_conflict": "ignore", + "upon_long_conflict": "ignore", + "upon_opposite_entry": "reversereduce", + "upon_short_conflict": "ignore" + }, + "id": "defaults", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "prices": [ + 100.0, + 110.0 + ], + "timestamps": [ + "2024-01-01 00:00:00", + "2024-01-02 00:00:00" + ] + }, + "expected": { + "prices": [ + 100.0, + 110.0 + ], + "timestamps": [ + "2024-01-01 00:00:00", + "2024-01-02 00:00:00" + ] + }, + "id": "signal_timing_and_default_fill", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 99.0, + 109.0 + ], + "expected": [ + 99.0, + 109.0 + ], + "id": "explicit_fill_price", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 5.0, + 5.0 + ], + "expected": [ + 5.0, + 5.0 + ], + "id": "target_percent_sizing", + "passed": true, + "source": "from_orders" + }, + { + "actual": { + "default": [ + "a" + ], + "reversed": [ + "b" + ] + }, + "expected": { + "default": [ + "a" + ], + "reversed": [ + "b" + ] + }, + "id": "cash_sharing_and_call_sequence", + "passed": true, + "source": "from_orders" + }, + { + "actual": { + "cash": [ + 1500.0, + 1000.0, + 1000.0 + ], + "orders": [ + { + "column": "b", + "side": "Sell", + "size": 5.0 + }, + { + "column": "a", + "side": "Buy", + "size": 5.0 + } + ] + }, + "expected": { + "cash": [ + 1500.0, + 1000.0, + 1000.0 + ], + "orders": [ + { + "column": "b", + "side": "Sell", + "size": 5.0 + }, + { + "column": "a", + "side": "Buy", + "size": 5.0 + } + ] + }, + "id": "cash_sharing_short_collateral", + "passed": true, + "source": "from_orders" + }, + { + "actual": 1035668.0954273955, + "expected": 1035668.0954273955, + "id": "lock_notional_update_arithmetic", + "passed": true, + "source": "from_orders" + }, + { + "actual": { + "default_orders": 1, + "enabled_orders": 2 + }, + "expected": { + "default_orders": 1, + "enabled_orders": 2 + }, + "id": "accumulation", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "default": [ + "Buy" + ], + "entry": [ + "Buy", + "Buy" + ], + "exit": [ + "Buy", + "Sell" + ] + }, + "expected": { + "default": [ + "Buy" + ], + "entry": [ + "Buy", + "Buy" + ], + "exit": [ + "Buy", + "Sell" + ] + }, + "id": "long_signal_conflict", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "cash": [ + 1100.0, + 990.0 + ], + "sides": [ + "Sell", + "Buy" + ] + }, + "expected": { + "cash": [ + 1100.0, + 990.0 + ], + "sides": [ + "Sell", + "Buy" + ] + }, + "id": "short_cash", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 100.0, + 90.0 + ], + "expected": [ + 100.0, + 90.0 + ], + "id": "stop_fill", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 100.0, + 108.0 + ], + "expected": [ + 100.0, + 108.0 + ], + "id": "trailing_stop_extreme_and_intrabar_fill", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "fees": [ + 3.01, + 2.99 + ], + "prices": [ + 101.0, + 99.0 + ] + }, + "expected": { + "fees": [ + 3.01, + 2.99 + ], + "prices": [ + 101.0, + 99.0 + ] + }, + "id": "fees_and_slippage", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "cash": [ + 900.0, + 900.0, + 900.0 + ], + "order_count": 1 + }, + "expected": { + "cash": [ + 900.0, + 900.0, + 900.0 + ], + "order_count": 1 + }, + "id": "missing_order_price", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 1.0 + ], + "expected": [ + 1.0 + ], + "id": "insufficient_cash_partial_fill", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "direction": "Long", + "order_ids": [ + 0, + 1 + ], + "pnl": 10.0, + "status": "Closed", + "trade_count": 1 + }, + "expected": { + "direction": "Long", + "order_ids": [ + 0, + 1 + ], + "pnl": 10.0, + "status": "Closed", + "trade_count": 1 + }, + "id": "record_construction", + "passed": true, + "source": "from_signals" + }, + { + "actual": "accepted", + "expected": "accepted", + "id": "integer_signal_dtype", + "passed": true, + "source": "from_signals" + } + ], + "framework": "vectorbt_oss", + "oracle_sha256": "e3a002a1924a371cdf5b9f61eae13942ac371ad13d6f55125dd545c243a88bc8", + "package": "vectorbt", + "passed": true, + "schema_version": 1, + "source_commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "source_locations": { + "from_orders": { + "line": 1616, + "module": "vectorbt.portfolio.base", + "path": "vectorbt/portfolio/base.py", + "qualname": "Portfolio.from_orders", + "source_url": "https://github.com/polakowo/vectorbt/blob/259d2d89fe2e7638baf3ca76c394937cd32b656d/vectorbt/portfolio/base.py#L1616" + }, + "from_signals": { + "line": 2047, + "module": "vectorbt.portfolio.base", + "path": "vectorbt/portfolio/base.py", + "qualname": "Portfolio.from_signals", + "source_url": "https://github.com/polakowo/vectorbt/blob/259d2d89fe2e7638baf3ca76c394937cd32b656d/vectorbt/portfolio/base.py#L2047" + } + }, + "version": "1.1.0" +} diff --git a/validation/native/evidence/vectorbt_pro-2026.6.27.json b/validation/native/evidence/vectorbt_pro-2026.6.27.json new file mode 100644 index 00000000..7e6d20f2 --- /dev/null +++ b/validation/native/evidence/vectorbt_pro-2026.6.27.json @@ -0,0 +1,372 @@ +{ + "checks": [ + { + "actual": { + "accumulate": false, + "allow_partial": true, + "call_seq": null, + "cash_sharing": false, + "fees": 0.0, + "ffill_val_price": true, + "fillna_close": true, + "fixed_fees": 0.0, + "raise_reject": false, + "slippage": 0.0, + "update_value": false, + "upon_dir_conflict": "ignore", + "upon_long_conflict": "ignore", + "upon_opposite_entry": "reversereduce", + "upon_short_conflict": "ignore" + }, + "expected": { + "accumulate": false, + "allow_partial": true, + "call_seq": null, + "cash_sharing": false, + "fees": 0.0, + "ffill_val_price": true, + "fillna_close": true, + "fixed_fees": 0.0, + "raise_reject": false, + "slippage": 0.0, + "update_value": false, + "upon_dir_conflict": "ignore", + "upon_long_conflict": "ignore", + "upon_opposite_entry": "reversereduce", + "upon_short_conflict": "ignore" + }, + "id": "defaults", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "prices": [ + 100.0, + 110.0 + ], + "timestamps": [ + "2024-01-01 00:00:00", + "2024-01-02 00:00:00" + ] + }, + "expected": { + "prices": [ + 100.0, + 110.0 + ], + "timestamps": [ + "2024-01-01 00:00:00", + "2024-01-02 00:00:00" + ] + }, + "id": "signal_timing_and_default_fill", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 99.0, + 109.0 + ], + "expected": [ + 99.0, + 109.0 + ], + "id": "explicit_fill_price", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 5.0, + 5.0 + ], + "expected": [ + 5.0, + 5.0 + ], + "id": "target_percent_sizing", + "passed": true, + "source": "from_orders" + }, + { + "actual": { + "default": [ + "a" + ], + "reversed": [ + "b" + ] + }, + "expected": { + "default": [ + "a" + ], + "reversed": [ + "b" + ] + }, + "id": "cash_sharing_and_call_sequence", + "passed": true, + "source": "from_orders" + }, + { + "actual": { + "cash": [ + 1500.0, + 1000.0, + 1000.0 + ], + "orders": [ + { + "column": "b", + "side": "Sell", + "size": 5.0 + }, + { + "column": "a", + "side": "Buy", + "size": 5.0 + } + ] + }, + "expected": { + "cash": [ + 1500.0, + 1000.0, + 1000.0 + ], + "orders": [ + { + "column": "b", + "side": "Sell", + "size": 5.0 + }, + { + "column": "a", + "side": "Buy", + "size": 5.0 + } + ] + }, + "id": "cash_sharing_short_collateral", + "passed": true, + "source": "from_orders" + }, + { + "actual": 1035668.0954273958, + "expected": 1035668.0954273958, + "id": "lock_notional_update_arithmetic", + "passed": true, + "source": "from_orders" + }, + { + "actual": { + "default_orders": 1, + "enabled_orders": 2 + }, + "expected": { + "default_orders": 1, + "enabled_orders": 2 + }, + "id": "accumulation", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "default": [ + "Buy" + ], + "entry": [ + "Buy", + "Buy" + ], + "exit": [ + "Buy", + "Sell" + ] + }, + "expected": { + "default": [ + "Buy" + ], + "entry": [ + "Buy", + "Buy" + ], + "exit": [ + "Buy", + "Sell" + ] + }, + "id": "long_signal_conflict", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "cash": [ + 1100.0, + 990.0 + ], + "sides": [ + "Sell", + "Buy" + ] + }, + "expected": { + "cash": [ + 1100.0, + 990.0 + ], + "sides": [ + "Sell", + "Buy" + ] + }, + "id": "short_cash", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 100.0, + 90.0 + ], + "expected": [ + 100.0, + 90.0 + ], + "id": "stop_fill", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 100.0, + 108.0 + ], + "expected": [ + 100.0, + 108.0 + ], + "id": "trailing_stop_extreme_and_intrabar_fill", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "fees": [ + 3.01, + 2.99 + ], + "prices": [ + 101.0, + 99.0 + ] + }, + "expected": { + "fees": [ + 3.01, + 2.99 + ], + "prices": [ + 101.0, + 99.0 + ] + }, + "id": "fees_and_slippage", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "cash": [ + 900.0, + 900.0, + 900.0 + ], + "order_count": 1 + }, + "expected": { + "cash": [ + 900.0, + 900.0, + 900.0 + ], + "order_count": 1 + }, + "id": "missing_order_price", + "passed": true, + "source": "from_signals" + }, + { + "actual": [ + 1.0 + ], + "expected": [ + 1.0 + ], + "id": "insufficient_cash_partial_fill", + "passed": true, + "source": "from_signals" + }, + { + "actual": { + "direction": "Long", + "order_ids": [ + 0, + 1 + ], + "pnl": 10.0, + "status": "Closed", + "trade_count": 1 + }, + "expected": { + "direction": "Long", + "order_ids": [ + 0, + 1 + ], + "pnl": 10.0, + "status": "Closed", + "trade_count": 1 + }, + "id": "record_construction", + "passed": true, + "source": "from_signals" + }, + { + "actual": "rejected", + "expected": "rejected", + "id": "integer_signal_dtype", + "passed": true, + "source": "from_signals" + } + ], + "framework": "vectorbt_pro", + "oracle_sha256": "e3a002a1924a371cdf5b9f61eae13942ac371ad13d6f55125dd545c243a88bc8", + "package": "vectorbtpro", + "passed": true, + "schema_version": 1, + "source_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "source_locations": { + "from_orders": { + "line": 4145, + "module": "vectorbtpro.portfolio.base", + "path": "vectorbtpro/portfolio/base.py", + "qualname": "Portfolio.from_orders", + "source_url": "https://github.com/polakowo/vectorbt.pro/blob/6e18cf0aa37849cfc20848f40f1d26ecfdc771b4/vectorbtpro/portfolio/base.py#L4145" + }, + "from_signals": { + "line": 4646, + "module": "vectorbtpro.portfolio.base", + "path": "vectorbtpro/portfolio/base.py", + "qualname": "Portfolio.from_signals", + "source_url": "https://github.com/polakowo/vectorbt.pro/blob/6e18cf0aa37849cfc20848f40f1d26ecfdc771b4/vectorbtpro/portfolio/base.py#L4646" + } + }, + "version": "2026.6.27" +} diff --git a/validation/native/evidence/zipline-3.1.1.json b/validation/native/evidence/zipline-3.1.1.json new file mode 100644 index 00000000..32839bac --- /dev/null +++ b/validation/native/evidence/zipline-3.1.1.json @@ -0,0 +1,608 @@ +{ + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "artifact_sha256": "4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "checks": [ + { + "actual": { + "commission_class": "PerShare", + "commission_minimum": 0, + "commission_per_share": 0.001, + "slippage_basis_points": 5.0, + "slippage_class": "FixedBasisPointsSlippage", + "slippage_volume_limit": 0.1, + "volume_share_price_impact": 0.1, + "volume_share_volume_limit": 0.025 + }, + "expected": { + "commission_class": "PerShare", + "commission_minimum": 0, + "commission_per_share": 0.001, + "slippage_basis_points": 5.0, + "slippage_class": "FixedBasisPointsSlippage", + "slippage_volume_limit": 0.1, + "volume_share_price_impact": 0.1, + "volume_share_volume_limit": 0.025 + }, + "id": "defaults", + "passed": true + }, + { + "actual": { + "cash_after_fill": 879.9390000000001, + "transactions": [ + { + "amount": 1, + "date": "2024-01-03", + "price": 120.06, + "transaction_commission": 0.0 + } + ] + }, + "expected": { + "cash_after_fill": 879.9390000000001, + "transactions": [ + { + "amount": 1, + "date": "2024-01-03", + "price": 120.06, + "transaction_commission": 0.0 + } + ] + }, + "id": "default_next_bar_close_fill", + "passed": true + }, + { + "actual": [ + { + "amount": 1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ], + "expected": [ + { + "amount": 1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ], + "id": "configured_next_bar_open_fill", + "passed": true + }, + { + "actual": { + "cash_after_fill": 889.0, + "transactions": [ + { + "amount": 1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + }, + "expected": { + "cash_after_fill": 889.0, + "transactions": [ + { + "amount": 1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + }, + "id": "explicit_minimum_commission", + "passed": true + }, + { + "actual": { + "orders": [ + { + "amount": 5, + "date": "2024-01-02", + "filled": 0, + "status": 0 + }, + { + "amount": 5, + "date": "2024-01-03", + "filled": 5, + "status": 1 + } + ], + "transactions": [ + { + "amount": 5, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + }, + "expected": { + "orders": [ + { + "amount": 5, + "date": "2024-01-02", + "filled": 0, + "status": 0 + }, + { + "amount": 5, + "date": "2024-01-03", + "filled": 5, + "status": 1 + } + ], + "transactions": [ + { + "amount": 5, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + }, + "id": "integer_target_percent", + "passed": true + }, + { + "actual": { + "submitted_amounts": [ + 5, + 5 + ], + "transactions": [ + { + "amount": 5, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + }, + { + "amount": 5, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + }, + "expected": { + "submitted_amounts": [ + 5, + 5 + ], + "transactions": [ + { + "amount": 5, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + }, + { + "amount": 5, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + }, + "id": "target_percent_snapshot", + "passed": true + }, + { + "actual": [ + { + "amount": 1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + }, + { + "amount": -1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ], + "expected": [ + { + "amount": 1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + }, + { + "amount": -1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ], + "id": "submission_sequence", + "passed": true + }, + { + "actual": { + "long": { + "cash_after_fill": -1200.0, + "position_after_fill": 20, + "transactions": [ + { + "amount": 20, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + }, + "short": { + "cash_after_fill": 1110.0, + "position_after_fill": -1, + "transactions": [ + { + "amount": -1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + } + }, + "expected": { + "long": { + "cash_after_fill": -1200.0, + "position_after_fill": 20, + "transactions": [ + { + "amount": 20, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + }, + "short": { + "cash_after_fill": 1110.0, + "position_after_fill": -1, + "transactions": [ + { + "amount": -1, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + } + ] + } + }, + "id": "cash_and_short_proceeds", + "passed": true + }, + { + "actual": [ + { + "amount": 2, + "date": "2024-01-03", + "price": 120.0048, + "transaction_commission": 0.0 + }, + { + "amount": 2, + "date": "2024-01-04", + "price": 130.0052, + "transaction_commission": 0.0 + }, + { + "amount": 1, + "date": "2024-01-05", + "price": 140.0014, + "transaction_commission": 0.0 + } + ], + "expected": [ + { + "amount": 2, + "date": "2024-01-03", + "price": 120.0048, + "transaction_commission": 0.0 + }, + { + "amount": 2, + "date": "2024-01-04", + "price": 130.0052, + "transaction_commission": 0.0 + }, + { + "amount": 1, + "date": "2024-01-05", + "price": 140.0014, + "transaction_commission": 0.0 + } + ], + "id": "volume_share_partial_fills", + "passed": true + }, + { + "actual": { + "native_output_columns": [ + "orders", + "positions", + "transactions" + ], + "native_trade_column": false, + "transactions": [ + { + "amount": 2, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + }, + { + "amount": -2, + "date": "2024-01-05", + "price": 130.0, + "transaction_commission": 0.0 + } + ] + }, + "expected": { + "native_output_columns": [ + "orders", + "positions", + "transactions" + ], + "native_trade_column": false, + "transactions": [ + { + "amount": 2, + "date": "2024-01-03", + "price": 110.0, + "transaction_commission": 0.0 + }, + { + "amount": -2, + "date": "2024-01-05", + "price": 130.0, + "transaction_commission": 0.0 + } + ] + }, + "id": "transaction_records_not_native_trades", + "passed": true + }, + { + "actual": [], + "expected": [], + "id": "final_bar_market_order", + "passed": true + }, + { + "actual": [ + "2024-01-02", + "2024-01-03", + "2024-01-04", + "2024-01-05", + "2024-01-08", + "2024-01-09", + "2024-01-10", + "2024-01-11" + ], + "expected": [ + "2024-01-02", + "2024-01-03", + "2024-01-04", + "2024-01-05", + "2024-01-08", + "2024-01-09", + "2024-01-10", + "2024-01-11" + ], + "id": "session_calendar", + "passed": true + }, + { + "actual": { + "observations": [ + { + "close": 100.0, + "date": "2024-01-02", + "price": 100.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 120.0, + "date": "2024-01-03", + "price": 120.0, + "stale": false, + "volume": 100.0 + }, + { + "close": null, + "date": "2024-01-04", + "price": 120.0, + "stale": true, + "volume": 0.0 + }, + { + "close": 140.0, + "date": "2024-01-05", + "price": 140.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 150.0, + "date": "2024-01-08", + "price": 150.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 160.0, + "date": "2024-01-09", + "price": 160.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 170.0, + "date": "2024-01-10", + "price": 170.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 180.0, + "date": "2024-01-11", + "price": 180.0, + "stale": false, + "volume": 100.0 + } + ], + "transactions": [ + { + "amount": 1, + "date": "2024-01-05", + "price": 130.0, + "transaction_commission": 0.0 + } + ] + }, + "expected": { + "observations": [ + { + "close": 100.0, + "date": "2024-01-02", + "price": 100.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 120.0, + "date": "2024-01-03", + "price": 120.0, + "stale": false, + "volume": 100.0 + }, + { + "close": null, + "date": "2024-01-04", + "price": 120.0, + "stale": true, + "volume": 0.0 + }, + { + "close": 140.0, + "date": "2024-01-05", + "price": 140.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 150.0, + "date": "2024-01-08", + "price": 150.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 160.0, + "date": "2024-01-09", + "price": 160.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 170.0, + "date": "2024-01-10", + "price": 170.0, + "stale": false, + "volume": 100.0 + }, + { + "close": 180.0, + "date": "2024-01-11", + "price": 180.0, + "stale": false, + "volume": 100.0 + } + ], + "transactions": [ + { + "amount": 1, + "date": "2024-01-05", + "price": 130.0, + "transaction_commission": 0.0 + } + ] + }, + "id": "missing_bar", + "passed": true + } + ], + "comparison_protocol": { + "commission": "NoCommission", + "execution": "next-session custom OpenPriceSlippage", + "risk_rules": "adapter-emulated from daily OHLC; not Zipline native trade records", + "slippage": "no volume cap unless a scenario explicitly configures slippage" + }, + "framework": "zipline", + "oracle_sha256": "1804d3fae3a56ec930aba31fc832214d6be6f8a3f6d2e8043b4bd1f0a1040346", + "package": "zipline-reloaded", + "passed": true, + "schema_version": 1, + "source_commit": "09885a2ebc7567d40942c891b3879dc03c745070", + "source_locations": { + "algorithm_target_percent": { + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "artifact_sha256": "4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "line": 1807, + "module": "zipline.algorithm", + "path": "zipline/utils/api_support.py", + "qualname": "TradingAlgorithm.order_target_percent", + "source_url": "https://github.com/stefan-jansen/zipline-reloaded/blob/09885a2ebc7567d40942c891b3879dc03c745070/zipline/utils/api_support.py#L1807" + }, + "commission": { + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "artifact_sha256": "4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "line": 163, + "module": "zipline.finance.commission", + "path": "zipline/finance/commission.py", + "qualname": "PerShare.__init__", + "source_url": "https://github.com/stefan-jansen/zipline-reloaded/blob/09885a2ebc7567d40942c891b3879dc03c745070/zipline/finance/commission.py#L163" + }, + "default_blotter": { + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "artifact_sha256": "4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "line": 42, + "module": "zipline.finance.blotter.simulation_blotter", + "path": "zipline/finance/blotter/simulation_blotter.py", + "qualname": "SimulationBlotter.__init__", + "source_url": "https://github.com/stefan-jansen/zipline-reloaded/blob/09885a2ebc7567d40942c891b3879dc03c745070/zipline/finance/blotter/simulation_blotter.py#L42" + }, + "fixed_basis_points": { + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "artifact_sha256": "4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "line": 663, + "module": "zipline.finance.slippage", + "path": "zipline/finance/slippage.py", + "qualname": "FixedBasisPointsSlippage.process_order", + "source_url": "https://github.com/stefan-jansen/zipline-reloaded/blob/09885a2ebc7567d40942c891b3879dc03c745070/zipline/finance/slippage.py#L663" + }, + "volume_share": { + "artifact": "zipline_reloaded-3.1.1.tar.gz", + "artifact_sha256": "4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f", + "line": 288, + "module": "zipline.finance.slippage", + "path": "zipline/finance/slippage.py", + "qualname": "VolumeShareSlippage.process_order", + "source_url": "https://github.com/stefan-jansen/zipline-reloaded/blob/09885a2ebc7567d40942c891b3879dc03c745070/zipline/finance/slippage.py#L288" + } + }, + "version": "3.1.1" +} diff --git a/validation/native/lean_behavior.py b/validation/native/lean_behavior.py new file mode 100644 index 00000000..4db3ea71 --- /dev/null +++ b/validation/native/lean_behavior.py @@ -0,0 +1,517 @@ +#!/usr/bin/env python3 +"""Run framework-native behavior cases against the frozen LEAN engine image.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import math +import shutil +import subprocess +import sys +import tempfile +import zipfile +from pathlib import Path +from typing import Any + +IMAGE = "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70" +PLATFORM_ARTIFACT = ( + "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307" +) +ENGINE_VERSION = "18001" +ENGINE_COMMIT = "278fcb3d1b815b63ccadba68d7ae54422e34b792" +CLI_VERSION = "1.0.228" +CLI_SHA256 = "eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c" + +ROOT = Path(__file__).parents[2] +PROJECT_SOURCE = Path(__file__).parent / "lean_project" +SUPPORT_SOURCE = ROOT / "validation/lean/support" +CASES = ( + "timing", + "default_models", + "target_sizing", + "submission_sequence", + "buying_power_allowed", + "buying_power_rejected", + "buying_power_sequence", + "explicit_costs", + "default_full_fill", + "fill_forward", + "terminal_holding", + "final_bar_order", + "liquidation", +) + + +def _digest(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def _write_equity(data_root: Path, ticker: str, *, missing_second_bar: bool = False) -> None: + equity_root = data_root / "equity/usa" + daily = equity_root / "daily" + maps = equity_root / "map_files" + factors = equity_root / "factor_files" + for directory in (daily, maps, factors): + directory.mkdir(parents=True, exist_ok=True) + + rows = [ + ("20240102", 100.0, 102.0, 99.0, 101.0, 100), + ("20240103", 110.0, 112.0, 109.0, 111.0, 100), + ("20240104", 120.0, 122.0, 119.0, 121.0, 100), + ("20240105", 130.0, 132.0, 129.0, 131.0, 100), + ("20240108", 140.0, 142.0, 139.0, 141.0, 100), + ("20240109", 150.0, 152.0, 149.0, 151.0, 100), + ("20240110", 160.0, 162.0, 159.0, 161.0, 100), + ("20240111", 170.0, 172.0, 169.0, 171.0, 100), + ] + if missing_second_bar: + rows.pop(1) + lines = [] + for date, open_, high, low, close, volume in rows: + prices = [int(round(value * 10_000)) for value in (open_, high, low, close)] + lines.append(f"{date} 00:00,{prices[0]},{prices[1]},{prices[2]},{prices[3]},{volume}") + + ticker_lower = ticker.lower() + with zipfile.ZipFile( + daily / f"{ticker_lower}.zip", "w", compression=zipfile.ZIP_DEFLATED + ) as archive: + archive.writestr(f"{ticker_lower}.csv", "\n".join(lines)) + (maps / f"{ticker_lower}.csv").write_text( + f"20240102,{ticker_lower}\n20501231,{ticker_lower}\n", encoding="utf-8" + ) + (factors / f"{ticker_lower}.csv").write_text( + "20240102,1,1,1\n20501231,1,1,0\n", encoding="utf-8" + ) + + +def _prepare(root: Path) -> tuple[Path, Path]: + project = root / "lean_project" + shutil.copytree(PROJECT_SOURCE, project) + shutil.copy2(SUPPORT_SOURCE / "lean.json", root / "lean.json") + data = root / "data" + shutil.copytree(SUPPORT_SOURCE / "data", data) + _write_equity(data, "MLNATV") + _write_equity(data, "MLMISS", missing_second_bar=True) + return project, root / "lean.json" + + +def _command_version(command: Path) -> str: + result = subprocess.run( + [str(command), "--version"], check=True, capture_output=True, text=True, timeout=60 + ) + return result.stdout.strip() + + +def _image_identity() -> dict[str, Any]: + result = subprocess.run( + ["docker", "image", "inspect", IMAGE], + check=True, + capture_output=True, + text=True, + timeout=60, + ) + payload = json.loads(result.stdout)[0] + labels = payload.get("Config", {}).get("Labels", {}) or {} + return { + "engine_version": labels.get("lean_version"), + "image": IMAGE, + "image_id": payload["Id"], + "platform_artifact": PLATFORM_ARTIFACT, + "python_version": labels.get("python_version"), + "target_framework": labels.get("target_framework"), + } + + +def _run_case( + command: Path, + root: Path, + project: Path, + lean_config: Path, + case: str, +) -> dict[str, Any]: + output = root / "outputs" / case + result = subprocess.run( + [ + str(command), + "backtest", + str(project), + "--lean-config", + str(lean_config), + "--image", + IMAGE, + "--no-update", + "--output", + str(output), + "--parameter", + "case", + case, + ], + cwd=root, + capture_output=True, + text=True, + timeout=600, + check=False, + ) + if result.returncode != 0: + error = f"STDOUT:\n{result.stdout}\nSTDERR:\n{result.stderr}".strip() + raise RuntimeError(f"LEAN case {case} failed: {error[-20_000:]}") + artifact = project / f"lean_native_{case}.json" + if not artifact.is_file(): + raise RuntimeError(f"LEAN case {case} did not emit {artifact.name}") + return json.loads(artifact.read_text(encoding="utf-8")) + + +def _equal(actual: Any, expected: Any) -> bool: + if isinstance(actual, float) and isinstance(expected, (float, int)): + return math.isclose(actual, float(expected), rel_tol=0.0, abs_tol=1e-8) + if isinstance(actual, list) and isinstance(expected, list) and len(actual) == len(expected): + return all(_equal(left, right) for left, right in zip(actual, expected, strict=True)) + if isinstance(actual, dict) and isinstance(expected, dict) and actual.keys() == expected.keys(): + return all(_equal(actual[key], expected[key]) for key in actual) + return bool(actual == expected) + + +def _project_contract(case: str, payload: dict[str, Any]) -> dict[str, Any]: + events = [ + [ + event["status"], + event["direction"], + event["fill_quantity"], + event["fill_price"], + event["fee"], + event["event_time_utc"], + ] + for event in payload["events"] + ] + final = { + "cash": payload["cash"], + "position": payload["position"], + "total_fees": payload["total_fees"], + "total_portfolio_value": payload["total_portfolio_value"], + } + if case == "default_models": + return {"models": payload["models"]} + if case == "target_sizing": + return {"events": events, "final": final, "target_quantity": payload["target_quantity"]} + if case == "explicit_costs": + return {"events": events, "final": final, "models": payload["models"]} + if case == "default_full_fill": + return { + "events": events, + "final": final, + "source_volume": payload["observations"][0]["volume"], + } + if case == "fill_forward": + synthetic = next(row for row in payload["observations"] if row["date"] == "2024-01-03") + return {"events": events, "final": final, "synthetic_bar": synthetic} + return {"events": events, "final": final} + + +EXPECTED = { + "timing": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 1.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ], + "final": { + "cash": 9889.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10060.0, + }, + }, + "default_models": { + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "InteractiveBrokersFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "NullSlippageModel", + } + }, + "target_sizing": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 98.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ], + "final": { + "cash": -781.0, + "position": 98.0, + "total_fees": 1.0, + "total_portfolio_value": 15977.0, + }, + "target_quantity": 98.0, + }, + "submission_sequence": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["SUBMITTED", "SELL", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 1.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ["FILLED", "SELL", -1.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ], + "final": { + "cash": 9998.0, + "position": 0.0, + "total_fees": 2.0, + "total_portfolio_value": 9998.0, + }, + }, + "buying_power_allowed": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 150.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0, + }, + }, + "buying_power_rejected": { + "events": [["INVALID", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"]], + "final": { + "cash": 10000.0, + "position": 0.0, + "total_fees": 0.0, + "total_portfolio_value": 10000.0, + }, + }, + "buying_power_sequence": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 150.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ["INVALID", "BUY", 0.0, 0.0, 0.0, "2024-01-03 21:00:00"], + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0, + }, + }, + "explicit_costs": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 1.0, 110.111, 1.0, "2024-01-03 21:00:00"], + ], + "final": { + "cash": 9888.889, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10059.889, + }, + "models": { + "brokerage": "DefaultBrokerageModel", + "buying_power": "SecurityMarginModel", + "fee": "ConstantFeeModel", + "fill": "EquityFillModel", + "leverage": 2.0, + "slippage": "ConstantSlippageModel", + }, + }, + "default_full_fill": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 150.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ], + "final": { + "cash": -6501.0, + "position": 150.0, + "total_fees": 1.0, + "total_portfolio_value": 19149.0, + }, + "source_volume": 100.0, + }, + "fill_forward": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-03 21:00:00"], + ["FILLED", "BUY", 1.0, 120.0, 1.0, "2024-01-04 21:00:00"], + ], + "final": { + "cash": 9879.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10050.0, + }, + "synthetic_bar": { + "close": 101.0, + "date": "2024-01-03", + "fill_forward": True, + "open": 100.0, + "volume": 0.0, + }, + }, + "terminal_holding": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 1.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ], + "final": { + "cash": 9889.0, + "position": 1.0, + "total_fees": 1.0, + "total_portfolio_value": 10060.0, + }, + }, + "final_bar_order": { + "events": [["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-11 21:00:00"]], + "final": { + "cash": 10000.0, + "position": 0.0, + "total_fees": 0.0, + "total_portfolio_value": 10000.0, + }, + }, + "liquidation": { + "events": [ + ["SUBMITTED", "BUY", 0.0, 0.0, 0.0, "2024-01-02 21:00:00"], + ["FILLED", "BUY", 1.0, 110.0, 1.0, "2024-01-03 21:00:00"], + ["SUBMITTED", "SELL", 0.0, 0.0, 0.0, "2024-01-10 21:00:00"], + ["FILLED", "SELL", -1.0, 170.0, 1.0, "2024-01-11 21:00:00"], + ], + "final": { + "cash": 10058.0, + "position": 0.0, + "total_fees": 2.0, + "total_portfolio_value": 10058.0, + }, + }, +} + + +def run(command: Path) -> dict[str, Any]: + command = command.resolve() + version = _command_version(command) + if version != f"lean {CLI_VERSION}": + raise RuntimeError(f"LEAN CLI differs: {version} != lean {CLI_VERSION}") + image = _image_identity() + if image["engine_version"] != ENGINE_VERSION: + raise RuntimeError( + f"LEAN engine version differs: {image['engine_version']} != {ENGINE_VERSION}" + ) + + with tempfile.TemporaryDirectory(prefix="ml4t-lean-native-") as temporary: + temporary_root = Path(temporary) + project, lean_config = _prepare(temporary_root) + actual = { + case: _run_case(command, temporary_root, project, lean_config, case) for case in CASES + } + + checks = [ + { + "id": case, + "actual": actual[case], + "contract_actual": _project_contract(case, actual[case]), + "expected": EXPECTED[case], + "passed": _equal(_project_contract(case, actual[case]), EXPECTED[case]), + } + for case in CASES + ] + project_files = { + path.relative_to(PROJECT_SOURCE).as_posix(): _digest(path) + for path in sorted(PROJECT_SOURCE.rglob("*")) + if path.is_file() + } + support_files = { + path.relative_to(SUPPORT_SOURCE).as_posix(): _digest(path) + for path in sorted(SUPPORT_SOURCE.rglob("*")) + if path.is_file() + } + data_payload = { + "full": [100.0, 101.0, 110.0, 111.0, 120.0, 121.0, 170.0, 171.0], + "missing_session": "MLMISS omits 2024-01-03 and enables fill_forward", + } + return { + "schema_version": 1, + "framework": "lean", + "engine": { + **image, + "source_commit": ENGINE_COMMIT, + }, + "cli": { + "package": "lean", + "version": CLI_VERSION, + "immutable_id": f"sha256:{CLI_SHA256}", + }, + "models": { + "account_type": "Margin", + "brokerage": "DefaultBrokerageModel", + "security": "Equity USA, daily, adjusted normalization, leverage 2", + }, + "source_references": { + "algorithm_settings": ( + "https://github.com/QuantConnect/Lean/blob/" + f"{ENGINE_COMMIT}/Common/AlgorithmSettings.cs" + ), + "brokerage": ( + "https://github.com/QuantConnect/Lean/blob/" + f"{ENGINE_COMMIT}/Common/Brokerages/DefaultBrokerageModel.cs" + ), + "fee": ( + "https://github.com/QuantConnect/Lean/blob/" + f"{ENGINE_COMMIT}/Common/Orders/Fees/InteractiveBrokersFeeModel.cs" + ), + "fill": ( + "https://github.com/QuantConnect/Lean/blob/" + f"{ENGINE_COMMIT}/Common/Orders/Fills/EquityFillModel.cs" + ), + "margin": ( + "https://github.com/QuantConnect/Lean/blob/" + f"{ENGINE_COMMIT}/Common/Securities/SecurityMarginModel.cs" + ), + "slippage": ( + "https://github.com/QuantConnect/Lean/blob/" + f"{ENGINE_COMMIT}/Common/Orders/Slippage/ConstantSlippageModel.cs" + ), + }, + "data": { + "format": "LEAN local equity daily zip, raw prices scaled by 10000", + "payload_sha256": hashlib.sha256( + json.dumps(data_payload, sort_keys=True).encode() + ).hexdigest(), + "sessions": [ + "2024-01-02", + "2024-01-03", + "2024-01-04", + "2024-01-05", + "2024-01-08", + "2024-01-09", + "2024-01-10", + "2024-01-11", + ], + }, + "oracle_files": project_files, + "support_files": support_files, + "oracle_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + "checks": checks, + "passed": all(check["passed"] for check in checks), + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--lean-command", type=Path, default=ROOT / ".venv-lean/bin/lean") + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + try: + evidence = run(args.lean_command) + except (FileNotFoundError, json.JSONDecodeError, OSError, RuntimeError, ValueError) as error: + print(f"LEAN native behavior run failed: {error}", file=sys.stderr) + return 2 + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8") + failed = [check["id"] for check in evidence["checks"] if not check["passed"]] + if failed: + print(f"LEAN native behavior differs: {failed}", file=sys.stderr) + return 1 + print(f"LEAN native behavior passed: {len(evidence['checks'])} checks") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/native/lean_project/config.json b/validation/native/lean_project/config.json new file mode 100644 index 00000000..82dc4517 --- /dev/null +++ b/validation/native/lean_project/config.json @@ -0,0 +1,6 @@ +{ + "algorithm-language": "Python", + "description": "ML4T native LEAN behavior oracle", + "local-id": 771804201, + "parameters": {} +} diff --git a/validation/native/lean_project/main.py b/validation/native/lean_project/main.py new file mode 100644 index 00000000..940ffd48 --- /dev/null +++ b/validation/native/lean_project/main.py @@ -0,0 +1,136 @@ +# ruff: noqa: F403, F405, I001, SIM114, SIM401 +# region imports +from AlgorithmImports import * +# endregion + +import json +from pathlib import Path + + +class LeanNativeBehavior(QCAlgorithm): + def initialize(self): + self.set_start_date(2024, 1, 2) + self.set_end_date(2024, 1, 11) + self.set_cash(10_000) + self.set_brokerage_model(BrokerageName.DEFAULT, AccountType.MARGIN) + self.case = self.get_parameter("case") + ticker = "MLMISS" if self.case == "fill_forward" else "MLNATV" + security = self.add_equity(ticker, Resolution.DAILY, fill_forward=True) + security.set_leverage(2.0) + self.symbol = security.symbol + self.security = security + self.events = [] + self.observations = [] + self.submitted = [] + self.target_quantity = None + + if self.case == "explicit_costs": + security.set_fee_model(ConstantFeeModel(1.0, "USD")) + security.set_slippage_model(ConstantSlippageModel(0.001)) + + self.models = { + "brokerage": type(self.brokerage_model).__name__, + "buying_power": type(security.buying_power_model).__name__, + "fee": type(security.fee_model).__name__, + "fill": type(security.fill_model).__name__, + "leverage": float(security.leverage), + "slippage": type(security.slippage_model).__name__, + } + + def _submit(self, quantity): + ticket = self.market_order(self.symbol, quantity) + self.submitted.append( + { + "order_id": int(ticket.order_id), + "quantity": float(quantity), + "status": str(ticket.status), + } + ) + + def on_data(self, data: Slice): + bar = data.bars[self.symbol] if self.symbol in data.bars else None + self.observations.append( + { + "close": float(bar.close) if bar is not None else None, + "date": self.time.strftime("%Y-%m-%d"), + "fill_forward": bool(bar.is_fill_forward) if bar is not None else None, + "open": float(bar.open) if bar is not None else None, + "volume": float(bar.volume) if bar is not None else None, + } + ) + + first = self.time.strftime("%Y-%m-%d") == "2024-01-02" + final = self.time.strftime("%Y-%m-%d") == "2024-01-11" + if first: + if self.case in {"timing", "default_models", "explicit_costs"}: + self._submit(1) + elif self.case == "target_sizing": + self.target_quantity = float(self.calculate_order_quantity(self.symbol, 1.0)) + self._submit(self.target_quantity) + elif self.case == "submission_sequence": + self._submit(1) + self._submit(-1) + elif self.case == "buying_power_allowed": + self._submit(150) + elif self.case == "buying_power_rejected": + self._submit(250) + elif self.case == "buying_power_sequence": + self._submit(150) + self._submit(150) + elif self.case == "default_full_fill": + self._submit(150) + elif self.case == "terminal_holding": + self._submit(1) + elif self.case == "liquidation": + self._submit(1) + + if self.case == "fill_forward" and self.time.strftime("%Y-%m-%d") == "2024-01-03": + self._submit(1) + + if self.case == "liquidation" and self.time.strftime("%Y-%m-%d") == "2024-01-10": + tickets = self.liquidate(self.symbol) + for ticket in tickets: + self.submitted.append( + { + "order_id": int(ticket.order_id), + "quantity": float(ticket.quantity), + "status": str(ticket.status), + } + ) + + if final and self.case == "final_bar_order": + self._submit(1) + + def on_order_event(self, order_event: OrderEvent): + fee = 0.0 + if order_event.order_fee and order_event.order_fee.value is not None: + fee = float(order_event.order_fee.value.amount) + self.events.append( + { + "direction": str(order_event.direction), + "event_time_utc": order_event.utc_time.strftime("%Y-%m-%d %H:%M:%S"), + "fee": fee, + "fill_price": float(order_event.fill_price), + "fill_quantity": float(order_event.fill_quantity), + "message": str(order_event.message or ""), + "order_id": int(order_event.order_id), + "status": str(order_event.status), + "time": self.time.strftime("%Y-%m-%d %H:%M:%S"), + } + ) + + def on_end_of_algorithm(self): + payload = { + "case": self.case, + "cash": float(self.portfolio.cash), + "events": self.events, + "models": self.models, + "observations": self.observations, + "position": float(self.portfolio[self.symbol].quantity), + "submitted": self.submitted, + "target_quantity": self.target_quantity, + "total_fees": float(self.portfolio.total_fees), + "total_portfolio_value": float(self.portfolio.total_portfolio_value), + } + output = Path(__file__).resolve().parent / f"lean_native_{self.case}.json" + output.write_text(json.dumps(payload, indent=2, sort_keys=True), encoding="utf-8") diff --git a/validation/native/vectorbt_behavior.py b/validation/native/vectorbt_behavior.py new file mode 100644 index 00000000..918a27d2 --- /dev/null +++ b/validation/native/vectorbt_behavior.py @@ -0,0 +1,499 @@ +#!/usr/bin/env python3 +"""Measure current VectorBT behavior without importing ML4T comparison code.""" + +from __future__ import annotations + +import argparse +import hashlib +import importlib +import importlib.metadata +import inspect +import json +import math +import sys +from pathlib import Path +from typing import Any + +import numpy as np +import pandas as pd + +TARGETS = { + "vectorbt_oss": { + "package": "vectorbt", + "version": "1.1.0", + "commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d", + "repository": "https://github.com/polakowo/vectorbt", + }, + "vectorbt_pro": { + "package": "vectorbtpro", + "version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "repository": "https://github.com/polakowo/vectorbt.pro", + }, +} + + +def _bool(values: list[int]) -> np.ndarray: + return np.asarray(values, dtype=bool) + + +def _orders(portfolio: Any) -> list[dict[str, Any]]: + return portfolio.orders.records_readable.to_dict("records") + + +def _trades(portfolio: Any) -> list[dict[str, Any]]: + return portfolio.trades.records_readable.to_dict("records") + + +def _cash(portfolio: Any) -> list[float]: + value = portfolio.cash() if callable(portfolio.cash) else portfolio.cash + return np.asarray(value, dtype=float).tolist() + + +def _chronological_order_events(portfolio: Any) -> list[dict[str, Any]]: + orders = _orders(portfolio) + if not orders: + return [] + time_key = next(key for key in ("Fill Index", "Timestamp", "Index") if key in orders[0]) + ordered = sorted(orders, key=lambda order: (str(order[time_key]), str(order["Column"]))) + return [ + {"column": order["Column"], "side": order["Side"], "size": order["Size"]} + for order in ordered + ] + + +def _source_location(package: Any, function: Any, target: dict[str, str]) -> dict: + source_file = inspect.getsourcefile(function) + if source_file is None: + raise RuntimeError(f"Could not locate source for {function}") + package_root = Path(package.__file__).resolve().parent.parent + relative_path = Path(source_file).resolve().relative_to(package_root).as_posix() + line = inspect.getsourcelines(function)[1] + return { + "module": function.__module__, + "qualname": function.__qualname__, + "path": relative_path, + "line": line, + "source_url": (f"{target['repository']}/blob/{target['commit']}/{relative_path}#L{line}"), + } + + +def _defaults(framework: str, vbt: Any) -> dict[str, Any]: + portfolio = vbt.settings.portfolio + if framework == "vectorbt_pro": + signals = portfolio["from_signals"] + return { + "accumulate": signals["accumulate"], + "allow_partial": portfolio["allow_partial"], + "call_seq": portfolio["call_seq"], + "cash_sharing": portfolio["cash_sharing"], + "fees": portfolio["fees"], + "ffill_val_price": portfolio["ffill_val_price"], + "fillna_close": portfolio["fillna_close"], + "fixed_fees": portfolio["fixed_fees"], + "raise_reject": portfolio["raise_reject"], + "slippage": portfolio["slippage"], + "upon_dir_conflict": signals["upon_dir_conflict"], + "upon_long_conflict": signals["upon_long_conflict"], + "upon_opposite_entry": signals["upon_opposite_entry"], + "upon_short_conflict": signals["upon_short_conflict"], + "update_value": portfolio["update_value"], + } + return { + key: portfolio[key] + for key in ( + "accumulate", + "allow_partial", + "call_seq", + "cash_sharing", + "fees", + "ffill_val_price", + "fillna_close", + "fixed_fees", + "raise_reject", + "slippage", + "upon_dir_conflict", + "upon_long_conflict", + "upon_opposite_entry", + "upon_short_conflict", + "update_value", + ) + } + + +def _expected_defaults(framework: str) -> dict[str, Any]: + return { + "accumulate": False, + "allow_partial": True, + "call_seq": None if framework == "vectorbt_pro" else "default", + "cash_sharing": False, + "fees": 0.0, + "ffill_val_price": True, + "fillna_close": True, + "fixed_fees": 0.0, + "raise_reject": False, + "slippage": 0.0, + "upon_dir_conflict": "ignore", + "upon_long_conflict": "ignore", + "upon_opposite_entry": "reversereduce", + "upon_short_conflict": "ignore", + "update_value": False, + } + + +def _behavior_checks(framework: str, vbt: Any) -> list[tuple[str, Any, Any]]: + index = pd.date_range("2024-01-01", periods=3) + close = pd.Series([100.0, 110.0, 120.0], index=index) + entries = _bool([1, 0, 0]) + exits = _bool([0, 1, 0]) + + signal_pf = vbt.Portfolio.from_signals( + close, entries=entries, exits=exits, size=1, init_cash=1_000 + ) + signal_orders = _orders(signal_pf) + time_key = "Fill Index" if framework == "vectorbt_pro" else "Timestamp" + + explicit_pf = vbt.Portfolio.from_signals( + close, + entries=entries, + exits=exits, + price=pd.Series([99.0, 109.0, 119.0], index=index), + size=1, + init_cash=1_000, + ) + target_pf = vbt.Portfolio.from_orders( + pd.Series([100.0, 200.0], index=index[:2]), + size=[0.5, 0.0], + size_type="targetpercent", + init_cash=1_000, + ) + shared_close = pd.DataFrame([[100.0, 100.0]], index=index[:1], columns=pd.Index(["a", "b"])) + shared_default = vbt.Portfolio.from_orders( + shared_close, + size=1, + init_cash=100, + cash_sharing=True, + group_by=True, + ) + shared_reversed = vbt.Portfolio.from_orders( + shared_close, + size=1, + init_cash=100, + cash_sharing=True, + group_by=True, + call_seq="reversed", + ) + collateral_kwargs = {"lock_cash": True} if framework == "vectorbt_oss" else {} + collateral_pf = vbt.Portfolio.from_orders( + pd.DataFrame(100.0, index=index, columns=pd.Index(["a", "b"])), + size=pd.DataFrame( + [[0.0, -5.0], [5.0, -10.0], [5.0, -10.0]], + index=index, + columns=pd.Index(["a", "b"]), + ), + size_type="targetamount", + init_cash=1_000, + cash_sharing=True, + **collateral_kwargs, + ) + arithmetic_pf = vbt.Portfolio.from_orders( + np.asarray([445.1764349947099, 98.35685542114634]), + size=np.asarray([-935.6511349828165, 822.3137995772428]), + size_type="amount", + init_cash=800_928.6801081297, + log=True, + **collateral_kwargs, + ) + arithmetic_logs = arithmetic_pf.logs.records_readable.to_dict("records") + new_free_cash_key = "[ST1] Free Cash" if framework == "vectorbt_pro" else "New Free Cash" + accumulate_default = vbt.Portfolio.from_signals( + close, entries=_bool([1, 1, 0]), exits=False, size=1, init_cash=1_000 + ) + accumulate_true = vbt.Portfolio.from_signals( + close, + entries=_bool([1, 1, 0]), + exits=False, + size=1, + accumulate=True, + init_cash=1_000, + ) + conflict_kwargs = { + "entries": _bool([1, 1, 0]), + "exits": _bool([0, 1, 0]), + "size": 1, + "accumulate": True, + "init_cash": 1_000, + } + conflict_default = vbt.Portfolio.from_signals(close, **conflict_kwargs) + conflict_entry = vbt.Portfolio.from_signals( + close, **conflict_kwargs, upon_long_conflict="entry" + ) + conflict_exit = vbt.Portfolio.from_signals(close, **conflict_kwargs, upon_long_conflict="exit") + short_pf = vbt.Portfolio.from_signals( + close, + short_entries=entries, + short_exits=exits, + size=1, + init_cash=1_000, + ) + stop_pf = vbt.Portfolio.from_signals( + pd.Series([100.0, 95.0, 100.0], index=index), + open=pd.Series([100.0, 100.0, 100.0], index=index), + high=pd.Series([101.0, 101.0, 101.0], index=index), + low=pd.Series([99.0, 85.0, 99.0], index=index), + entries=entries, + size=1, + sl_stop=0.1, + init_cash=1_000, + ) + trailing_kwargs: dict[str, Any] = { + "close": pd.Series( + [100.0, 110.0, 107.0, 107.0], index=pd.date_range("2024-01-01", periods=4) + ), + "open": pd.Series( + [100.0, 110.0, 109.0, 107.0], index=pd.date_range("2024-01-01", periods=4) + ), + "high": pd.Series( + [101.0, 120.0, 110.0, 108.0], index=pd.date_range("2024-01-01", periods=4) + ), + "low": pd.Series([99.0, 109.0, 105.0, 106.0], index=pd.date_range("2024-01-01", periods=4)), + "entries": _bool([1, 0, 0, 0]), + "size": 1, + "init_cash": 1_000, + } + if framework == "vectorbt_pro": + trailing_kwargs["tsl_stop"] = 0.1 + else: + trailing_kwargs["sl_stop"] = 0.1 + trailing_kwargs["sl_trail"] = True + trailing_pf = vbt.Portfolio.from_signals(**trailing_kwargs) + cost_pf = vbt.Portfolio.from_signals( + pd.Series([100.0, 100.0], index=index[:2]), + entries=_bool([1, 0]), + exits=_bool([0, 1]), + size=1, + fees=0.01, + fixed_fees=2, + slippage=0.01, + init_cash=1_000, + ) + missing_pf = vbt.Portfolio.from_signals( + pd.Series([100.0, np.nan, 110.0], index=index), + entries=entries, + exits=exits, + size=1, + init_cash=1_000, + ) + partial_pf = vbt.Portfolio.from_signals( + pd.Series([100.0]), + entries=_bool([1]), + size=2, + init_cash=100, + ) + trade = _trades(signal_pf)[0] + dtype_result: str + try: + vbt.Portfolio.from_signals( + close, entries=np.asarray([1, 0, 0]), exits=np.asarray([0, 1, 0]), size=1 + ) + dtype_result = "accepted" + except AssertionError: + dtype_result = "rejected" + + return [ + ("defaults", _defaults(framework, vbt), _expected_defaults(framework)), + ( + "signal_timing_and_default_fill", + { + "timestamps": [str(order[time_key]) for order in signal_orders], + "prices": [order["Price"] for order in signal_orders], + }, + { + "timestamps": ["2024-01-01 00:00:00", "2024-01-02 00:00:00"], + "prices": [100.0, 110.0], + }, + ), + ( + "explicit_fill_price", + [order["Price"] for order in _orders(explicit_pf)], + [99.0, 109.0], + ), + ( + "target_percent_sizing", + [order["Size"] for order in _orders(target_pf)], + [5.0, 5.0], + ), + ( + "cash_sharing_and_call_sequence", + { + "default": [_orders(shared_default)[0]["Column"]], + "reversed": [_orders(shared_reversed)[0]["Column"]], + }, + {"default": ["a"], "reversed": ["b"]}, + ), + ( + "cash_sharing_short_collateral", + { + "cash": _cash(collateral_pf), + "orders": _chronological_order_events(collateral_pf), + }, + { + "cash": [1_500.0, 1_000.0, 1_000.0], + "orders": [ + {"column": "b", "side": "Sell", "size": 5.0}, + {"column": "a", "side": "Buy", "size": 5.0}, + ], + }, + ), + ( + "lock_notional_update_arithmetic", + arithmetic_logs[-1][new_free_cash_key], + 1_035_668.0954273958 if framework == "vectorbt_pro" else 1_035_668.0954273955, + ), + ( + "accumulation", + { + "default_orders": len(_orders(accumulate_default)), + "enabled_orders": len(_orders(accumulate_true)), + }, + {"default_orders": 1, "enabled_orders": 2}, + ), + ( + "long_signal_conflict", + { + "default": [order["Side"] for order in _orders(conflict_default)], + "entry": [order["Side"] for order in _orders(conflict_entry)], + "exit": [order["Side"] for order in _orders(conflict_exit)], + }, + {"default": ["Buy"], "entry": ["Buy", "Buy"], "exit": ["Buy", "Sell"]}, + ), + ( + "short_cash", + {"cash": _cash(short_pf)[:2], "sides": [order["Side"] for order in _orders(short_pf)]}, + {"cash": [1_100.0, 990.0], "sides": ["Sell", "Buy"]}, + ), + ("stop_fill", [order["Price"] for order in _orders(stop_pf)], [100.0, 90.0]), + ( + "trailing_stop_extreme_and_intrabar_fill", + [order["Price"] for order in _orders(trailing_pf)], + [100.0, 108.0], + ), + ( + "fees_and_slippage", + { + "fees": [order["Fees"] for order in _orders(cost_pf)], + "prices": [order["Price"] for order in _orders(cost_pf)], + }, + {"fees": [3.01, 2.99], "prices": [101.0, 99.0]}, + ), + ( + "missing_order_price", + {"order_count": len(_orders(missing_pf)), "cash": _cash(missing_pf)}, + {"order_count": 1, "cash": [900.0, 900.0, 900.0]}, + ), + ( + "insufficient_cash_partial_fill", + [order["Size"] for order in _orders(partial_pf)], + [1.0], + ), + ( + "record_construction", + { + "direction": trade["Direction"], + "order_ids": [order["Order Id"] for order in signal_orders], + "pnl": trade["PnL"], + "status": trade["Status"], + "trade_count": len(_trades(signal_pf)), + }, + { + "direction": "Long", + "order_ids": [0, 1], + "pnl": 10.0, + "status": "Closed", + "trade_count": 1, + }, + ), + ( + "integer_signal_dtype", + dtype_result, + "rejected" if framework == "vectorbt_pro" else "accepted", + ), + ] + + +def _equal(actual: Any, expected: Any) -> bool: + if isinstance(actual, float) and isinstance(expected, (float, int)): + return math.isclose(actual, float(expected), rel_tol=0.0, abs_tol=1e-12) + if isinstance(actual, list) and isinstance(expected, list) and len(actual) == len(expected): + return all(_equal(left, right) for left, right in zip(actual, expected, strict=True)) + if isinstance(actual, dict) and isinstance(expected, dict) and actual.keys() == expected.keys(): + return all(_equal(actual[key], expected[key]) for key in actual) + return bool(actual == expected) + + +def run(framework: str) -> dict[str, Any]: + """Execute the frozen framework directly and return native evidence.""" + target = TARGETS[framework] + vbt = importlib.import_module(target["package"]) + version = importlib.metadata.version(target["package"]) + if version != target["version"]: + raise RuntimeError(f"{target['package']} version differs: {version} != {target['version']}") + + source_locations = { + "from_orders": _source_location(vbt, vbt.Portfolio.from_orders, target), + "from_signals": _source_location(vbt, vbt.Portfolio.from_signals, target), + } + checks: list[dict[str, Any]] = [] + for check_id, actual, expected in _behavior_checks(framework, vbt): + checks.append( + { + "id": check_id, + "actual": actual, + "expected": expected, + "passed": _equal(actual, expected), + "source": "from_orders" + if check_id + in { + "target_percent_sizing", + "cash_sharing_and_call_sequence", + "cash_sharing_short_collateral", + "lock_notional_update_arithmetic", + } + else "from_signals", + } + ) + return { + "schema_version": 1, + "oracle_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + "framework": framework, + "package": target["package"], + "version": version, + "source_commit": target["commit"], + "source_locations": source_locations, + "checks": checks, + "passed": all(check["passed"] for check in checks), + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--framework", choices=tuple(TARGETS), required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + try: + evidence = run(args.framework) + except (ImportError, OSError, RuntimeError, ValueError) as error: + print(f"VectorBT native behavior run failed: {error}", file=sys.stderr) + return 2 + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8") + failed = [check["id"] for check in evidence["checks"] if not check["passed"]] + if failed: + print(f"VectorBT native behavior differs: {failed}", file=sys.stderr) + return 1 + print(f"VectorBT native behavior passed: {len(evidence['checks'])} checks") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/native/zipline_behavior.py b/validation/native/zipline_behavior.py new file mode 100644 index 00000000..d8fdcc3c --- /dev/null +++ b/validation/native/zipline_behavior.py @@ -0,0 +1,712 @@ +#!/usr/bin/env python3 +"""Measure frozen Zipline Reloaded behavior without ML4T comparison code.""" + +from __future__ import annotations + +import argparse +import hashlib +import importlib +import importlib.metadata +import inspect +import json +import math +import sys +import warnings +from pathlib import Path +from typing import Any + +import pandas as pd + +VERSION = "3.1.1" +COMMIT = "09885a2ebc7567d40942c891b3879dc03c745070" +ARTIFACT = "zipline_reloaded-3.1.1.tar.gz" +ARTIFACT_SHA256 = "4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f" +REPOSITORY = "https://github.com/stefan-jansen/zipline-reloaded" + +zipline: Any = importlib.import_module("zipline") +api: Any = importlib.import_module("zipline.api") +commission: Any = importlib.import_module("zipline.finance.commission") +slippage: Any = importlib.import_module("zipline.finance.slippage") +blotter_module: Any = importlib.import_module("zipline.finance.blotter.simulation_blotter") +algorithm_module: Any = importlib.import_module("zipline.algorithm") +calendar_module: Any = importlib.import_module("exchange_calendars") +bundles_module: Any = importlib.import_module("zipline.data.bundles") + + +def _source_location(function: Any) -> dict[str, Any]: + source_file = inspect.getsourcefile(function) + if source_file is None: + raise RuntimeError(f"Could not locate source for {function}") + package_root = Path(zipline.__file__).resolve().parent.parent + relative_path = Path(source_file).resolve().relative_to(package_root).as_posix() + line = inspect.getsourcelines(function)[1] + return { + "artifact": ARTIFACT, + "artifact_sha256": ARTIFACT_SHA256, + "line": line, + "module": function.__module__, + "path": relative_path, + "qualname": function.__qualname__, + "source_url": f"{REPOSITORY}/blob/{COMMIT}/{relative_path}#L{line}", + } + + +def _frame() -> pd.DataFrame: + calendar = calendar_module.get_calendar("XNYS") + sessions = calendar.sessions_in_range("2024-01-02", "2024-01-12")[:8] + return pd.DataFrame( + { + "open": [100.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 170.0], + "high": [101.0, 121.0, 131.0, 141.0, 151.0, 161.0, 171.0, 181.0], + "low": [99.0, 109.0, 119.0, 129.0, 139.0, 149.0, 159.0, 169.0], + "close": [100.0, 120.0, 130.0, 140.0, 150.0, 160.0, 170.0, 180.0], + "volume": [100.0] * 8, + }, + index=pd.DatetimeIndex(sessions).tz_localize(None), + ) + + +def _setup_bundle(frame: pd.DataFrame, name: str) -> str: + def ingest_function( + _environ: Any, + asset_db_writer: Any, + _minute_bar_writer: Any, + daily_bar_writer: Any, + adjustment_writer: Any, + calendar: Any, + start_session: Any, + end_session: Any, + _cache: Any, + show_progress: bool, + _output_dir: Any, + ) -> None: + sessions = calendar.sessions_in_range(start_session, end_session) + trading_frame = frame.loc[frame.index.isin(pd.DatetimeIndex(sessions).tz_localize(None))] + asset_db_writer.write( + equities=pd.DataFrame( + { + "symbol": ["TEST"], + "asset_name": ["Native behavior asset"], + "exchange": ["NYSE"], + } + ) + ) + daily_bar_writer.write( + [(0, trading_frame[["open", "high", "low", "close", "volume"]])], + show_progress=show_progress, + ) + adjustment_writer.write() + + if name in bundles_module.bundles: + bundles_module.unregister(name) + bundles_module.register( + name, + ingest_function, + calendar_name="XNYS", + start_session=frame.index[0], + end_session=frame.index[-1], + ) + bundles_module.ingest(name, show_progress=False) + return name + + +def _run( + bundle: str, + frame: pd.DataFrame, + initialize_case: Any, + handle_case: Any, +) -> pd.DataFrame: + def initialize(context: Any) -> None: + context.asset = api.symbol("TEST") + context.bar_number = 0 + initialize_case(context) + + def handle_data(context: Any, data: Any) -> None: + handle_case(context, data) + context.bar_number += 1 + + return zipline.run_algorithm( + start=frame.index[0], + end=frame.index[-1], + initialize=initialize, + handle_data=handle_data, + analyze=lambda _context, _performance: None, + capital_base=1_000.0, + bundle=bundle, + data_frequency="daily", + ) + + +class OpenPriceSlippage(slippage.SlippageModel): + """Explicit comparison protocol: next-session open with no volume cap.""" + + @staticmethod + def process_order(data: Any, order: Any) -> tuple[float, int]: + return data.current(order.asset, "open"), order.open_amount + + +def _configure_open(_context: Any) -> None: + api.set_commission(commission.NoCommission()) + api.set_slippage(OpenPriceSlippage()) + + +def _transactions(results: pd.DataFrame) -> list[dict[str, Any]]: + records: list[dict[str, Any]] = [] + for transactions in results["transactions"]: + for transaction in transactions: + records.append( + { + "amount": int(transaction["amount"]), + "date": pd.Timestamp(transaction["dt"]).date().isoformat(), + "price": float(transaction["price"]), + "transaction_commission": float(transaction["commission"] or 0.0), + } + ) + return records + + +def _orders(results: pd.DataFrame) -> list[dict[str, Any]]: + records: list[dict[str, Any]] = [] + for orders in results["orders"]: + for order in orders: + records.append( + { + "amount": int(order["amount"]), + "date": pd.Timestamp(order["dt"]).date().isoformat(), + "filled": int(order["filled"]), + "status": int(order["status"]), + } + ) + return records + + +def _submitted_amounts(results: pd.DataFrame) -> list[int]: + seen: set[str] = set() + amounts: list[int] = [] + for orders in results["orders"]: + for order in orders: + order_id = str(order["id"]) + if order_id not in seen: + seen.add(order_id) + amounts.append(int(order["amount"])) + return amounts + + +def _default_models() -> dict[str, Any]: + broker = blotter_module.SimulationBlotter() + equity_type = importlib.import_module("zipline.assets").Equity + default_slippage = broker.slippage_models[equity_type] + default_commission = broker.commission_models[equity_type] + volume_share = slippage.VolumeShareSlippage() + return { + "commission_class": type(default_commission).__name__, + "commission_per_share": default_commission.cost_per_share, + "commission_minimum": default_commission.min_trade_cost, + "slippage_class": type(default_slippage).__name__, + "slippage_basis_points": default_slippage.basis_points, + "slippage_volume_limit": default_slippage.volume_limit, + "volume_share_price_impact": volume_share.price_impact, + "volume_share_volume_limit": volume_share.volume_limit, + } + + +def _default_fill(bundle: str, frame: pd.DataFrame) -> dict[str, Any]: + results = _run( + bundle, + frame, + lambda _context: None, + lambda context, _data: api.order(context.asset, 1) if context.bar_number == 0 else None, + ) + return { + "cash_after_fill": float(results["ending_cash"].iloc[1]), + "transactions": _transactions(results), + } + + +def _explicit_minimum_commission(bundle: str, frame: pd.DataFrame) -> dict[str, Any]: + def configure(_context: Any) -> None: + api.set_commission(commission.PerShare(cost=0.005, min_trade_cost=1.0)) + api.set_slippage(OpenPriceSlippage()) + + results = _run( + bundle, + frame, + configure, + lambda context, _data: api.order(context.asset, 1) if context.bar_number == 0 else None, + ) + return { + "cash_after_fill": float(results["ending_cash"].iloc[1]), + "transactions": _transactions(results), + } + + +def _open_fill(bundle: str, frame: pd.DataFrame) -> list[dict[str, Any]]: + results = _run( + bundle, + frame, + _configure_open, + lambda context, _data: api.order(context.asset, 1) if context.bar_number == 0 else None, + ) + return _transactions(results) + + +def _target_percent(bundle: str, frame: pd.DataFrame) -> dict[str, Any]: + results = _run( + bundle, + frame, + _configure_open, + lambda context, _data: api.order_target_percent(context.asset, 0.5) + if context.bar_number == 0 + else None, + ) + return {"orders": _orders(results), "transactions": _transactions(results)} + + +def _target_percent_snapshot(bundle: str, frame: pd.DataFrame) -> dict[str, Any]: + def handle(context: Any, _data: Any) -> None: + if context.bar_number == 0: + api.order_target_percent(context.asset, 0.5) + api.order_target_percent(context.asset, 0.5) + + results = _run(bundle, frame, _configure_open, handle) + return { + "submitted_amounts": _submitted_amounts(results), + "transactions": _transactions(results), + } + + +def _submission_sequence(bundle: str, frame: pd.DataFrame) -> list[dict[str, Any]]: + def handle(context: Any, _data: Any) -> None: + if context.bar_number == 0: + api.order(context.asset, 1) + api.order(context.asset, -1) + + return _transactions(_run(bundle, frame, _configure_open, handle)) + + +def _cash_and_short(bundle: str, frame: pd.DataFrame) -> dict[str, Any]: + long_results = _run( + bundle, + frame, + _configure_open, + lambda context, _data: api.order(context.asset, 20) if context.bar_number == 0 else None, + ) + short_results = _run( + bundle, + frame, + _configure_open, + lambda context, _data: api.order(context.asset, -1) if context.bar_number == 0 else None, + ) + return { + "long": { + "cash_after_fill": float(long_results["ending_cash"].iloc[1]), + "position_after_fill": int(long_results["positions"].iloc[1][0]["amount"]), + "transactions": _transactions(long_results), + }, + "short": { + "cash_after_fill": float(short_results["ending_cash"].iloc[1]), + "position_after_fill": int(short_results["positions"].iloc[1][0]["amount"]), + "transactions": _transactions(short_results), + }, + } + + +def _volume_share_partial(bundle: str, frame: pd.DataFrame) -> list[dict[str, Any]]: + def configure(_context: Any) -> None: + api.set_commission(commission.NoCommission()) + api.set_slippage(slippage.VolumeShareSlippage()) + + results = _run( + bundle, + frame, + configure, + lambda context, _data: api.order(context.asset, 5) if context.bar_number == 0 else None, + ) + return _transactions(results) + + +def _round_trip_records(bundle: str, frame: pd.DataFrame) -> dict[str, Any]: + def handle(context: Any, _data: Any) -> None: + if context.bar_number == 0: + api.order(context.asset, 2) + elif context.bar_number == 2: + api.order_target(context.asset, 0) + + results = _run(bundle, frame, _configure_open, handle) + return { + "transactions": _transactions(results), + "native_output_columns": sorted( + column for column in ("orders", "positions", "transactions") if column in results + ), + "native_trade_column": "trades" in results, + } + + +def _final_bar_order(bundle: str, frame: pd.DataFrame) -> list[dict[str, Any]]: + results = _run( + bundle, + frame, + _configure_open, + lambda context, _data: api.order(context.asset, 1) + if context.bar_number == len(frame) - 1 + else None, + ) + return _transactions(results) + + +def _missing_bar(frame: pd.DataFrame) -> dict[str, Any]: + missing_frame = frame.copy() + missing_frame.loc[frame.index[2], ["open", "high", "low", "close"]] = float("nan") + missing_frame.loc[frame.index[2], "volume"] = 0.0 + bundle = _setup_bundle(missing_frame, "ml4t_native_zipline_311_missing") + + def handle(context: Any, data: Any) -> None: + api.record( + observed_close=data.current(context.asset, "close"), + observed_price=data.current(context.asset, "price"), + observed_stale=data.is_stale(context.asset), + observed_volume=data.current(context.asset, "volume"), + ) + if context.bar_number == 1: + api.order(context.asset, 1) + + results = _run(bundle, frame, _configure_open, handle) + observations = [] + for date, row in results.iterrows(): + observations.append( + { + "close": None if pd.isna(row["observed_close"]) else float(row["observed_close"]), + "date": pd.Timestamp(str(date)).date().isoformat(), + "price": None if pd.isna(row["observed_price"]) else float(row["observed_price"]), + "stale": bool(row["observed_stale"]), + "volume": float(row["observed_volume"]), + } + ) + return {"observations": observations, "transactions": _transactions(results)} + + +def _expected_missing_bar(frame: pd.DataFrame) -> dict[str, Any]: + observations = [] + closes = [100.0, 120.0, None, 140.0, 150.0, 160.0, 170.0, 180.0] + prices = [100.0, 120.0, 120.0, 140.0, 150.0, 160.0, 170.0, 180.0] + for index, date in enumerate(frame.index): + observations.append( + { + "close": closes[index], + "date": date.date().isoformat(), + "price": prices[index], + "stale": index == 2, + "volume": 0.0 if index == 2 else 100.0, + } + ) + return { + "observations": observations, + "transactions": [ + { + "amount": 1, + "date": frame.index[3].date().isoformat(), + "price": 130.0, + "transaction_commission": 0.0, + } + ], + } + + +def _equal(actual: Any, expected: Any) -> bool: + if isinstance(actual, float) and isinstance(expected, (float, int)): + return math.isclose(actual, float(expected), rel_tol=0.0, abs_tol=1e-10) + if isinstance(actual, list) and isinstance(expected, list) and len(actual) == len(expected): + return all(_equal(left, right) for left, right in zip(actual, expected, strict=True)) + if isinstance(actual, dict) and isinstance(expected, dict) and actual.keys() == expected.keys(): + return all(_equal(actual[key], expected[key]) for key in actual) + return bool(actual == expected) + + +def run() -> dict[str, Any]: + actual_version = importlib.metadata.version("zipline-reloaded") + if actual_version != VERSION: + raise RuntimeError(f"zipline-reloaded version differs: {actual_version} != {VERSION}") + + frame = _frame() + bundle = _setup_bundle(frame, "ml4t_native_zipline_311") + measurements = [ + ( + "defaults", + _default_models(), + { + "commission_class": "PerShare", + "commission_per_share": 0.001, + "commission_minimum": 0, + "slippage_class": "FixedBasisPointsSlippage", + "slippage_basis_points": 5.0, + "slippage_volume_limit": 0.1, + "volume_share_price_impact": 0.1, + "volume_share_volume_limit": 0.025, + }, + ), + ( + "default_next_bar_close_fill", + _default_fill(bundle, frame), + { + "cash_after_fill": 879.9390000000001, + "transactions": [ + { + "amount": 1, + "date": frame.index[1].date().isoformat(), + "price": 120.06, + "transaction_commission": 0.0, + } + ], + }, + ), + ( + "configured_next_bar_open_fill", + _open_fill(bundle, frame), + [ + { + "amount": 1, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + } + ], + ), + ( + "explicit_minimum_commission", + _explicit_minimum_commission(bundle, frame), + { + "cash_after_fill": 889.0, + "transactions": [ + { + "amount": 1, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + } + ], + }, + ), + ( + "integer_target_percent", + _target_percent(bundle, frame), + { + "orders": [ + { + "amount": 5, + "date": frame.index[0].date().isoformat(), + "filled": 0, + "status": 0, + }, + { + "amount": 5, + "date": frame.index[1].date().isoformat(), + "filled": 5, + "status": 1, + }, + ], + "transactions": [ + { + "amount": 5, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + } + ], + }, + ), + ( + "target_percent_snapshot", + _target_percent_snapshot(bundle, frame), + { + "submitted_amounts": [5, 5], + "transactions": [ + { + "amount": 5, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + }, + { + "amount": 5, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + }, + ], + }, + ), + ( + "submission_sequence", + _submission_sequence(bundle, frame), + [ + { + "amount": 1, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + }, + { + "amount": -1, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + }, + ], + ), + ( + "cash_and_short_proceeds", + _cash_and_short(bundle, frame), + { + "long": { + "cash_after_fill": -1_200.0, + "position_after_fill": 20, + "transactions": [ + { + "amount": 20, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + } + ], + }, + "short": { + "cash_after_fill": 1_110.0, + "position_after_fill": -1, + "transactions": [ + { + "amount": -1, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + } + ], + }, + }, + ), + ( + "volume_share_partial_fills", + _volume_share_partial(bundle, frame), + [ + { + "amount": 2, + "date": frame.index[1].date().isoformat(), + "price": 120.0048, + "transaction_commission": 0.0, + }, + { + "amount": 2, + "date": frame.index[2].date().isoformat(), + "price": 130.0052, + "transaction_commission": 0.0, + }, + { + "amount": 1, + "date": frame.index[3].date().isoformat(), + "price": 140.0014, + "transaction_commission": 0.0, + }, + ], + ), + ( + "transaction_records_not_native_trades", + _round_trip_records(bundle, frame), + { + "transactions": [ + { + "amount": 2, + "date": frame.index[1].date().isoformat(), + "price": 110.0, + "transaction_commission": 0.0, + }, + { + "amount": -2, + "date": frame.index[3].date().isoformat(), + "price": 130.0, + "transaction_commission": 0.0, + }, + ], + "native_output_columns": ["orders", "positions", "transactions"], + "native_trade_column": False, + }, + ), + ("final_bar_market_order", _final_bar_order(bundle, frame), []), + ( + "session_calendar", + [date.date().isoformat() for date in frame.index], + [ + "2024-01-02", + "2024-01-03", + "2024-01-04", + "2024-01-05", + "2024-01-08", + "2024-01-09", + "2024-01-10", + "2024-01-11", + ], + ), + ("missing_bar", _missing_bar(frame), _expected_missing_bar(frame)), + ] + checks = [ + {"id": check_id, "actual": actual, "expected": expected, "passed": _equal(actual, expected)} + for check_id, actual, expected in measurements + ] + return { + "schema_version": 1, + "framework": "zipline", + "package": "zipline-reloaded", + "version": actual_version, + "source_commit": COMMIT, + "artifact": ARTIFACT, + "artifact_sha256": ARTIFACT_SHA256, + "oracle_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + "comparison_protocol": { + "commission": "NoCommission", + "execution": "next-session custom OpenPriceSlippage", + "risk_rules": "adapter-emulated from daily OHLC; not Zipline native trade records", + "slippage": "no volume cap unless a scenario explicitly configures slippage", + }, + "source_locations": { + "algorithm_target_percent": _source_location( + algorithm_module.TradingAlgorithm.order_target_percent + ), + "commission": _source_location(commission.PerShare.__init__), + "default_blotter": _source_location(blotter_module.SimulationBlotter.__init__), + "fixed_basis_points": _source_location(slippage.FixedBasisPointsSlippage.process_order), + "volume_share": _source_location(slippage.VolumeShareSlippage.process_order), + }, + "checks": checks, + "passed": all(check["passed"] for check in checks), + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + warnings.filterwarnings( + "ignore", + message="DataFrameGroupBy.apply operated on the grouping columns.*", + category=FutureWarning, + ) + warnings.filterwarnings( + "ignore", + message="Ignoring 4 values because they are out of bounds for uint32.*", + category=UserWarning, + ) + try: + evidence = run() + except (ImportError, OSError, RuntimeError, TypeError, ValueError) as error: + print(f"Zipline native behavior run failed: {error}", file=sys.stderr) + return 2 + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8") + failed = [check["id"] for check in evidence["checks"] if not check["passed"]] + if failed: + print(f"Zipline native behavior differs: {failed}", file=sys.stderr) + return 1 + print(f"Zipline native behavior passed: {len(evidence['checks'])} checks") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_applicability.toml b/validation/real_strategy_applicability.toml new file mode 100644 index 00000000..70d8ce80 --- /dev/null +++ b/validation/real_strategy_applicability.toml @@ -0,0 +1,109 @@ +[metadata] +schema_version = 1 +frameworks = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline", "lean"] +case_studies = ["etfs", "cme_futures", "crypto_perps_funding"] + +[[pair]] +case_study = "etfs" +framework = "vectorbt_pro" +status = "required" +native_contract = "multi-asset target allocation and cash sharing" +source = "https://vectorbt.pro/features/portfolio/" + +[[pair]] +case_study = "etfs" +framework = "vectorbt_oss" +status = "required" +native_contract = "multi-asset target allocation and cash sharing" +source = "https://vectorbt.dev/api/portfolio/base/" + +[[pair]] +case_study = "etfs" +framework = "backtrader" +status = "required" +native_contract = "multi-data target-percent orders" +source = "https://www.backtrader.com/docu/order_target/order_target/" + +[[pair]] +case_study = "etfs" +framework = "zipline" +status = "required" +native_contract = "equity assets and target-percent orders" +source = "https://zipline.ml4trading.io/api-reference.html" + +[[pair]] +case_study = "etfs" +framework = "lean" +status = "required" +native_contract = "equity margin accounts and market-on-open orders" +source = "https://www.quantconnect.com/docs/v2/writing-algorithms/trading-and-orders/position-sizing" + +[[pair]] +case_study = "cme_futures" +framework = "vectorbt_pro" +status = "required" +native_contract = "contract multipliers and eager leverage on target-percent orders" +source = "https://vectorbt.pro/features/portfolio/" + +[[pair]] +case_study = "cme_futures" +framework = "vectorbt_oss" +status = "unsupported" +native_contract = "no native futures contract multiplier and margin-account model" +source = "https://vectorbt.dev/api/portfolio/base/" + +[[pair]] +case_study = "cme_futures" +framework = "backtrader" +status = "required" +native_contract = "futures-like commission scheme with margin and contract multiplier" +source = "https://www.backtrader.com/docu/commission-schemes/commission-schemes/" + +[[pair]] +case_study = "cme_futures" +framework = "zipline" +status = "unsupported" +native_contract = "the frozen workload has continuous root series but no dated contract chain or roll map" +source = "https://zipline.ml4trading.io/api-reference.html" + +[[pair]] +case_study = "cme_futures" +framework = "lean" +status = "unsupported" +native_contract = "the frozen workload has continuous root series but no dated contract chain or roll map" +source = "https://www.quantconnect.com/docs/v2/writing-algorithms/securities/asset-classes/futures" + +[[pair]] +case_study = "crypto_perps_funding" +framework = "vectorbt_pro" +status = "unsupported" +native_contract = "no native perpetual-futures funding and margin-account model" +source = "https://vectorbt.pro/features/portfolio/" + +[[pair]] +case_study = "crypto_perps_funding" +framework = "vectorbt_oss" +status = "unsupported" +native_contract = "no native perpetual-futures funding and margin-account model" +source = "https://vectorbt.dev/api/portfolio/base/" + +[[pair]] +case_study = "crypto_perps_funding" +framework = "backtrader" +status = "unsupported" +native_contract = "no native perpetual-futures funding model" +source = "https://www.backtrader.com/docu/commission-schemes/commission-schemes/" + +[[pair]] +case_study = "crypto_perps_funding" +framework = "zipline" +status = "unsupported" +native_contract = "no crypto perpetual-futures asset and funding model" +source = "https://zipline.ml4trading.io/api-reference.html" + +[[pair]] +case_study = "crypto_perps_funding" +framework = "lean" +status = "required" +native_contract = "CryptoFuture securities with scheduled funding debits and credits" +source = "https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/margin-interest-rate/supported-models" diff --git a/validation/real_strategy_backtrader.py b/validation/real_strategy_backtrader.py new file mode 100644 index 00000000..2b6d3ae3 --- /dev/null +++ b/validation/real_strategy_backtrader.py @@ -0,0 +1,246 @@ +#!/usr/bin/env python3 +"""Run a frozen real target-allocation workload with Backtrader.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import os +import tempfile +import time +from pathlib import Path +from typing import Any + +import backtrader as bt +import pandas as pd +import polars as pl + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _target_map(targets: pl.DataFrame) -> dict[pd.Timestamp, dict[str, float]]: + result: dict[pd.Timestamp, dict[str, float]] = {} + for row in targets.sort("timestamp", "symbol").iter_rows(named=True): + result.setdefault(pd.Timestamp(row["timestamp"]), {})[str(row["symbol"])] = float( + row["weight"] + ) + return result + + +class FrozenTargetStrategy(bt.Strategy): + params = (("targets", None), ("contracts", None)) + + def __init__(self) -> None: + self.fills: list[dict[str, Any]] = [] + self.equity: list[dict[str, Any]] = [] + self.rejections: list[dict[str, Any]] = [] + + def prenext(self) -> None: + self.next() + + def nextstart(self) -> None: + self.next() + + def next(self) -> None: + timestamp = pd.Timestamp(self.datetime.datetime(0)) + self.equity.append( + {"timestamp": timestamp.to_pydatetime(), "equity": self.broker.getvalue()} + ) + requested = self.p.targets.get(timestamp) + if requested is None: + return + available = { + data._name: weight + for data in self.datas + if data._name in requested and pd.Timestamp(data.datetime.datetime(0)) == timestamp + for weight in (requested[data._name],) + } + if not available: + return + value = self.broker.getvalue() + current = { + data._name: ( + self.getposition(data).size + * float(data.close[0]) + * float(self.p.contracts.get(data._name, {}).get("multiplier", 1.0)) + / value + ) + for data in self.datas + if self.getposition(data).size != 0 + } + reductions = sorted( + symbol for symbol, weight in available.items() if weight < current.get(symbol, 0.0) + ) + omitted = sorted(symbol for symbol in current if symbol not in available) + increases = sorted(symbol for symbol in available if symbol not in reductions) + by_name = {data._name: data for data in self.datas} + for symbol in reductions: + self._submit_target(by_name[symbol], available[symbol], current, value) + for symbol in omitted: + self.order_target_size(data=by_name[symbol], target=0) + for symbol in increases: + self._submit_target(by_name[symbol], available[symbol], current, value) + + def _submit_target( + self, data, target_weight: float, current_weights: dict[str, float], value: float + ) -> None: + contract = self.p.contracts.get(data._name) + if contract is None: + self.order_target_percent(data=data, target=target_weight) + return + price = float(data.close[0]) + multiplier = float(contract["multiplier"]) + delta = int( + (target_weight - current_weights.get(data._name, 0.0)) * value / (price * multiplier) + ) + target_size = self.getposition(data).size + delta + self.order_target_size(data=data, target=target_size) + + def notify_order(self, order) -> None: + if order.status == order.Completed: + self.fills.append( + { + "timestamp": bt.num2date(order.executed.dt).replace(tzinfo=None), + "asset": order.data._name, + "side": "buy" if order.isbuy() else "sell", + "quantity": abs(float(order.executed.size)), + "price": float(order.executed.price), + "commission": abs(float(order.executed.comm)), + } + ) + elif order.status in {order.Canceled, order.Margin, order.Rejected}: + self.rejections.append( + { + "timestamp": bt.num2date(order.created.dt).replace(tzinfo=None), + "asset": order.data._name, + "status": order.getstatusname(), + "requested_quantity": abs(float(order.created.size)), + } + ) + + +def run(bundle: Path) -> tuple[dict[str, Any], pl.DataFrame, pl.DataFrame, pl.DataFrame]: + manifest = json.loads((bundle / "manifest.json").read_text(encoding="utf-8")) + spec = json.loads((bundle / "spec.json").read_text(encoding="utf-8")) + market = pl.read_parquet(bundle / "market.parquet") + targets = _target_map(pl.read_parquet(bundle / "targets.parquet")) + contracts = ( + json.loads((bundle / "contracts.json").read_text(encoding="utf-8")) + if (bundle / "contracts.json").is_file() + else {} + ) + cerebro = bt.Cerebro(stdstats=False) + initial_cash = float(spec["backtest_config"]["cash"]["initial"]) + cerebro.broker.setcash(initial_cash) + cerebro.broker.setcommission(commission=0.0) + for symbol in market["symbol"].unique().sort().to_list(): + selected = market.filter(pl.col("symbol") == symbol).select( + "timestamp", "open", "high", "low", "close", "volume" + ) + frame = pd.DataFrame(selected.to_dict(as_series=False)).set_index("timestamp") + cerebro.adddata(bt.feeds.PandasData(dataname=frame), name=symbol) + contract = contracts.get(symbol) + if contract is not None: + initial_margin, _ = contract["margin_pct"] + fixed_margin = ( + float(frame["close"].iloc[0]) + * float(contract["multiplier"]) + * float(initial_margin) + ) + cerebro.broker.addcommissioninfo( + bt.CommInfoBase( + commission=0.0, + mult=float(contract["multiplier"]), + margin=fixed_margin, + automargin=False, + commtype=bt.CommInfoBase.COMM_FIXED, + stocklike=False, + ), + name=symbol, + ) + cerebro.addstrategy(FrozenTargetStrategy, targets=targets, contracts=contracts) + started = time.perf_counter() + strategy = cerebro.run()[0] + engine_seconds = time.perf_counter() - started + fills = pl.DataFrame(strategy.fills) + equity = pl.DataFrame(strategy.equity) + evidence = { + "schema_version": 1, + "case_study": manifest["case_study"], + "framework": "backtrader", + "comparison_profile": "backtrader_strict", + "comparison_costs": "disabled", + "comparison_position_rules": "disabled", + "input_bundle_sha256": manifest["bundle_sha256"], + "engine_seconds": engine_seconds, + "final_value": float(cerebro.broker.getvalue()), + "num_fills": fills.height, + "num_rejections": len(strategy.rejections), + } + rejections = pl.DataFrame( + strategy.rejections, + schema={ + "timestamp": pl.Datetime("us"), + "asset": pl.String, + "status": pl.String, + "requested_quantity": pl.Float64, + }, + ) + return evidence, fills, equity, rejections + + +def write_evidence( + output: Path, + evidence: dict[str, Any], + fills: pl.DataFrame, + equity: pl.DataFrame, + rejections: pl.DataFrame, +) -> None: + output.parent.mkdir(parents=True, exist_ok=True) + staging = Path(tempfile.mkdtemp(prefix=f".{output.name}.", dir=output.parent)) + try: + fills.write_parquet(staging / "fills.parquet", compression="zstd", statistics=True) + equity.write_parquet(staging / "equity.parquet", compression="zstd", statistics=True) + rejections.write_parquet( + staging / "rejected_orders.parquet", compression="zstd", statistics=True + ) + evidence["files"] = { + path.name: {"sha256": _sha256(path), "bytes": path.stat().st_size} + for path in sorted(staging.iterdir()) + } + (staging / "manifest.json").write_text( + json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + if output.exists(): + raise FileExistsError(f"Evidence output already exists: {output}") + os.replace(staging, output) + finally: + if staging.exists(): + for path in staging.iterdir(): + path.unlink() + staging.rmdir() + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--bundle", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + evidence, fills, equity, rejections = run(args.bundle.resolve()) + write_evidence(args.output.resolve(), evidence, fills, equity, rejections) + print( + f"{evidence['case_study']}: {evidence['num_fills']:,} fills, " + f"{evidence['engine_seconds']:.6f}s engine time" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_benchmark.py b/validation/real_strategy_benchmark.py new file mode 100644 index 00000000..db3183c4 --- /dev/null +++ b/validation/real_strategy_benchmark.py @@ -0,0 +1,280 @@ +#!/usr/bin/env python3 +"""Measure engine-only runtimes for correctness-passing real-strategy pairs.""" + +from __future__ import annotations + +import argparse +import json +import os +import platform +import random +import statistics +import subprocess +import tempfile +import tomllib +from datetime import UTC, datetime +from pathlib import Path +from typing import Any + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +VALIDATION_DIR = PROJECT_ROOT / "validation" +BUNDLES = { + "etfs": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", + "cme_futures": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", + "crypto_perps_funding": "2acee3c8542043266e6f9c0dfc9434c95b4469ef6fcaf0556efc569fc9721cdd", +} +PYTHONS = { + "ml4t": ".venv/bin/python", + "vectorbt_pro": ".venv-vectorbt-pro/bin/python", + "vectorbt_oss": ".venv-vectorbt-oss/bin/python", + "backtrader": ".venv-backtrader/bin/python", + "zipline": ".venv-zipline/bin/python", + "lean": ".venv/bin/python", +} +PROFILES = { + ("etfs", "vectorbt_pro"): ("vectorbt_strict", []), + ("etfs", "vectorbt_oss"): ("vectorbt_oss_strict", []), + ("etfs", "backtrader"): ("backtrader_strict", []), + ("etfs", "zipline"): ("zipline_strict", ["--price-decimals", "3"]), + ("etfs", "lean"): ("lean", ["--price-decimals", "4"]), + ("cme_futures", "vectorbt_pro"): ("vectorbt_strict", []), + ("cme_futures", "backtrader"): ("backtrader_strict", []), + ( + "crypto_perps_funding", + "lean", + ): ( + "lean_crypto_future", + [ + "--execution-specs", + "validation/lean/workspace/real_strategy_crypto_perps_funding/symbol_properties.json", + ], + ), +} +ADAPTERS = { + "vectorbt_pro": ("real_strategy_vectorbt.py", ["--framework", "vectorbt_pro"]), + "vectorbt_oss": ("real_strategy_vectorbt.py", ["--framework", "vectorbt_oss"]), + "backtrader": ("real_strategy_backtrader.py", []), + "zipline": ("real_strategy_zipline.py", []), + "lean": ("real_strategy_lean.py", []), +} + + +def bootstrap_median_interval( + values: list[float], *, draws: int = 10_000, seed: int = 20260814 +) -> tuple[float, float]: + """Return the percentile bootstrap 95 percent interval for a sample median.""" + if not values: + raise ValueError("Cannot bootstrap an empty timing sample") + generator = random.Random(seed) + medians = sorted( + statistics.median(generator.choices(values, k=len(values))) for _ in range(draws) + ) + return medians[int(0.025 * draws)], medians[int(0.975 * draws)] + + +def _command( + *, side: str, case_study: str, framework: str, bundle: Path, output: Path +) -> list[str]: + python = PROJECT_ROOT / PYTHONS[framework if side == "framework" else "ml4t"] + if side == "framework": + script, extra = ADAPTERS[framework] + if case_study == "crypto_perps_funding": + script = "real_strategy_lean_crypto.py" + return [ + str(python), + str(VALIDATION_DIR / script), + "--bundle", + str(bundle), + "--output", + str(output), + *extra, + ] + profile, extra = PROFILES[(case_study, framework)] + return [ + str(python), + str(VALIDATION_DIR / "real_strategy_runner.py"), + "--bundle", + str(bundle), + "--output", + str(output), + "--comparison-profile", + profile, + *extra, + ] + + +def _output_identity(manifest: dict[str, Any]) -> dict[str, str]: + retained = {"fills.parquet", "equity.parquet", "rejected_orders.parquet"} + return { + name: identity["sha256"] for name, identity in manifest["files"].items() if name in retained + } + + +def _run_once(command: list[str], output: Path) -> tuple[float, dict[str, str]]: + completed = subprocess.run( + command, + cwd=PROJECT_ROOT, + check=False, + capture_output=True, + text=True, + timeout=600, + ) + if completed.returncode != 0: + detail = (completed.stderr or completed.stdout).strip() + raise RuntimeError(f"Benchmark subprocess failed: {detail[-1000:]}") + manifest = json.loads((output / "manifest.json").read_text(encoding="utf-8")) + return float(manifest["engine_seconds"]), _output_identity(manifest) + + +def _measure_side( + *, + side: str, + case_study: str, + framework: str, + bundle: Path, + warmups: int, + samples: int, +) -> dict[str, Any]: + timings: list[float] = [] + identity: dict[str, str] | None = None + with tempfile.TemporaryDirectory(prefix="ml4t-real-benchmark-") as temporary: + temporary_root = Path(temporary) + for index in range(warmups + samples): + output = temporary_root / f"run-{index}" + command = _command( + side=side, + case_study=case_study, + framework=framework, + bundle=bundle, + output=output, + ) + runtime, current_identity = _run_once(command, output) + if identity is None: + identity = current_identity + elif current_identity != identity: + raise RuntimeError( + f"Output changed across repetitions for {case_study}/{framework}/{side}" + ) + if index >= warmups: + timings.append(runtime) + lower, upper = bootstrap_median_interval(timings) + return { + "samples_seconds": timings, + "median_seconds": statistics.median(timings), + "ci_95_seconds": [lower, upper], + "minimum_seconds": min(timings), + "maximum_seconds": max(timings), + "output_identity": identity, + } + + +def build_report( + *, + correctness: dict[str, Any], + bundle_root: Path, + warmups: int, + samples: int, +) -> dict[str, Any]: + """Measure every pair that passed the supplied correctness evidence.""" + passing = [record for record in correctness["records"] if record["status"] == "pass"] + records: list[dict[str, object]] = [] + for index, pair in enumerate(passing, start=1): + case_study = pair["case_study"] + framework = pair["framework"] + print(f"Timing {index}/{len(passing)} {case_study}/{framework}", flush=True) + bundle = bundle_root / case_study / BUNDLES[case_study] + framework_result = _measure_side( + side="framework", + case_study=case_study, + framework=framework, + bundle=bundle, + warmups=warmups, + samples=samples, + ) + ml4t_result = _measure_side( + side="ml4t", + case_study=case_study, + framework=framework, + bundle=bundle, + warmups=warmups, + samples=samples, + ) + records.append( + { + "case_study": case_study, + "framework": framework, + "input_bundle_sha256": pair["input_bundle_sha256"], + "correctness_status": "pass", + "framework_engine": framework_result, + "ml4t_engine": ml4t_result, + "framework_to_ml4t_median_ratio": ( + framework_result["median_seconds"] / ml4t_result["median_seconds"] + ), + } + ) + targets = tomllib.loads((VALIDATION_DIR / "framework_targets.toml").read_text()) + return { + "schema_version": 1, + "generated_at": datetime.now(UTC).isoformat(), + "timing_policy": { + "boundary": "engine call only", + "excluded": [ + "input loading", + "model inference", + "target construction", + "adapter preparation", + "result extraction", + "serialization", + "reporting", + ], + "warmup_processes": warmups, + "measured_processes": samples, + "process_isolation": True, + "interval": "10,000-draw percentile bootstrap of the sample median", + "publication_scope": "only correctness-passing case-study/framework pairs", + }, + "environment": { + "platform": platform.platform(), + "machine": platform.machine(), + "processor": platform.processor(), + "cpu_count": os.cpu_count(), + "frameworks": targets["framework"], + }, + "correctness_evidence_generated_at": correctness["generated_at"], + "records": records, + } + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument( + "--correctness", + type=Path, + default=VALIDATION_DIR / "candidates/REAL_STRATEGY_RESULTS.candidate.json", + ) + parser.add_argument("--bundle-root", type=Path, required=True) + parser.add_argument( + "--output", + type=Path, + default=VALIDATION_DIR / "candidates/REAL_STRATEGY_PERFORMANCE.candidate.json", + ) + parser.add_argument("--warmups", type=int, default=1) + parser.add_argument("--samples", type=int, default=10) + args = parser.parse_args() + if args.warmups < 1 or args.samples < 10: + raise ValueError("Benchmarks require at least one warmup and ten measured processes") + correctness = json.loads(args.correctness.read_text(encoding="utf-8")) + report = build_report( + correctness=correctness, + bundle_root=args.bundle_root.resolve(), + warmups=args.warmups, + samples=args.samples, + ) + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(report, indent=2, sort_keys=True) + "\n", encoding="utf-8") + print(f"Retained {len(report['records'])} timing comparisons: {args.output}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_cases.toml b/validation/real_strategy_cases.toml new file mode 100644 index 00000000..206ce892 --- /dev/null +++ b/validation/real_strategy_cases.toml @@ -0,0 +1,34 @@ +[metadata] +schema_version = 1 +selection = "current canonical validation rank-1" +source = "ml4t/public case-study registry and artifacts" + +[[case]] +id = "cme_futures" +asset_class = "futures" +production_path = "event_driven" +warmup = true +timestamp_shift_hours = 0 +contract_specs = true +funding = false +required_backtest_artifacts = ["daily_returns.parquet", "equity.parquet", "fills.parquet", "portfolio_state.parquet", "spec.json", "trades.parquet", "weights.parquet"] + +[[case]] +id = "crypto_perps_funding" +asset_class = "crypto_perpetual_futures" +production_path = "event_driven" +warmup = true +timestamp_shift_hours = 8 +contract_specs = false +funding = true +required_backtest_artifacts = ["daily_returns.parquet", "equity.parquet", "fills.parquet", "portfolio_state.parquet", "spec.json", "trades.parquet", "weights.parquet"] + +[[case]] +id = "etfs" +asset_class = "etf" +production_path = "event_driven" +warmup = false +timestamp_shift_hours = 0 +contract_specs = false +funding = false +required_backtest_artifacts = ["daily_returns.parquet", "equity.parquet", "fills.parquet", "portfolio_state.parquet", "spec.json", "trades.parquet", "weights.parquet"] diff --git a/validation/real_strategy_corpus.py b/validation/real_strategy_corpus.py new file mode 100644 index 00000000..faa1c532 --- /dev/null +++ b/validation/real_strategy_corpus.py @@ -0,0 +1,546 @@ +#!/usr/bin/env python3 +"""Inventory the current canonical real-strategy corpus without rerunning a backtest.""" + +from __future__ import annotations + +import argparse +import dataclasses +import enum +import gc +import hashlib +import importlib +import json +import os +import subprocess +import sys +import tempfile +import tomllib +from collections.abc import Callable, Mapping +from datetime import UTC, datetime +from pathlib import Path +from typing import Any, cast + +import polars as pl + +VALIDATION_DIR = Path(__file__).parent +PROJECT_ROOT = VALIDATION_DIR.parent +DEFAULT_CASES_PATH = VALIDATION_DIR / "real_strategy_cases.toml" +SCHEMA_VERSION = 1 + + +def file_digest(path: Path) -> str: + """Return a streaming SHA-256 digest for an artifact.""" + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def git_identity(root: Path) -> dict[str, object]: + """Return the full commit and tracked-file status for a repository.""" + commit = subprocess.run( + ["git", "-C", str(root), "rev-parse", "HEAD"], + check=True, + capture_output=True, + text=True, + ).stdout.strip() + status = subprocess.run( + ["git", "-C", str(root), "status", "--porcelain", "--untracked-files=no"], + check=True, + capture_output=True, + text=True, + ).stdout + return {"commit": commit, "dirty": bool(status.strip())} + + +def load_case_contract(path: Path = DEFAULT_CASES_PATH) -> list[dict[str, Any]]: + """Load and validate the bounded real-strategy corpus contract.""" + payload = tomllib.loads(path.read_text(encoding="utf-8")) + metadata = payload.get("metadata") + if not isinstance(metadata, dict) or metadata.get("schema_version") != SCHEMA_VERSION: + raise ValueError("Unsupported real-strategy case contract schema") + cases = payload.get("case") + if not isinstance(cases, list): + raise ValueError("Real-strategy case contract must contain [[case]] records") + required_keys = { + "id", + "asset_class", + "production_path", + "required_backtest_artifacts", + "warmup", + "timestamp_shift_hours", + "contract_specs", + "funding", + } + case_ids: list[str] = [] + for index, case in enumerate(cases): + if not isinstance(case, dict) or not required_keys <= case.keys(): + raise ValueError(f"Invalid real-strategy case contract record {index}") + if case["production_path"] not in {"event_driven", "vectorized"}: + raise ValueError(f"Invalid production path for {case['id']}") + if not isinstance(case["required_backtest_artifacts"], list): + raise ValueError(f"Invalid artifact list for {case['id']}") + case_ids.append(str(case["id"])) + if not 3 <= len(case_ids) <= 5 or len(set(case_ids)) != len(case_ids): + raise ValueError("Real-strategy corpus must contain three to five unique case studies") + return cases + + +def _parquet_identity(path: Path) -> dict[str, object]: + schema = pl.scan_parquet(path).collect_schema() + count_frame = cast( + pl.DataFrame, + pl.scan_parquet(path).select(pl.len().alias("row_count")).collect(engine="streaming"), + ) + row_count = int(count_frame["row_count"][0]) + return { + "sha256": file_digest(path), + "bytes": path.stat().st_size, + "rows": int(row_count), + "schema": {name: str(dtype) for name, dtype in schema.items()}, + } + + +def _artifact_identity(path: Path) -> dict[str, object]: + identity: dict[str, object] = { + "sha256": file_digest(path), + "bytes": path.stat().st_size, + } + if path.suffix == ".parquet": + identity.update(_parquet_identity(path)) + return identity + + +def _strategy_summary(spec: Mapping[str, Any]) -> dict[str, object]: + strategy = spec.get("strategy") + backtest = spec.get("backtest_config") + if not isinstance(strategy, Mapping) or not isinstance(backtest, Mapping): + raise ValueError("Selected backtest spec lacks strategy or backtest_config") + execution = backtest.get("execution") + commission = backtest.get("commission") + slippage = backtest.get("slippage") + sizing = backtest.get("position_sizing") + rebalance = strategy.get("rebalance") + risk = strategy.get("risk") + signal = strategy.get("signal") + allocation = strategy.get("allocation") + return { + "signal": signal, + "allocation": allocation, + "risk": risk, + "rebalance": rebalance, + "execution": execution, + "commission": commission, + "slippage": slippage, + "position_sizing": sizing, + } + + +def build_case_record( + case: Mapping[str, Any], + lineage: Mapping[str, Any], + *, + artifact_root: Path, +) -> dict[str, object]: + """Build one immutable inventory record from a resolved canonical lineage.""" + case_id = str(case["id"]) + backtest_hash = str(lineage["val_backtest_hash"]) + prediction_hash = str(lineage["val_prediction_hash"]) + case_root = artifact_root / "case_studies" / case_id / "run_log" + backtest_dir = case_root / "backtest" / backtest_hash + prediction_dir = case_root / "predictions" / prediction_hash + registry_path = case_root / "registry.db" + prediction_path = prediction_dir / "predictions.parquet" + required_paths = [backtest_dir / str(name) for name in case["required_backtest_artifacts"]] + inputs = [registry_path, prediction_path, *required_paths] + missing = [path for path in inputs if not path.is_file()] + if missing: + relative = [path.relative_to(artifact_root).as_posix() for path in missing] + raise FileNotFoundError(f"{case_id} lacks required artifacts: {relative}") + + spec_path = backtest_dir / "spec.json" + spec = json.loads(spec_path.read_text(encoding="utf-8")) + if ( + spec.get("backtest_config", {}).get("metadata", {}).get("prediction_hash") + != prediction_hash + ): + raise ValueError(f"{case_id} selected spec does not name selected prediction") + recorded_mode = spec.get("strategy", {}).get("rebalance", {}).get("mode") + expected_mode = "engine" if case["production_path"] == "event_driven" else "vectorized" + if recorded_mode != expected_mode: + raise ValueError( + f"{case_id} production path differs: expected {expected_mode}, got {recorded_mode}" + ) + + artifacts = { + path.name: _artifact_identity(path) + for path in sorted(required_paths, key=lambda value: value.name) + } + return { + "case_study": case_id, + "asset_class": case["asset_class"], + "production_path": case["production_path"], + "selection": dict(lineage), + "strategy": _strategy_summary(spec), + "inputs": { + "registry": _artifact_identity(registry_path), + "predictions.parquet": _artifact_identity(prediction_path), + }, + "backtest_artifacts": artifacts, + } + + +def build_report( + *, + public_root: Path, + artifact_root: Path, + resolver: Callable[[str], Mapping[str, Any]], + cases_path: Path = DEFAULT_CASES_PATH, +) -> dict[str, object]: + """Build a complete current corpus inventory using the publication resolver.""" + cases = load_case_contract(cases_path) + records = [ + build_case_record(case, resolver(str(case["id"])), artifact_root=artifact_root) + for case in cases + ] + return { + "schema_version": SCHEMA_VERSION, + "generated_at": datetime.now(UTC).isoformat(), + "selection_contract": ( + "current canonical validation rank-1 resolved by " + "case_studies.utils.strategy_analysis.resolve_canonical_rank1_lineage" + ), + "repositories": { + "ml4t_backtest": git_identity(PROJECT_ROOT), + "publication": git_identity(public_root), + }, + "artifact_root": { + "kind": "external_case_study_run_log", + "retained_absolute_path": False, + }, + "summary": { + "case_studies": len(records), + "event_driven": sum(r["production_path"] == "event_driven" for r in records), + "vectorized": sum(r["production_path"] == "vectorized" for r in records), + }, + "records": records, + } + + +def write_report(report: Mapping[str, object], output: Path) -> None: + """Atomically write a deterministic JSON candidate.""" + output.parent.mkdir(parents=True, exist_ok=True) + payload = json.dumps(report, indent=2, sort_keys=True, default=str) + "\n" + descriptor, temporary_name = tempfile.mkstemp(prefix=f".{output.name}.", dir=output.parent) + temporary = Path(temporary_name) + try: + with os.fdopen(descriptor, "w", encoding="utf-8") as stream: + stream.write(payload) + stream.flush() + os.fsync(stream.fileno()) + os.replace(temporary, output) + finally: + temporary.unlink(missing_ok=True) + + +def _json_value(value: object) -> object: + if dataclasses.is_dataclass(value) and not isinstance(value, type): + return {key: _json_value(item) for key, item in dataclasses.asdict(value).items()} + if isinstance(value, enum.Enum): + return value.value + if isinstance(value, Mapping): + return {str(key): _json_value(item) for key, item in value.items()} + if isinstance(value, (list, tuple)): + return [_json_value(item) for item in value] + return value + + +def _sanitize_spec(spec: Mapping[str, Any]) -> dict[str, Any]: + sanitized = json.loads(json.dumps(spec, default=str)) + sanitized.pop("_runtime_backtest_config", None) + metadata = sanitized.get("backtest_config", {}).get("metadata", {}) + metadata.pop("preset_path", None) + return sanitized + + +def _frame_identity(frame: pl.DataFrame) -> dict[str, object]: + return { + "rows": frame.height, + "schema": {name: str(dtype) for name, dtype in frame.schema.items()}, + } + + +def align_funding_to_market_events(funding: pl.DataFrame, market: pl.DataFrame) -> pl.DataFrame: + """Retain funding settlements that the frozen engine timeline can present.""" + market_timestamps = market.select("timestamp").unique() + if funding.schema["timestamp"] != market_timestamps.schema["timestamp"]: + funding = funding.with_columns( + pl.col("timestamp").cast(market_timestamps.schema["timestamp"]) + ) + return funding.join(market_timestamps, on="timestamp", how="semi").sort("timestamp", "symbol") + + +def align_targets_to_engine_schedule(targets: pl.DataFrame, schedule: pl.Series) -> pl.DataFrame: + """Retain target rows that the production engine schedule can submit.""" + schedule_frame = schedule.alias("timestamp").to_frame().unique() + if targets.schema["timestamp"] != schedule_frame.schema["timestamp"]: + schedule_frame = schedule_frame.with_columns( + pl.col("timestamp").cast(targets.schema["timestamp"]) + ) + return targets.join(schedule_frame, on="timestamp", how="semi").sort("timestamp", "symbol") + + +def _bundle_digest( + *, + selection: Mapping[str, Any], + source_prediction_sha256: str, + spec: Mapping[str, Any], + frames: Mapping[str, pl.DataFrame], + contracts: Mapping[str, object] | None, +) -> str: + digest = hashlib.sha256() + metadata = { + "selection": selection, + "source_prediction_sha256": source_prediction_sha256, + "spec": spec, + "contracts": contracts, + } + digest.update(json.dumps(metadata, sort_keys=True, separators=(",", ":"), default=str).encode()) + for name, frame in sorted(frames.items()): + digest.update(name.encode()) + digest.update(frame.serialize(format="binary")) + return digest.hexdigest() + + +def write_bundle( + *, + case_id: str, + selection: Mapping[str, Any], + source_prediction_sha256: str, + spec: Mapping[str, Any], + market: pl.DataFrame, + targets: pl.DataFrame, + output_root: Path, + funding: pl.DataFrame | None = None, + contracts: Mapping[str, object] | None = None, +) -> dict[str, object]: + """Write one content-addressed engine-input bundle and return its manifest.""" + frames = {"market.parquet": market, "targets.parquet": targets} + if funding is not None: + frames["funding.parquet"] = funding + normalized_contracts = cast(Mapping[str, object] | None, _json_value(contracts)) + sanitized_spec = _sanitize_spec(spec) + digest = _bundle_digest( + selection=selection, + source_prediction_sha256=source_prediction_sha256, + spec=sanitized_spec, + frames=frames, + contracts=normalized_contracts, + ) + destination = output_root / case_id / digest + manifest: dict[str, object] = { + "schema_version": SCHEMA_VERSION, + "case_study": case_id, + "bundle_sha256": digest, + "selection": dict(selection), + "source_prediction_sha256": source_prediction_sha256, + "files": {}, + } + if destination.is_dir(): + retained = json.loads((destination / "manifest.json").read_text(encoding="utf-8")) + if retained.get("bundle_sha256") != digest: + raise ValueError(f"Retained {case_id} bundle has the wrong identity") + return retained + + destination.parent.mkdir(parents=True, exist_ok=True) + staging = Path(tempfile.mkdtemp(prefix=f".{case_id}.", dir=destination.parent)) + try: + for name, frame in frames.items(): + frame.write_parquet(staging / name, compression="zstd", statistics=True) + (staging / "spec.json").write_text( + json.dumps(sanitized_spec, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + if normalized_contracts is not None: + (staging / "contracts.json").write_text( + json.dumps(normalized_contracts, indent=2, sort_keys=True) + "\n", + encoding="utf-8", + ) + files = { + path.name: _artifact_identity(path) + for path in sorted(staging.iterdir()) + if path.name != "manifest.json" + } + manifest["files"] = files + (staging / "manifest.json").write_text( + json.dumps(manifest, indent=2, sort_keys=True, default=str) + "\n", + encoding="utf-8", + ) + os.replace(staging, destination) + finally: + if staging.exists(): + for path in staging.iterdir(): + path.unlink() + staging.rmdir() + return manifest + + +def materialize_bundles( + *, + corpus_report: Mapping[str, object], + artifact_root: Path, + output_root: Path, +) -> dict[str, object]: + """Precompute engine inputs for every selected production strategy.""" + loaders = importlib.import_module("case_studies.utils.backtest_loaders") + runner = importlib.import_module("case_studies.utils.backtest_runner") + registry = importlib.import_module("case_studies.utils.registry") + cv_window = importlib.import_module("case_studies.utils.cv_window") + contract_by_id = {case["id"]: case for case in load_case_contract()} + records = cast(list[dict[str, Any]], corpus_report["records"]) + manifests: list[dict[str, object]] = [] + for record in records: + case_id = str(record["case_study"]) + print(f"Preparing {case_id}", flush=True) + contract = contract_by_id[case_id] + selection = cast(dict[str, Any], record["selection"]) + label = str(selection["label"]) + prediction_hash = str(selection["val_prediction_hash"]) + backtest_hash = str(selection["val_backtest_hash"]) + spec_path = ( + artifact_root + / "case_studies" + / case_id + / "run_log" + / "backtest" + / backtest_hash + / "spec.json" + ) + spec = json.loads(spec_path.read_text(encoding="utf-8")) + warmup = int(loaders.warmup_periods_for(case_id)) if contract["warmup"] else 0 + market = loaders.load_backtest_prices_for( + case_id, + label, + split="validation", + warmup_periods=warmup, + max_symbols=0, + ) + predictions = registry.read_predictions(case_id, prediction_hash) + shift_hours = int(contract["timestamp_shift_hours"]) + if shift_hours: + window = cv_window.canonical_window(case_id, label, split="validation") + if window is None: + raise ValueError(f"{case_id} lacks a canonical validation window") + validation_end = window[1] + market = market.with_columns( + pl.col("timestamp") + pl.duration(hours=shift_hours) + ).filter(pl.col("timestamp").dt.date() <= validation_end) + predictions = predictions.with_columns( + pl.col("timestamp") + pl.duration(hours=shift_hours) + ).filter(pl.col("timestamp").dt.date() <= validation_end) + targets = runner.precompute_weights( + predictions, + spec, + market, + label=label, + case_study=case_id, + prediction_hash=prediction_hash, + ).sort("timestamp", "symbol") + cadence = spec["strategy"]["rebalance"]["cadence"] + calendar = spec["backtest_config"]["calendar"]["calendar"] + schedule = loaders.resolve_rebalance_timestamps( + pl.Series("timestamp", predictions["timestamp"].unique().sort().to_list()), + cadence, + calendar, + ) + step = int(loaders.get_rebalance_step(case_id, label)) + if step > 1: + schedule = schedule.gather_every(step) + targets = align_targets_to_engine_schedule(targets, schedule) + market = market.sort("timestamp", "symbol") + funding = None + if contract["funding"]: + funding_module = importlib.import_module( + "case_studies.crypto_perps_funding.funding_data" + ) + funding = align_funding_to_market_events( + funding_module.load_funding_rates(symbols=market["symbol"].unique().to_list()), + market, + ) + contracts = None + if contract["contract_specs"]: + contracts = loaders.load_contract_specs_from_yaml() + prediction_identity = cast(dict[str, Any], record["inputs"])["predictions.parquet"] + bundle = write_bundle( + case_id=case_id, + selection=selection, + source_prediction_sha256=str(prediction_identity["sha256"]), + spec=spec, + market=market, + targets=targets, + output_root=output_root, + funding=funding, + contracts=contracts, + ) + manifests.append(bundle) + print( + f"Prepared {case_id}: {market.height:,} market rows, " + f"{targets.height:,} targets, {str(bundle['bundle_sha256'])[:12]}", + flush=True, + ) + del market, predictions, targets, funding + gc.collect() + return { + "schema_version": SCHEMA_VERSION, + "generated_at": datetime.now(UTC).isoformat(), + "bundle_root": {"retained_absolute_path": False}, + "records": manifests, + } + + +def _load_public_resolver(public_root: Path) -> Callable[[str], Mapping[str, Any]]: + sys.path.insert(0, str(public_root)) + os.chdir(public_root) + module = importlib.import_module("case_studies.utils.strategy_analysis") + return cast(Callable[[str], Mapping[str, Any]], module.resolve_canonical_rank1_lineage) + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--public-root", type=Path, required=True) + parser.add_argument("--artifact-root", type=Path, required=True) + parser.add_argument( + "--output", + type=Path, + default=VALIDATION_DIR / "candidates" / "REAL_STRATEGY_CORPUS.candidate.json", + ) + parser.add_argument("--materialize", type=Path) + args = parser.parse_args() + public_root = args.public_root.resolve() + artifact_root = args.artifact_root.resolve() + output = args.output.resolve() + materialize_root = args.materialize.resolve() if args.materialize is not None else None + resolver = _load_public_resolver(public_root) + report = build_report( + public_root=public_root, + artifact_root=artifact_root, + resolver=resolver, + ) + write_report(report, output) + if materialize_root is not None: + bundle_report = materialize_bundles( + corpus_report=report, + artifact_root=artifact_root, + output_root=materialize_root, + ) + bundle_output = output.with_name("REAL_STRATEGY_INPUTS.candidate.json") + write_report(bundle_report, bundle_output) + bundle_records = cast(list[dict[str, object]], bundle_report["records"]) + print(f"Materialized {len(bundle_records)} engine input bundles") + summary = cast(Mapping[str, object], report["summary"]) + print(f"Inventoried {summary['case_studies']} current case studies to {output}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_evidence.py b/validation/real_strategy_evidence.py new file mode 100644 index 00000000..b61d7754 --- /dev/null +++ b/validation/real_strategy_evidence.py @@ -0,0 +1,446 @@ +#!/usr/bin/env python3 +"""Build retained exact-comparison evidence for frozen real strategies.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import os +import platform +import subprocess +import sys +import tempfile +import tomllib +from datetime import UTC, date, datetime +from decimal import ROUND_HALF_EVEN, Decimal +from pathlib import Path +from typing import Any + +import polars as pl + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +VALIDATION_DIR = PROJECT_ROOT / "validation" +CANONICAL_QUANTUM = Decimal("0.00000001") +PAIR_PROFILES = { + ("etfs", "vectorbt_pro"): "vectorbt_strict", + ("etfs", "vectorbt_oss"): "vectorbt_oss_strict", + ("etfs", "backtrader"): "backtrader_strict", + ("etfs", "zipline"): "zipline_strict", + ("etfs", "lean"): "lean", + ("cme_futures", "vectorbt_pro"): "vectorbt_strict", + ("cme_futures", "backtrader"): "backtrader_strict", + ("crypto_perps_funding", "lean"): "lean_crypto_future", +} + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _json_digest(value: object) -> str: + payload = json.dumps(value, sort_keys=True, separators=(",", ":"), default=str) + return hashlib.sha256(payload.encode()).hexdigest() + + +def _tree_digest(root: Path) -> str: + digest = hashlib.sha256() + for path in sorted(root.rglob("*.py")): + digest.update(path.relative_to(root).as_posix().encode()) + digest.update(b"\0") + digest.update(path.read_bytes()) + digest.update(b"\0") + return digest.hexdigest() + + +def _git_identity(root: Path) -> dict[str, object]: + commit = subprocess.run( + ["git", "rev-parse", "HEAD"], cwd=root, check=True, capture_output=True, text=True + ).stdout.strip() + status = subprocess.run( + ["git", "status", "--porcelain", "--untracked-files=no"], + cwd=root, + check=True, + capture_output=True, + text=True, + ).stdout + return {"commit": commit, "dirty": bool(status.strip())} + + +def _number_text(value: object) -> str: + return format(Decimal(str(value)), "f") + + +def _canonical_gap(framework: str, ml4t: str) -> Decimal: + return abs(Decimal(framework) - Decimal(ml4t)).quantize(CANONICAL_QUANTUM, ROUND_HALF_EVEN) + + +def _canonical_timestamp(value: object, *, intraday: bool) -> str: + if isinstance(value, datetime): + return value.isoformat(timespec="seconds") if intraday else value.date().isoformat() + if isinstance(value, date): + return value.isoformat() + parsed = datetime.fromisoformat(str(value).replace("Z", "+00:00")) + return parsed.isoformat(timespec="seconds") if intraday else parsed.date().isoformat() + + +def _fill_records(frame: pl.DataFrame, *, intraday: bool) -> list[dict[str, str]]: + records = [ + { + "timestamp": _canonical_timestamp(row["timestamp"], intraday=intraday), + "asset": str(row["asset"]), + "side": str(row["side"]).lower(), + "quantity": _number_text(row["quantity"]), + "price": _number_text(row["price"]), + "commission": _number_text(row["commission"]), + } + for row in frame.iter_rows(named=True) + ] + return sorted( + records, + key=lambda row: ( + row["timestamp"], + row["asset"], + row["side"], + row["quantity"], + row["price"], + row["commission"], + ), + ) + + +def _value_records(frame: pl.DataFrame, *, field: str, intraday: bool) -> list[dict[str, str]]: + records = [ + { + "timestamp": _canonical_timestamp(row["timestamp"], intraday=intraday), + field: _number_text(row[field]), + } + for row in frame.select("timestamp", field).iter_rows(named=True) + ] + return sorted(records, key=lambda row: row["timestamp"]) + + +def _first_divergence( + framework_records: list[dict[str, str]], + ml4t_records: list[dict[str, str]], + *, + numeric_fields: tuple[str, ...], +) -> dict[str, object] | None: + if len(framework_records) != len(ml4t_records): + return { + "kind": "record_count", + "framework": len(framework_records), + "ml4t": len(ml4t_records), + } + for index, (framework, ml4t) in enumerate(zip(framework_records, ml4t_records, strict=True)): + fields = sorted(set(framework) | set(ml4t)) + for field in fields: + framework_value = framework.get(field) + ml4t_value = ml4t.get(field) + if field in numeric_fields and framework_value is not None and ml4t_value is not None: + differs = _canonical_gap(framework_value, ml4t_value) != 0 + else: + differs = framework_value != ml4t_value + if differs: + return { + "kind": "record", + "index": index, + "field": field, + "framework": framework, + "ml4t": ml4t, + "canonical_gap": ( + format(_canonical_gap(framework_value, ml4t_value), "f") + if field in numeric_fields + and framework_value is not None + and ml4t_value is not None + else None + ), + } + return None + + +def compare_records( + framework_records: list[dict[str, str]], + ml4t_records: list[dict[str, str]], + *, + numeric_fields: tuple[str, ...] = (), +) -> dict[str, object]: + """Compare complete canonical streams and retain the first divergence.""" + divergence = _first_divergence(framework_records, ml4t_records, numeric_fields=numeric_fields) + return { + "passed": divergence is None, + "framework_records": len(framework_records), + "ml4t_records": len(ml4t_records), + "framework_sha256": _json_digest(framework_records), + "ml4t_sha256": _json_digest(ml4t_records), + "first_divergence": divergence, + } + + +def _max_difference( + framework_records: list[dict[str, str]], + ml4t_records: list[dict[str, str]], + *, + fields: tuple[str, ...], +) -> str | None: + if len(framework_records) != len(ml4t_records): + return None + differences: list[Decimal] = [] + for framework, ml4t in zip(framework_records, ml4t_records, strict=True): + for field in fields: + if field in framework and field in ml4t: + differences.append(abs(Decimal(framework[field]) - Decimal(ml4t[field]))) + maximum = max(differences, default=Decimal(0)) + return format(maximum.quantize(CANONICAL_QUANTUM, ROUND_HALF_EVEN), "f") + + +def _align_shared_values( + framework_records: list[dict[str, str]], ml4t_records: list[dict[str, str]] +) -> tuple[list[dict[str, str]], list[dict[str, str]], dict[str, int]]: + framework_by_time = {record["timestamp"]: record for record in framework_records} + ml4t_by_time = {record["timestamp"]: record for record in ml4t_records} + shared = sorted(framework_by_time.keys() & ml4t_by_time.keys()) + return ( + [framework_by_time[timestamp] for timestamp in shared], + [ml4t_by_time[timestamp] for timestamp in shared], + { + "shared_timestamps": len(shared), + "framework_only_timestamps": len(framework_by_time.keys() - ml4t_by_time.keys()), + "ml4t_only_timestamps": len(ml4t_by_time.keys() - framework_by_time.keys()), + }, + ) + + +def _load_evidence(path: Path) -> tuple[dict[str, Any], dict[str, pl.DataFrame]]: + manifest = json.loads((path / "manifest.json").read_text(encoding="utf-8")) + frames: dict[str, pl.DataFrame] = {} + for name, identity in manifest["files"].items(): + artifact = path / name + if not artifact.is_file() or _sha256(artifact) != identity["sha256"]: + raise ValueError(f"Evidence identity mismatch: {artifact}") + if artifact.suffix == ".parquet": + frames[artifact.stem] = pl.read_parquet(artifact) + return manifest, frames + + +def _surface( + framework_records: list[dict[str, str]], + ml4t_records: list[dict[str, str]], + *, + numeric_fields: tuple[str, ...], +) -> dict[str, object]: + result = compare_records(framework_records, ml4t_records, numeric_fields=numeric_fields) + result["max_canonical_difference"] = _max_difference( + framework_records, ml4t_records, fields=numeric_fields + ) + return result + + +def _comparison_record( + *, case_study: str, framework: str, evidence_root: Path +) -> dict[str, object]: + external_path = evidence_root / case_study / framework + ml4t_path = evidence_root / case_study / f"ml4t_{framework}" + external, external_frames = _load_evidence(external_path) + ml4t, ml4t_frames = _load_evidence(ml4t_path) + expected_profile = PAIR_PROFILES[(case_study, framework)] + if external["input_bundle_sha256"] != ml4t["input_bundle_sha256"]: + raise ValueError(f"Input bundle differs for {case_study}/{framework}") + if external["comparison_profile"] != expected_profile: + raise ValueError(f"External profile differs for {case_study}/{framework}") + if ml4t["comparison_profile"] != expected_profile: + raise ValueError(f"ML4T profile differs for {case_study}/{framework}") + + intraday = case_study == "crypto_perps_funding" + external_fills = _fill_records(external_frames["fills"], intraday=intraday) + ml4t_fills = _fill_records(ml4t_frames["fills"], intraday=intraday) + external_equity = _value_records(external_frames["equity"], field="equity", intraday=intraday) + ml4t_equity = _value_records(ml4t_frames["equity"], field="equity", intraday=intraday) + external_equity, ml4t_equity, equity_coverage = _align_shared_values( + external_equity, ml4t_equity + ) + if not external_equity: + raise ValueError(f"No shared equity timestamps for {case_study}/{framework}") + terminal_external = [{"final_value": external_equity[-1]["equity"]}] + terminal_ml4t = [{"final_value": ml4t_equity[-1]["equity"]}] + surfaces: dict[str, dict[str, object]] = { + "fills": _surface( + external_fills, + ml4t_fills, + numeric_fields=("quantity", "price", "commission"), + ), + "equity": _surface(external_equity, ml4t_equity, numeric_fields=("equity",)), + "terminal": _surface(terminal_external, terminal_ml4t, numeric_fields=("final_value",)), + } + surfaces["equity"]["coverage"] = equity_coverage + if "num_rejections" in external and "num_rejections" in ml4t: + rejection_external = [{"count": str(external["num_rejections"])}] + rejection_ml4t = [{"count": str(ml4t["num_rejections"])}] + surfaces["rejection_count"] = _surface( + rejection_external, rejection_ml4t, numeric_fields=("count",) + ) + if case_study == "etfs" and framework == "lean": + external_cash = _value_records(external_frames["equity"], field="cash", intraday=intraday) + ml4t_cash = _value_records(ml4t_frames["portfolio_state"], field="cash", intraday=intraday) + external_cash, ml4t_cash, cash_coverage = _align_shared_values(external_cash, ml4t_cash) + surfaces["cash"] = _surface(external_cash, ml4t_cash, numeric_fields=("cash",)) + surfaces["cash"]["coverage"] = cash_coverage + + surface_values = list(surfaces.values()) + passed = all(bool(value["passed"]) for value in surface_values) + negative_control = [dict(record) for record in ml4t_fills] + if not negative_control: + raise ValueError(f"Negative control requires fills for {case_study}/{framework}") + negative_control[0]["price"] = format( + Decimal(negative_control[0]["price"]) + CANONICAL_QUANTUM, "f" + ) + detected = not compare_records( + external_fills, + negative_control, + numeric_fields=("quantity", "price", "commission"), + )["passed"] + if not detected: + raise RuntimeError(f"Negative control was not detected for {case_study}/{framework}") + return { + "case_study": case_study, + "framework": framework, + "status": "pass" if passed else "fail", + "input_bundle_sha256": external["input_bundle_sha256"], + "profile": expected_profile, + "engine_seconds": { + "framework": external["engine_seconds"], + "ml4t": ml4t["engine_seconds"], + "single_run_diagnostic_only": True, + }, + "surfaces": surfaces, + "negative_control": {"mutation": "first fill price + 0.00000001", "detected": detected}, + "excluded_surfaces": { + "intents": "shared frozen target input is identified, but engines do not expose a common native intent log", + "accepted_unfilled_orders": "not exposed by every native runner", + "positions": "not exposed in a common native record schema by every runner", + "closed_trades": "not a common native framework concept", + "cash": ( + "compared separately for LEAN equities" + if case_study == "etfs" and framework == "lean" + else "not exposed with common accounting semantics" + ), + }, + "evidence": { + "framework_manifest_sha256": _sha256(external_path / "manifest.json"), + "ml4t_manifest_sha256": _sha256(ml4t_path / "manifest.json"), + }, + } + + +def build_report(evidence_root: Path) -> dict[str, Any]: + """Build the complete required and unsupported real-strategy matrix.""" + applicability_path = VALIDATION_DIR / "real_strategy_applicability.toml" + applicability = tomllib.loads(applicability_path.read_text(encoding="utf-8")) + targets = tomllib.loads((VALIDATION_DIR / "framework_targets.toml").read_text()) + records: list[dict[str, object]] = [] + for pair in applicability["pair"]: + if pair["status"] == "required": + records.append( + _comparison_record( + case_study=pair["case_study"], + framework=pair["framework"], + evidence_root=evidence_root, + ) + ) + else: + records.append( + { + "case_study": pair["case_study"], + "framework": pair["framework"], + "status": "unsupported", + "reason": pair["native_contract"], + "source": pair["source"], + } + ) + required = [record for record in records if record["status"] != "unsupported"] + return { + "schema_version": 1, + "generated_at": datetime.now(UTC).isoformat(), + "scope": { + "case_studies": applicability["metadata"]["case_studies"], + "frameworks": applicability["metadata"]["frameworks"], + "required_pairs": len(required), + "unsupported_pairs": len(records) - len(required), + "real_strategy_equivalence_gate_passed": all( + record["status"] == "pass" for record in required + ), + }, + "comparison_policy": { + "canonical_quantum": format(CANONICAL_QUANTUM, "f"), + "rounding": "ROUND_HALF_EVEN", + "meaning": "zero numeric gap after canonical quantization, not bit identity", + "fill_order": "canonical timestamp, asset, side, quantity, price, commission", + "timestamp_domain": { + "etfs": "session date", + "cme_futures": "session date", + "crypto_perps_funding": "exact UTC event timestamp", + }, + }, + "provenance": { + "ml4t": { + **_git_identity(PROJECT_ROOT), + "engine_source_sha256": _tree_digest(PROJECT_ROOT / "src/ml4t/backtest"), + }, + "python": sys.version.split()[0], + "platform": platform.platform(), + "machine": platform.machine(), + "cpu_count": os.cpu_count(), + "applicability_sha256": _sha256(applicability_path), + "adapters": { + framework: _sha256(VALIDATION_DIR / f"real_strategy_{adapter}.py") + for framework, adapter in { + "vectorbt_pro": "vectorbt", + "vectorbt_oss": "vectorbt", + "backtrader": "backtrader", + "zipline": "zipline", + "lean_equity": "lean", + "lean_crypto": "lean_crypto", + "ml4t": "runner", + }.items() + }, + "frameworks": { + framework: targets["framework"][framework] + for framework in applicability["metadata"]["frameworks"] + }, + }, + "records": records, + } + + +def write_report(report: dict[str, Any], output: Path) -> None: + output.parent.mkdir(parents=True, exist_ok=True) + descriptor, temporary_name = tempfile.mkstemp(prefix=f".{output.name}.", dir=output.parent) + temporary = Path(temporary_name) + try: + with os.fdopen(descriptor, "w", encoding="utf-8") as stream: + json.dump(report, stream, indent=2, sort_keys=True) + stream.write("\n") + os.replace(temporary, output) + finally: + temporary.unlink(missing_ok=True) + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--evidence-root", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + report = build_report(args.evidence_root.resolve()) + write_report(report, args.output.resolve()) + required = [record for record in report["records"] if record["status"] != "unsupported"] + passed = sum(record["status"] == "pass" for record in required) + print(f"Real-strategy parity: {passed}/{len(required)} required pairs pass") + return 0 if passed == len(required) else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_lean.py b/validation/real_strategy_lean.py new file mode 100644 index 00000000..c11989e0 --- /dev/null +++ b/validation/real_strategy_lean.py @@ -0,0 +1,281 @@ +#!/usr/bin/env python3 +"""Run the frozen real ETF target-allocation workload with LEAN.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import os +import tempfile +import time +import tomllib +from datetime import datetime, timedelta +from pathlib import Path +from typing import Any, cast + +import pandas as pd +import polars as pl + +from ml4t.backtest._validation.lean_runner import ( + build_hashed_ticker_map, + copy_lean_artifacts, + export_lean_daily_data, + load_lean_artifacts, + make_lean_env, + resolve_lean_command, + run_lean_backtest, +) + +PROJECT_ROOT = Path(__file__).resolve().parents[1] + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _prepare_project(bundle: Path) -> tuple[Path, dict[str, Any]]: + manifest = json.loads((bundle / "manifest.json").read_text(encoding="utf-8")) + if manifest["case_study"] != "etfs": + raise ValueError("The LEAN adapter currently accepts the ETF comparison workload") + spec = json.loads((bundle / "spec.json").read_text(encoding="utf-8")) + market = pl.read_parquet(bundle / "market.parquet") + targets = pl.read_parquet(bundle / "targets.parquet") + symbols = market["symbol"].unique().sort().to_list() + asset_to_ticker = build_hashed_ticker_map("real_etfs", symbols) + ticker_to_asset = {ticker: asset for asset, ticker in asset_to_ticker.items()} + + workspace = PROJECT_ROOT / "validation" / "lean" / "workspace" + project = workspace / "real_strategy_etfs" + project.mkdir(parents=True, exist_ok=True) + (project / "backtests").mkdir(exist_ok=True) + for name in ("ml4t_daily_equity.csv", "ml4t_order_events.csv", "ml4t_runtime.json"): + path = project / name + if path.exists(): + path.unlink() + + (project / "config.json").write_text( + json.dumps( + { + "algorithm-language": "Python", + "parameters": {}, + "description": "Frozen ML4T ETF real-strategy parity workload", + }, + indent=2, + ) + + "\n", + encoding="utf-8", + ) + (project / "ml4t_symbol_map.json").write_text( + json.dumps(ticker_to_asset, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + (project / "symbols.csv").write_text( + "\n".join(asset_to_ticker[symbol] for symbol in symbols) + "\n", encoding="utf-8" + ) + target_rows = targets.with_columns( + pl.col("symbol").replace_strict(asset_to_ticker).alias("ticker"), + pl.col("timestamp").dt.strftime("%Y-%m-%d"), + ).select("timestamp", "ticker", "weight") + target_rows.write_csv(project / "targets.csv") + + prices_by_asset: dict[str, pd.DataFrame] = {} + for symbol in symbols: + selected = market.filter(pl.col("symbol") == symbol).select( + "timestamp", "open", "high", "low", "close", "volume" + ) + prices_by_asset[symbol] = pd.DataFrame(selected.to_dict(as_series=False)).set_index( + "timestamp" + ) + data_root = workspace / "data" / "equity" / "usa" + export_lean_daily_data( + data_root=data_root, + prices_by_asset=prices_by_asset, + asset_to_ticker=asset_to_ticker, + manifest_path=data_root / "real_strategy_etfs_manifest.json", + signature_payload={ + "bundle_sha256": manifest["bundle_sha256"], + "price_decimals": 4, + }, + ) + + first = pd.Timestamp(cast(datetime, market["timestamp"].min())).date() + last = pd.Timestamp(cast(datetime, market["timestamp"].max())).date() + timedelta(days=7) + initial_cash = float(spec["backtest_config"]["cash"]["initial"]) + main_code = f"""from AlgorithmImports import * + +import csv +import json +import math +import time +from pathlib import Path + + +class RealStrategyEtfs(QCAlgorithm): + def initialize(self): + self.set_start_date({first.year}, {first.month}, {first.day}) + self.set_end_date({last.year}, {last.month}, {last.day}) + self.set_cash({initial_cash}) + self.set_brokerage_model(BrokerageName.DEFAULT, AccountType.MARGIN) + base = Path(__file__).resolve().parent + self._equity_path = base / "ml4t_daily_equity.csv" + self._events_path = base / "ml4t_order_events.csv" + self._runtime_path = base / "ml4t_runtime.json" + self._targets = {{}} + with (base / "targets.csv").open(newline="") as stream: + for row in csv.DictReader(stream): + self._targets.setdefault(row["timestamp"], {{}})[row["ticker"]] = float(row["weight"]) + self._symbols = {{}} + for ticker in (base / "symbols.csv").read_text().splitlines(): + if not ticker: + continue + security = self.add_equity(ticker, Resolution.DAILY) + security.set_fee_model(ConstantFeeModel(0)) + security.set_slippage_model(ConstantSlippageModel(0)) + self._symbols[ticker] = security.symbol + with self._equity_path.open("w", newline="") as stream: + csv.writer(stream).writerow(["timestamp", "equity", "cash", "holdings_value"]) + with self._events_path.open("w", newline="") as stream: + csv.writer(stream).writerow(["timestamp", "symbol", "status", "direction", "fill_quantity", "fill_price", "fee", "message", "order_id"]) + self._started = time.perf_counter() + + def on_data(self, data: Slice): + key = self.time.strftime("%Y-%m-%d") + requested = self._targets.get(key) + if requested is not None: + active = set(requested) + active.update(ticker for ticker, symbol in self._symbols.items() if self.portfolio[symbol].quantity != 0) + value = float(self.portfolio.total_portfolio_value) + current = {{ticker: float(self.portfolio[symbol].quantity) * float(self.securities[symbol].price) / value for ticker, symbol in self._symbols.items() if self.portfolio[symbol].quantity != 0}} + reductions = sorted(ticker for ticker in active if requested.get(ticker, 0.0) < current.get(ticker, 0.0)) + increases = sorted(active - set(reductions)) + for ticker in reductions + increases: + symbol = self._symbols[ticker] + if symbol not in data.bars: + continue + price = float(data.bars[symbol].close) + raw = (requested.get(ticker, 0.0) - current.get(ticker, 0.0)) * value / price + delta = int(math.copysign(math.floor(abs(raw) + 0.5), raw)) + if delta: + self.market_on_open_order(symbol, delta) + with self._equity_path.open("a", newline="") as stream: + csv.writer(stream).writerow([key, float(self.portfolio.total_portfolio_value), float(self.portfolio.cash), float(self.portfolio.total_holdings_value)]) + + def on_order_event(self, event: OrderEvent): + fee = float(event.order_fee.value.amount) if event.order_fee and event.order_fee.value else 0.0 + with self._events_path.open("a", newline="") as stream: + csv.writer(stream).writerow([self.time.strftime("%Y-%m-%d %H:%M:%S"), event.symbol.value if event.symbol else "", str(event.status), str(event.direction), float(event.fill_quantity), float(event.fill_price), fee, str(event.message or "").replace("\\n", " "), int(event.order_id)]) + + def on_end_of_algorithm(self): + self._runtime_path.write_text(json.dumps({{"engine_seconds": time.perf_counter() - self._started}})) +""" + (project / "main.py").write_text(main_code, encoding="utf-8") + return project, { + "manifest": manifest, + "spec": spec, + "ticker_to_asset": ticker_to_asset, + } + + +def run(bundle: Path) -> tuple[dict[str, Any], pl.DataFrame, pl.DataFrame, pl.DataFrame]: + project, inputs = _prepare_project(bundle) + targets = tomllib.loads((PROJECT_ROOT / "validation/framework_targets.toml").read_text()) + image = targets["framework"]["lean"]["artifact"] + output_dir = project / "backtests" / str(time.time_ns()) + run_lean_backtest( + lean_cmd=resolve_lean_command(), + cwd=PROJECT_ROOT, + project_dir=project, + lean_config=PROJECT_ROOT / "validation/lean/workspace/lean.json", + output_dir=output_dir, + image=image, + env=make_lean_env(), + ) + names = [ + "ml4t_daily_equity.csv", + "ml4t_order_events.csv", + "ml4t_runtime.json", + "ml4t_symbol_map.json", + ] + copy_lean_artifacts(project, output_dir, names) + _, final_value, fills_pd, equity_pd, events_pd = load_lean_artifacts(output_dir) + if fills_pd is None or equity_pd is None or events_pd is None: + raise RuntimeError("LEAN did not produce the required comparison surfaces") + fills_pd = fills_pd.rename(columns={"fill_price": "price", "fee": "commission"}) + fills = pl.from_pandas( + fills_pd[["timestamp", "asset", "side", "quantity", "price", "commission"]] + ) + equity = pl.from_pandas(equity_pd[["timestamp", "equity", "cash", "holdings_value"]]) + runtime = json.loads((output_dir / "ml4t_runtime.json").read_text(encoding="utf-8")) + rejected = events_pd[events_pd["status"].astype(str).str.lower().isin({"invalid", "canceled"})] + evidence = { + "schema_version": 1, + "case_study": inputs["manifest"]["case_study"], + "framework": "lean", + "comparison_profile": "lean", + "comparison_costs": "disabled", + "comparison_position_rules": "disabled", + "input_bundle_sha256": inputs["manifest"]["bundle_sha256"], + "engine_seconds": float(runtime["engine_seconds"]), + "orchestration_seconds_excluded": None, + "final_value": final_value, + "num_fills": fills.height, + "num_rejections": len(rejected), + } + rejected_frame = pl.from_pandas( + rejected[["timestamp", "asset", "fill_quantity", "message", "order_id"]] + ) + return evidence, fills, equity, rejected_frame + + +def write_evidence( + output: Path, + evidence: dict[str, Any], + fills: pl.DataFrame, + equity: pl.DataFrame, + rejections: pl.DataFrame, +) -> None: + output.parent.mkdir(parents=True, exist_ok=True) + staging = Path(tempfile.mkdtemp(prefix=f".{output.name}.", dir=output.parent)) + try: + fills.write_parquet(staging / "fills.parquet", compression="zstd", statistics=True) + equity.write_parquet(staging / "equity.parquet", compression="zstd", statistics=True) + rejections.write_parquet( + staging / "rejected_orders.parquet", compression="zstd", statistics=True + ) + evidence["files"] = { + path.name: {"sha256": _sha256(path), "bytes": path.stat().st_size} + for path in sorted(staging.iterdir()) + } + (staging / "manifest.json").write_text( + json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + if output.exists(): + raise FileExistsError(f"Evidence output already exists: {output}") + os.replace(staging, output) + finally: + if staging.exists(): + for path in staging.iterdir(): + path.unlink() + staging.rmdir() + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--bundle", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + evidence, fills, equity, rejections = run(args.bundle.resolve()) + write_evidence(args.output.resolve(), evidence, fills, equity, rejections) + print( + f"{evidence['case_study']}: {evidence['num_fills']:,} fills, " + f"{evidence['engine_seconds']:.6f}s engine time" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_lean_crypto.py b/validation/real_strategy_lean_crypto.py new file mode 100644 index 00000000..3176227d --- /dev/null +++ b/validation/real_strategy_lean_crypto.py @@ -0,0 +1,328 @@ +#!/usr/bin/env python3 +"""Run the frozen crypto-perpetual strategy with LEAN's Binance futures model.""" + +from __future__ import annotations + +import argparse +import csv +import hashlib +import json +import os +import tempfile +import time +import tomllib +import zipfile +from datetime import datetime, timedelta +from pathlib import Path +from typing import Any, cast + +import pandas as pd +import polars as pl + +from ml4t.backtest._validation.lean_runner import ( + copy_lean_artifacts, + load_lean_artifacts, + make_lean_env, + resolve_lean_command, + run_lean_backtest, +) + +PROJECT_ROOT = Path(__file__).resolve().parents[1] + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _symbol_properties(data_root: Path, symbols: list[str]) -> dict[str, dict[str, float]]: + path = data_root / "symbol-properties" / "symbol-properties-database.csv" + wanted = set(symbols) + found: dict[str, dict[str, float]] = {} + with path.open(newline="", encoding="utf-8-sig") as stream: + rows = csv.DictReader(line for line in stream if not line.startswith("#")) + for row in rows: + symbol = row["symbol"] + if row["market"] == "binance" and row["type"] == "cryptofuture" and symbol in wanted: + found[symbol] = { + "contract_multiplier": float(row["contract_multiplier"]), + "lot_size": float(row["lot_size"]), + "tick_size": float(row["minimum_price_variation"]), + } + missing = sorted(wanted - found.keys()) + if missing: + raise ValueError(f"LEAN symbol properties are missing: {missing}") + return found + + +def _export_data(bundle: Path, data_root: Path, symbols: list[str]) -> None: + market = pl.read_parquet(bundle / "market.parquet") + funding = pl.read_parquet(bundle / "funding.parquet") + hourly = data_root / "cryptofuture" / "binance" / "hour" + margin = data_root / "cryptofuture" / "binance" / "margin_interest" + hourly.mkdir(parents=True, exist_ok=True) + margin.mkdir(parents=True, exist_ok=True) + for symbol in symbols: + rows = market.filter(pl.col("symbol") == symbol).sort("timestamp").iter_rows(named=True) + trade_lines: list[str] = [] + quote_lines: list[str] = [] + for row in rows: + start = pd.Timestamp(row["timestamp"]) - timedelta(hours=1) + stamp = start.strftime("%Y%m%d %H:%M") + values = [float(row[name]) for name in ("open", "high", "low", "close")] + volume = max(1.0, float(row["volume"])) + o, h, low, close = values + trade_lines.append(f"{stamp},{o},{h},{low},{close},{volume}") + quote_lines.append( + f"{stamp},{o},{h},{low},{close},{volume},{o},{h},{low},{close},{volume}" + ) + ticker = symbol.lower() + for kind, lines in (("trade", trade_lines), ("quote", quote_lines)): + with zipfile.ZipFile( + hourly / f"{ticker}_{kind}.zip", "w", compression=zipfile.ZIP_DEFLATED + ) as archive: + archive.writestr(f"{ticker}.csv", "\n".join(lines)) + funding_rows = funding.filter(pl.col("symbol") == symbol).sort("timestamp") + margin_lines = [ + f"{pd.Timestamp(row['timestamp']).strftime('%Y%m%d %H:%M:%S')},{float(row['funding_rate']):.12f}" + for row in funding_rows.iter_rows(named=True) + ] + (margin / f"{ticker}.csv").write_text("\n".join(margin_lines) + "\n", encoding="utf-8") + + +def _prepare_project(bundle: Path) -> tuple[Path, dict[str, Any]]: + manifest = json.loads((bundle / "manifest.json").read_text(encoding="utf-8")) + if manifest["case_study"] != "crypto_perps_funding": + raise ValueError("This adapter accepts the crypto perpetual-funding workload") + spec = json.loads((bundle / "spec.json").read_text(encoding="utf-8")) + market = pl.read_parquet(bundle / "market.parquet") + targets = pl.read_parquet(bundle / "targets.parquet") + symbols = market["symbol"].unique().sort().to_list() + workspace = PROJECT_ROOT / "validation" / "lean" / "workspace" + project = workspace / "real_strategy_crypto_perps_funding" + project.mkdir(parents=True, exist_ok=True) + (project / "backtests").mkdir(exist_ok=True) + for name in ( + "ml4t_daily_equity.csv", + "ml4t_funding_observed.csv", + "ml4t_order_events.csv", + "ml4t_runtime.json", + ): + path = project / name + if path.exists(): + path.unlink() + (project / "config.json").write_text( + json.dumps( + { + "algorithm-language": "Python", + "parameters": {}, + "description": "Frozen ML4T crypto-perpetual real-strategy parity workload", + }, + indent=2, + ) + + "\n", + encoding="utf-8", + ) + (project / "symbols.csv").write_text("\n".join(symbols) + "\n", encoding="utf-8") + (project / "ml4t_symbol_map.json").write_text( + json.dumps({symbol: symbol for symbol in symbols}, indent=2, sort_keys=True) + "\n", + encoding="utf-8", + ) + targets.with_columns(pl.col("timestamp").dt.strftime("%Y-%m-%d %H:%M:%S")).write_csv( + project / "targets.csv" + ) + _export_data(bundle, workspace / "data", symbols) + properties = _symbol_properties(workspace / "data", symbols) + (project / "symbol_properties.json").write_text( + json.dumps(properties, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + + first = pd.Timestamp(cast(datetime, market["timestamp"].min())).date() + last = pd.Timestamp(cast(datetime, market["timestamp"].max())).date() + timedelta(days=1) + initial_cash = float(spec["backtest_config"]["cash"]["initial"]) + main_code = f"""from AlgorithmImports import * + +import csv +import json +import math +import time +from pathlib import Path + + +class RealStrategyCryptoPerpsFunding(QCAlgorithm): + def initialize(self): + self.set_start_date({first.year}, {first.month}, {first.day}) + self.set_end_date({last.year}, {last.month}, {last.day}) + self.set_time_zone(TimeZones.UTC) + self.set_brokerage_model(BrokerageName.BINANCE_FUTURES, AccountType.MARGIN) + self.set_account_currency("USDT", {initial_cash}) + base = Path(__file__).resolve().parent + self._equity_path = base / "ml4t_daily_equity.csv" + self._funding_path = base / "ml4t_funding_observed.csv" + self._events_path = base / "ml4t_order_events.csv" + self._runtime_path = base / "ml4t_runtime.json" + self._targets = {{}} + with (base / "targets.csv").open(newline="") as stream: + for row in csv.DictReader(stream): + self._targets.setdefault(row["timestamp"], {{}})[row["symbol"]] = float(row["weight"]) + self._properties = json.loads((base / "symbol_properties.json").read_text()) + self._symbols = {{}} + for ticker in (base / "symbols.csv").read_text().splitlines(): + if not ticker: + continue + security = self.add_crypto_future(ticker, Resolution.HOUR, fill_forward=False, market=Market.BINANCE) + security.set_fee_model(ConstantFeeModel(0)) + security.set_slippage_model(ConstantSlippageModel(0)) + self._symbols[ticker] = security.symbol + with self._equity_path.open("w", newline="") as stream: + csv.writer(stream).writerow(["timestamp", "equity", "cash", "holdings_value"]) + with self._events_path.open("w", newline="") as stream: + csv.writer(stream).writerow(["timestamp", "symbol", "status", "direction", "fill_quantity", "fill_price", "fee", "message", "order_id"]) + with self._funding_path.open("w", newline="") as stream: + csv.writer(stream).writerow(["timestamp", "symbol", "funding_rate"]) + self._started = time.perf_counter() + + def on_data(self, data: Slice): + key = self.time.strftime("%Y-%m-%d %H:%M:%S") + with self._funding_path.open("a", newline="") as stream: + writer = csv.writer(stream) + for symbol, rate in data.margin_interest_rates.items(): + writer.writerow([key, symbol.value, float(rate.interest_rate)]) + requested = self._targets.get(key) + if requested is not None: + active = set(requested) + active.update(ticker for ticker, symbol in self._symbols.items() if self.portfolio[symbol].quantity != 0) + value = float(self.portfolio.total_portfolio_value) + current = {{ticker: float(self.portfolio[symbol].quantity) * float(self.securities[symbol].price) / value for ticker, symbol in self._symbols.items() if self.portfolio[symbol].quantity != 0}} + reductions = sorted(ticker for ticker in active if requested.get(ticker, 0.0) < current.get(ticker, 0.0)) + increases = sorted(active - set(reductions)) + for ticker in reductions + increases: + symbol = self._symbols[ticker] + if symbol not in data.bars: + continue + price = float(data.bars[symbol].close) + lot = float(self._properties[ticker]["lot_size"]) + raw = (requested.get(ticker, 0.0) - current.get(ticker, 0.0)) * value / price + delta = math.copysign(math.floor(abs(raw) / lot + 0.5) * lot, raw) + if abs(delta) >= lot: + self.market_order(symbol, delta) + with self._equity_path.open("a", newline="") as stream: + csv.writer(stream).writerow([key, float(self.portfolio.total_portfolio_value), float(self.portfolio.cash_book["USDT"].amount), float(self.portfolio.total_holdings_value)]) + + def on_order_event(self, event: OrderEvent): + fee = float(event.order_fee.value.amount) if event.order_fee and event.order_fee.value else 0.0 + with self._events_path.open("a", newline="") as stream: + csv.writer(stream).writerow([self.time.strftime("%Y-%m-%d %H:%M:%S"), event.symbol.value if event.symbol else "", str(event.status), str(event.direction), float(event.fill_quantity), float(event.fill_price), fee, str(event.message or "").replace("\\n", " "), int(event.order_id)]) + + def on_end_of_algorithm(self): + self._runtime_path.write_text(json.dumps({{"engine_seconds": time.perf_counter() - self._started}})) +""" + (project / "main.py").write_text(main_code, encoding="utf-8") + return project, {"manifest": manifest, "properties": properties} + + +def run(bundle: Path) -> tuple[dict[str, Any], pl.DataFrame, pl.DataFrame, pl.DataFrame]: + project, inputs = _prepare_project(bundle) + targets = tomllib.loads((PROJECT_ROOT / "validation/framework_targets.toml").read_text()) + output_dir = project / "backtests" / str(time.time_ns()) + run_lean_backtest( + lean_cmd=resolve_lean_command(), + cwd=PROJECT_ROOT, + project_dir=project, + lean_config=PROJECT_ROOT / "validation/lean/workspace/lean.json", + output_dir=output_dir, + image=targets["framework"]["lean"]["artifact"], + env=make_lean_env(), + ) + copy_lean_artifacts( + project, + output_dir, + [ + "ml4t_daily_equity.csv", + "ml4t_funding_observed.csv", + "ml4t_order_events.csv", + "ml4t_runtime.json", + "ml4t_symbol_map.json", + ], + ) + _, final_value, fills_pd, equity_pd, events_pd = load_lean_artifacts(output_dir) + if fills_pd is None or equity_pd is None or events_pd is None: + raise RuntimeError("LEAN did not produce the required comparison surfaces") + fills_pd = fills_pd.rename(columns={"fill_price": "price", "fee": "commission"}) + fills = pl.from_pandas( + fills_pd[["timestamp", "asset", "side", "quantity", "price", "commission"]] + ) + equity = pl.from_pandas(equity_pd[["timestamp", "equity", "cash", "holdings_value"]]) + runtime = json.loads((output_dir / "ml4t_runtime.json").read_text(encoding="utf-8")) + rejected = events_pd[events_pd["status"].astype(str).str.lower().isin({"invalid", "canceled"})] + evidence = { + "schema_version": 1, + "case_study": inputs["manifest"]["case_study"], + "framework": "lean", + "comparison_profile": "lean_crypto_future", + "comparison_costs": "disabled_except_native_funding", + "comparison_position_rules": "disabled", + "input_bundle_sha256": inputs["manifest"]["bundle_sha256"], + "symbol_properties_sha256": _sha256(project / "symbol_properties.json"), + "engine_seconds": float(runtime["engine_seconds"]), + "final_value": final_value, + "num_fills": fills.height, + "num_rejections": len(rejected), + } + rejected_frame = pl.from_pandas( + rejected[["timestamp", "asset", "fill_quantity", "message", "order_id"]] + ) + return evidence, fills, equity, rejected_frame + + +def write_evidence( + output: Path, + evidence: dict[str, Any], + fills: pl.DataFrame, + equity: pl.DataFrame, + rejections: pl.DataFrame, +) -> None: + output.parent.mkdir(parents=True, exist_ok=True) + staging = Path(tempfile.mkdtemp(prefix=f".{output.name}.", dir=output.parent)) + try: + fills.write_parquet(staging / "fills.parquet", compression="zstd", statistics=True) + equity.write_parquet(staging / "equity.parquet", compression="zstd", statistics=True) + rejections.write_parquet( + staging / "rejected_orders.parquet", compression="zstd", statistics=True + ) + evidence["files"] = { + path.name: {"sha256": _sha256(path), "bytes": path.stat().st_size} + for path in sorted(staging.iterdir()) + } + (staging / "manifest.json").write_text( + json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + if output.exists(): + raise FileExistsError(f"Evidence output already exists: {output}") + os.replace(staging, output) + finally: + if staging.exists(): + for path in staging.iterdir(): + path.unlink() + staging.rmdir() + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--bundle", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + evidence, fills, equity, rejections = run(args.bundle.resolve()) + write_evidence(args.output.resolve(), evidence, fills, equity, rejections) + print( + f"{evidence['case_study']}: {evidence['num_fills']:,} fills, " + f"{evidence['engine_seconds']:.6f}s engine time" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_runner.py b/validation/real_strategy_runner.py new file mode 100644 index 00000000..784ed760 --- /dev/null +++ b/validation/real_strategy_runner.py @@ -0,0 +1,475 @@ +#!/usr/bin/env python3 +"""Execute a frozen real-strategy input bundle with ml4t.backtest.""" + +from __future__ import annotations + +import argparse +import copy +import hashlib +import json +import math +import os +import tempfile +import time +from collections.abc import Mapping +from datetime import UTC, datetime, timedelta +from functools import wraps +from pathlib import Path +from typing import Any + +import polars as pl + +from ml4t.backtest import ( + AssetClass, + BacktestConfig, + ContractSpec, + DataFeed, + Engine, + RebalanceConfig, + Strategy, + TargetWeightExecutor, +) +from ml4t.backtest.profiles import get_profile_config +from ml4t.backtest.risk import RuleChain, StopLoss, TimeExit, TrailingStop + +SCHEMA_VERSION = 1 + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _as_utc(value: datetime) -> datetime: + return value.replace(tzinfo=UTC) if value.tzinfo is None else value.astimezone(UTC) + + +class FundingSettlementLedger: + """Apply frozen perpetual-futures funding during engine mark updates.""" + + def __init__(self, funding: pl.DataFrame, *, skip_first_after_entry: bool = False) -> None: + required = {"symbol", "timestamp", "funding_rate"} + missing = required - set(funding.columns) + if missing: + raise ValueError(f"Funding input lacks columns: {sorted(missing)}") + selected = funding.select("symbol", "timestamp", "funding_rate") + if selected.null_count().row(0) != (0, 0, 0): + raise ValueError("Funding input contains null keys or rates") + if selected.n_unique(["symbol", "timestamp"]) != selected.height: + raise ValueError("Funding input contains duplicate settlement keys") + self._rates: dict[datetime, dict[str, float]] = {} + for row in selected.sort("timestamp", "symbol").iter_rows(named=True): + rate = float(row["funding_rate"]) + if not math.isfinite(rate): + raise ValueError("Funding rates must be finite") + timestamp = _as_utc(row["timestamp"]) + self._rates.setdefault(timestamp, {})[str(row["symbol"])] = rate + self._rate_count = selected.height + self._symbols = sorted(selected["symbol"].unique().to_list()) + self._settled_timestamps: set[datetime] = set() + self._skip_first_after_entry = skip_first_after_entry + self._next_application: dict[str, datetime | None] = {} + self.funding_pnl = 0.0 + self.funding_events = 0 + self.funding_settlements = 0 + + def install(self, broker: Any) -> None: + original_update_time = broker._update_time + + @wraps(original_update_time) + def update_time_with_funding(timestamp, *args, **kwargs): + result = original_update_time(timestamp, *args, **kwargs) + self.settle(timestamp, broker) + return result + + broker._update_time = update_time_with_funding + + def settle(self, timestamp: datetime, broker: Any) -> None: + normalized = _as_utc(timestamp) + rates = self._rates.get(normalized) + if rates is not None and normalized not in self._settled_timestamps: + self._settled_timestamps.add(normalized) + self.funding_settlements += len(rates) + event_cash = 0.0 + symbols = self._symbols if self._skip_first_after_entry else list(rates or ()) + for symbol in symbols: + position = broker.positions.get(symbol) + if position is None or float(position.quantity) == 0.0: + self._next_application[symbol] = None + continue + if self._skip_first_after_entry and self._next_application.get(symbol) is None: + self._next_application[symbol] = self._next_funding_time(normalized) + continue + if rates is None or symbol not in rates: + continue + if self._skip_first_after_entry: + next_application = self._next_application[symbol] + if next_application is None or normalized < next_application: + continue + while next_application <= normalized: + next_application += timedelta(hours=8) + self._next_application[symbol] = next_application + rate = rates[symbol] + mark = broker.get_mark_price(symbol, quantity=position.quantity) + if mark is None: + raise RuntimeError(f"Funding settlement lacks a mark for {symbol!r}") + event_cash -= ( + float(position.quantity) + * float(mark) + * float(getattr(position, "multiplier", 1.0)) + * rate + ) + if event_cash: + broker.cash = float(broker.cash) + event_cash + self.funding_pnl += event_cash + self.funding_events += 1 + + @staticmethod + def _next_funding_time(current: datetime) -> datetime: + if current.hour >= 16: + return (current + timedelta(days=1)).replace(hour=0, minute=0, second=0, microsecond=0) + if current.hour >= 8: + return current.replace(hour=16, minute=0, second=0, microsecond=0) + return current.replace(hour=8, minute=0, second=0, microsecond=0) + + def metrics(self) -> dict[str, int | float]: + if self.funding_settlements != self._rate_count: + raise RuntimeError( + "Funding coverage is incomplete: " + f"{self.funding_settlements}/{self._rate_count} settlements" + ) + return { + "funding_pnl": self.funding_pnl, + "funding_events": self.funding_events, + "funding_settlements": self.funding_settlements, + } + + +def _position_rules(risk: Mapping[str, Any]) -> object | None: + rules = [] + for rule in risk.get("position_rules", []): + rule_type = rule["type"] + if rule_type == "stop_loss": + rules.append(StopLoss(pct=float(rule["threshold"]))) + elif rule_type == "trailing_stop": + rules.append(TrailingStop(pct=float(rule["threshold"]))) + elif rule_type == "time_exit": + rules.append(TimeExit(max_bars=int(rule["bars"]))) + else: + raise ValueError(f"Unsupported frozen position rule: {rule_type}") + if len(rules) == 1: + return rules[0] + return RuleChain(rules) if rules else None + + +def _contract_specs(path: Path) -> dict[str, ContractSpec] | None: + if not path.is_file(): + return None + payload = json.loads(path.read_text(encoding="utf-8")) + return { + symbol: ContractSpec( + symbol=symbol, + asset_class=AssetClass(item["asset_class"]), + multiplier=float(item["multiplier"]), + tick_size=float(item["tick_size"]), + margin=None if item["margin"] is None else float(item["margin"]), + margin_pct=( + None + if item["margin_pct"] is None + else (float(item["margin_pct"][0]), float(item["margin_pct"][1])) + ), + currency=str(item["currency"]), + ) + for symbol, item in payload.items() + } + + +def _target_map(targets: pl.DataFrame) -> dict[datetime, dict[str, float]]: + duplicates = targets.select(pl.struct("timestamp", "symbol").is_duplicated().sum()).item() + if duplicates: + raise ValueError(f"Targets contain {duplicates} duplicate timestamp-symbol rows") + result: dict[datetime, dict[str, float]] = {} + for row in targets.sort("timestamp", "symbol").iter_rows(named=True): + result.setdefault(row["timestamp"], {})[str(row["symbol"])] = float(row["weight"]) + return result + + +def load_bundle(bundle: Path) -> dict[str, Any]: + """Load and verify one content-addressed bundle before engine timing begins.""" + manifest = json.loads((bundle / "manifest.json").read_text(encoding="utf-8")) + for name, identity in manifest["files"].items(): + path = bundle / name + if not path.is_file() or _sha256(path) != identity["sha256"]: + raise ValueError(f"Bundle file identity mismatch: {name}") + spec = json.loads((bundle / "spec.json").read_text(encoding="utf-8")) + return { + "manifest": manifest, + "spec": spec, + "market": pl.read_parquet(bundle / "market.parquet"), + "targets": pl.read_parquet(bundle / "targets.parquet"), + "funding": ( + pl.read_parquet(bundle / "funding.parquet") + if (bundle / "funding.parquet").is_file() + else None + ), + "contracts": _contract_specs(bundle / "contracts.json"), + } + + +def _comparison_config(spec: Mapping[str, Any], profile: str) -> BacktestConfig: + source = spec["backtest_config"] + profile_data = ( + copy.deepcopy(source) if profile == "lean_crypto_future" else get_profile_config(profile) + ) + profile_data["account"]["allow_short_selling"] = source["account"]["allow_short_selling"] + if profile not in {"lean", "lean_crypto_future"}: + profile_data["account"]["allow_leverage"] = source["account"]["allow_leverage"] + else: + profile_data["account"]["allow_leverage"] = True + if profile == "lean_crypto_future": + profile_data["account"]["initial_margin"] = 0.04 + profile_data["account"]["long_maintenance_margin"] = 0.02 + profile_data["account"]["short_maintenance_margin"] = 0.02 + profile_data["cash"]["initial"] = source["cash"]["initial"] + profile_data["calendar"] = source["calendar"] + profile_data["feed"] = source["feed"] + profile_data["commission"] = { + "model": "none", + "rate": 0.0, + "per_share": 0.0, + "per_trade": 0.0, + "minimum": 0.0, + } + profile_data["slippage"] = {"model": "none", "rate": 0.0} + profile_data["orders"]["rebalance_headroom_pct"] = 1.0 + profile_data["metadata"] = { + **source.get("metadata", {}), + "comparison_profile": profile, + "comparison_costs": "disabled", + "comparison_position_rules": "disabled", + } + return BacktestConfig.from_dict(profile_data, preset_name=profile) + + +def execute_bundle( + inputs: Mapping[str, Any], + *, + comparison_profile: str | None = None, + price_decimals: int | None = None, + execution_specs: Mapping[str, Mapping[str, float]] | None = None, +) -> tuple[Any, float, dict[str, int | float]]: + """Run the engine once and return its native result and engine-only runtime.""" + spec = inputs["spec"] + config = ( + _comparison_config(spec, comparison_profile) + if comparison_profile is not None + else BacktestConfig.from_dict(spec["backtest_config"]) + ) + targets = _target_map(inputs["targets"]) + rebalance = spec["strategy"]["rebalance"] + rules = ( + None + if comparison_profile is not None + else _position_rules(spec["strategy"].get("risk", {})) + ) + funding = inputs["funding"] + funding_ledger = ( + FundingSettlementLedger( + funding, + skip_first_after_entry=comparison_profile == "lean_crypto_future", + ) + if funding is not None + else None + ) + + class FrozenTargetStrategy(Strategy): + def __init__(self) -> None: + self._rules_set = False + self._executor = TargetWeightExecutor( + RebalanceConfig( + min_trade_value=( + 0.0 + if comparison_profile is not None + else float(rebalance["min_trade_value"]) + ), + min_weight_change=( + 0.0 + if comparison_profile is not None + else float(rebalance["min_weight_change"]) + ), + allow_fractional=None, + allow_short=bool(config.allow_short_selling), + rebalance_mode=config.rebalance_mode, + share_rounding=config.share_rounding, + ) + ) + + def on_start(self, broker) -> None: + if funding_ledger is not None: + funding_ledger.install(broker) + + def on_data(self, timestamp, data, context, broker) -> None: + if not self._rules_set: + if rules is not None: + broker.set_position_rules(rules) + self._rules_set = True + target = targets.get(timestamp) + if target is not None: + available = {symbol: weight for symbol, weight in target.items() if symbol in data} + if available: + if execution_specs is None: + self._executor.execute(available, data, broker) + else: + value = broker.equity() + current = { + symbol: ( + float(position.quantity) * float(data[symbol]["close"]) / value + ) + for symbol, position in broker.positions.items() + if symbol in data and float(position.quantity) != 0.0 + } + active = set(available) | set(current) + reductions = sorted( + symbol + for symbol in active + if available.get(symbol, 0.0) < current.get(symbol, 0.0) + ) + increases = sorted(active - set(reductions)) + for symbol in reductions + increases: + if symbol not in data: + continue + price = float(data[symbol]["close"]) + lot = float(execution_specs[symbol]["lot_size"]) + raw = ( + (available.get(symbol, 0.0) - current.get(symbol, 0.0)) + * value + / price + ) + quantity = math.copysign( + math.floor(abs(raw) / lot + 0.5) * lot, + raw, + ) + if abs(quantity) >= lot: + broker.submit_order(symbol, quantity) + + market = inputs["market"] + if price_decimals is not None: + market = market.with_columns( + pl.col(column).round(price_decimals) + for column in ("open", "high", "low", "close") + if column in market.columns + ) + feed = DataFeed(prices_df=market, feed_spec=config.feed_spec) + engine = Engine.from_config( + feed, + FrozenTargetStrategy(), + config, + contract_specs=inputs["contracts"], + ) + started = time.perf_counter() + result = engine.run() + engine_seconds = time.perf_counter() - started + funding_metrics = funding_ledger.metrics() if funding_ledger is not None else {} + return result, engine_seconds, funding_metrics + + +def _write_evidence( + *, + output: Path, + inputs: Mapping[str, Any], + result: Any, + engine_seconds: float, + funding_metrics: Mapping[str, int | float], + comparison_profile: str | None, + price_decimals: int | None, + execution_specs_sha256: str | None, +) -> None: + output.parent.mkdir(parents=True, exist_ok=True) + staging = Path(tempfile.mkdtemp(prefix=f".{output.name}.", dir=output.parent)) + try: + frames = { + "fills.parquet": result.to_fills_dataframe(), + "rejected_orders.parquet": result.to_rejected_orders_dataframe(), + "trades.parquet": result.to_trades_dataframe(), + "equity.parquet": result.to_equity_dataframe(), + "portfolio_state.parquet": result.to_portfolio_state_dataframe(), + } + for name, frame in frames.items(): + frame.write_parquet(staging / name, compression="zstd", statistics=True) + manifest = { + "schema_version": SCHEMA_VERSION, + "case_study": inputs["manifest"]["case_study"], + "framework": "ml4t_backtest", + "comparison_profile": comparison_profile, + "price_decimals": price_decimals, + "execution_specs_sha256": execution_specs_sha256, + "input_bundle_sha256": inputs["manifest"]["bundle_sha256"], + "engine_seconds": engine_seconds, + "final_value": float(result.metrics["final_value"]), + "num_fills": len(result.fills), + "num_rejections": len(result.rejected_orders), + "num_trades": len(result.trades), + "funding": dict(funding_metrics), + "files": {}, + } + manifest["files"] = { + path.name: {"sha256": _sha256(path), "bytes": path.stat().st_size} + for path in sorted(staging.iterdir()) + } + (staging / "manifest.json").write_text( + json.dumps(manifest, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + if output.exists(): + raise FileExistsError(f"Evidence output already exists: {output}") + os.replace(staging, output) + finally: + if staging.exists(): + for path in staging.iterdir(): + path.unlink() + staging.rmdir() + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--bundle", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--comparison-profile") + parser.add_argument("--price-decimals", type=int) + parser.add_argument("--execution-specs", type=Path) + args = parser.parse_args() + inputs = load_bundle(args.bundle.resolve()) + execution_specs = ( + json.loads(args.execution_specs.read_text(encoding="utf-8")) + if args.execution_specs is not None + else None + ) + result, engine_seconds, funding_metrics = execute_bundle( + inputs, + comparison_profile=args.comparison_profile, + price_decimals=args.price_decimals, + execution_specs=execution_specs, + ) + _write_evidence( + output=args.output.resolve(), + inputs=inputs, + result=result, + engine_seconds=engine_seconds, + funding_metrics=funding_metrics, + comparison_profile=args.comparison_profile, + price_decimals=args.price_decimals, + execution_specs_sha256=( + _sha256(args.execution_specs) if args.execution_specs is not None else None + ), + ) + print( + f"{inputs['manifest']['case_study']}: {len(result.fills):,} fills, " + f"{len(result.trades):,} trades, {engine_seconds:.6f}s engine time" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_vectorbt.py b/validation/real_strategy_vectorbt.py new file mode 100644 index 00000000..89eb5056 --- /dev/null +++ b/validation/real_strategy_vectorbt.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python3 +"""Run a frozen real target-allocation workload with VectorBT.""" + +from __future__ import annotations + +import argparse +import hashlib +import importlib +import json +import os +import tempfile +import time +from pathlib import Path +from typing import Any + +import numpy as np +import pandas as pd +import polars as pl + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _wide(frame: pl.DataFrame, value: str) -> pd.DataFrame: + pivoted = frame.select("timestamp", "symbol", value).pivot( + on="symbol", index="timestamp", values=value + ) + result = pd.DataFrame(pivoted.sort("timestamp").to_dict(as_series=False)).set_index("timestamp") + result.index = pd.DatetimeIndex(result.index) + return result + + +def run(bundle: Path, framework: str) -> tuple[dict[str, Any], pl.DataFrame, pl.DataFrame]: + package = "vectorbtpro" if framework == "vectorbt_pro" else "vectorbt" + vbt = importlib.import_module(package) + manifest = json.loads((bundle / "manifest.json").read_text(encoding="utf-8")) + case_study = manifest["case_study"] + if case_study == "cme_futures" and framework != "vectorbt_pro": + raise ValueError("VectorBT OSS lacks the contract multiplier used by this workload") + if case_study not in {"etfs", "cme_futures"}: + raise ValueError("This adapter accepts the ETF and CME futures workloads") + spec = json.loads((bundle / "spec.json").read_text(encoding="utf-8")) + close = _wide(pl.read_parquet(bundle / "market.parquet"), "close") + weights = _wide(pl.read_parquet(bundle / "targets.parquet"), "weight").reindex( + index=close.index, columns=close.columns + ) + rebalance_rows = weights.notna().any(axis=1) + weights.loc[rebalance_rows] = weights.loc[rebalance_rows].fillna(0.0) + kwargs: dict[str, Any] = { + "close": close, + "size": weights, + "size_type": "targetpercent", + "init_cash": float(spec["backtest_config"]["cash"]["initial"]), + "fees": 0.0, + "slippage": 0.0, + "cash_sharing": True, + "call_seq": "auto", + } + if framework == "vectorbt_oss": + kwargs["lock_cash"] = True + elif case_study == "cme_futures": + contracts = json.loads((bundle / "contracts.json").read_text(encoding="utf-8")) + kwargs["multiplier"] = np.asarray( + [float(contracts[symbol]["multiplier"]) for symbol in close.columns] + ) + kwargs["leverage"] = 100.0 + kwargs["leverage_mode"] = "eager" + started = time.perf_counter() + portfolio = vbt.Portfolio.from_orders(**kwargs) + engine_seconds = time.perf_counter() - started + + orders = portfolio.orders.records_readable + fill_rows = [ + { + "timestamp": row.get("Timestamp", row.get("Index")), + "asset": row.get("Column"), + "side": "buy" if row.get("Side") == "Buy" else "sell", + "quantity": abs(float(row.get("Size", 0.0))), + "price": float(row.get("Price", 0.0)), + "commission": float(row.get("Fees", 0.0)), + } + for _, row in orders.iterrows() + ] + value_attr = portfolio.value + value = value_attr() if callable(value_attr) else value_attr + if isinstance(value, pd.DataFrame): + value = value.iloc[:, 0] if value.shape[1] == 1 else value.sum(axis=1) + equity = pl.DataFrame( + { + "timestamp": pl.Series( + pd.DatetimeIndex(value.index).to_pydatetime().tolist(), dtype=pl.Datetime("us") + ), + "equity": value.to_numpy(), + } + ) + fills = pl.DataFrame(fill_rows) + evidence = { + "schema_version": 1, + "case_study": manifest["case_study"], + "framework": framework, + "comparison_profile": ( + "vectorbt_strict" if framework == "vectorbt_pro" else "vectorbt_oss_strict" + ), + "comparison_costs": "disabled", + "comparison_position_rules": "disabled", + "input_bundle_sha256": manifest["bundle_sha256"], + "engine_seconds": engine_seconds, + "final_value": float(value.iloc[-1]), + "num_fills": fills.height, + } + return evidence, fills, equity + + +def write_evidence( + output: Path, evidence: dict[str, Any], fills: pl.DataFrame, equity: pl.DataFrame +) -> None: + output.parent.mkdir(parents=True, exist_ok=True) + staging = Path(tempfile.mkdtemp(prefix=f".{output.name}.", dir=output.parent)) + try: + fills.write_parquet(staging / "fills.parquet", compression="zstd", statistics=True) + equity.write_parquet(staging / "equity.parquet", compression="zstd", statistics=True) + evidence["files"] = { + path.name: {"sha256": _sha256(path), "bytes": path.stat().st_size} + for path in sorted(staging.iterdir()) + } + (staging / "manifest.json").write_text( + json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + if output.exists(): + raise FileExistsError(f"Evidence output already exists: {output}") + os.replace(staging, output) + finally: + if staging.exists(): + for path in staging.iterdir(): + path.unlink() + staging.rmdir() + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--bundle", type=Path, required=True) + parser.add_argument("--framework", choices=("vectorbt_pro", "vectorbt_oss"), required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + evidence, fills, equity = run(args.bundle.resolve(), args.framework) + write_evidence(args.output.resolve(), evidence, fills, equity) + print( + f"{evidence['case_study']}: {evidence['num_fills']:,} fills, " + f"{evidence['engine_seconds']:.6f}s engine time" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/real_strategy_zipline.py b/validation/real_strategy_zipline.py new file mode 100644 index 00000000..c7de42e0 --- /dev/null +++ b/validation/real_strategy_zipline.py @@ -0,0 +1,292 @@ +#!/usr/bin/env python3 +"""Run a frozen real target-allocation workload with Zipline Reloaded.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import math +import os +import tempfile +import time +from pathlib import Path +from typing import Any + +import pandas as pd +import polars as pl +from zipline import run_algorithm +from zipline.api import ( + get_datetime, + order, + order_target, + set_commission, + set_slippage, + sid, +) +from zipline.data.bundles import ingest, register +from zipline.finance.commission import NoCommission +from zipline.finance.slippage import SlippageModel +from zipline.utils.calendar_utils import get_calendar + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _targets(frame: pl.DataFrame) -> dict[pd.Timestamp, dict[str, float]]: + result: dict[pd.Timestamp, dict[str, float]] = {} + for row in frame.sort("timestamp", "symbol").iter_rows(named=True): + timestamp = pd.Timestamp(row["timestamp"]).normalize() + result.setdefault(timestamp, {})[str(row["symbol"])] = float(row["weight"]) + return result + + +def _flatten(results: pd.DataFrame, column: str) -> pd.DataFrame: + records: list[dict[str, Any]] = [] + if column not in results.columns: + return pd.DataFrame() + for timestamp, payload in results[column].items(): + if not isinstance(payload, list): + continue + for item in payload: + record = dict(item) if isinstance(item, dict) else item.to_dict() + record["timestamp"] = timestamp + records.append(record) + return pd.DataFrame(records) + + +def run(bundle: Path) -> tuple[dict[str, Any], pl.DataFrame, pl.DataFrame]: + manifest = json.loads((bundle / "manifest.json").read_text(encoding="utf-8")) + if manifest["case_study"] != "etfs": + raise ValueError("This adapter accepts the ETF equity workload") + spec = json.loads((bundle / "spec.json").read_text(encoding="utf-8")) + market = pl.read_parquet(bundle / "market.parquet").with_columns( + pl.col(column).round(3) for column in ("open", "high", "low", "close") + ) + target_lookup = _targets(pl.read_parquet(bundle / "targets.parquet")) + symbols = market["symbol"].unique().sort().to_list() + calendar_name = "XNYS" + calendar = get_calendar(calendar_name) + first_date = pd.Timestamp(market["timestamp"].min()).normalize() + last_date = pd.Timestamp(market["timestamp"].max()).normalize() + sessions = pd.DatetimeIndex(calendar.sessions_in_range(first_date, last_date)).tz_localize(None) + bundle_name = f"real_etfs_v2_{manifest['bundle_sha256'][:16]}" + + def ingest_bundle( + _environ, + asset_db_writer, + _minute_bar_writer, + daily_bar_writer, + adjustment_writer, + _calendar, + _start_session, + _end_session, + _cache, + show_progress, + _output_dir, + ) -> None: + metadata_rows = [] + bar_data = [] + for asset_sid, symbol in enumerate(symbols): + selected = market.filter(pl.col("symbol") == symbol).select( + "timestamp", "open", "high", "low", "close", "volume" + ) + frame = pd.DataFrame(selected.to_dict(as_series=False)).set_index("timestamp") + frame.index = pd.DatetimeIndex(frame.index).tz_localize(None) + asset_sessions = sessions[ + (sessions >= frame.index.min()) & (sessions <= frame.index.max()) + ] + observed_sessions = frame.index + frame = frame.reindex(asset_sessions).ffill() + frame.loc[~frame.index.isin(observed_sessions), "volume"] = 0 + metadata_rows.append( + { + "sid": asset_sid, + "symbol": symbol, + "asset_name": symbol, + "start_date": frame.index.min(), + "end_date": frame.index.max(), + "first_traded": frame.index.min(), + "exchange": "NYSE", + } + ) + bar_data.append((asset_sid, frame)) + metadata = pd.DataFrame(metadata_rows).set_index("sid") + asset_db_writer.write(equities=metadata) + daily_bar_writer.write(bar_data, show_progress=show_progress) + adjustment_writer.write() + + zipline_root = Path(os.environ.get("ZIPLINE_ROOT", Path.home() / ".zipline")) + bundle_dir = zipline_root / "data" / bundle_name + register( + bundle_name, + ingest_bundle, + calendar_name=calendar_name, + start_session=calendar.sessions_in_range(first_date, last_date)[0], + end_session=calendar.sessions_in_range(first_date, last_date)[-1], + ) + setup_seconds = 0.0 + if not bundle_dir.exists() or not any(bundle_dir.iterdir()): + started = time.perf_counter() + ingest(bundle_name, show_progress=False) + setup_seconds = time.perf_counter() - started + + class OpenPriceSlippage(SlippageModel): + @staticmethod + def process_order(data, pending_order): + return float(data.current(pending_order.asset, "open")), pending_order.amount + + state = {"targets": target_lookup, "symbols": symbols} + + def initialize(context) -> None: + context.state = state + context.assets = {symbol: sid(index) for index, symbol in enumerate(symbols)} + context.names = {asset: symbol for symbol, asset in context.assets.items()} + set_commission(us_equities=NoCommission()) + set_slippage(us_equities=OpenPriceSlippage()) + + def handle_data(context, data) -> None: + timestamp = get_datetime() + timestamp = ( + timestamp.tz_convert(None).normalize() if timestamp.tz else timestamp.normalize() + ) + requested = context.state["targets"].get(timestamp) + if requested is None: + return + available = { + symbol: weight + for symbol, weight in requested.items() + if data.can_trade(context.assets[symbol]) + } + if not available: + return + value = float(context.portfolio.portfolio_value) + current = { + context.names[asset]: float(position.amount) + * float(data.current(asset, "price")) + / value + for asset, position in context.portfolio.positions.items() + if position.amount != 0 and data.can_trade(asset) + } + reductions = sorted( + symbol for symbol, weight in available.items() if weight < current.get(symbol, 0.0) + ) + omitted = sorted(symbol for symbol in current if symbol not in available) + increases = sorted(symbol for symbol in available if symbol not in reductions) + for symbol in reductions: + asset = context.assets[symbol] + price = float(data.current(asset, "price")) + raw = (available[symbol] - current.get(symbol, 0.0)) * value / price + amount = int(math.copysign(math.floor(abs(raw) + 0.5), raw)) + if amount: + order(asset, amount) + for symbol in omitted: + order_target(context.assets[symbol], 0) + for symbol in increases: + asset = context.assets[symbol] + price = float(data.current(asset, "price")) + raw = (available[symbol] - current.get(symbol, 0.0)) * value / price + amount = int(math.copysign(math.floor(abs(raw) + 0.5), raw)) + if amount: + order(asset, amount) + + started = time.perf_counter() + results = run_algorithm( + start=calendar.sessions_in_range(first_date, last_date)[0], + end=calendar.sessions_in_range(first_date, last_date)[-1], + initialize=initialize, + handle_data=handle_data, + capital_base=float(spec["backtest_config"]["cash"]["initial"]), + bundle=bundle_name, + data_frequency="daily", + trading_calendar=calendar, + ) + engine_seconds = time.perf_counter() - started + transactions = _flatten(results, "transactions") + fill_rows = [] + for _, row in transactions.iterrows(): + asset = row["sid"] + amount = float(row["amount"]) + fill_rows.append( + { + "timestamp": pd.Timestamp(row["timestamp"]).tz_localize(None), + "asset": asset.symbol, + "side": "buy" if amount > 0 else "sell", + "quantity": abs(amount), + "price": float(row["price"]), + "commission": 0.0, + } + ) + fills = pl.DataFrame(fill_rows) + equity = pl.DataFrame( + { + "timestamp": pl.Series( + pd.DatetimeIndex(results.index).tz_localize(None).to_pydatetime().tolist(), + dtype=pl.Datetime("us"), + ), + "equity": results["portfolio_value"].to_numpy(), + } + ) + evidence = { + "schema_version": 1, + "case_study": manifest["case_study"], + "framework": "zipline", + "comparison_profile": "zipline_strict", + "comparison_costs": "disabled", + "comparison_position_rules": "disabled", + "price_decimals": 3, + "input_bundle_sha256": manifest["bundle_sha256"], + "setup_seconds": setup_seconds, + "engine_seconds": engine_seconds, + "final_value": float(results["portfolio_value"].iloc[-1]), + "num_fills": fills.height, + } + return evidence, fills, equity + + +def write_evidence( + output: Path, evidence: dict[str, Any], fills: pl.DataFrame, equity: pl.DataFrame +) -> None: + output.parent.mkdir(parents=True, exist_ok=True) + staging = Path(tempfile.mkdtemp(prefix=f".{output.name}.", dir=output.parent)) + try: + fills.write_parquet(staging / "fills.parquet", compression="zstd", statistics=True) + equity.write_parquet(staging / "equity.parquet", compression="zstd", statistics=True) + evidence["files"] = { + path.name: {"sha256": _sha256(path), "bytes": path.stat().st_size} + for path in sorted(staging.iterdir()) + } + (staging / "manifest.json").write_text( + json.dumps(evidence, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + if output.exists(): + raise FileExistsError(f"Evidence output already exists: {output}") + os.replace(staging, output) + finally: + if staging.exists(): + for path in staging.iterdir(): + path.unlink() + staging.rmdir() + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--bundle", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + evidence, fills, equity = run(args.bundle.resolve()) + write_evidence(args.output.resolve(), evidence, fills, equity) + print( + f"{evidence['case_study']}: {evidence['num_fills']:,} fills, " + f"{evidence['engine_seconds']:.6f}s engine time" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/release_checks.txt b/validation/release_checks.txt index 16c53af8..dfbea790 100644 --- a/validation/release_checks.txt +++ b/validation/release_checks.txt @@ -2,14 +2,33 @@ validation/check_artifacts.py validation/check_coverage.py validation/check_documentation_examples.py validation/check_security.py +validation/build_framework_env.py +validation/cross_framework_performance.py validation/generate_changelog.py validation/generate_compatibility_snapshot.py validation/generate_parity_claims.py validation/performance_baseline.py validation/release_candidate.py validation/run_all_correctness.py +validation/run_lean_case_studies.py +validation/common/canonical_records.py +validation/common/capabilities.py validation/common/comparator.py +validation/common/correctness_evidence.py validation/common/data_generators.py +validation/common/framework_registry.py validation/common/ml4t_runner.py +validation/common/provenance.py +validation/large_scale_evidence.py +validation/real_strategy_corpus.py +validation/real_strategy_benchmark.py +validation/real_strategy_evidence.py +validation/real_strategy_runner.py +validation/real_strategy_lean.py +validation/real_strategy_lean_crypto.py validation/common/types.py +validation/native/vectorbt_behavior.py +validation/native/backtrader_behavior.py +validation/native/zipline_behavior.py +validation/native/lean_behavior.py validation/scenarios/definitions.py diff --git a/validation/run_all_benchmarks.py b/validation/run_all_benchmarks.py index f9befe4b..193f940b 100644 --- a/validation/run_all_benchmarks.py +++ b/validation/run_all_benchmarks.py @@ -1,739 +1,30 @@ #!/usr/bin/env python3 -"""Unified Performance Benchmark Runner. +"""Compatibility entry point for the retained cross-framework performance harness.""" -Runs performance benchmarks across all frameworks and generates a summary report. +from __future__ import annotations -Usage: - # Run all frameworks - python validation/run_all_benchmarks.py - - # Run specific framework - python validation/run_all_benchmarks.py --framework ml4t - - # Run specific configuration - python validation/run_all_benchmarks.py --config "100x1" "1000x1" - -Output: - - Console summary - - validation/BENCHMARK_RESULTS.md -""" - -import argparse -import gc -import json -import subprocess import sys -import time -import tracemalloc -from datetime import datetime from pathlib import Path -import numpy as np -import pandas as pd - -# Directory structure VALIDATION_DIR = Path(__file__).parent -PROJECT_ROOT = VALIDATION_DIR.parent +sys.path.insert(0, str(VALIDATION_DIR)) -# Add project root to path for ml4t imports -sys.path.insert(0, str(PROJECT_ROOT / "src")) +from common.framework_registry import load_framework_manifest # noqa: E402 +from cross_framework_performance import main as performance_main # noqa: E402 -# Framework configurations -FRAMEWORKS = { - "ml4t": { - "venv": ".venv", - "display_name": "ml4t.backtest", - "function": "benchmark_ml4t", - }, - "vectorbt_pro": { - "venv": ".venv-vectorbt-pro", - "display_name": "VectorBT Pro", - "function": "benchmark_vectorbt_pro", - }, - "vectorbt_oss": { - "venv": ".venv", - "display_name": "VectorBT OSS", - "function": "benchmark_vectorbt_oss", - }, - "backtrader": { - "venv": ".venv", - "display_name": "Backtrader", - "function": "benchmark_backtrader", - }, - "zipline": { - "venv": ".venv", - "display_name": "Zipline", - "function": "benchmark_zipline", - }, - "lean": { - "venv": None, # Uses Docker - "display_name": "LEAN CLI", - "function": "benchmark_lean", - }, +FRAMEWORKS: dict[str, dict[str, str | None]] = { + "ml4t": {"venv": ".venv", "display_name": "ml4t.backtest"} } - -# Test configurations (n_bars, n_assets) -CONFIGS = { - "100x1": (100, 1), - "500x1": (500, 1), - "1000x1": (1000, 1), - "500x5": (500, 5), - "1000x10": (1000, 10), - "2520x500": (2520, 500), # ~10 years daily -} - - -def generate_benchmark_data(n_bars: int, n_assets: int, seed: int = 42) -> tuple: - """Generate benchmark data for testing.""" - np.random.seed(seed) - - # Generate date index (business days) - dates = pd.date_range(start="2013-01-02", periods=n_bars, freq="B", tz="UTC") - - # Generate price data for multiple assets - asset_data = {} - for i in range(n_assets): - base_price = 100.0 + i * 10 - returns = np.random.randn(n_bars) * 0.02 - prices = base_price * np.exp(np.cumsum(returns)) - - asset_data[f"ASSET_{i:03d}"] = pd.DataFrame( - { - "open": prices * (1 + np.random.randn(n_bars) * 0.005), - "high": prices * (1 + np.abs(np.random.randn(n_bars)) * 0.01), - "low": prices * (1 - np.abs(np.random.randn(n_bars)) * 0.01), - "close": prices, - "volume": np.random.randint(100000, 1000000, n_bars).astype(float), - }, - index=dates, - ) - - # Generate signals - entry every 20 bars, exit 10 bars later - entries = np.zeros(n_bars, dtype=bool) - exits = np.zeros(n_bars, dtype=bool) - - i = 0 - while i < n_bars - 11: - entries[i] = True - exits[i + 10] = True - i += 20 - - return asset_data, entries, exits, dates - - -def benchmark_ml4t(asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates) -> dict: - """Benchmark ml4t.backtest.""" - import polars as pl - - from ml4t.backtest._validation_imports import DataFeed, Engine, ExecutionMode, NoCommission, NoSlippage, Strategy - - # Prepare data in polars format - rows = [] - for asset_name, df in asset_data.items(): - for ts, row in df.iterrows(): - rows.append( - { - "timestamp": ts.to_pydatetime().replace(tzinfo=None), - "asset": asset_name, - "open": row["open"], - "high": row["high"], - "low": row["low"], - "close": row["close"], - "volume": row["volume"], - } - ) - - prices_pl = pl.DataFrame(rows) - - # Prepare signals - signal_rows = [] - for asset_name in asset_data: - for i, ts in enumerate(dates): - signal_rows.append( - { - "timestamp": ts.to_pydatetime().replace(tzinfo=None), - "asset": asset_name, - "entry": bool(entries[i]), - "exit": bool(exits[i]), - } - ) - - signals_pl = pl.DataFrame(signal_rows) - - class BenchmarkStrategy(Strategy): - def on_data(self, timestamp, data, context, broker): - for asset_name, asset_data in data.items(): - signals = asset_data.get("signals", {}) - position = broker.get_position(asset_name) - current_qty = position.quantity if position else 0 - - if signals.get("exit") and current_qty > 0: - broker.close_position(asset_name) - elif signals.get("entry") and current_qty == 0: - broker.submit_order(asset_name, 100) - - # Warm-up run - small_prices = prices_pl.head(100 * len(asset_data)) - small_signals = signals_pl.head(100 * len(asset_data)) - small_feed = DataFeed(prices_df=small_prices, signals_df=small_signals) - small_engine = Engine( - small_feed, - BenchmarkStrategy(), - initial_cash=100_000_000.0, # Match main run - allow_short_selling=False, - commission_model=NoCommission(), - slippage_model=NoSlippage(), - execution_mode=ExecutionMode.SAME_BAR, - ) - _ = small_engine.run() - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - feed = DataFeed(prices_df=prices_pl, signals_df=signals_pl) - engine = Engine( - feed, - BenchmarkStrategy(), - initial_cash=100_000_000.0, # $100M to handle 500 assets - allow_short_selling=False, - commission_model=NoCommission(), - slippage_model=NoSlippage(), - execution_mode=ExecutionMode.SAME_BAR, - ) - - results = engine.run() - num_trades = results["num_trades"] - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "ml4t.backtest", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": peak / 1024 / 1024, - "success": True, - } - - -def benchmark_vectorbt_oss( - asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates -) -> dict: - """Benchmark VectorBT OSS.""" - try: - import vectorbt as vbt - except ImportError: - return {"framework": "VectorBT OSS", "success": False, "error": "Not installed"} - - # Build price panel - close_df = pd.DataFrame({name: df["close"] for name, df in asset_data.items()}) - - # Expand signals to match assets - entries_2d = np.column_stack([entries] * len(asset_data)) - exits_2d = np.column_stack([exits] * len(asset_data)) - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - pf = vbt.Portfolio.from_signals( - close=close_df, - entries=entries_2d, - exits=exits_2d, - init_cash=100_000.0, - fees=0.0, - slippage=0.0, - size=100, - accumulate=False, - ) - - trades_count = pf.trades.count() - # Handle both scalar and Series (multi-asset case) - if hasattr(trades_count, 'sum'): - num_trades = int(trades_count.sum()) - else: - num_trades = int(trades_count) - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "VectorBT OSS", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": peak / 1024 / 1024, - "success": True, - } - - -def benchmark_vectorbt_pro( - asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates -) -> dict: - """Benchmark VectorBT Pro.""" - try: - import vectorbtpro as vbt - except ImportError: - return {"framework": "VectorBT Pro", "success": False, "error": "Not installed"} - - # Build price panel - close_df = pd.DataFrame({name: df["close"] for name, df in asset_data.items()}) - - # Expand signals to match assets - entries_2d = np.column_stack([entries] * len(asset_data)) - exits_2d = np.column_stack([exits] * len(asset_data)) - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - pf = vbt.Portfolio.from_signals( - close=close_df, - entries=entries_2d, - exits=exits_2d, - init_cash=100_000.0, - fees=0.0, - slippage=0.0, - size=100, - accumulate=False, - ) - - trades_count = pf.trades.count() - # Handle both scalar and Series (multi-asset case) - if hasattr(trades_count, 'sum'): - num_trades = int(trades_count.sum()) - else: - num_trades = int(trades_count) - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "VectorBT Pro", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": peak / 1024 / 1024, - "success": True, - } - - -def benchmark_backtrader( - asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates -) -> dict: - """Benchmark Backtrader.""" - try: - import backtrader as bt - except ImportError: - return {"framework": "Backtrader", "success": False, "error": "Not installed"} - - trade_count = [0] - - class BenchmarkStrategy(bt.Strategy): - def __init__(self): - self.bar_idx = 0 - - def next(self): - if self.bar_idx >= len(entries): - return - - for data in self.datas: - position = self.getposition(data) - current_qty = position.size - - if exits[self.bar_idx] and current_qty > 0: - self.close(data) - trade_count[0] += 1 - elif entries[self.bar_idx] and current_qty == 0: - self.buy(data, size=100) - trade_count[0] += 1 - - self.bar_idx += 1 - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - cerebro = bt.Cerebro() - cerebro.addstrategy(BenchmarkStrategy) - cerebro.broker.setcash(100_000.0) - cerebro.broker.setcommission(commission=0.0) - - for asset_name, df in asset_data.items(): - bt_data = bt.feeds.PandasData( - dataname=df, - datetime=None, - open="open", - high="high", - low="low", - close="close", - volume="volume", - openinterest=-1, - ) - cerebro.adddata(bt_data, name=asset_name) - - cerebro.run() - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "Backtrader", - "runtime_sec": end_time - start_time, - "num_trades": trade_count[0], - "memory_mb": peak / 1024 / 1024, - "success": True, - } - - -def benchmark_zipline( - asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates -) -> dict: - """Benchmark Zipline-Reloaded.""" - try: - from zipline import run_algorithm - from zipline.api import order, set_commission, set_slippage, symbol - from zipline.finance.commission import NoCommission - from zipline.finance.slippage import FixedSlippage - except ImportError: - return {"framework": "Zipline", "success": False, "error": "Not installed"} - - # Build panel data for Zipline - panel_data = {} - for field in ["open", "high", "low", "close", "volume"]: - panel_data[field] = pd.DataFrame({name: df[field] for name, df in asset_data.items()}) - - asset_names = list(asset_data.keys()) - trade_count = [0] - - def initialize(context): - context.entries = entries - context.exits = exits - context.bar_idx = 0 - context.asset_names = asset_names - set_commission(NoCommission()) - set_slippage(FixedSlippage(spread=0.0)) - - def handle_data(context, data): - if context.bar_idx >= len(context.entries): - return - - for asset_name in context.asset_names: - try: - asset = symbol(asset_name) - except Exception: - continue - - position = context.portfolio.positions.get(asset) - current_qty = position.amount if position else 0 - - if context.exits[context.bar_idx] and current_qty > 0: - order(asset, -current_qty) - trade_count[0] += 1 - elif context.entries[context.bar_idx] and current_qty == 0: - order(asset, 100) - trade_count[0] += 1 - - context.bar_idx += 1 - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - try: - run_algorithm( - start=dates[0], - end=dates[-1], - initialize=initialize, - handle_data=handle_data, - capital_base=100_000.0, - data=panel_data, - ) - success = True - except Exception as e: - success = False - return {"framework": "Zipline", "success": False, "error": str(e)} - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "Zipline", - "runtime_sec": end_time - start_time, - "num_trades": trade_count[0], - "memory_mb": peak / 1024 / 1024, - "success": success, - } - - -def benchmark_lean( - asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates -) -> dict: - """Benchmark LEAN CLI (requires Docker).""" - lean_workspace = VALIDATION_DIR / "lean" / "workspace" - - if not lean_workspace.exists(): - return {"framework": "LEAN CLI", "success": False, "error": "Workspace not found"} - - # Check if lean CLI is available - try: - result = subprocess.run( - ["lean", "--version"], - capture_output=True, - text=True, - timeout=10, - ) - if result.returncode != 0: - return {"framework": "LEAN CLI", "success": False, "error": "CLI not available"} - except Exception as e: - return {"framework": "LEAN CLI", "success": False, "error": str(e)} - - # Run a simple backtest using the test_validation project - test_project = lean_workspace / "test_validation" - if not test_project.exists(): - return {"framework": "LEAN CLI", "success": False, "error": "Test project not found"} - - gc.collect() - start_time = time.perf_counter() - - try: - result = subprocess.run( - ["lean", "backtest", str(test_project)], - capture_output=True, - text=True, - timeout=300, # LEAN can be slow (Docker + initialization) - cwd=str(lean_workspace), - ) - success = result.returncode == 0 - - # Parse output for performance info - output = result.stdout + result.stderr - if "Total Trades" in output: - # Try to extract trade count from LEAN output - for line in output.split("\n"): - if "Total Trades" in line: - try: - num_trades = int(line.split()[-1]) - break - except (ValueError, IndexError): - num_trades = 0 - else: - num_trades = 0 - - except subprocess.TimeoutExpired: - return {"framework": "LEAN CLI", "success": False, "error": "Timeout (300s)"} - except Exception as e: - return {"framework": "LEAN CLI", "success": False, "error": str(e)} - - end_time = time.perf_counter() - - return { - "framework": "LEAN CLI", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": 0, # Cannot measure Docker memory easily - "success": success, - "note": "Docker-based execution, includes container startup overhead", - } - - -def run_benchmark(config_name: str, framework: str) -> dict: - """Run a single benchmark configuration.""" - n_bars, n_assets = CONFIGS[config_name] - - print(f"\n Generating data: {n_bars} bars x {n_assets} assets...") - asset_data, entries, exits, dates = generate_benchmark_data(n_bars, n_assets) - - benchmark_func = { - "ml4t": benchmark_ml4t, - "vectorbt_pro": benchmark_vectorbt_pro, - "vectorbt_oss": benchmark_vectorbt_oss, - "backtrader": benchmark_backtrader, - "zipline": benchmark_zipline, - "lean": benchmark_lean, - }.get(framework) - - if not benchmark_func: - return {"framework": framework, "success": False, "error": "Unknown framework"} - - try: - result = benchmark_func(asset_data, entries, exits, dates) - result["config"] = config_name - result["n_bars"] = n_bars - result["n_assets"] = n_assets - return result - except Exception as e: - return { - "framework": framework, - "config": config_name, - "success": False, - "error": str(e), +FRAMEWORKS.update( + { + framework_id: { + "venv": target.environment, + "display_name": target.display_name, } - - -def run_all_benchmarks( - frameworks: list = None, configs: list = None -) -> list: - """Run all benchmarks and return results.""" - if frameworks is None: - frameworks = list(FRAMEWORKS.keys()) - if configs is None: - configs = list(CONFIGS.keys()) - - results = [] - - for framework in frameworks: - config = FRAMEWORKS.get(framework) - if not config: - print(f"Unknown framework: {framework}") - continue - - print(f"\n{'='*60}") - print(f"Framework: {config['display_name']}") - print(f"{'='*60}") - - for config_name in configs: - print(f"\n Config: {config_name}") - result = run_benchmark(config_name, framework) - results.append(result) - - if result.get("success"): - print( - f" Runtime: {result['runtime_sec']:.3f}s, " - f"Trades: {result['num_trades']}, " - f"Memory: {result.get('memory_mb', 0):.1f} MB" - ) - else: - print(f" FAILED: {result.get('error', 'Unknown error')}") - - return results - - -def generate_report(results: list) -> str: - """Generate markdown report from results.""" - now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - - lines = [ - "# Performance Benchmark Results", - "", - f"**Generated**: {now}", - "", - "## Summary", - "", - "| Framework | Config | Runtime (s) | Trades | Memory (MB) | Status |", - "|-----------|--------|-------------|--------|-------------|--------|", - ] - - for r in results: - framework = r.get("framework", "Unknown") - config = r.get("config", "N/A") - if r.get("success"): - runtime = f"{r['runtime_sec']:.3f}" - trades = str(r.get("num_trades", "N/A")) - memory = f"{r.get('memory_mb', 0):.1f}" - status = "PASS" - else: - runtime = "-" - trades = "-" - memory = "-" - status = f"FAIL: {r.get('error', 'Unknown')[:30]}" - - lines.append(f"| {framework} | {config} | {runtime} | {trades} | {memory} | {status} |") - - # Add comparison table by config - lines.extend([ - "", - "## Performance Comparison by Configuration", - "", - ]) - - # Group by config - configs_seen = set(r.get("config") for r in results if r.get("config")) - for config_name in sorted(configs_seen): - config_results = [r for r in results if r.get("config") == config_name and r.get("success")] - if not config_results: - continue - - lines.extend([ - f"### {config_name}", - "", - "| Framework | Runtime (s) | vs ml4t |", - "|-----------|-------------|---------|", - ]) - - # Find ml4t baseline - ml4t_time = None - for r in config_results: - if r.get("framework") == "ml4t.backtest": - ml4t_time = r["runtime_sec"] - break - - for r in sorted(config_results, key=lambda x: x["runtime_sec"]): - framework = r["framework"] - runtime = r["runtime_sec"] - if ml4t_time and ml4t_time > 0: - speedup = runtime / ml4t_time - vs_ml4t = f"{speedup:.2f}x" if speedup > 1 else f"{1/speedup:.2f}x faster" - else: - vs_ml4t = "-" - lines.append(f"| {framework} | {runtime:.3f} | {vs_ml4t} |") - - lines.append("") - - return "\n".join(lines) - - -def main(): - parser = argparse.ArgumentParser(description="Run performance benchmarks") - parser.add_argument( - "--framework", - type=str, - help="Specific framework to test (ml4t, vectorbt_pro, vectorbt_oss, backtrader, zipline, lean)", - ) - parser.add_argument( - "--config", - type=str, - nargs="+", - help="Specific configurations to run (e.g., 100x1, 1000x1)", - ) - parser.add_argument( - "--output", - type=str, - default="validation/BENCHMARK_RESULTS.md", - help="Output file path", - ) - - args = parser.parse_args() - - frameworks = [args.framework] if args.framework else None - configs = args.config if args.config else None - - print("=" * 60) - print("Performance Benchmark Runner") - print("=" * 60) - - results = run_all_benchmarks(frameworks=frameworks, configs=configs) - - # Generate and save report - report = generate_report(results) - output_path = PROJECT_ROOT / args.output - output_path.write_text(report) - - print(f"\n{'='*60}") - print(f"Report saved to: {output_path}") - print("=" * 60) - - # Summary - passed = sum(1 for r in results if r.get("success")) - failed = len(results) - passed - print(f"\nTotal: {len(results)} benchmarks ({passed} passed, {failed} failed)") - - return 0 if failed == 0 else 1 + for framework_id, target in load_framework_manifest().targets.items() + } +) if __name__ == "__main__": - sys.exit(main()) + raise SystemExit(performance_main()) diff --git a/validation/run_all_correctness.py b/validation/run_all_correctness.py index 4afd3473..8953edc8 100644 --- a/validation/run_all_correctness.py +++ b/validation/run_all_correctness.py @@ -14,61 +14,37 @@ import subprocess import sys import tempfile +import time from collections import Counter -from datetime import UTC, datetime from pathlib import Path VALIDATION_DIR = Path(__file__).parent PROJECT_ROOT = VALIDATION_DIR.parent sys.path.insert(0, str(VALIDATION_DIR)) +from common.correctness_evidence import ( # noqa: E402, I001 + build_report, + promote_candidate, + write_candidate, +) +from common.framework_registry import load_framework_manifest # noqa: E402 from common.types import ValidationRecord, ValidationStatus # noqa: E402, I001 from scenarios.definitions import SCENARIOS # noqa: E402 +FRAMEWORK_MANIFEST = load_framework_manifest() FRAMEWORK_ENVIRONMENTS = { - "vectorbt_pro": ".venv-vectorbt-pro", - "vectorbt_oss": ".venv", - "backtrader": ".venv-backtrader", - "zipline": ".venv-zipline", + framework_id: target.environment + for framework_id, target in FRAMEWORK_MANIFEST.targets.items() + if target.scenario_matrix and target.environment is not None } - FRAMEWORK_PYTHON_ENV_VARS = { - "vectorbt_pro": "ML4T_VECTORBT_PRO_PYTHON", - "vectorbt_oss": "ML4T_VECTORBT_OSS_PYTHON", - "backtrader": "ML4T_BACKTRADER_PYTHON", - "zipline": "ML4T_ZIPLINE_PYTHON", + framework_id: target.python_env_var + for framework_id, target in FRAMEWORK_MANIFEST.targets.items() + if target.scenario_matrix and target.python_env_var is not None } - FRAMEWORK_PINS = { - "vectorbt_pro": { - "display_name": "VectorBT Pro", - "profile": "vectorbt_strict", - "package": "vectorbtpro", - "version": "2025.12.31", - "source": "https://github.com/polakowo/vectorbt.pro", - "commit": "1305a1e1974325db9382eaeacc6452e9b075ca71", - }, - "vectorbt_oss": { - "display_name": "VectorBT OSS", - "profile": "vectorbt", - "package": "vectorbt", - "version": "0.28.2", - "source": "https://pypi.org/project/vectorbt/0.28.2/", - }, - "backtrader": { - "display_name": "Backtrader", - "profile": "backtrader_strict", - "package": "backtrader", - "version": "1.9.78.123", - "source": "https://pypi.org/project/backtrader/1.9.78.123/", - }, - "zipline": { - "display_name": "Zipline Reloaded", - "profile": "zipline_strict", - "package": "zipline-reloaded", - "version": "3.1.1", - "source": "https://pypi.org/project/zipline-reloaded/3.1.1/", - }, + framework_id: FRAMEWORK_MANIFEST.targets[framework_id].evidence_metadata() + for framework_id in FRAMEWORK_MANIFEST.scenario_framework_ids } @@ -79,6 +55,7 @@ def _record( *, required: bool = True, detail: str | None = None, + started_at: float | None = None, ) -> ValidationRecord: scenario = SCENARIOS.get(scenario_id) return ValidationRecord( @@ -88,6 +65,7 @@ def _record( status=status, required=required, detail=detail, + duration_seconds=time.perf_counter() - started_at if started_at is not None else None, ) @@ -117,6 +95,7 @@ def run_isolated( timeout: int = 180, ) -> ValidationRecord: """Run one pair in its framework environment and retain its exact terminal status.""" + started_at = time.perf_counter() scenario = SCENARIOS.get(scenario_id) if scenario is None: return _record( @@ -124,6 +103,7 @@ def run_isolated( scenario_id, ValidationStatus.MISSING_SCENARIO, detail=f"Scenario {scenario_id} is not defined", + started_at=started_at, ) if framework not in scenario.supported_frameworks: return _record( @@ -132,6 +112,7 @@ def run_isolated( ValidationStatus.UNSUPPORTED, required=False, detail="Scenario explicitly excludes this framework", + started_at=started_at, ) interpreter = python_path or resolve_python(framework) @@ -141,6 +122,7 @@ def run_isolated( scenario_id, ValidationStatus.UNAVAILABLE, detail=f"Framework interpreter not found: {interpreter}", + started_at=started_at, ) with tempfile.TemporaryDirectory(prefix="ml4t-validation-") as temporary_directory: @@ -170,6 +152,7 @@ def run_isolated( scenario_id, ValidationStatus.TIMEOUT, detail=f"Validation subprocess timed out after {timeout} seconds", + started_at=started_at, ) except OSError as error: return _record( @@ -177,6 +160,7 @@ def run_isolated( scenario_id, ValidationStatus.SUBPROCESS_FAILURE, detail=f"Could not execute validation subprocess: {error}", + started_at=started_at, ) if not result_path.is_file(): @@ -185,6 +169,7 @@ def run_isolated( scenario_id, ValidationStatus.SUBPROCESS_FAILURE, detail=_process_detail(result), + started_at=started_at, ) try: @@ -198,6 +183,7 @@ def run_isolated( scenario_id, ValidationStatus.MALFORMED_OUTPUT, detail=f"Invalid validation record: {error}", + started_at=started_at, ) if record.framework != framework or record.scenario_id != scenario_id: @@ -209,6 +195,7 @@ def run_isolated( "Validation record identity mismatch: " f"received {record.framework}/{record.scenario_id}" ), + started_at=started_at, ) expected_returncode = 1 if record.release_blocking else 0 if result.returncode != expected_returncode: @@ -220,6 +207,7 @@ def run_isolated( f"Record status {record.status.value} conflicts with subprocess " f"exit code {result.returncode}" ), + started_at=started_at, ) return record @@ -255,16 +243,49 @@ def release_gate_passed(records: list[ValidationRecord]) -> bool: return bool(required_records) and all(record.passed for record in required_records) +def matrix_coverage_failures( + records: list[ValidationRecord], + frameworks: list[str], + scenarios: list[str], +) -> list[str]: + """Reject omitted, duplicate, or misclassified framework/scenario pairs.""" + failures: list[str] = [] + expected_pairs = {(framework, scenario) for framework in frameworks for scenario in scenarios} + actual_pairs = [(record.framework, record.scenario_id) for record in records] + duplicate_pairs = sorted(pair for pair, count in Counter(actual_pairs).items() if count > 1) + missing_pairs = sorted(expected_pairs - set(actual_pairs)) + unexpected_pairs = sorted(set(actual_pairs) - expected_pairs) + if duplicate_pairs: + failures.append(f"Duplicate matrix pairs: {duplicate_pairs}") + if missing_pairs: + failures.append(f"Missing matrix pairs: {missing_pairs}") + if unexpected_pairs: + failures.append(f"Unexpected matrix pairs: {unexpected_pairs}") + + if scenarios == list(SCENARIOS): + for framework in frameworks: + target = FRAMEWORK_MANIFEST.targets[framework] + framework_records = [record for record in records if record.framework == framework] + required_count = sum(record.required for record in framework_records) + unsupported_count = sum( + record.status is ValidationStatus.UNSUPPORTED for record in framework_records + ) + if required_count != target.required_scenarios: + failures.append( + f"{framework} required count differs: " + f"{required_count} != {target.required_scenarios}" + ) + if unsupported_count != target.unsupported_scenarios: + failures.append( + f"{framework} unsupported count differs: " + f"{unsupported_count} != {target.unsupported_scenarios}" + ) + return failures + + def write_report(path: Path, records: list[ValidationRecord]) -> None: """Retain the complete machine-readable release-gate result.""" - payload = { - "schema_version": 1, - "generated_at": datetime.now(UTC).isoformat(), - "frameworks": FRAMEWORK_PINS, - "release_gate_passed": release_gate_passed(records), - "summary": summarize(records), - "records": [record.to_dict() for record in records], - } + payload = build_report(records, manifest=FRAMEWORK_MANIFEST) path.parent.mkdir(parents=True, exist_ok=True) path.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n", encoding="utf-8") @@ -283,8 +304,14 @@ def main() -> int: parser.add_argument( "--output", type=Path, + default=VALIDATION_DIR / "candidates" / "CORRECTNESS_RESULTS.candidate.json", + help="Diagnostic candidate path", + ) + parser.add_argument( + "--accepted-output", + type=Path, default=VALIDATION_DIR / "CORRECTNESS_RESULTS.json", - help="Machine-readable result path", + help="Accepted evidence path, replaced only by a complete passing matrix", ) parser.add_argument("--timeout", type=int, default=180, help="Per-scenario timeout in seconds") args = parser.parse_args() @@ -292,11 +319,32 @@ def main() -> int: frameworks = [args.framework] if args.framework else None scenarios = args.scenarios.split(",") if args.scenarios else None records = run_all_validations(frameworks, scenarios, timeout=args.timeout) - write_report(args.output, records) + write_candidate(args.output, records) nonzero = [f"{status}={count}" for status, count in summarize(records).items() if count] print(f"Results: {', '.join(nonzero)}") - print(f"Report: {args.output}") + print(f"Candidate: {args.output}") + selected_frameworks = frameworks or list(FRAMEWORK_MANIFEST.scenario_framework_ids) + selected_scenarios = scenarios or list(SCENARIOS) + coverage_failures = matrix_coverage_failures( + records, + selected_frameworks, + selected_scenarios, + ) + if coverage_failures: + print("Matrix coverage failed:") + for failure in coverage_failures: + print(f"- {failure}") + return 1 + full_matrix = frameworks is None and scenarios is None + if full_matrix: + promotion_failures = promote_candidate(args.output, args.accepted_output) + if promotion_failures: + print("Accepted evidence unchanged:") + for failure in promotion_failures: + print(f"- {failure}") + return 1 + print(f"Accepted evidence: {args.accepted_output}") return 0 if release_gate_passed(records) else 1 diff --git a/validation/run_lean_case_studies.py b/validation/run_lean_case_studies.py new file mode 100644 index 00000000..3c307b26 --- /dev/null +++ b/validation/run_lean_case_studies.py @@ -0,0 +1,316 @@ +#!/usr/bin/env python3 +"""Run and retain fresh LEAN case-study parity evidence.""" + +from __future__ import annotations + +import argparse +import gzip +import hashlib +import json +import lzma +import math +import os +import shutil +import sys +import tempfile +import zipfile +from pathlib import Path +from typing import Any + +PROJECT_ROOT = Path(__file__).parent.parent +VALIDATION_ROOT = PROJECT_ROOT / "validation" +sys.path.insert(0, str(PROJECT_ROOT / "src")) +sys.path.insert(0, str(VALIDATION_ROOT)) + +from common.framework_registry import load_framework_manifest # noqa: E402 + +from ml4t.backtest._validation.case_study_lean import ( # noqa: E402 + RETAINED_ORDER_EVENT_ARTIFACTS, + compare, + lean_side, + run_ml4t_lean, +) +from ml4t.backtest._validation.lean_runner import ( # noqa: E402 + check_lean_cli, + make_lean_env, + run_lean_backtest, +) + +WORKSPACE = VALIDATION_ROOT / "lean" / "workspace" +DATA_DAILY = WORKSPACE / "data" / "equity" / "usa" / "daily" +SUPPORT = VALIDATION_ROOT / "lean" / "support" +CASE_STUDIES = ( + "chapter16_etfs", + "chapter16_sp500_equity_option_analytics", + "chapter16_us_equities_panel", +) +PROJECT_INPUTS = { + "asset_symbols.csv", + "config.json", + "main.py", + "ml4t_symbol_map.json", + "rebalance_dates.csv", + "weights.csv", + "weights.csv.xz", + "weights.csv.gz", +} + + +def _digest_bytes(payload: bytes) -> str: + return hashlib.sha256(payload).hexdigest() + + +def _digest(path: Path) -> str: + return _digest_bytes(path.read_bytes()) + + +def _atomic_write(path: Path, payload: bytes) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + handle, temporary_name = tempfile.mkstemp(prefix=f".{path.name}.", dir=path.parent) + temporary = Path(temporary_name) + try: + with os.fdopen(handle, "wb") as file: + file.write(payload) + file.flush() + os.fsync(file.fileno()) + temporary.replace(path) + except BaseException: + temporary.unlink(missing_ok=True) + raise + + +def _copy_project(source: Path, destination: Path) -> None: + destination.mkdir(parents=True, exist_ok=True) + for name in sorted(PROJECT_INPUTS): + path = source / name + if path.is_file(): + shutil.copy2(path, destination / name) + + +def _prepare_lean_root(root: Path, project: Path) -> Path: + lean_config = root / "lean.json" + shutil.copy2(SUPPORT / "lean.json", lean_config) + data_root = root / "data" + shutil.copytree(SUPPORT / "data", data_root) + daily = data_root / "equity/usa/daily" + maps = data_root / "equity/usa/map_files" + factors = data_root / "equity/usa/factor_files" + for directory in (daily, maps, factors): + directory.mkdir(parents=True, exist_ok=True) + + symbol_map = json.loads((project / "ml4t_symbol_map.json").read_text(encoding="utf-8")) + for ticker in sorted(symbol_map): + ticker_lower = ticker.lower() + source = DATA_DAILY / f"{ticker_lower}.zip" + destination = daily / source.name + os.link(source, destination) + with zipfile.ZipFile(source) as archive: + first_line = archive.read(archive.namelist()[0]).decode().splitlines()[0] + first_date = first_line.split(",", maxsplit=1)[0].split()[0] + (maps / f"{ticker_lower}.csv").write_text( + f"{first_date},{ticker_lower}\n20501231,{ticker_lower}\n", + encoding="utf-8", + ) + (factors / f"{ticker_lower}.csv").write_text( + f"{first_date},1,1,1\n20501231,1,1,0\n", + encoding="utf-8", + ) + return lean_config + + +def _surface_checksum(surface: Any) -> str: + rows = surface.to_dict(orient="records") + payload = json.dumps(rows, sort_keys=True, separators=(",", ":"), default=str).encode() + return _digest_bytes(payload) + + +def _input_manifest(project: Path) -> dict[str, str]: + inputs = { + path.name: _digest(path) + for path in sorted(project.iterdir()) + if path.is_file() and path.name in PROJECT_INPUTS + } + symbol_map = json.loads((project / "ml4t_symbol_map.json").read_text(encoding="utf-8")) + for ticker in sorted(symbol_map): + data_path = DATA_DAILY / f"{ticker.lower()}.zip" + if not data_path.is_file(): + raise FileNotFoundError(data_path) + inputs[f"data/{data_path.name}"] = _digest(data_path) + return inputs + + +def _retained_order_paths(project: Path) -> list[Path]: + names = RETAINED_ORDER_EVENT_ARTIFACTS.get(project.name) + if names is None: + raise ValueError(f"No retained order-event layout for {project.name}") + paths = [project / name for name in names] + if not all(path.is_file() for path in paths): + raise FileNotFoundError(f"Retained order-event artifact missing for {project.name}") + return paths + + +def _encode_order_parts(raw: bytes, targets: list[Path]) -> list[bytes]: + if len(targets) == 1: + suffix = targets[0].suffix + if suffix == ".xz": + return [lzma.compress(raw)] + if suffix == ".gz": + return [gzip.compress(raw, mtime=0)] + return [raw] + + lines = raw.splitlines(keepends=True) + header, rows = lines[0], lines[1:] + chunk_size = math.ceil(len(rows) / len(targets)) + chunks = [rows[index : index + chunk_size] for index in range(0, len(rows), chunk_size)] + if len(chunks) != len(targets): + raise RuntimeError(f"Could not split order events into {len(targets)} retained parts") + return [lzma.compress(header + b"".join(chunk)) for chunk in chunks] + + +def _promote_case(project: Path, order_events: bytes, daily_equity: bytes) -> dict[str, str]: + order_paths = _retained_order_paths(project) + encoded = _encode_order_parts(order_events, order_paths) + for path, payload in zip(order_paths, encoded, strict=True): + _atomic_write(path, payload) + equity_path = project / "ml4t_daily_equity.csv" + _atomic_write(equity_path, daily_equity) + return { + path.relative_to(PROJECT_ROOT).as_posix(): _digest(path) + for path in [*order_paths, equity_path] + } + + +def run(lean_command: Path, *, promote: bool) -> dict[str, Any]: + manifest = load_framework_manifest() + target = manifest.targets["lean"] + if target.artifact is None: + raise RuntimeError("Frozen LEAN target does not define an engine image") + + lean_command = lean_command.resolve() + env = make_lean_env() + cli_version = check_lean_cli([str(lean_command)], PROJECT_ROOT, env) + expected_cli = f"lean {target.cli_version}" + if cli_version != expected_cli: + raise RuntimeError(f"LEAN CLI differs: {cli_version} != {expected_cli}") + + results: list[dict[str, Any]] = [] + raw_artifacts: dict[str, tuple[bytes, bytes]] = {} + for case in CASE_STUDIES: + source = WORKSPACE / case + with tempfile.TemporaryDirectory( + prefix=f".ml4t-{case}-", dir=VALIDATION_ROOT / "lean" + ) as temporary: + temporary_root = Path(temporary) + project = temporary_root / case + _copy_project(source, project) + lean_config = _prepare_lean_root(temporary_root, project) + output = project / "backtests" / "fresh" + runtime = run_lean_backtest( + lean_cmd=[str(lean_command)], + cwd=PROJECT_ROOT, + project_dir=project, + lean_config=lean_config, + output_dir=output, + image=target.artifact, + env=env, + ) + lean = lean_side(project) + ml4t = run_ml4t_lean(project, DATA_DAILY) + comparison = compare(lean, ml4t) + order_events = (project / "ml4t_order_events.csv").read_bytes().replace(b"\r\n", b"\n") + daily_equity = (project / "ml4t_daily_equity.csv").read_bytes() + summaries = sorted(output.glob("*-summary.json")) + if not summaries: + raise FileNotFoundError(f"LEAN summary missing for {case}") + passed = ( + comparison["sorted_fill_multiset_match"] + and comparison["fill_gap"] == 0 + and comparison["canonical_final_value_match"] + ) + results.append( + { + "case": case, + "comparison": comparison, + "inputs": _input_manifest(source), + "lean_fill_surface_sha256": _surface_checksum(lean["fills"]), + "ml4t_fill_surface_sha256": _surface_checksum(ml4t["fills"]), + "raw_daily_equity_sha256": _digest_bytes(daily_equity), + "raw_order_events_sha256": _digest_bytes(order_events), + "runtime_seconds": runtime, + "summary_sha256": _digest(summaries[-1]), + "passed": passed, + } + ) + raw_artifacts[case] = (order_events, daily_equity) + + passed = all(result["passed"] for result in results) + if promote and passed: + for result in results: + case = result["case"] + result["retained_artifacts"] = _promote_case( + WORKSPACE / case, + *raw_artifacts[case], + ) + + producer_files = [ + Path(__file__), + PROJECT_ROOT / "src/ml4t/backtest/_validation/case_study_lean.py", + PROJECT_ROOT / "src/ml4t/backtest/_validation/lean_runner.py", + PROJECT_ROOT / "src/ml4t/backtest/profiles.py", + ] + return { + "schema_version": 1, + "framework": target.evidence_metadata(), + "cli_observed": cli_version, + "comparison_protocol": { + "account": "DefaultBrokerageModel Margin; per-project leverage 2", + "costs": "Ml4tPercentFeeModel at project rate; ConstantSlippageModel(0)", + "fills": "timestamp, asset, side, quantity, price rounded to 4 decimals", + "terminal_value_quantum": "0.0001 USD", + }, + "producer_files": { + path.relative_to(PROJECT_ROOT).as_posix(): _digest(path) for path in producer_files + }, + "support_files": { + path.relative_to(SUPPORT).as_posix(): _digest(path) + for path in sorted(SUPPORT.rglob("*")) + if path.is_file() + }, + "promoted": bool(promote and passed), + "cases": results, + "passed": passed, + } + + +def _write_evidence(path: Path, evidence: dict[str, Any]) -> None: + _atomic_write(path, (json.dumps(evidence, indent=2, sort_keys=True) + "\n").encode()) + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--lean-command", type=Path, default=PROJECT_ROOT / ".venv-lean/bin/lean") + parser.add_argument( + "--output", + type=Path, + default=VALIDATION_ROOT / "lean/case_study_evidence.json", + ) + parser.add_argument("--promote", action="store_true") + args = parser.parse_args() + try: + evidence = run(args.lean_command, promote=args.promote) + except (FileNotFoundError, json.JSONDecodeError, OSError, RuntimeError, ValueError) as error: + print(f"LEAN case-study run failed: {error}", file=sys.stderr) + return 2 + if not evidence["passed"]: + candidate = args.output.with_suffix(".candidate.json") + _write_evidence(candidate, evidence) + failed = [case["case"] for case in evidence["cases"] if not case["passed"]] + print(f"LEAN case-study parity differs: {failed}; candidate: {candidate}", file=sys.stderr) + return 1 + _write_evidence(args.output, evidence) + print(f"LEAN case-study parity passed: {len(evidence['cases'])} cases") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/validation/run_scenario.py b/validation/run_scenario.py index 93294529..4f25b560 100644 --- a/validation/run_scenario.py +++ b/validation/run_scenario.py @@ -23,9 +23,10 @@ import argparse import importlib import json -import math import sys +import time from pathlib import Path +from typing import Any # Ensure project root is on path PROJECT_ROOT = Path(__file__).parent.parent @@ -33,10 +34,12 @@ sys.path.insert(0, str(PROJECT_ROOT / "src")) sys.path.insert(0, str(VALIDATION_DIR)) -from common import data_generators # noqa: E402 from common.comparator import compare_results, print_comparison # noqa: E402 +from common.framework_registry import load_framework_manifest # noqa: E402 from common.ml4t_runner import run_ml4t # noqa: E402 +from common.provenance import build_record_provenance, generate_inputs # noqa: E402 from common.types import ( # noqa: E402 + ComparisonResult, FrameworkResult, ValidationRecord, ValidationSkipped, @@ -51,6 +54,7 @@ "backtrader": "frameworks.backtrader", "zipline": "frameworks.zipline", } +FRAMEWORK_MANIFEST = load_framework_manifest() def _record( @@ -60,6 +64,11 @@ def _record( *, required: bool = True, detail: str | None = None, + started_at: float | None = None, + provenance: dict[str, Any] | None = None, + framework_result: FrameworkResult | None = None, + ml4t_result: FrameworkResult | None = None, + comparison: ComparisonResult | None = None, ) -> ValidationRecord: scenario = SCENARIOS.get(scenario_id) return ValidationRecord( @@ -69,25 +78,26 @@ def _record( status=status, required=required, detail=detail, + duration_seconds=time.perf_counter() - started_at if started_at is not None else None, + provenance=provenance, + framework_result=framework_result, + ml4t_result=ml4t_result, + comparison=comparison, ) def _malformed_result_detail(result: object) -> str | None: if not isinstance(result, FrameworkResult): return f"Adapter returned {type(result).__name__}, expected FrameworkResult" - if not isinstance(result.framework, str) or not result.framework: - return "FrameworkResult.framework must be a nonempty string" - if not isinstance(result.num_trades, int) or isinstance(result.num_trades, bool): - return "FrameworkResult.num_trades must be an integer" - if result.num_trades < 0: - return "FrameworkResult.num_trades cannot be negative" - for name, value in (("final_value", result.final_value), ("total_pnl", result.total_pnl)): - if not isinstance(value, (int, float)) or isinstance(value, bool): - return f"FrameworkResult.{name} must be numeric" - if not math.isfinite(float(value)): - return f"FrameworkResult.{name} must be finite" - if not isinstance(result.trades, list): - return "FrameworkResult.trades must be a list" + try: + FrameworkResult.from_dict(result.to_dict()) + except (TypeError, ValueError) as error: + return str(error) + if result.num_trades != len(result.trades): + return ( + "FrameworkResult.num_trades must equal the retained closed-trade count: " + f"{result.num_trades} != {len(result.trades)}" + ) return None @@ -101,6 +111,7 @@ def run_single( Returns: A terminal, machine-readable validation record. """ + started_at = time.perf_counter() scenario = SCENARIOS.get(scenario_id) if not scenario: print(f"Unknown scenario: {scenario_id}") @@ -109,6 +120,7 @@ def run_single( framework, ValidationStatus.MISSING_SCENARIO, detail=f"Scenario {scenario_id} is not defined", + started_at=started_at, ) if framework not in scenario.supported_frameworks: @@ -119,6 +131,7 @@ def run_single( ValidationStatus.UNSUPPORTED, required=False, detail="Scenario explicitly excludes this framework", + started_at=started_at, ) print(f"\n{'=' * 70}") @@ -128,8 +141,7 @@ def run_single( # Generate data print("\nGenerating test data...") try: - gen_func = getattr(data_generators, scenario.data_generator) - data_result = gen_func(**scenario.data_kwargs) + prices_df, entries, exits = generate_inputs(scenario, framework) except Exception as error: print(f" ERROR: data generation failed: {error}") return _record( @@ -137,32 +149,9 @@ def run_single( framework, ValidationStatus.ADAPTER_FAILURE, detail=f"Data generation failed: {error}", + started_at=started_at, ) - if len(data_result) == 3: - prices_df, entries, exits = data_result - else: - prices_df, entries = data_result - exits = None - - # Align to NYSE calendar for Zipline (which only operates on NYSE sessions) - if framework == "zipline": - import exchange_calendars as xcals - - nyse = xcals.get_calendar("XNYS") - start_ts = prices_df.index[0] - end_ts = prices_df.index[-1] - if start_ts.tz is not None: - start_ts = start_ts.tz_convert(None) - end_ts = end_ts.tz_convert(None) - sessions = nyse.sessions_in_range(start_ts, end_ts) - naive_idx = prices_df.index.tz_localize(None) if prices_df.index.tz else prices_df.index - valid_mask = naive_idx.isin(sessions) - prices_df = prices_df[valid_mask].copy() - entries = entries[valid_mask] - if exits is not None: - exits = exits[valid_mask] - print(f" Bars: {len(prices_df)}") print(f" Entry signals: {entries.sum()}") if exits is not None: @@ -179,6 +168,7 @@ def run_single( framework, ValidationStatus.ADAPTER_IMPORT_FAILURE, detail=str(error), + started_at=started_at, ) try: @@ -190,6 +180,7 @@ def run_single( framework, ValidationStatus.SKIPPED, detail=str(error), + started_at=started_at, ) except ImportError as error: print(f" UNAVAILABLE: {error}") @@ -198,6 +189,7 @@ def run_single( framework, ValidationStatus.UNAVAILABLE, detail=str(error), + started_at=started_at, ) except Exception as error: print(f" ERROR: {error}") @@ -206,6 +198,7 @@ def run_single( framework, ValidationStatus.ADAPTER_FAILURE, detail=str(error), + started_at=started_at, ) malformed_detail = _malformed_result_detail(fw_result) @@ -216,6 +209,7 @@ def run_single( framework, ValidationStatus.MALFORMED_OUTPUT, detail=malformed_detail, + started_at=started_at, ) try: @@ -227,6 +221,7 @@ def run_single( framework, ValidationStatus.MALFORMED_OUTPUT, detail=f"Could not render adapter result: {error}", + started_at=started_at, ) # Run ml4t @@ -242,6 +237,7 @@ def run_single( framework, ValidationStatus.ML4T_FAILURE, detail=str(error), + started_at=started_at, ) # Compare @@ -255,6 +251,27 @@ def run_single( framework, ValidationStatus.MALFORMED_OUTPUT, detail=f"Could not compare validation results: {error}", + started_at=started_at, + ) + + try: + provenance = build_record_provenance( + scenario=scenario, + framework=framework, + target=FRAMEWORK_MANIFEST.targets[framework], + prices=prices_df, + entries=entries, + exits=exits, + framework_result=fw_result, + ml4t_result=ml4t_result, + ) + except Exception as error: + return _record( + scenario_id, + framework, + ValidationStatus.MALFORMED_OUTPUT, + detail=f"Could not retain validation provenance: {error}", + started_at=started_at, ) status = ValidationStatus.PASS if result.passed else ValidationStatus.COMPARISON_FAILURE @@ -263,6 +280,11 @@ def run_single( framework, status, detail=None if result.passed else result.summary, + started_at=started_at, + provenance=provenance, + framework_result=fw_result, + ml4t_result=ml4t_result, + comparison=result, ) diff --git a/validation/scenarios/definitions.py b/validation/scenarios/definitions.py index 73a36a4e..0706a222 100644 --- a/validation/scenarios/definitions.py +++ b/validation/scenarios/definitions.py @@ -1,4 +1,4 @@ -"""All 16 validation scenarios as declarative configs. +"""All cross-framework validation scenarios as declarative configs. Each scenario is a ScenarioConfig that fully describes: - What data to generate @@ -15,6 +15,7 @@ sys.path.insert(0, str(Path(__file__).parent.parent)) +from common.framework_registry import load_framework_manifest from common.types import ScenarioConfig, Tolerance # ============================================================================ @@ -25,8 +26,8 @@ BT_TOLERANCE = Tolerance(trade_count=0, value_pct=0.1, pnl_abs=10.0) ZIPLINE_TOLERANCE = Tolerance(trade_count=0, value_pct=0.01, pnl_abs=5.0) -ALL_FRAMEWORKS = ["vectorbt_pro", "vectorbt_oss", "backtrader", "zipline"] -NO_ZIPLINE = ["vectorbt_pro", "vectorbt_oss", "backtrader"] +ALL_FRAMEWORKS = list(load_framework_manifest().scenario_framework_ids) +NO_ZIPLINE = [framework for framework in ALL_FRAMEWORKS if framework != "zipline"] def _fw_tolerances() -> dict[str, Tolerance]: @@ -487,13 +488,13 @@ def _fw_tolerances() -> dict[str, Tolerance]: ) # ============================================================================ -# Scenario 16: Stress Test (1500 bars) +# Scenario 16: Regime Path Coverage (1500 bars) # ============================================================================ SCENARIO_16 = ScenarioConfig( id="16", - name="Stress Test", - description="1500-bar stress test with 9 market regimes.", + name="Regime Path Coverage", + description="1500-bar path with 9 market regimes and sparse re-entry signals.", data_generator="generate_stress_data", data_kwargs={"n_bars": 1500, "seed": 42}, signal_columns=["entry"], @@ -522,6 +523,21 @@ def _fw_tolerances() -> dict[str, Tolerance]: }, ) +# ============================================================================ +# Scenario 17: High Event Count +# ============================================================================ + +SCENARIO_17 = ScenarioConfig( + id="17", + name="High Event Count", + description="1800-bar lifecycle workload with up to 600 completed round trips.", + data_generator="generate_high_event_data", + data_kwargs={"n_bars": 1800, "seed": 7}, + signal_columns=["entry", "exit"], + strategy_type="long_signal", + tolerances=_fw_tolerances(), +) + # ============================================================================ # Registry # ============================================================================ @@ -543,6 +559,7 @@ def _fw_tolerances() -> dict[str, Tolerance]: "14": SCENARIO_14, "15": SCENARIO_15, "16": SCENARIO_16, + "17": SCENARIO_17, } SCENARIO_NAMES: dict[str, str] = {s.id: s.name for s in SCENARIOS.values()} diff --git a/validation/vectorbt_pro/benchmark_performance.py b/validation/vectorbt_pro/benchmark_performance.py index 4a5d1f49..a64e82c3 100644 --- a/validation/vectorbt_pro/benchmark_performance.py +++ b/validation/vectorbt_pro/benchmark_performance.py @@ -1,306 +1,15 @@ #!/usr/bin/env python3 -"""Performance benchmark: ml4t.backtest vs VectorBT Pro. +"""Route the former VectorBT Pro benchmark entry point to retained performance evidence.""" -This script benchmarks runtime performance across different data sizes -and number of assets. +from __future__ import annotations -Run from .venv-vectorbt-pro environment: - source .venv-vectorbt-pro/bin/activate - python validation/vectorbt_pro/benchmark_performance.py - -Metrics: -- Total runtime (seconds) -- Trades per second -- Memory usage (MB) -""" - -import gc import sys -import time -import tracemalloc from pathlib import Path -import numpy as np -import pandas as pd - -# Add project root to path -PROJECT_ROOT = Path(__file__).parent.parent.parent -sys.path.insert(0, str(PROJECT_ROOT / "src")) - - -def generate_benchmark_data(n_bars: int, n_assets: int, seed: int = 42) -> tuple: - """Generate benchmark data for both frameworks.""" - np.random.seed(seed) - - dates = pd.date_range(start="2020-01-01", periods=n_bars, freq="D") - - # Generate price data for multiple assets - asset_data = {} - for i in range(n_assets): - base_price = 100.0 + i * 10 - returns = np.random.randn(n_bars) * 0.02 - prices = base_price * np.exp(np.cumsum(returns)) - - asset_data[f"ASSET_{i:03d}"] = pd.DataFrame( - { - "open": prices * (1 + np.random.randn(n_bars) * 0.005), - "high": prices * (1 + np.abs(np.random.randn(n_bars)) * 0.01), - "low": prices * (1 - np.abs(np.random.randn(n_bars)) * 0.01), - "close": prices, - "volume": np.random.randint(100000, 1000000, n_bars).astype(float), - }, - index=dates, - ) - - # Generate signals - entry every 20 bars, exit 10 bars later - entries = np.zeros(n_bars, dtype=bool) - exits = np.zeros(n_bars, dtype=bool) - - i = 0 - while i < n_bars - 11: - entries[i] = True - exits[i + 10] = True - i += 20 - - return asset_data, entries, exits, dates - - -def benchmark_vectorbt_pro(asset_data: dict, entries: np.ndarray, exits: np.ndarray) -> dict: - """Benchmark VectorBT Pro.""" - import vectorbtpro as vbt - - # Prepare close prices DataFrame - close_df = pd.DataFrame({name: df["close"] for name, df in asset_data.items()}) - - # Warm-up run - _ = vbt.Portfolio.from_signals( - close=close_df.iloc[:100], - entries=entries[:100], - exits=exits[:100], - init_cash=100_000.0, - size=100, - size_type="amount", - fees=0.0, - slippage=0.0, - ) - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - pf = vbt.Portfolio.from_signals( - close=close_df, - entries=entries, - exits=exits, - init_cash=100_000.0, - size=100, - size_type="amount", - fees=0.0, - slippage=0.0, - ) - - # Force computation - _ = pf.total_return - num_trades = len(pf.trades.records_readable) - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "VectorBT Pro", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": peak / 1024 / 1024, - } - - -def benchmark_ml4t_backtest( - asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates -) -> dict: - """Benchmark ml4t.backtest.""" - import polars as pl - - from ml4t.backtest._validation_imports import DataFeed, Engine, ExecutionMode, NoCommission, NoSlippage, Strategy - - # Prepare data in polars format - rows = [] - for asset_name, df in asset_data.items(): - for i, (ts, row) in enumerate(df.iterrows()): - rows.append( - { - "timestamp": ts.to_pydatetime(), - "asset": asset_name, - "open": row["open"], - "high": row["high"], - "low": row["low"], - "close": row["close"], - "volume": row["volume"], - } - ) - - prices_pl = pl.DataFrame(rows) - - # Prepare signals - signal_rows = [] - for asset_name in asset_data: - for i, ts in enumerate(dates): - signal_rows.append( - { - "timestamp": ts.to_pydatetime(), - "asset": asset_name, - "entry": bool(entries[i]), - "exit": bool(exits[i]), - } - ) - - signals_pl = pl.DataFrame(signal_rows) - - class BenchmarkStrategy(Strategy): - def on_data(self, timestamp, data, context, broker): - for asset_name, asset_data in data.items(): - signals = asset_data.get("signals", {}) - position = broker.get_position(asset_name) - current_qty = position.quantity if position else 0 - - if signals.get("exit") and current_qty > 0: - broker.close_position(asset_name) - elif signals.get("entry") and current_qty == 0: - broker.submit_order(asset_name, 100) - - # Warm-up run with small data - small_prices = prices_pl.head(100 * len(asset_data)) - small_signals = signals_pl.head(100 * len(asset_data)) - small_feed = DataFeed(prices_df=small_prices, signals_df=small_signals) - small_engine = Engine( - small_feed, - BenchmarkStrategy(), - initial_cash=100_000.0, - allow_short_selling=False, - commission_model=NoCommission(), - slippage_model=NoSlippage(), - execution_mode=ExecutionMode.SAME_BAR, - ) - _ = small_engine.run() - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - feed = DataFeed(prices_df=prices_pl, signals_df=signals_pl) - strategy = BenchmarkStrategy() - - engine = Engine( - feed, - strategy, - initial_cash=100_000.0, - allow_short_selling=False, - commission_model=NoCommission(), - slippage_model=NoSlippage(), - execution_mode=ExecutionMode.SAME_BAR, - ) - - results = engine.run() - num_trades = results["num_trades"] - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "ml4t.backtest", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": peak / 1024 / 1024, - } - - -def run_benchmark(n_bars: int, n_assets: int) -> dict: - """Run benchmark for specific configuration.""" - print(f"\n Generating data: {n_bars} bars x {n_assets} assets...") - asset_data, entries, exits, dates = generate_benchmark_data(n_bars, n_assets) - - print(" Running VectorBT Pro...") - vbt_results = benchmark_vectorbt_pro(asset_data, entries, exits) - - print(" Running ml4t.backtest...") - ml4t_results = benchmark_ml4t_backtest(asset_data, entries, exits, dates) - - # Calculate speedup - speedup = ( - vbt_results["runtime_sec"] / ml4t_results["runtime_sec"] - if ml4t_results["runtime_sec"] > 0 - else 0 - ) - - return { - "n_bars": n_bars, - "n_assets": n_assets, - "vbt_runtime": vbt_results["runtime_sec"], - "vbt_trades": vbt_results["num_trades"], - "vbt_memory": vbt_results["memory_mb"], - "ml4t_runtime": ml4t_results["runtime_sec"], - "ml4t_trades": ml4t_results["num_trades"], - "ml4t_memory": ml4t_results["memory_mb"], - "speedup": speedup, - } - - -def main(): - print("=" * 70) - print("Performance Benchmark: ml4t.backtest vs VectorBT Pro") - print("=" * 70) - - # Test configurations - configs = [ - (100, 1), - (1000, 1), - (10000, 1), - (1000, 10), - (10000, 10), - (1000, 100), - ] - - results = [] - - for n_bars, n_assets in configs: - print(f"\nBenchmark: {n_bars} bars x {n_assets} assets") - try: - result = run_benchmark(n_bars, n_assets) - results.append(result) - - print( - f" VBT: {result['vbt_runtime']:.3f}s, {result['vbt_trades']} trades, {result['vbt_memory']:.1f} MB" - ) - print( - f" ML4T: {result['ml4t_runtime']:.3f}s, {result['ml4t_trades']} trades, {result['ml4t_memory']:.1f} MB" - ) - print( - f" Speedup: {result['speedup']:.2f}x {'(VBT faster)' if result['speedup'] > 1 else '(ML4T faster)'}" - ) - except Exception as e: - print(f" ERROR: {e}") - traceback.print_exc() - - # Summary table - print("\n" + "=" * 70) - print("SUMMARY") - print("=" * 70) - print(f"{'Config':<20} {'VBT (s)':<12} {'ML4T (s)':<12} {'Speedup':<12} {'Winner'}") - print("-" * 70) - - for r in results: - config = f"{r['n_bars']}x{r['n_assets']}" - winner = "VBT" if r["speedup"] > 1 else "ML4T" - speedup_str = f"{r['speedup']:.2f}x" if r["speedup"] > 1 else f"{1/r['speedup']:.2f}x" - print( - f"{config:<20} {r['vbt_runtime']:<12.3f} {r['ml4t_runtime']:<12.3f} {speedup_str:<12} {winner}" - ) - - print("=" * 70) - - return 0 +VALIDATION_DIR = Path(__file__).parents[1] +sys.path.insert(0, str(VALIDATION_DIR)) +from cross_framework_performance import main # noqa: E402 if __name__ == "__main__": - sys.exit(main()) + raise SystemExit(main()) diff --git a/validation/vectorbt_pro/controlled_replay-2025.12.31.json b/validation/vectorbt_pro/controlled_replay-2025.12.31.json new file mode 100644 index 00000000..7f3ef9ef --- /dev/null +++ b/validation/vectorbt_pro/controlled_replay-2025.12.31.json @@ -0,0 +1,1209 @@ +{ + "audit_trigger": { + "cause": "vectorbt collateral semantics missing from the ML4T comparison profile", + "external_fill_count": 390369, + "external_final_value": 716785.408089, + "ml4t_commit": "488c05d84e74156aba71c4f7ffac28df3881fea9", + "ml4t_fill_count": 418825, + "ml4t_final_value": 1162222.354417 + }, + "current": { + "capabilities": { + "closed_trades": "reconstructed from canonical native fills", + "fill_order": "session, asset, side, quantity, price", + "fills": "native", + "intents": "canonical strategy trace", + "terminal_state": "reconstructed from native fills and final marks" + }, + "comparison": { + "actual_error": null, + "actual_framework": "ml4t.backtest[vectorbt_strict]", + "canonical_money_quantum": "0.000001", + "canonical_record_quantum": "1E-8", + "checks": [ + { + "actual_count": 427790, + "actual_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "expected_count": 427790, + "expected_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "first_difference": null, + "name": "order_intents", + "passed": true + }, + { + "actual_count": 390369, + "actual_sha256": "83af0bc6cb77d931349349093a611cb645e1503c2c33aef9e626c293630cf0c1", + "expected_count": 390369, + "expected_sha256": "83af0bc6cb77d931349349093a611cb645e1503c2c33aef9e626c293630cf0c1", + "first_difference": null, + "name": "fills", + "passed": true + }, + { + "actual_count": 188549, + "actual_sha256": "7055c62444c54eb5f5191358b187641ad7de019c3c182ce7f088d460ec59a242", + "expected_count": 188549, + "expected_sha256": "7055c62444c54eb5f5191358b187641ad7de019c3c182ce7f088d460ec59a242", + "first_difference": null, + "name": "trades", + "passed": true + }, + { + "actual": 188549, + "canonical_actual": 188549.0, + "canonical_difference": 0.0, + "canonical_expected": 188549.0, + "expected": 188549, + "name": "trade_count", + "passed": true, + "raw_difference": 0 + }, + { + "actual": -283214.59191072755, + "canonical_actual": -283214.591911, + "canonical_difference": 0.0, + "canonical_expected": -283214.591911, + "expected": -283214.59191072907, + "name": "total_pnl", + "passed": true, + "raw_difference": 1.5133991837501526e-09 + }, + { + "actual": 716785.4080892724, + "canonical_actual": 716785.408089, + "canonical_difference": 0.0, + "canonical_expected": 716785.408089, + "expected": 716785.4080892709, + "name": "final_value", + "passed": true, + "raw_difference": 1.5133991837501526e-09 + }, + { + "actual": { + "cash_from_fill_ledger": 786065.409828, + "holdings_from_fill_ledger": -69280.005398, + "positions": { + "ASSET_000": 0.0, + "ASSET_001": -100.0, + "ASSET_002": 0.0, + "ASSET_004": -0.0, + "ASSET_005": -100.0, + "ASSET_006": 10.74397, + "ASSET_007": 0.0, + "ASSET_008": -0.0, + "ASSET_009": -0.0, + "ASSET_010": 0.0, + "ASSET_011": -0.0, + "ASSET_014": 0.0, + "ASSET_015": -0.0, + "ASSET_017": 0.0, + "ASSET_019": 0.0, + "ASSET_020": -100.0, + "ASSET_021": -0.0, + "ASSET_023": -0.0, + "ASSET_024": -0.0, + "ASSET_025": -0.0, + "ASSET_026": 0.0, + "ASSET_027": 0.0, + "ASSET_028": 100.0, + "ASSET_029": 100.0, + "ASSET_030": -0.477202, + "ASSET_032": 0.0, + "ASSET_033": -0.0, + "ASSET_034": -0.0, + "ASSET_035": -0.0, + "ASSET_036": 0.0, + "ASSET_037": 0.0, + "ASSET_038": -0.0, + "ASSET_039": 0.0, + "ASSET_040": 0.0, + "ASSET_042": -0.0, + "ASSET_043": -0.0, + "ASSET_044": -0.0, + "ASSET_046": -0.0, + "ASSET_047": 0.0, + "ASSET_048": 0.0, + "ASSET_049": -0.0, + "ASSET_051": 0.0, + "ASSET_052": 0.0, + "ASSET_053": 0.0, + "ASSET_054": 0.0, + "ASSET_055": -0.0, + "ASSET_057": -0.0, + "ASSET_058": 0.0, + "ASSET_059": 0.0, + "ASSET_060": 0.0, + "ASSET_062": 0.0, + "ASSET_065": -0.0, + "ASSET_066": -100.0, + "ASSET_067": -0.0, + "ASSET_068": 0.0, + "ASSET_069": 0.0, + "ASSET_070": -100.0, + "ASSET_071": 100.0, + "ASSET_072": 0.0, + "ASSET_073": -0.0, + "ASSET_074": 0.0, + "ASSET_075": -80.307178, + "ASSET_076": -0.0, + "ASSET_077": -0.0, + "ASSET_078": 0.0, + "ASSET_079": -0.0, + "ASSET_081": 0.0, + "ASSET_082": 0.0, + "ASSET_084": -0.0, + "ASSET_085": 0.0, + "ASSET_086": -0.0, + "ASSET_087": -0.0, + "ASSET_089": 0.0, + "ASSET_090": 0.0, + "ASSET_091": 0.0, + "ASSET_092": -0.0, + "ASSET_093": 0.0, + "ASSET_094": 0.0, + "ASSET_096": -0.0, + "ASSET_097": 0.0, + "ASSET_098": 0.0, + "ASSET_099": -0.0, + "ASSET_101": -0.0, + "ASSET_102": 0.0, + "ASSET_103": -0.0, + "ASSET_104": 0.0, + "ASSET_105": 0.0, + "ASSET_106": -0.0, + "ASSET_107": 0.0, + "ASSET_108": -0.0, + "ASSET_109": 0.0, + "ASSET_110": -0.0, + "ASSET_111": 0.0, + "ASSET_112": 0.0, + "ASSET_113": -0.0, + "ASSET_114": -0.0, + "ASSET_115": 0.0, + "ASSET_116": -0.0, + "ASSET_117": -0.0, + "ASSET_118": 0.0, + "ASSET_119": -0.0, + "ASSET_120": 0.0, + "ASSET_121": -0.0, + "ASSET_122": 0.0, + "ASSET_123": -0.0, + "ASSET_124": 0.0, + "ASSET_125": -0.0, + "ASSET_126": -0.0, + "ASSET_127": 0.0, + "ASSET_130": 0.0, + "ASSET_131": -0.0, + "ASSET_132": 0.0, + "ASSET_134": 0.0, + "ASSET_135": -0.0, + "ASSET_136": 0.0, + "ASSET_137": 0.0, + "ASSET_138": -100.0, + "ASSET_139": 100.0, + "ASSET_140": -65.731089, + "ASSET_142": -0.0, + "ASSET_143": 0.0, + "ASSET_146": 0.0, + "ASSET_147": -0.0, + "ASSET_148": -0.0, + "ASSET_150": 0.0, + "ASSET_151": -0.0, + "ASSET_152": 0.0, + "ASSET_153": 11.479909, + "ASSET_154": -0.0, + "ASSET_155": -0.0, + "ASSET_156": 4.275139, + "ASSET_157": 0.0, + "ASSET_158": -0.0, + "ASSET_159": 9.819309, + "ASSET_160": -0.0, + "ASSET_161": 100.0, + "ASSET_162": 0.0, + "ASSET_163": 0.0, + "ASSET_164": 0.0, + "ASSET_165": 0.0, + "ASSET_166": -0.0, + "ASSET_168": 0.0, + "ASSET_169": -0.0, + "ASSET_170": -0.0, + "ASSET_171": 0.0, + "ASSET_173": 54.074946, + "ASSET_174": -0.0, + "ASSET_175": 0.0, + "ASSET_176": 0.0, + "ASSET_177": -0.0, + "ASSET_178": -0.0, + "ASSET_179": 0.0, + "ASSET_180": 0.0, + "ASSET_181": -0.0, + "ASSET_182": -0.0, + "ASSET_183": 0.0, + "ASSET_184": 100.0, + "ASSET_185": 0.0, + "ASSET_186": 0.0, + "ASSET_187": 0.0, + "ASSET_188": -0.0, + "ASSET_189": -0.0, + "ASSET_190": 0.0, + "ASSET_191": 0.0, + "ASSET_192": -0.0, + "ASSET_193": 0.0, + "ASSET_194": 0.0, + "ASSET_195": -100.0, + "ASSET_196": -0.0, + "ASSET_197": 0.0, + "ASSET_198": 0.0, + "ASSET_199": 0.0, + "ASSET_200": 0.0, + "ASSET_201": -23.687792, + "ASSET_202": 0.0, + "ASSET_203": -0.0, + "ASSET_205": 100.0, + "ASSET_206": -10.740523, + "ASSET_207": -0.0, + "ASSET_208": -0.0, + "ASSET_209": 0.0, + "ASSET_210": -34.019116, + "ASSET_212": 0.0, + "ASSET_213": -0.0, + "ASSET_214": 0.0, + "ASSET_218": 0.0, + "ASSET_219": 0.0, + "ASSET_220": 0.0, + "ASSET_221": -0.0, + "ASSET_222": -0.0, + "ASSET_223": -0.0, + "ASSET_224": 0.0, + "ASSET_225": -0.0, + "ASSET_226": 0.0, + "ASSET_227": -0.0, + "ASSET_228": -0.0, + "ASSET_229": -100.0, + "ASSET_230": -0.0, + "ASSET_231": -0.0, + "ASSET_232": -0.0, + "ASSET_233": 0.0, + "ASSET_235": 0.0, + "ASSET_236": 0.0, + "ASSET_237": 0.0, + "ASSET_239": -0.0, + "ASSET_240": 0.0, + "ASSET_241": -100.0, + "ASSET_243": 0.0, + "ASSET_244": -0.0, + "ASSET_246": -100.0, + "ASSET_247": -0.0, + "ASSET_249": -0.0 + }, + "reported_final_value": 716785.408089, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "actual_sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c", + "expected": { + "cash_from_fill_ledger": 786065.409828, + "holdings_from_fill_ledger": -69280.005398, + "positions": { + "ASSET_000": 0.0, + "ASSET_001": -100.0, + "ASSET_002": 0.0, + "ASSET_004": -0.0, + "ASSET_005": -100.0, + "ASSET_006": 10.74397, + "ASSET_007": 0.0, + "ASSET_008": -0.0, + "ASSET_009": -0.0, + "ASSET_010": 0.0, + "ASSET_011": -0.0, + "ASSET_014": 0.0, + "ASSET_015": -0.0, + "ASSET_017": 0.0, + "ASSET_019": 0.0, + "ASSET_020": -100.0, + "ASSET_021": -0.0, + "ASSET_023": -0.0, + "ASSET_024": -0.0, + "ASSET_025": -0.0, + "ASSET_026": 0.0, + "ASSET_027": 0.0, + "ASSET_028": 100.0, + "ASSET_029": 100.0, + "ASSET_030": -0.477202, + "ASSET_032": 0.0, + "ASSET_033": -0.0, + "ASSET_034": -0.0, + "ASSET_035": -0.0, + "ASSET_036": 0.0, + "ASSET_037": 0.0, + "ASSET_038": -0.0, + "ASSET_039": 0.0, + "ASSET_040": 0.0, + "ASSET_042": -0.0, + "ASSET_043": -0.0, + "ASSET_044": -0.0, + "ASSET_046": -0.0, + "ASSET_047": 0.0, + "ASSET_048": 0.0, + "ASSET_049": -0.0, + "ASSET_051": 0.0, + "ASSET_052": 0.0, + "ASSET_053": 0.0, + "ASSET_054": 0.0, + "ASSET_055": -0.0, + "ASSET_057": -0.0, + "ASSET_058": 0.0, + "ASSET_059": 0.0, + "ASSET_060": 0.0, + "ASSET_062": 0.0, + "ASSET_065": -0.0, + "ASSET_066": -100.0, + "ASSET_067": -0.0, + "ASSET_068": 0.0, + "ASSET_069": 0.0, + "ASSET_070": -100.0, + "ASSET_071": 100.0, + "ASSET_072": 0.0, + "ASSET_073": -0.0, + "ASSET_074": 0.0, + "ASSET_075": -80.307178, + "ASSET_076": -0.0, + "ASSET_077": -0.0, + "ASSET_078": 0.0, + "ASSET_079": -0.0, + "ASSET_081": 0.0, + "ASSET_082": 0.0, + "ASSET_084": -0.0, + "ASSET_085": 0.0, + "ASSET_086": -0.0, + "ASSET_087": -0.0, + "ASSET_089": 0.0, + "ASSET_090": 0.0, + "ASSET_091": 0.0, + "ASSET_092": -0.0, + "ASSET_093": 0.0, + "ASSET_094": 0.0, + "ASSET_096": -0.0, + "ASSET_097": 0.0, + "ASSET_098": 0.0, + "ASSET_099": -0.0, + "ASSET_101": -0.0, + "ASSET_102": 0.0, + "ASSET_103": -0.0, + "ASSET_104": 0.0, + "ASSET_105": 0.0, + "ASSET_106": -0.0, + "ASSET_107": 0.0, + "ASSET_108": -0.0, + "ASSET_109": 0.0, + "ASSET_110": -0.0, + "ASSET_111": 0.0, + "ASSET_112": 0.0, + "ASSET_113": -0.0, + "ASSET_114": -0.0, + "ASSET_115": 0.0, + "ASSET_116": -0.0, + "ASSET_117": -0.0, + "ASSET_118": 0.0, + "ASSET_119": -0.0, + "ASSET_120": 0.0, + "ASSET_121": -0.0, + "ASSET_122": 0.0, + "ASSET_123": -0.0, + "ASSET_124": 0.0, + "ASSET_125": -0.0, + "ASSET_126": -0.0, + "ASSET_127": 0.0, + "ASSET_130": 0.0, + "ASSET_131": -0.0, + "ASSET_132": 0.0, + "ASSET_134": 0.0, + "ASSET_135": -0.0, + "ASSET_136": 0.0, + "ASSET_137": 0.0, + "ASSET_138": -100.0, + "ASSET_139": 100.0, + "ASSET_140": -65.731089, + "ASSET_142": -0.0, + "ASSET_143": 0.0, + "ASSET_146": 0.0, + "ASSET_147": -0.0, + "ASSET_148": -0.0, + "ASSET_150": 0.0, + "ASSET_151": -0.0, + "ASSET_152": 0.0, + "ASSET_153": 11.479909, + "ASSET_154": -0.0, + "ASSET_155": -0.0, + "ASSET_156": 4.275139, + "ASSET_157": 0.0, + "ASSET_158": -0.0, + "ASSET_159": 9.819309, + "ASSET_160": -0.0, + "ASSET_161": 100.0, + "ASSET_162": 0.0, + "ASSET_163": 0.0, + "ASSET_164": 0.0, + "ASSET_165": 0.0, + "ASSET_166": -0.0, + "ASSET_168": 0.0, + "ASSET_169": -0.0, + "ASSET_170": -0.0, + "ASSET_171": 0.0, + "ASSET_173": 54.074946, + "ASSET_174": -0.0, + "ASSET_175": 0.0, + "ASSET_176": 0.0, + "ASSET_177": -0.0, + "ASSET_178": -0.0, + "ASSET_179": 0.0, + "ASSET_180": 0.0, + "ASSET_181": -0.0, + "ASSET_182": -0.0, + "ASSET_183": 0.0, + "ASSET_184": 100.0, + "ASSET_185": 0.0, + "ASSET_186": 0.0, + "ASSET_187": 0.0, + "ASSET_188": -0.0, + "ASSET_189": -0.0, + "ASSET_190": 0.0, + "ASSET_191": 0.0, + "ASSET_192": -0.0, + "ASSET_193": 0.0, + "ASSET_194": 0.0, + "ASSET_195": -100.0, + "ASSET_196": -0.0, + "ASSET_197": 0.0, + "ASSET_198": 0.0, + "ASSET_199": 0.0, + "ASSET_200": 0.0, + "ASSET_201": -23.687792, + "ASSET_202": 0.0, + "ASSET_203": -0.0, + "ASSET_205": 100.0, + "ASSET_206": -10.740523, + "ASSET_207": -0.0, + "ASSET_208": -0.0, + "ASSET_209": 0.0, + "ASSET_210": -34.019116, + "ASSET_212": 0.0, + "ASSET_213": -0.0, + "ASSET_214": 0.0, + "ASSET_218": 0.0, + "ASSET_219": 0.0, + "ASSET_220": 0.0, + "ASSET_221": -0.0, + "ASSET_222": -0.0, + "ASSET_223": -0.0, + "ASSET_224": 0.0, + "ASSET_225": -0.0, + "ASSET_226": 0.0, + "ASSET_227": -0.0, + "ASSET_228": -0.0, + "ASSET_229": -100.0, + "ASSET_230": -0.0, + "ASSET_231": -0.0, + "ASSET_232": -0.0, + "ASSET_233": 0.0, + "ASSET_235": 0.0, + "ASSET_236": 0.0, + "ASSET_237": 0.0, + "ASSET_239": -0.0, + "ASSET_240": 0.0, + "ASSET_241": -100.0, + "ASSET_243": 0.0, + "ASSET_244": -0.0, + "ASSET_246": -100.0, + "ASSET_247": -0.0, + "ASSET_249": -0.0 + }, + "reported_final_value": 716785.408089, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "expected_sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c", + "name": "terminal_state", + "passed": true + } + ], + "expected_error": null, + "expected_framework": "VectorBT Pro", + "passed": true, + "scenario": "controlled_250_assets_5040_sessions", + "schema_version": 1, + "timestamp_domain": "session_date" + }, + "framework": "vectorbt_pro", + "input": { + "conversion": "none", + "effective_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09", + "raw_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09" + }, + "ml4t": { + "commit": "ad62d2bd30f9e3a25a9a205ae60df6b0309ca89a", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runtime_seconds": { + "framework": 67.83662832411937, + "ml4t": 122.52686988189816, + "not_a_performance_claim": true + }, + "source_digests": { + "benchmark_suite": "dcafa42216566ff5e83ae0788d53d9789c2b7980956ea656c874684730b40523", + "framework_manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "large_scale_runner": "31620bd2b07466f733a6060676707e664881e7b6d4c3ea3f09d8f47354e86706", + "profiles": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505" + }, + "target": { + "access": "licensed", + "actual_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "actual_version": "2026.6.27", + "commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "display_name": "VectorBT Pro", + "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2026.6.27" + } + }, + "framework_output_comparison": { + "current": { + "fills": { + "count": 390369, + "sha256": "83af0bc6cb77d931349349093a611cb645e1503c2c33aef9e626c293630cf0c1" + }, + "final_value": 716785.408089, + "order_intents": { + "count": 427790, + "sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c" + }, + "terminal_state": { + "count": null, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "total_pnl": -283214.591911, + "trade_count": 188549.0, + "trades": { + "count": 188549, + "sha256": "7055c62444c54eb5f5191358b187641ad7de019c3c182ce7f088d460ec59a242" + } + }, + "historical": { + "fills": { + "count": 390369, + "sha256": "83af0bc6cb77d931349349093a611cb645e1503c2c33aef9e626c293630cf0c1" + }, + "final_value": 716785.408089, + "order_intents": { + "count": 427790, + "sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c" + }, + "terminal_state": { + "count": null, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "total_pnl": -283214.591911, + "trade_count": 188549.0, + "trades": { + "count": 188549, + "sha256": "7055c62444c54eb5f5191358b187641ad7de019c3c182ce7f088d460ec59a242" + } + }, + "passed": true + }, + "generated_at": "2026-08-14T13:22:45.011801+00:00", + "historical": { + "capabilities": { + "closed_trades": "reconstructed from canonical native fills", + "fill_order": "session, asset, side, quantity, price", + "fills": "native", + "intents": "canonical strategy trace", + "terminal_state": "reconstructed from native fills and final marks" + }, + "comparison": { + "actual_error": null, + "actual_framework": "ml4t.backtest[vectorbt_strict]", + "canonical_money_quantum": "0.000001", + "canonical_record_quantum": "1E-8", + "checks": [ + { + "actual_count": 427790, + "actual_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "expected_count": 427790, + "expected_sha256": "b87edd7321d4be2307d8db968004ebd7e12edf47a3955003f42d0e974c8f369c", + "first_difference": null, + "name": "order_intents", + "passed": true + }, + { + "actual_count": 390369, + "actual_sha256": "83af0bc6cb77d931349349093a611cb645e1503c2c33aef9e626c293630cf0c1", + "expected_count": 390369, + "expected_sha256": "83af0bc6cb77d931349349093a611cb645e1503c2c33aef9e626c293630cf0c1", + "first_difference": null, + "name": "fills", + "passed": true + }, + { + "actual_count": 188549, + "actual_sha256": "7055c62444c54eb5f5191358b187641ad7de019c3c182ce7f088d460ec59a242", + "expected_count": 188549, + "expected_sha256": "7055c62444c54eb5f5191358b187641ad7de019c3c182ce7f088d460ec59a242", + "first_difference": null, + "name": "trades", + "passed": true + }, + { + "actual": 188549, + "canonical_actual": 188549.0, + "canonical_difference": 0.0, + "canonical_expected": 188549.0, + "expected": 188549, + "name": "trade_count", + "passed": true, + "raw_difference": 0 + }, + { + "actual": -283214.59191072755, + "canonical_actual": -283214.591911, + "canonical_difference": 0.0, + "canonical_expected": -283214.591911, + "expected": -283214.59191072907, + "name": "total_pnl", + "passed": true, + "raw_difference": 1.5133991837501526e-09 + }, + { + "actual": 716785.4080892724, + "canonical_actual": 716785.408089, + "canonical_difference": 0.0, + "canonical_expected": 716785.408089, + "expected": 716785.4080892709, + "name": "final_value", + "passed": true, + "raw_difference": 1.5133991837501526e-09 + }, + { + "actual": { + "cash_from_fill_ledger": 786065.409828, + "holdings_from_fill_ledger": -69280.005398, + "positions": { + "ASSET_000": 0.0, + "ASSET_001": -100.0, + "ASSET_002": 0.0, + "ASSET_004": -0.0, + "ASSET_005": -100.0, + "ASSET_006": 10.74397, + "ASSET_007": 0.0, + "ASSET_008": -0.0, + "ASSET_009": -0.0, + "ASSET_010": 0.0, + "ASSET_011": -0.0, + "ASSET_014": 0.0, + "ASSET_015": -0.0, + "ASSET_017": 0.0, + "ASSET_019": 0.0, + "ASSET_020": -100.0, + "ASSET_021": -0.0, + "ASSET_023": -0.0, + "ASSET_024": -0.0, + "ASSET_025": -0.0, + "ASSET_026": 0.0, + "ASSET_027": 0.0, + "ASSET_028": 100.0, + "ASSET_029": 100.0, + "ASSET_030": -0.477202, + "ASSET_032": 0.0, + "ASSET_033": -0.0, + "ASSET_034": -0.0, + "ASSET_035": -0.0, + "ASSET_036": 0.0, + "ASSET_037": 0.0, + "ASSET_038": -0.0, + "ASSET_039": 0.0, + "ASSET_040": 0.0, + "ASSET_042": -0.0, + "ASSET_043": -0.0, + "ASSET_044": -0.0, + "ASSET_046": -0.0, + "ASSET_047": 0.0, + "ASSET_048": 0.0, + "ASSET_049": -0.0, + "ASSET_051": 0.0, + "ASSET_052": 0.0, + "ASSET_053": 0.0, + "ASSET_054": 0.0, + "ASSET_055": -0.0, + "ASSET_057": -0.0, + "ASSET_058": 0.0, + "ASSET_059": 0.0, + "ASSET_060": 0.0, + "ASSET_062": 0.0, + "ASSET_065": -0.0, + "ASSET_066": -100.0, + "ASSET_067": -0.0, + "ASSET_068": 0.0, + "ASSET_069": 0.0, + "ASSET_070": -100.0, + "ASSET_071": 100.0, + "ASSET_072": 0.0, + "ASSET_073": -0.0, + "ASSET_074": 0.0, + "ASSET_075": -80.307178, + "ASSET_076": -0.0, + "ASSET_077": -0.0, + "ASSET_078": 0.0, + "ASSET_079": -0.0, + "ASSET_081": 0.0, + "ASSET_082": 0.0, + "ASSET_084": -0.0, + "ASSET_085": 0.0, + "ASSET_086": -0.0, + "ASSET_087": -0.0, + "ASSET_089": 0.0, + "ASSET_090": 0.0, + "ASSET_091": 0.0, + "ASSET_092": -0.0, + "ASSET_093": 0.0, + "ASSET_094": 0.0, + "ASSET_096": -0.0, + "ASSET_097": 0.0, + "ASSET_098": 0.0, + "ASSET_099": -0.0, + "ASSET_101": -0.0, + "ASSET_102": 0.0, + "ASSET_103": -0.0, + "ASSET_104": 0.0, + "ASSET_105": 0.0, + "ASSET_106": -0.0, + "ASSET_107": 0.0, + "ASSET_108": -0.0, + "ASSET_109": 0.0, + "ASSET_110": -0.0, + "ASSET_111": 0.0, + "ASSET_112": 0.0, + "ASSET_113": -0.0, + "ASSET_114": -0.0, + "ASSET_115": 0.0, + "ASSET_116": -0.0, + "ASSET_117": -0.0, + "ASSET_118": 0.0, + "ASSET_119": -0.0, + "ASSET_120": 0.0, + "ASSET_121": -0.0, + "ASSET_122": 0.0, + "ASSET_123": -0.0, + "ASSET_124": 0.0, + "ASSET_125": -0.0, + "ASSET_126": -0.0, + "ASSET_127": 0.0, + "ASSET_130": 0.0, + "ASSET_131": -0.0, + "ASSET_132": 0.0, + "ASSET_134": 0.0, + "ASSET_135": -0.0, + "ASSET_136": 0.0, + "ASSET_137": 0.0, + "ASSET_138": -100.0, + "ASSET_139": 100.0, + "ASSET_140": -65.731089, + "ASSET_142": -0.0, + "ASSET_143": 0.0, + "ASSET_146": 0.0, + "ASSET_147": -0.0, + "ASSET_148": -0.0, + "ASSET_150": 0.0, + "ASSET_151": -0.0, + "ASSET_152": 0.0, + "ASSET_153": 11.479909, + "ASSET_154": -0.0, + "ASSET_155": -0.0, + "ASSET_156": 4.275139, + "ASSET_157": 0.0, + "ASSET_158": -0.0, + "ASSET_159": 9.819309, + "ASSET_160": -0.0, + "ASSET_161": 100.0, + "ASSET_162": 0.0, + "ASSET_163": 0.0, + "ASSET_164": 0.0, + "ASSET_165": 0.0, + "ASSET_166": -0.0, + "ASSET_168": 0.0, + "ASSET_169": -0.0, + "ASSET_170": -0.0, + "ASSET_171": 0.0, + "ASSET_173": 54.074946, + "ASSET_174": -0.0, + "ASSET_175": 0.0, + "ASSET_176": 0.0, + "ASSET_177": -0.0, + "ASSET_178": -0.0, + "ASSET_179": 0.0, + "ASSET_180": 0.0, + "ASSET_181": -0.0, + "ASSET_182": -0.0, + "ASSET_183": 0.0, + "ASSET_184": 100.0, + "ASSET_185": 0.0, + "ASSET_186": 0.0, + "ASSET_187": 0.0, + "ASSET_188": -0.0, + "ASSET_189": -0.0, + "ASSET_190": 0.0, + "ASSET_191": 0.0, + "ASSET_192": -0.0, + "ASSET_193": 0.0, + "ASSET_194": 0.0, + "ASSET_195": -100.0, + "ASSET_196": -0.0, + "ASSET_197": 0.0, + "ASSET_198": 0.0, + "ASSET_199": 0.0, + "ASSET_200": 0.0, + "ASSET_201": -23.687792, + "ASSET_202": 0.0, + "ASSET_203": -0.0, + "ASSET_205": 100.0, + "ASSET_206": -10.740523, + "ASSET_207": -0.0, + "ASSET_208": -0.0, + "ASSET_209": 0.0, + "ASSET_210": -34.019116, + "ASSET_212": 0.0, + "ASSET_213": -0.0, + "ASSET_214": 0.0, + "ASSET_218": 0.0, + "ASSET_219": 0.0, + "ASSET_220": 0.0, + "ASSET_221": -0.0, + "ASSET_222": -0.0, + "ASSET_223": -0.0, + "ASSET_224": 0.0, + "ASSET_225": -0.0, + "ASSET_226": 0.0, + "ASSET_227": -0.0, + "ASSET_228": -0.0, + "ASSET_229": -100.0, + "ASSET_230": -0.0, + "ASSET_231": -0.0, + "ASSET_232": -0.0, + "ASSET_233": 0.0, + "ASSET_235": 0.0, + "ASSET_236": 0.0, + "ASSET_237": 0.0, + "ASSET_239": -0.0, + "ASSET_240": 0.0, + "ASSET_241": -100.0, + "ASSET_243": 0.0, + "ASSET_244": -0.0, + "ASSET_246": -100.0, + "ASSET_247": -0.0, + "ASSET_249": -0.0 + }, + "reported_final_value": 716785.408089, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "actual_sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c", + "expected": { + "cash_from_fill_ledger": 786065.409828, + "holdings_from_fill_ledger": -69280.005398, + "positions": { + "ASSET_000": 0.0, + "ASSET_001": -100.0, + "ASSET_002": 0.0, + "ASSET_004": -0.0, + "ASSET_005": -100.0, + "ASSET_006": 10.74397, + "ASSET_007": 0.0, + "ASSET_008": -0.0, + "ASSET_009": -0.0, + "ASSET_010": 0.0, + "ASSET_011": -0.0, + "ASSET_014": 0.0, + "ASSET_015": -0.0, + "ASSET_017": 0.0, + "ASSET_019": 0.0, + "ASSET_020": -100.0, + "ASSET_021": -0.0, + "ASSET_023": -0.0, + "ASSET_024": -0.0, + "ASSET_025": -0.0, + "ASSET_026": 0.0, + "ASSET_027": 0.0, + "ASSET_028": 100.0, + "ASSET_029": 100.0, + "ASSET_030": -0.477202, + "ASSET_032": 0.0, + "ASSET_033": -0.0, + "ASSET_034": -0.0, + "ASSET_035": -0.0, + "ASSET_036": 0.0, + "ASSET_037": 0.0, + "ASSET_038": -0.0, + "ASSET_039": 0.0, + "ASSET_040": 0.0, + "ASSET_042": -0.0, + "ASSET_043": -0.0, + "ASSET_044": -0.0, + "ASSET_046": -0.0, + "ASSET_047": 0.0, + "ASSET_048": 0.0, + "ASSET_049": -0.0, + "ASSET_051": 0.0, + "ASSET_052": 0.0, + "ASSET_053": 0.0, + "ASSET_054": 0.0, + "ASSET_055": -0.0, + "ASSET_057": -0.0, + "ASSET_058": 0.0, + "ASSET_059": 0.0, + "ASSET_060": 0.0, + "ASSET_062": 0.0, + "ASSET_065": -0.0, + "ASSET_066": -100.0, + "ASSET_067": -0.0, + "ASSET_068": 0.0, + "ASSET_069": 0.0, + "ASSET_070": -100.0, + "ASSET_071": 100.0, + "ASSET_072": 0.0, + "ASSET_073": -0.0, + "ASSET_074": 0.0, + "ASSET_075": -80.307178, + "ASSET_076": -0.0, + "ASSET_077": -0.0, + "ASSET_078": 0.0, + "ASSET_079": -0.0, + "ASSET_081": 0.0, + "ASSET_082": 0.0, + "ASSET_084": -0.0, + "ASSET_085": 0.0, + "ASSET_086": -0.0, + "ASSET_087": -0.0, + "ASSET_089": 0.0, + "ASSET_090": 0.0, + "ASSET_091": 0.0, + "ASSET_092": -0.0, + "ASSET_093": 0.0, + "ASSET_094": 0.0, + "ASSET_096": -0.0, + "ASSET_097": 0.0, + "ASSET_098": 0.0, + "ASSET_099": -0.0, + "ASSET_101": -0.0, + "ASSET_102": 0.0, + "ASSET_103": -0.0, + "ASSET_104": 0.0, + "ASSET_105": 0.0, + "ASSET_106": -0.0, + "ASSET_107": 0.0, + "ASSET_108": -0.0, + "ASSET_109": 0.0, + "ASSET_110": -0.0, + "ASSET_111": 0.0, + "ASSET_112": 0.0, + "ASSET_113": -0.0, + "ASSET_114": -0.0, + "ASSET_115": 0.0, + "ASSET_116": -0.0, + "ASSET_117": -0.0, + "ASSET_118": 0.0, + "ASSET_119": -0.0, + "ASSET_120": 0.0, + "ASSET_121": -0.0, + "ASSET_122": 0.0, + "ASSET_123": -0.0, + "ASSET_124": 0.0, + "ASSET_125": -0.0, + "ASSET_126": -0.0, + "ASSET_127": 0.0, + "ASSET_130": 0.0, + "ASSET_131": -0.0, + "ASSET_132": 0.0, + "ASSET_134": 0.0, + "ASSET_135": -0.0, + "ASSET_136": 0.0, + "ASSET_137": 0.0, + "ASSET_138": -100.0, + "ASSET_139": 100.0, + "ASSET_140": -65.731089, + "ASSET_142": -0.0, + "ASSET_143": 0.0, + "ASSET_146": 0.0, + "ASSET_147": -0.0, + "ASSET_148": -0.0, + "ASSET_150": 0.0, + "ASSET_151": -0.0, + "ASSET_152": 0.0, + "ASSET_153": 11.479909, + "ASSET_154": -0.0, + "ASSET_155": -0.0, + "ASSET_156": 4.275139, + "ASSET_157": 0.0, + "ASSET_158": -0.0, + "ASSET_159": 9.819309, + "ASSET_160": -0.0, + "ASSET_161": 100.0, + "ASSET_162": 0.0, + "ASSET_163": 0.0, + "ASSET_164": 0.0, + "ASSET_165": 0.0, + "ASSET_166": -0.0, + "ASSET_168": 0.0, + "ASSET_169": -0.0, + "ASSET_170": -0.0, + "ASSET_171": 0.0, + "ASSET_173": 54.074946, + "ASSET_174": -0.0, + "ASSET_175": 0.0, + "ASSET_176": 0.0, + "ASSET_177": -0.0, + "ASSET_178": -0.0, + "ASSET_179": 0.0, + "ASSET_180": 0.0, + "ASSET_181": -0.0, + "ASSET_182": -0.0, + "ASSET_183": 0.0, + "ASSET_184": 100.0, + "ASSET_185": 0.0, + "ASSET_186": 0.0, + "ASSET_187": 0.0, + "ASSET_188": -0.0, + "ASSET_189": -0.0, + "ASSET_190": 0.0, + "ASSET_191": 0.0, + "ASSET_192": -0.0, + "ASSET_193": 0.0, + "ASSET_194": 0.0, + "ASSET_195": -100.0, + "ASSET_196": -0.0, + "ASSET_197": 0.0, + "ASSET_198": 0.0, + "ASSET_199": 0.0, + "ASSET_200": 0.0, + "ASSET_201": -23.687792, + "ASSET_202": 0.0, + "ASSET_203": -0.0, + "ASSET_205": 100.0, + "ASSET_206": -10.740523, + "ASSET_207": -0.0, + "ASSET_208": -0.0, + "ASSET_209": 0.0, + "ASSET_210": -34.019116, + "ASSET_212": 0.0, + "ASSET_213": -0.0, + "ASSET_214": 0.0, + "ASSET_218": 0.0, + "ASSET_219": 0.0, + "ASSET_220": 0.0, + "ASSET_221": -0.0, + "ASSET_222": -0.0, + "ASSET_223": -0.0, + "ASSET_224": 0.0, + "ASSET_225": -0.0, + "ASSET_226": 0.0, + "ASSET_227": -0.0, + "ASSET_228": -0.0, + "ASSET_229": -100.0, + "ASSET_230": -0.0, + "ASSET_231": -0.0, + "ASSET_232": -0.0, + "ASSET_233": 0.0, + "ASSET_235": 0.0, + "ASSET_236": 0.0, + "ASSET_237": 0.0, + "ASSET_239": -0.0, + "ASSET_240": 0.0, + "ASSET_241": -100.0, + "ASSET_243": 0.0, + "ASSET_244": -0.0, + "ASSET_246": -100.0, + "ASSET_247": -0.0, + "ASSET_249": -0.0 + }, + "reported_final_value": 716785.408089, + "sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c" + }, + "expected_sha256": "30e0db027af83e0fd83dcbc47fcd4f069d3a04b61139be45d4b2492bf9e8f88c", + "name": "terminal_state", + "passed": true + } + ], + "expected_error": null, + "expected_framework": "VectorBT Pro", + "passed": true, + "scenario": "controlled_250_assets_5040_sessions", + "schema_version": 1, + "timestamp_domain": "session_date" + }, + "framework": "vectorbt_pro", + "input": { + "conversion": "none", + "effective_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09", + "raw_sha256": "1d1ef383884bb9db1aad484f2dc9b6b4fb72ade02c41c8d9c8f44055e9580d09" + }, + "ml4t": { + "commit": "1b5131161f65fb42d0374cb182e04e42c654d114", + "dirty": false + }, + "python": { + "implementation": "cpython", + "version": "3.12.11" + }, + "runtime_seconds": { + "framework": 73.64496127492748, + "ml4t": 93.83954169694334, + "not_a_performance_claim": true + }, + "source_digests": { + "benchmark_suite": "dcafa42216566ff5e83ae0788d53d9789c2b7980956ea656c874684730b40523", + "framework_manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", + "large_scale_runner": "31620bd2b07466f733a6060676707e664881e7b6d4c3ea3f09d8f47354e86706", + "profiles": "5a8cd8b2568e7e9f524e96fef6bb00ade3310a6f4a71c0c4f7de2f95bbfdb505" + }, + "target": { + "access": "licensed", + "actual_commit": "1305a1e1974325db9382eaeacc6452e9b075ca71", + "actual_immutable_id": "git:1305a1e1974325db9382eaeacc6452e9b075ca71", + "actual_version": "2025.12.31", + "commit": "1305a1e1974325db9382eaeacc6452e9b075ca71", + "display_name": "VectorBT Pro", + "immutable_id": "git:1305a1e1974325db9382eaeacc6452e9b075ca71", + "license": "Proprietary", + "package": "vectorbtpro", + "profile": "vectorbt_strict", + "python": ">=3.11", + "source": "https://github.com/polakowo/vectorbt.pro", + "version": "2025.12.31" + } + }, + "release_gate_passed": true, + "schema_version": 1, + "workload": { + "data_points": 1260000, + "generator": "validation.benchmark_suite.generate_benchmark_data", + "recipe": { + "assets": 250, + "bars": 5040, + "bottom_n": 25, + "end_session": "2025-12-31", + "initial_cash": 1000000.0, + "long_target_shares": 100.0, + "name": "controlled_250_assets_5040_sessions", + "rebalance_frequency": 1, + "seed": 42, + "short_target_shares": -100.0, + "top_n": 25 + }, + "recipe_sha256": "5de81aacdda2ee7f08b2cc1549e64a974b19693967ac2fe1fdb0f1a6370d0ba5", + "redistributable": true + } +} diff --git a/validation/zipline/benchmark_performance.py b/validation/zipline/benchmark_performance.py index 067c3941..d435da31 100644 --- a/validation/zipline/benchmark_performance.py +++ b/validation/zipline/benchmark_performance.py @@ -1,426 +1,15 @@ #!/usr/bin/env python3 -"""Performance benchmark: ml4t.backtest vs Zipline-Reloaded. +"""Route the former Zipline benchmark entry point to retained performance evidence.""" -This script benchmarks runtime performance across different data sizes -and number of assets. +from __future__ import annotations -Run from .venv-zipline or .venv-validation environment: - source .venv-zipline/bin/activate - python validation/zipline/benchmark_performance.py - -Metrics: -- Total runtime (seconds) -- Trades per second -- Memory usage (MB) -""" - -import gc import sys -import time -import traceback -import tracemalloc -from datetime import datetime from pathlib import Path -import numpy as np -import pandas as pd - -# Add project root to path -PROJECT_ROOT = Path(__file__).parent.parent.parent -sys.path.insert(0, str(PROJECT_ROOT / "src")) - - -def generate_benchmark_data(n_bars: int, n_assets: int, seed: int = 42) -> tuple: - """Generate benchmark data for both frameworks.""" - np.random.seed(seed) - - # Use NYSE trading days - try: - import exchange_calendars as xcals - nyse = xcals.get_calendar("XNYS") - start = pd.Timestamp("2013-01-02") # No timezone for exchange_calendars - sessions = nyse.sessions_in_range(start, start + pd.Timedelta(days=n_bars * 2)) - dates = pd.DatetimeIndex(sessions[:n_bars]).tz_localize("UTC") - except ImportError: - # Fallback to business days - dates = pd.date_range(start="2013-01-02", periods=n_bars, freq="B", tz="UTC") - - # Generate price data for multiple assets - asset_data = {} - for i in range(n_assets): - base_price = 100.0 + i * 10 - returns = np.random.randn(n_bars) * 0.02 - prices = base_price * np.exp(np.cumsum(returns)) - - asset_data[f"ASSET_{i:03d}"] = pd.DataFrame( - { - "open": prices * (1 + np.random.randn(n_bars) * 0.005), - "high": prices * (1 + np.abs(np.random.randn(n_bars)) * 0.01), - "low": prices * (1 - np.abs(np.random.randn(n_bars)) * 0.01), - "close": prices, - "volume": np.random.randint(100000, 1000000, n_bars).astype(float), - }, - index=dates, - ) - - # Generate signals - entry every 20 bars, exit 10 bars later - entries = np.zeros(n_bars, dtype=bool) - exits = np.zeros(n_bars, dtype=bool) - - i = 0 - while i < n_bars - 11: - entries[i] = True - exits[i + 10] = True - i += 20 - - return asset_data, entries, exits, dates - - -def setup_zipline_bundle(asset_data: dict, dates, bundle_name: str = "perf_benchmark"): - """Register and ingest a custom bundle with multi-asset test data.""" - from zipline.data.bundles import ingest, register - - def make_ingest_func(asset_data_dict, dates_idx): - def ingest_func( - environ, - asset_db_writer, - minute_bar_writer, - daily_bar_writer, - adjustment_writer, - calendar, - start_session, - end_session, - cache, - show_progress, - output_dir, - ): - sessions = calendar.sessions_in_range(start_session, end_session) - asset_names = list(asset_data_dict.keys()) - - # Write equity metadata - asset_db_writer.write( - equities=pd.DataFrame( - { - "symbol": asset_names, - "asset_name": [f"Asset {i}" for i in range(len(asset_names))], - "exchange": ["NYSE"] * len(asset_names), - } - ) - ) - - # Write daily bars for each asset - def gen_data(): - for sid, (asset_name, df) in enumerate(asset_data_dict.items()): - df_naive = df.copy() - if df_naive.index.tz is not None: - df_naive.index = df_naive.index.tz_convert(None) - valid_mask = df_naive.index.isin(sessions) - trading_df = df_naive[valid_mask].copy() - if len(trading_df) > 0: - yield sid, trading_df[["open", "high", "low", "close", "volume"]] - - daily_bar_writer.write(gen_data(), show_progress=show_progress) - adjustment_writer.write() - - return ingest_func - - start_session = dates[0] - end_session = dates[-1] - if hasattr(start_session, 'tz') and start_session.tz is not None: - start_session = start_session.tz_convert(None) - end_session = end_session.tz_convert(None) - - register( - bundle_name, - make_ingest_func(asset_data, dates), - calendar_name="XNYS", - start_session=start_session, - end_session=end_session, - ) - - ingest(bundle_name, show_progress=False) - return bundle_name - - -def benchmark_zipline(asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates) -> dict: - """Benchmark Zipline-Reloaded using bundle-based data.""" - from zipline import run_algorithm - from zipline.api import order, set_commission, set_slippage, sid - from zipline.finance.commission import NoCommission - from zipline.finance.slippage import FixedSlippage - - asset_names = list(asset_data.keys()) - trade_count = [0] - - # Set up bundle (not timed - this is data prep) - try: - bundle_name = setup_zipline_bundle(asset_data, dates) - except Exception as e: - print(f" Zipline bundle error: {e}") - return {"framework": "Zipline", "success": False, "error": f"Bundle setup failed: {e}"} - - def initialize(context): - context.entries = entries - context.exits = exits - context.bar_idx = 0 - context.n_assets = len(asset_names) - set_commission(NoCommission()) - set_slippage(FixedSlippage(spread=0.0)) - - def handle_data(context, data): - if context.bar_idx >= len(context.entries): - return - - for asset_idx in range(context.n_assets): - try: - asset = sid(asset_idx) - except Exception: - continue - - position = context.portfolio.positions.get(asset) - current_qty = position.amount if position else 0 - - if context.exits[context.bar_idx] and current_qty > 0: - order(asset, -current_qty) - trade_count[0] += 1 - elif context.entries[context.bar_idx] and current_qty == 0: - order(asset, 100) - trade_count[0] += 1 - - context.bar_idx += 1 - - # Convert to tz-naive for Zipline (it adds tz internally) - start_date = dates[0] - end_date = dates[-1] - if hasattr(start_date, 'tz') and start_date.tz is not None: - start_date = start_date.tz_convert(None) - end_date = end_date.tz_convert(None) - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - try: - run_algorithm( - start=start_date, - end=end_date, - initialize=initialize, - handle_data=handle_data, - capital_base=100_000_000.0, # $100M for large portfolios - bundle=bundle_name, - ) - success = True - except Exception as e: - print(f" Zipline error: {e}") - return {"framework": "Zipline", "success": False, "error": str(e)} - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "Zipline", - "runtime_sec": end_time - start_time, - "num_trades": trade_count[0], - "memory_mb": peak / 1024 / 1024, - "success": success, - } - - -def benchmark_ml4t_backtest( - asset_data: dict, entries: np.ndarray, exits: np.ndarray, dates -) -> dict: - """Benchmark ml4t.backtest.""" - import polars as pl - - from ml4t.backtest._validation_imports import DataFeed, Engine, ExecutionMode, NoCommission, NoSlippage, Strategy - - # Prepare data in polars format - rows = [] - for asset_name, df in asset_data.items(): - for i, (ts, row) in enumerate(df.iterrows()): - rows.append( - { - "timestamp": ts.to_pydatetime().replace(tzinfo=None), - "asset": asset_name, - "open": row["open"], - "high": row["high"], - "low": row["low"], - "close": row["close"], - "volume": row["volume"], - } - ) - - prices_pl = pl.DataFrame(rows) - - # Prepare signals - signal_rows = [] - for asset_name in asset_data: - for i, ts in enumerate(dates): - signal_rows.append( - { - "timestamp": ts.to_pydatetime().replace(tzinfo=None), - "asset": asset_name, - "entry": bool(entries[i]), - "exit": bool(exits[i]), - } - ) - - signals_pl = pl.DataFrame(signal_rows) - - class BenchmarkStrategy(Strategy): - def on_data(self, timestamp, data, context, broker): - for asset_name, asset_data in data.items(): - signals = asset_data.get("signals", {}) - position = broker.get_position(asset_name) - current_qty = position.quantity if position else 0 - - if signals.get("exit") and current_qty > 0: - broker.close_position(asset_name) - elif signals.get("entry") and current_qty == 0: - broker.submit_order(asset_name, 100) - - # Warm-up run with small data - small_prices = prices_pl.head(100 * len(asset_data)) - small_signals = signals_pl.head(100 * len(asset_data)) - small_feed = DataFeed(prices_df=small_prices, signals_df=small_signals) - small_engine = Engine( - small_feed, - BenchmarkStrategy(), - initial_cash=100_000.0, - allow_short_selling=False, - commission_model=NoCommission(), - slippage_model=NoSlippage(), - execution_mode=ExecutionMode.SAME_BAR, - ) - _ = small_engine.run() - - gc.collect() - tracemalloc.start() - start_time = time.perf_counter() - - feed = DataFeed(prices_df=prices_pl, signals_df=signals_pl) - strategy = BenchmarkStrategy() - - engine = Engine( - feed, - strategy, - initial_cash=100_000.0, - allow_short_selling=False, - commission_model=NoCommission(), - slippage_model=NoSlippage(), - execution_mode=ExecutionMode.SAME_BAR, - ) - - results = engine.run() - num_trades = results["num_trades"] - - end_time = time.perf_counter() - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - - return { - "framework": "ml4t.backtest", - "runtime_sec": end_time - start_time, - "num_trades": num_trades, - "memory_mb": peak / 1024 / 1024, - } - - -def run_benchmark(n_bars: int, n_assets: int) -> dict: - """Run benchmark for specific configuration.""" - print(f"\n Generating data: {n_bars} bars x {n_assets} assets...") - asset_data, entries, exits, dates = generate_benchmark_data(n_bars, n_assets) - - print(" Running Zipline...") - zipline_results = benchmark_zipline(asset_data, entries, exits, dates) - - print(" Running ml4t.backtest...") - ml4t_results = benchmark_ml4t_backtest(asset_data, entries, exits, dates) - - # Calculate speedup - if ml4t_results["runtime_sec"] > 0 and zipline_results.get("success", False): - speedup = zipline_results["runtime_sec"] / ml4t_results["runtime_sec"] - else: - speedup = 0 - - return { - "n_bars": n_bars, - "n_assets": n_assets, - "zipline_runtime": zipline_results.get("runtime_sec", 0), - "zipline_trades": zipline_results.get("num_trades", 0), - "zipline_memory": zipline_results.get("memory_mb", 0), - "zipline_success": zipline_results.get("success", False), - "zipline_error": zipline_results.get("error", None), - "ml4t_runtime": ml4t_results["runtime_sec"], - "ml4t_trades": ml4t_results["num_trades"], - "ml4t_memory": ml4t_results["memory_mb"], - "speedup": speedup, - } - - -def main(): - print("=" * 70) - print("Performance Benchmark: ml4t.backtest vs Zipline-Reloaded") - print("=" * 70) - - # Test configurations (reduced from VBT benchmark due to Zipline overhead) - configs = [ - (100, 1), - (500, 1), - (1000, 1), - (500, 5), - (1000, 10), - ] - - results = [] - - for n_bars, n_assets in configs: - print(f"\nBenchmark: {n_bars} bars x {n_assets} assets") - try: - result = run_benchmark(n_bars, n_assets) - results.append(result) - - if result["zipline_success"]: - print( - f" Zipline: {result['zipline_runtime']:.3f}s, {result['zipline_trades']} trades, {result['zipline_memory']:.1f} MB" - ) - else: - err = result.get("zipline_error", "Unknown error") - print(f" Zipline: FAILED - {err}") - print( - f" ML4T: {result['ml4t_runtime']:.3f}s, {result['ml4t_trades']} trades, {result['ml4t_memory']:.1f} MB" - ) - if result["speedup"] > 0: - print( - f" Speedup: {result['speedup']:.2f}x {'(Zipline faster)' if result['speedup'] > 1 else '(ML4T faster)'}" - ) - except Exception as e: - print(f" ERROR: {e}") - traceback.print_exc() - - # Summary table - print("\n" + "=" * 70) - print("SUMMARY") - print("=" * 70) - print(f"{'Config':<20} {'Zipline (s)':<12} {'ML4T (s)':<12} {'Speedup':<12} {'Winner'}") - print("-" * 70) - - for r in results: - config = f"{r['n_bars']}x{r['n_assets']}" - if r["zipline_success"] and r["speedup"] > 0: - winner = "Zipline" if r["speedup"] > 1 else "ML4T" - speedup_str = f"{r['speedup']:.2f}x" if r["speedup"] > 1 else f"{1/r['speedup']:.2f}x" - print( - f"{config:<20} {r['zipline_runtime']:<12.3f} {r['ml4t_runtime']:<12.3f} {speedup_str:<12} {winner}" - ) - else: - print(f"{config:<20} {'FAILED':<12} {r['ml4t_runtime']:<12.3f} {'N/A':<12} {'N/A'}") - - print("=" * 70) - - return 0 +VALIDATION_DIR = Path(__file__).parents[1] +sys.path.insert(0, str(VALIDATION_DIR)) +from cross_framework_performance import main # noqa: E402 if __name__ == "__main__": - sys.exit(main()) + raise SystemExit(main())