From e6adbaffefeb4db491ff86775366cad740b73728 Mon Sep 17 00:00:00 2001 From: DiTus Date: Mon, 29 Dec 2025 21:28:43 +0100 Subject: [PATCH] feat: add florida module for unified hedging and monitoring --- florida/.gemini/settings.json | 8 + florida/GEMINI.md | 137 + florida/PANCAKESWAP_BNB_status.json | 123 + florida/UNISWAP_V3_status.json | 303 ++ florida/clp_config.py | 124 + florida/doc/CLP_OPTIMIZATION_PLAN.md | 230 ++ florida/doc/UNIFIED_HEDGER_LOGIC.md | 143 + florida/doc/UNIFIED_HEDGER_LOGS.md | 57 + florida/market_data/BNB_1s_LIVE_WS.csv | 2649 ++++++++++++++++ florida/market_data/ETH_1s.csv | 0 florida/market_data/ETH_1s_LIVE_WS.csv | 2817 +++++++++++++++++ florida/requirements.txt | 12 + florida/summaries/5178639.PNG | Bin 0 -> 141407 bytes .../6153292_PANCAKESWAP_BNB_unified_manager | 814 +++++ florida/summaries/6153292/6153292_analisis.md | 117 + florida/summaries/CLP_STRATEGY_LOG.md | 76 + florida/summaries/positions_chart.PNG | Bin 0 -> 164409 bytes florida/telegram_monitor.py | 397 +++ florida/telegram_monitor_state.json | 7 + florida/tools/README_GIT_AGENT.md | 262 ++ florida/tools/agent_config.json | 35 + florida/tools/backup_manager.py | 89 + florida/tools/change_detector.py | 230 ++ florida/tools/cleanup_manager.py | 153 + florida/tools/collect_fees_v2 copy.py | 325 ++ florida/tools/collect_fees_v2.py | 325 ++ florida/tools/collect_market_data.py | 129 + florida/tools/commit_formatter.py | 134 + florida/tools/create_agent.py | 70 + florida/tools/debug_bnb_swap.py | 102 + florida/tools/fix_liquidity.py | 87 + florida/tools/git_agent.py | 421 +++ florida/tools/git_opencode.py | 159 + florida/tools/git_utils.py | 238 ++ florida/tools/kpi_tracker.py | 134 + florida/tools/record_live_data.py | 136 + florida/unified_hedger.py | 858 +++++ 37 files changed, 11901 insertions(+) create mode 100644 florida/.gemini/settings.json create mode 100644 florida/GEMINI.md create mode 100644 florida/PANCAKESWAP_BNB_status.json create mode 100644 florida/UNISWAP_V3_status.json create mode 100644 florida/clp_config.py create mode 100644 florida/doc/CLP_OPTIMIZATION_PLAN.md create mode 100644 florida/doc/UNIFIED_HEDGER_LOGIC.md create mode 100644 florida/doc/UNIFIED_HEDGER_LOGS.md create mode 100644 florida/market_data/BNB_1s_LIVE_WS.csv create mode 100644 florida/market_data/ETH_1s.csv create mode 100644 florida/market_data/ETH_1s_LIVE_WS.csv create mode 100644 florida/requirements.txt create mode 100644 florida/summaries/5178639.PNG create mode 100644 florida/summaries/6153292/6153292_PANCAKESWAP_BNB_unified_manager create mode 100644 florida/summaries/6153292/6153292_analisis.md create mode 100644 florida/summaries/CLP_STRATEGY_LOG.md create mode 100644 florida/summaries/positions_chart.PNG create mode 100644 florida/telegram_monitor.py create mode 100644 florida/telegram_monitor_state.json create mode 100644 florida/tools/README_GIT_AGENT.md create mode 100644 florida/tools/agent_config.json create mode 100644 florida/tools/backup_manager.py create mode 100644 florida/tools/change_detector.py create mode 100644 florida/tools/cleanup_manager.py create mode 100644 florida/tools/collect_fees_v2 copy.py create mode 100644 florida/tools/collect_fees_v2.py create mode 100644 florida/tools/collect_market_data.py create mode 100644 florida/tools/commit_formatter.py create mode 100644 florida/tools/create_agent.py create mode 100644 florida/tools/debug_bnb_swap.py create mode 100644 florida/tools/fix_liquidity.py create mode 100644 florida/tools/git_agent.py create mode 100644 florida/tools/git_opencode.py create mode 100644 florida/tools/git_utils.py create mode 100644 florida/tools/kpi_tracker.py create mode 100644 florida/tools/record_live_data.py create mode 100644 florida/unified_hedger.py diff --git a/florida/.gemini/settings.json b/florida/.gemini/settings.json new file mode 100644 index 0000000..ac0d632 --- /dev/null +++ b/florida/.gemini/settings.json @@ -0,0 +1,8 @@ +{ + "ui": { + "useAlternateBuffer": true + }, + "tools": { + "truncateToolOutputLines": 10000 + } +} \ No newline at end of file diff --git a/florida/GEMINI.md b/florida/GEMINI.md new file mode 100644 index 0000000..167f5a7 --- /dev/null +++ b/florida/GEMINI.md @@ -0,0 +1,137 @@ +# Uniswap Auto CLP & Delta-Neutral Hedger + +## Project Overview +This project is an automated high-frequency trading system designed to provide **Concentrated Liquidity (CLP)** on Uniswap V3 (and forks) while simultaneously **hedging delta exposure** on Hyperliquid. + +The goal is to capture trading fees from the Liquidity Pool (LP) while neutralizing the price risk of the underlying assets (Impermanent Loss protection). The system operates as a **Delta-Zero Scalper**, effectively farming yields with reduced market exposure. + +## Architecture +The system consists of three independent Python processes that coordinate via shared JSON state files. + +### 1. Position Manager (`clp_manager.py`) +* **Role:** Active Liquidity Provision. +* **Functionality:** + * Connects to EVM chains (Arbitrum, BNB Chain, Base) via Web3. + * Monitors `{TARGET_DEX}_status.json` and on-chain pool state. + * **Auto-Entry:** Detects when no position exists, calculates optimal tick ranges based on `RANGE_WIDTH_PCT`, and mints a new NFT position. + * **Auto-Wrap:** Automatically wraps native tokens (ETH -> WETH) if balances are insufficient. + * **Auto-Exit:** Detects out-of-range positions, removes liquidity, and collects fees (`CLOSE_POSITION_ENABLED`). + * **State Sync:** Updates `{TARGET_DEX}_status.json` with entry price, amounts, and token IDs for the Hedger. + +### 2. Delta Hedger (`clp_hedger.py`) +* **Role:** Delta Neutralization (Risk Management). +* **Functionality:** + * Connects to Hyperliquid (Perp DEX). + * Reads `{TARGET_DEX}_status.json` to understand the current LP position's delta profile. + * **Dynamic Hedging:** Calculates the precise `Gamma` (rate of change of delta) and rebalances the short position to keep Net Delta close to zero. + * **Scalping:** Uses "Fishing Orders" (Maker orders) and volatility-adjusted thresholds to profit from hedging rebalances rather than just paying taker fees. + * **Safety:** Includes emergency closures, edge protection logic (to avoid hedging at max loss points), and disconnect protection. + +### 3. Monitoring (`telegram_monitor.py`) +* **Role:** Alerting. +* **Functionality:** + * Watches `{TARGET_DEX}_status.json` for state transitions (OPEN -> CLOSED). + * Sends real-time notifications to Telegram with PnL summaries, duration, and fees collected. + +## Key Files & Directories + +| File/Dir | Description | +| :--- | :--- | +| `clp_manager.py` | Main logic for Uniswap V3 interaction (Mint/Burn/Collect). | +| `clp_hedger.py` | Main logic for Hyperliquid hedging (Open/Close/Rebalance). | +| `clp_config.py` | Configuration profiles (Chain IDs, Contract Addresses) and Strategy settings. | +| `telegram_monitor.py` | Telegram bot for notifications. | +| `{TARGET_DEX}_status.json` | **Critical:** Shared state file acting as the database between Manager and Hedger. | +| `.env` | Stores secrets (Private Keys, RPCs). **Do not commit.** | +| `tools/` | Utility scripts, including the Git Agent for auto-backups. | +| `logs/` | Detailed logs for all processes. | + +## Configuration + +### Environment Variables (`.env`) +Required variables for operation: +```env +# Blockchain +MAINNET_RPC_URL=... # Arbitrum +BNB_RPC_URL=... # BNB Chain +BASE_RPC_URL=... # Base +MAIN_WALLET_PRIVATE_KEY=... +MAIN_WALLET_ADDRESS=... + +# Hyperliquid +HEDGER_PRIVATE_KEY=... # Usually same as Main Wallet or specialized sub-account + +# Telegram +TELEGRAM_BOT_TOKEN=... +TELEGRAM_CHAT_ID=... +TELEGRAM_MONITOR_ENABLED=True +``` + +### Strategy Config (`clp_config.py`) +Key parameters controlling the bot's behavior: +* `TARGET_DEX`: Selects the active chain/profile (e.g., "UNISWAP_V3", "PANCAKESWAP_BNB"). +* `RANGE_WIDTH_PCT`: Width of the LP position (e.g., `0.05` for +/- 5%). +* `TARGET_INVESTMENT_AMOUNT`: Notional size of the position in USD. +* `SLIPPAGE_TOLERANCE`: Max slippage for minting/swapping. + +## Usage + +The system is designed to run continuously. It is recommended to use a process manager like `pm2` or `systemd`, or simply run in separate terminal tabs. + +1. **Start the Manager:** + ```bash + python clp_manager.py + ``` + * *Action:* Will check for existing positions. If none, it prepares to open one based on config. + +2. **Start the Hedger:** + ```bash + python clp_hedger.py + ``` + * *Action:* Will read the position created by the Manager and open a corresponding short on Hyperliquid. + +3. **Start Monitoring (Optional):** + ```bash + python telegram_monitor.py + ``` + +## Development & Git Agent + +This project uses a custom **Git Agent** (`tools/git_agent.py`) for automated version control and backups. + +* **Auto-Backup:** Runs hourly (if configured) to create backup branches (e.g., `backup-2025-01-01-12`). +* **Manual Commit:** + ```bash + python tools/git_agent.py --backup + ``` +* **Status:** + ```bash + python tools/git_agent.py --status + ``` +* **Restoration:** + To restore a file from a backup branch: + ```bash + git checkout backup-BRANCH-NAME -- path/to/file.py + ``` + +## Logic Details + +### Hedging Mathematics +The hedger calculates the **Pool Delta** derived from the V3 liquidity math: +$$ \Delta_{LP} = L \times (\frac{1}{\sqrt{P}} - \frac{1}{\sqrt{P_{upper}}}) $$ +(For Token0/Token1 where we hedge Token0). + +It then maintains a Short Position ($S$) such that: +$$ S \approx \Delta_{LP} $$ + +### Rebalancing +Rebalancing is triggered when: +1. **Delta Drift:** $|S - \Delta_{LP}| > Threshold$ +2. **Volatility:** Thresholds expand during high volatility to reduce churn (fees). +3. **Edge Proximity:** Hedging logic changes when price approaches the range boundaries to prevent "buying high/selling low" behavior at the edges. + +## Troubleshooting + +* **Logs:** Check `logs/clp_manager.log` and `logs/clp_hedger.log` first. +* **Stuck Position:** If a position is closed on-chain but `{TARGET_DEX}_status.json` says `OPEN`, manually edit the JSON status to `CLOSED` or delete the entry (with caution). +* **RPC Errors:** Ensure your RPC URLs in `.env` are active and have sufficient rate limits. diff --git a/florida/PANCAKESWAP_BNB_status.json b/florida/PANCAKESWAP_BNB_status.json new file mode 100644 index 0000000..b836d73 --- /dev/null +++ b/florida/PANCAKESWAP_BNB_status.json @@ -0,0 +1,123 @@ +[ + { + "type": "AUTOMATIC", + "token_id": 6146792, + "status": "CLOSED", + "target_value": 994.02, + "entry_price": 842.2702, + "amount0_initial": 494.0331, + "amount1_initial": 0.5936, + "liquidity": "3468400810004249810484", + "range_upper": 850.7027, + "range_lower": 834.0253, + "token0_decimals": 18, + "token1_decimals": 18, + "timestamp_open": 1766872414, + "initial_hedge_usdc": 1004.058551, + "hedge_equity_usd": 0.0, + "hedge_pnl_realized": -87.35, + "hedge_fees_paid": 42.87, + "target_value_end": 997.47, + "timestamp_close": 1766919846 + }, + { + "type": "AUTOMATIC", + "token_id": 6149306, + "status": "CLOSED", + "target_value": 997.66, + "entry_price": 851.2687, + "amount0_initial": 500.0087, + "amount1_initial": 0.5846, + "liquidity": "3462645216513961883832", + "range_upper": 859.7676, + "range_lower": 842.9125, + "token0_decimals": 18, + "token1_decimals": 18, + "timestamp_open": 1766919922, + "initial_hedge_usdc": 908.9771, + "hedge_equity_usd": 904.232487, + "hedge_pnl_realized": -2.07, + "hedge_fees_paid": 0.95, + "target_value_end": 1000.83, + "timestamp_close": 1766937096 + }, + { + "type": "AUTOMATIC", + "token_id": 6150494, + "status": "CLOSED", + "target_value": 991.84, + "entry_price": 861.6614, + "amount0_initial": 491.8656, + "amount1_initial": 0.5802, + "liquidity": "3421642374594297568197", + "range_upper": 870.3205, + "range_lower": 853.2585, + "token0_decimals": 18, + "token1_decimals": 18, + "timestamp_open": 1766937178 + }, + { + "type": "AUTOMATIC", + "token_id": 6151763, + "status": "CLOSED", + "target_value": 199.28, + "entry_price": 857.718, + "amount0_initial": 99.2854, + "amount1_initial": 0.1166, + "liquidity": "461487203975551730969", + "range_upper": 870.5816, + "range_lower": 845.1913, + "token0_decimals": 18, + "token1_decimals": 18, + "timestamp_open": 1766960125 + }, + { + "type": "AUTOMATIC", + "token_id": 6151784, + "status": "CLOSED", + "target_value": 997.07, + "entry_price": 858.2809, + "amount0_initial": 497.0759, + "amount1_initial": 0.5826, + "liquidity": "2308213453823846434158", + "range_upper": 871.1041, + "range_lower": 845.6986, + "token0_decimals": 18, + "token1_decimals": 18, + "timestamp_open": 1766960550, + "target_value_end": 1001.56, + "timestamp_close": 1766982067 + }, + { + "type": "AUTOMATIC", + "token_id": 6153292, + "status": "CLOSED", + "target_value": 993.31, + "entry_price": 869.418, + "amount0_initial": 500.0094, + "amount1_initial": 0.5674, + "liquidity": "2284728345715808667084", + "range_upper": 882.4136, + "range_lower": 856.6782, + "token0_decimals": 18, + "token1_decimals": 18, + "timestamp_open": 1766982584, + "target_value_end": 982.48, + "timestamp_close": 1767000734 + }, + { + "type": "AUTOMATIC", + "token_id": 6154897, + "status": "OPEN", + "target_value": 998.49, + "entry_price": 849.3437, + "amount0_initial": 498.5177, + "amount1_initial": 0.5887, + "liquidity": "2323641520769318237803", + "range_upper": 862.092, + "range_lower": 836.9493, + "token0_decimals": 18, + "token1_decimals": 18, + "timestamp_open": 1767001797 + } +] \ No newline at end of file diff --git a/florida/UNISWAP_V3_status.json b/florida/UNISWAP_V3_status.json new file mode 100644 index 0000000..c795043 --- /dev/null +++ b/florida/UNISWAP_V3_status.json @@ -0,0 +1,303 @@ +[ + { + "type": "AUTOMATIC", + "token_id": 5173910, + "status": "CLOSED", + "target_value": 1999.21, + "entry_price": 2966.7, + "amount0_initial": 0.3301, + "amount1_initial": 1019.95, + "range_upper": 2995.91, + "range_lower": 2936.59, + "timestamp_open": 1766488092, + "initial_hedge_usdc": 1000.0, + "hedge_equity_usd": 1012.848897, + "hedge_pnl_realized": -0.89, + "hedge_fees_paid": 1.56, + "timestamp_close": 1766501540 + }, + { + "type": "AUTOMATIC", + "token_id": 5174242, + "status": "CLOSED", + "target_value": 1989.63, + "entry_price": 2910.43, + "amount0_initial": 0.322, + "amount1_initial": 1052.48, + "range_upper": 2936.59, + "range_lower": 2881.32, + "timestamp_open": 1766502268, + "initial_hedge_usdc": 1011.11115, + "hedge_equity_usd": 1002.743444, + "hedge_pnl_realized": -9.04, + "hedge_fees_paid": 0.86, + "timestamp_close": 1766506329 + }, + { + "type": "AUTOMATIC", + "token_id": 5174392, + "status": "CLOSED", + "target_value": 1987.85, + "entry_price": 2956.82, + "amount0_initial": 0.3071, + "amount1_initial": 1079.77, + "range_upper": 2983.95, + "range_lower": 2924.86, + "timestamp_open": 1766507046, + "initial_hedge_usdc": 1002.743444, + "hedge_equity_usd": 1018.807922, + "hedge_pnl_realized": -2.28, + "hedge_fees_paid": 0.93, + "timestamp_close": 1766513112 + }, + { + "type": "AUTOMATIC", + "token_id": 5174532, + "status": "CLOSED", + "target_value": 1986.73, + "entry_price": 2942.37, + "amount0_initial": 0.3211, + "amount1_initial": 1041.97, + "range_upper": 2969.07, + "range_lower": 2913.19, + "timestamp_open": 1766513873, + "initial_hedge_usdc": 1016.672049, + "hedge_equity_usd": 1005.949738, + "hedge_pnl_realized": -6.16, + "hedge_fees_paid": 1.11, + "timestamp_close": 1766522608 + }, + { + "type": "AUTOMATIC", + "token_id": 5174721, + "status": "CLOSED", + "target_value": 1988.43, + "entry_price": 2971.33, + "amount0_initial": 0.3092, + "amount1_initial": 1069.8, + "range_upper": 2998.9, + "range_lower": 2939.53, + "timestamp_open": 1766523284, + "initial_hedge_usdc": 1005.949738, + "hedge_equity_usd": 1005.238693, + "hedge_pnl_realized": -0.7, + "hedge_fees_paid": 0.71 + }, + { + "type": "AUTOMATIC", + "token_id": 5174792, + "status": "CLOSED", + "target_value": 2651.4, + "entry_price": 2973.46, + "amount0_initial": 0.4246, + "amount1_initial": 1388.81, + "liquidity": "4874764439714363", + "range_upper": 3001.9, + "range_lower": 2942.47, + "timestamp_open": 1766527489, + "initial_hedge_usdc": 1002.312464, + "hedge_equity_usd": 1002.312464, + "hedge_pnl_realized": 0.0, + "hedge_fees_paid": 0.0 + }, + { + "type": "AUTOMATIC", + "token_id": 5174797, + "status": "CLOSED", + "target_value": 199.26, + "entry_price": 2960.88, + "amount0_initial": 0.0329, + "amount1_initial": 101.99, + "liquidity": "367136758323064", + "range_upper": 2989.92, + "range_lower": 2930.72, + "timestamp_open": 1766527967, + "initial_hedge_usdc": 1000.965119, + "hedge_equity_usd": 1000.864724, + "hedge_pnl_realized": -0.05, + "hedge_fees_paid": 0.05 + }, + { + "type": "AUTOMATIC", + "token_id": 5174808, + "status": "CLOSED", + "target_value": 1994.89, + "entry_price": 2954.93, + "amount0_initial": 0.3299, + "amount1_initial": 1019.94, + "liquidity": "3679197389549125", + "range_upper": 2983.95, + "range_lower": 2924.86, + "timestamp_open": 1766529348, + "initial_hedge_usdc": 1001.01805, + "hedge_equity_usd": 1008.884158, + "hedge_pnl_realized": -5.85, + "hedge_fees_paid": 2.21, + "timestamp_close": 1766545502 + }, + { + "type": "AUTOMATIC", + "token_id": 5175426, + "status": "CLOSED", + "target_value": 1984.47, + "entry_price": 2925.98, + "amount0_initial": 0.3262, + "amount1_initial": 1029.88, + "liquidity": "3678045237670142", + "range_upper": 2954.26, + "range_lower": 2895.76, + "timestamp_open": 1766566249, + "initial_hedge_usdc": 1007.931072, + "hedge_equity_usd": 983.149732, + "hedge_pnl_realized": -26.81, + "hedge_fees_paid": 2.57, + "timestamp_close": 1766616464 + }, + { + "type": "AUTOMATIC", + "token_id": 5176634, + "status": "CLOSED", + "target_value": 1981.59, + "entry_price": 2958.09, + "amount0_initial": 0.3251, + "amount1_initial": 1019.9, + "liquidity": "3652722296614890", + "range_upper": 2986.93, + "range_lower": 2927.79, + "timestamp_open": 1766617139, + "initial_hedge_usdc": 983.149732, + "hedge_equity_usd": 998.691177, + "hedge_pnl_realized": -0.32, + "hedge_fees_paid": 0.89, + "timestamp_close": 1766651355 + }, + { + "type": "AUTOMATIC", + "token_id": 5177261, + "status": "CLOSED", + "target_value": 1995.91, + "entry_price": 2925.51, + "amount0_initial": 0.3336, + "amount1_initial": 1019.94, + "liquidity": "3699547812088951", + "range_upper": 2954.26, + "range_lower": 2895.76, + "timestamp_open": 1766652125, + "initial_hedge_usdc": 997.755868, + "hedge_equity_usd": 987.99485, + "hedge_pnl_realized": -8.17, + "hedge_fees_paid": 0.74, + "target_value_end": 0.0, + "timestamp_close": 1766677241 + }, + { + "type": "AUTOMATIC", + "token_id": 5178047, + "status": "CLOSED", + "target_value": 1991.5, + "entry_price": 2965.34, + "amount0_initial": 0.3108, + "amount1_initial": 1069.8, + "liquidity": "3666528467508532", + "range_upper": 2992.91, + "range_lower": 2933.65, + "timestamp_open": 1766677916, + "initial_hedge_usdc": 987.99485, + "hedge_equity_usd": 1003.143647, + "hedge_pnl_realized": -0.16, + "hedge_fees_paid": 0.69, + "target_value_end": 0.0, + "timestamp_close": 1766702691 + }, + { + "type": "AUTOMATIC", + "token_id": 5178409, + "status": "CLOSED", + "target_value": 1987.63, + "entry_price": 2916.84, + "amount0_initial": 0.3318, + "amount1_initial": 1019.92, + "liquidity": "3689670482290624", + "range_upper": 2945.41, + "range_lower": 2887.09, + "timestamp_open": 1766703368, + "initial_hedge_usdc": 1002.368481, + "hedge_equity_usd": 990.301215, + "hedge_pnl_realized": -3.91, + "hedge_fees_paid": 0.98, + "target_value_end": 0.0, + "timestamp_close": 1766715440 + }, + { + "type": "AUTOMATIC", + "token_id": 5178639, + "status": "CLOSED", + "target_value": 1996.39, + "entry_price": 2983.41, + "amount0_initial": 0.3072, + "amount1_initial": 1079.79, + "liquidity": "3664399483786727", + "range_upper": 3010.92, + "range_lower": 2951.31, + "timestamp_open": 1766716114, + "initial_hedge_usdc": 990.301215, + "hedge_equity_usd": 1018.672, + "hedge_pnl_realized": -5.58, + "hedge_fees_paid": 1.55, + "target_value_end": 0.0, + "timestamp_close": 1766760944 + }, + { + "type": "AUTOMATIC", + "token_id": 5179293, + "status": "CLOSED", + "target_value": 1986.34, + "entry_price": 2910.18, + "amount0_initial": 0.3245, + "amount1_initial": 1041.97, + "liquidity": "3885311775355906", + "range_upper": 2936.59, + "range_lower": 2881.32, + "timestamp_open": 1766761703, + "initial_hedge_usdc": 1019.619398, + "hedge_equity_usd": 1001.73964, + "hedge_pnl_realized": -20.55, + "hedge_fees_paid": 1.66, + "target_value_end": 2002.85, + "timestamp_close": 1766874151 + }, + { + "type": "AUTOMATIC", + "token_id": 5180968, + "status": "CLOSED", + "target_value": 1986.71, + "entry_price": 2932.98, + "amount0_initial": 0.3126, + "amount1_initial": 1069.79, + "liquidity": "3677842511030595", + "range_upper": 2960.17, + "range_lower": 2901.56, + "timestamp_open": 1766874875, + "initial_hedge_usdc": 1002.337877, + "hedge_equity_usd": 901.431859, + "hedge_pnl_realized": -268.84, + "hedge_fees_paid": 34.92, + "target_value_end": 2000.45, + "timestamp_close": 1766968239 + }, + { + "type": "AUTOMATIC", + "token_id": 5182179, + "status": "OPEN", + "target_value": 1993.84, + "entry_price": 2969.9855, + "amount0_initial": 0.3347, + "amount1_initial": 999.8831, + "liquidity": "755871440225782", + "range_upper": 3118.1664, + "range_lower": 2827.096, + "token0_decimals": 18, + "token1_decimals": 6, + "timestamp_open": 1766968369 + } +] \ No newline at end of file diff --git a/florida/clp_config.py b/florida/clp_config.py new file mode 100644 index 0000000..00ab3fe --- /dev/null +++ b/florida/clp_config.py @@ -0,0 +1,124 @@ +import os +from decimal import Decimal + +# --- GLOBAL SETTINGS --- +# Use environment variables to switch profiles +TARGET_DEX = os.environ.get("TARGET_DEX", "UNISWAP_V3") +STATUS_FILE = os.environ.get("STATUS_FILE", f"{TARGET_DEX}_status.json") + +# --- DEFAULT STRATEGY --- +DEFAULT_STRATEGY = { + "MONITOR_INTERVAL_SECONDS": 60, # How often the Manager checks for range status + "CLOSE_POSITION_ENABLED": True, # Allow the bot to automatically close out-of-range positions + "OPEN_POSITION_ENABLED": True, # Allow the bot to automatically open new positions + "REBALANCE_ON_CLOSE_BELOW_RANGE": True, # Strategy flag for specific closing behavior + + # Investment Settings + "TARGET_INVESTMENT_AMOUNT": 2000, # Total USD value to deploy into the LP position + "INITIAL_HEDGE_CAPITAL": 1000, # Capital reserved on Hyperliquid for hedging + "VALUE_REFERENCE": "USD", # Base currency for all calculations + "WRAPPED_NATIVE_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", # WETH/WBNB address + + # Range Settings + "RANGE_WIDTH_PCT": Decimal("0.01"), # LP width (e.g. 0.05 = +/- 5% from current price) + "SLIPPAGE_TOLERANCE": Decimal("0.02"), # Max allowed slippage for swaps and minting + "TRANSACTION_TIMEOUT_SECONDS": 30, # Timeout for blockchain transactions + + # Hedging Settings + "MIN_HEDGE_THRESHOLD": Decimal("0.012"), # Minimum delta change (in coins) required to trigger a trade + + # Unified Hedger Settings + "CHECK_INTERVAL": 1, # Loop speed for the hedger (seconds) + "LEVERAGE": 5, # Leverage to use on Hyperliquid + "ZONE_BOTTOM_HEDGE_LIMIT": Decimal("1.0"), # Multiplier limit at the bottom of the range + "ZONE_CLOSE_START": Decimal("10.0"), # Distance (pct) from edge to start closing logic + "ZONE_CLOSE_END": Decimal("11.0"), # Distance (pct) from edge to finish closing logic + "ZONE_TOP_HEDGE_START": Decimal("10.0"),# Distance (pct) from top edge to adjust hedging + "PRICE_BUFFER_PCT": Decimal("0.0015"), # Buffer for limit order pricing (0.15%) + "MIN_ORDER_VALUE_USD": Decimal("10.0"), # Minimum order size allowed by Hyperliquid + "DYNAMIC_THRESHOLD_MULTIPLIER": Decimal("1.2"), # Expansion factor for thresholds + "MIN_TIME_BETWEEN_TRADES": 60, # Cooldown (seconds) between rebalance trades + "MAX_HEDGE_MULTIPLIER": Decimal("1.25"),# Max allowed hedge size relative to calculated target + "BASE_REBALANCE_THRESHOLD_PCT": Decimal("0.25"), # Base tolerance for delta drift (20%) + "EDGE_PROXIMITY_PCT": Decimal("0.04"), # Distance to range edge where protection activates + "VELOCITY_THRESHOLD_PCT": Decimal("0.0005"), # Minimum price velocity to trigger volatility logic + "POSITION_OPEN_EDGE_PROXIMITY_PCT": Decimal("0.06"), # Safety margin when opening new positions + "POSITION_CLOSED_EDGE_PROXIMITY_PCT": Decimal("0.025"), # Safety margin for closing positions + "LARGE_HEDGE_MULTIPLIER": Decimal("5.0"), # Multiplier to bypass trade cooldown for big moves + "ENABLE_EDGE_CLEANUP": True, # Force rebalances when price is at range boundaries + "EDGE_CLEANUP_MARGIN_PCT": Decimal("0.02"), # % of range width used for edge detection + "MAKER_ORDER_TIMEOUT": 600, # Timeout for resting Maker orders (seconds) + "SHADOW_ORDER_TIMEOUT": 600, # Timeout for theoretical shadow order tracking + "ENABLE_FISHING": False, # Use passive maker orders for rebalancing (advanced) + "FISHING_ORDER_SIZE_PCT": Decimal("0.10"), # Size of individual fishing orders +} + +# --- CLP PROFILES --- +CLP_PROFILES = { + "UNISWAP_V3": { + "NAME": "Uniswap V3 (Arbitrum) - ETH/USDC", + "COIN_SYMBOL": "ETH", + "RPC_ENV_VAR": "MAINNET_RPC_URL", + "NPM_ADDRESS": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", + "ROUTER_ADDRESS": "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "TOKEN_A_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", # WETH + "TOKEN_B_ADDRESS": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", # USDC + "WRAPPED_NATIVE_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "POOL_FEE": 500, + }, + "UNISWAP_wide": { + "NAME": "Uniswap V3 (Arbitrum) - ETH/USDC Wide", + "COIN_SYMBOL": "ETH", + "RPC_ENV_VAR": "MAINNET_RPC_URL", + "NPM_ADDRESS": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88", + "ROUTER_ADDRESS": "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "TOKEN_A_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", # WETH + "TOKEN_B_ADDRESS": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", # USDC + "WRAPPED_NATIVE_ADDRESS": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "POOL_FEE": 500, + "RANGE_WIDTH_PCT": Decimal("0.05"), + "TARGET_INVESTMENT_AMOUNT": 2000, + "MIN_HEDGE_THRESHOLD": Decimal("0.01"), + "BASE_REBALANCE_THRESHOLD_PCT": Decimal("0.15"), + }, + "PANCAKESWAP_BNB": { + "NAME": "PancakeSwap V3 (BNB Chain) - BNB/USDT", + "COIN_SYMBOL": "BNB", + "RPC_ENV_VAR": "BNB_RPC_URL", + "NPM_ADDRESS": "0x46A15B0b27311cedF172AB29E4f4766fbE7F4364", + "ROUTER_ADDRESS": "0x1b81D678ffb9C0263b24A97847620C99d213eB14", + "TOKEN_A_ADDRESS": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", # WBNB + "TOKEN_B_ADDRESS": "0x55d398326f99059fF775485246999027B3197955", # USDT + "WRAPPED_NATIVE_ADDRESS": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + "POOL_FEE": 100, + "RANGE_WIDTH_PCT": Decimal("0.015"), + "TARGET_INVESTMENT_AMOUNT": 1000, + "MIN_HEDGE_THRESHOLD": Decimal("0.05"), # ~$30 for BNB + }, + "WETH_CBBTC_BASE": { + "NAME": "Aerodrome/Uni (Base) - WETH/cbBTC", + "COIN_SYMBOL": "ETH", + "RPC_ENV_VAR": "BASE_RPC_URL", + "NPM_ADDRESS": "0x0000000000000000000000000000000000000000", # Placeholder + "ROUTER_ADDRESS": "0x0000000000000000000000000000000000000000", # Placeholder + "TOKEN_A_ADDRESS": "0x4200000000000000000000000000000000000006", # WETH (Base) + "TOKEN_B_ADDRESS": "0xcbB7C915AB58735a1391B9fE18541b4d8926D412", # cbBTC (Base) + "WRAPPED_NATIVE_ADDRESS": "0x4200000000000000000000000000000000000006", + "POOL_FEE": 3000, + "TARGET_INVESTMENT_AMOUNT": 200, + "VALUE_REFERENCE": "USD", + "RANGE_WIDTH_PCT": Decimal("0.10") + } +} + +# --- HELPER TO GET ACTIVE CONFIG --- +def get_current_config(): + profile = CLP_PROFILES.get(TARGET_DEX) + if not profile: + raise ValueError(f"Unknown CLP profile: {TARGET_DEX}") + + # Merge Default Strategy with Profile (Profile wins) + config = DEFAULT_STRATEGY.copy() + config.update(profile) + + return config diff --git a/florida/doc/CLP_OPTIMIZATION_PLAN.md b/florida/doc/CLP_OPTIMIZATION_PLAN.md new file mode 100644 index 0000000..2527464 --- /dev/null +++ b/florida/doc/CLP_OPTIMIZATION_PLAN.md @@ -0,0 +1,230 @@ +# CLP Hedge Risk Mitigation & Zero-Delta Optimization Plan + +## Executive Summary + +Based on analysis of -$2.23 test loss from position 6153292, this plan addresses critical formula errors, suboptimal configurations, and missing features preventing true zero-delta hedging. Expected outcome: 85-95% loss reduction (from $2.23 to $0.11-0.33). + +--- + +## Phase 1: Critical Bug Fixes (Week 1) + +### 1.1 Delta Calculation Formula Correction +**Files**: `unified_hedger.py` (lines 187-198) +**Issue**: Incorrect in-range delta formula causing hedge underestimation +**Current Buggy Formula**: +```python +return self.L * ((Decimal("1")/sqrt_P) - (Decimal("1")/sqrt_Pb)) +``` +**Correct Formula**: +```python +return self.L * (sqrt_Pb - sqrt_P) / (current_price * sqrt_P * sqrt_Pb) +``` +**Impact**: Fixes core hedge accuracy, 60-70% loss reduction expected + +### 1.2 Liquidity Scaling Fix +**Files**: `unified_hedger.py` (lines 156-158) +**Issue**: Improper normalization causing position size errors +**Current**: +```python +scale_exp = (d0 + d1) / 2 +liquidity_scale = Decimal("10") ** Decimal(str(-scale_exp)) +``` +**Correct**: +```python +liquidity_scale = Decimal("10") ** Decimal(str(-(d0 + d1) / 2)) +``` +**Impact**: Correct hedge position sizing + +--- + +## Phase 2: Fishing Feature Implementation (Week 1-2) + +### 2.1 Port Fishing Logic to Unified Hedger +**Files**: `unified_hedger.py` +**Task**: Move fishing implementation from `clp_hedger.py` to existing `shadow_orders` system + +### 2.2 Conservative Fishing Configuration +**Files**: `clp_config.py` (BNB profile) +**Changes**: +```python +"ENABLE_FISHING": True, # Enable feature +"FISHING_ORDER_SIZE_PCT": Decimal("0.05"), # Conservative 5% +"MAKER_ORDER_TIMEOUT": 60, # 60s timeout (not 600s) +"FISHING_TIMEOUT_FALLBACK": 30, # 30s to taker fallback +``` +**Impact**: 30-40% fee reduction by converting taker to maker trades + +--- + +## Phase 3: Configuration Optimization (Week 2-3) + +### 3.1 BNB-Specific Parameter Tuning +**Files**: `clp_config.py` (PANCAKESWAP_BNB profile) +**Changes**: +```python +"MIN_HEDGE_THRESHOLD": Decimal("0.02"), # Down from 0.05 (2.5x responsive) +"BASE_REBALANCE_THRESHOLD_PCT": Decimal("0.15"), # Down from 0.25 (tighter) +"EDGE_PROXIMITY_PCT": Decimal("0.02"), # Down from 0.04 (earlier) +"DYNAMIC_THRESHOLD_MULTIPLIER": Decimal("1.1"), # Down from 1.2 (less padding) +"MIN_TIME_BETWEEN_TRADES": 30, # Down from 60 (faster response) +``` + +### 3.2 Add EAC Configuration Parameters +**Files**: `clp_config.py` (add to DEFAULT_STRATEGY) +**New Parameters**: +```python +"EAC_NARROW_RANGE_THRESHOLD": Decimal("0.02"), # <2% = narrow +"EAC_MEDIUM_RANGE_THRESHOLD": Decimal("0.05"), # <5% = medium +"EAC_NARROW_BOOST": Decimal("0.15"), # 15% boost +"EAC_MEDIUM_BOOST": Decimal("0.10"), # 10% boost +"EAC_WIDE_BOOST": Decimal("0.075"), # 7.5% boost +``` + +--- + +## Phase 4: Enhanced Asymmetric Compensation (Week 2-3) + +### 4.1 Dynamic Compensation Logic +**Files**: `unified_hedger.py` (replace lines 206-219) +**Current Implementation**: +```python +max_boost = Decimal("0.075") # Static 7.5% for all ranges +``` + +**Enhanced Implementation**: +```python +def get_compensation_boost(self): + range_width_pct = (self.high_range - self.low_range) / self.low_range + + if range_width_pct < Decimal("0.02"): # <2% range + return Decimal("0.15") # Double protection for narrow ranges + elif range_width_pct < Decimal("0.05"): # <5% range + return Decimal("0.10") # Moderate for medium ranges + else: # >=5% range + return Decimal("0.075") # Standard for wide ranges + +# Replace in calculate_rebalance: +max_boost = self.get_compensation_boost() +``` + +**Impact Analysis for Test Case**: +- **Current 7.5%**: Would offset ~$0.59 of fees in -$2.23 loss +- **Enhanced 15%**: Would offset ~$1.18 of fees (double improvement) +- **Net Result**: Reduces $2.23 loss to ~$1.05 (36% additional improvement) + +--- + +## Phase 5: System Improvements (Week 3-4) + +### 5.1 API Synchronization Enhancement +**Files**: `unified_hedger.py` (line 788-790) +**Change**: Increase sync time from 5 to 10 seconds + +### 5.2 Position Validation +**Files**: `unified_hedger.py` (after trade execution) +**Add**: Post-trade position verification to ensure hedge accuracy + +### 5.3 Enhanced Monitoring & Logging +**Files**: New logging/metrics module +**Add**: +- Real-time delta tracking alerts +- EAC effectiveness monitoring +- Fishing success rate tracking +- Fee vs PnL performance metrics + +--- + +## Expected Results Timeline + +| Week | Changes | Expected Loss Reduction | Fee Impact | +|------|---------|----------------------|------------| +| 1 | Formula fixes + fishing | 60-70% | -40% | +| 2 | Config + EAC enhancement | 75-85% | -50% | +| 3-4 | System improvements | 85-95% | -60% | +| **Target**: Reduce $2.23 loss to **$0.11-0.33** | + +--- + +## Risk Mitigation & Rollback Criteria + +### Stop Conditions: +- Daily trades >15 per position +- Net fees increase for 3 consecutive days +- Hedge accuracy degrades >5% +- Fishing success rate <25% +- EAC directional bias >15% of total PnL + +### Monitoring Requirements: +- Daily PnL vs fee analysis +- Transaction frequency tracking +- Hedge coverage percentage +- Fishing fill rate metrics +- EAC effectiveness measurement + +--- + +## Implementation Priority + +### Week 1 (Critical): +1. ✅ Fix delta calculation formula +2. ✅ Fix liquidity scaling +3. ✅ Enable 5% fishing +4. ✅ Basic monitoring setup + +### Week 2 (Important): +5. ✅ Implement Enhanced Asymmetric Compensation +6. ✅ Optimize BNB configuration +7. ✅ Add EAC configuration parameters +8. ✅ Improve API sync timing + +### Week 3-4 (Optimization): +9. ✅ Advanced monitoring including EAC metrics +10. ✅ Position validation +11. ✅ EAC effectiveness fine-tuning + +--- + +## Fee Management Strategy + +### Conservative Approach to Transaction Costs: +- **Start with 5% fishing** (not aggressive 20%) +- **Monitor daily trade counts**: Stop if >15 trades/day per position +- **Track fishing success rate**: Disable if <25% fill rate +- **Phase thresholds gradually**: Only reduce if fishing proves effective + +### Expected Fee Impact: +- **Phase 1-2**: 30-40% fee reduction +- **Phase 3-4**: Additional 20-30% reduction +- **Total**: 50-70% fee reduction despite more trades + +--- + +## Test Case Impact Analysis + +### Current Loss Breakdown (Position 6153292): +- **Total Loss**: -$2.23 +- **Delta Slippage**: -$0.20 +- **Trading Fees**: -$0.79 +- **Funding/Execution**: -$1.24 + +### Expected Impact with All Improvements: +- **Formula Fixes**: -$0.89 (60% reduction) +- **Fishing**: -$0.31 (40% fee reduction) +- **EAC Enhancement**: -$0.80 (additional 36% improvement) +- **Config Optimization**: -$0.23 (tighter thresholds) +- **Final Expected Loss**: **-$0.11 to -$0.33** + +--- + +## Conclusion + +This comprehensive plan addresses the root causes of the -$2.23 test loss through: +1. **Core mathematical fixes** (delta formula, liquidity scaling) +2. **Strategic enhancements** (Enhanced Asymmetric Compensation, fishing) +3. **Configuration optimization** (responsive thresholds) +4. **Risk management** (monitoring, rollback triggers) + +Expected outcome: **85-95% loss reduction** while maintaining control over transaction costs and system complexity. + +*Plan created: 2025-12-29* +*Based on analysis of position 6153292 and comprehensive code review* \ No newline at end of file diff --git a/florida/doc/UNIFIED_HEDGER_LOGIC.md b/florida/doc/UNIFIED_HEDGER_LOGIC.md new file mode 100644 index 0000000..0d603fb --- /dev/null +++ b/florida/doc/UNIFIED_HEDGER_LOGIC.md @@ -0,0 +1,143 @@ +# Unified Delta-Neutral Hedger Logic + +## 1. Overview +The **Unified Hedger** (`unified_hedger.py`) is the central risk management engine for the Auto CLP system. Unlike the previous architecture where each LP position required a separate process, this unified system manages **all** Liquidity Pool positions across different chains (Arbitrum, BNB Chain, Base) in a single, efficient process. + +### Architecture Comparison + +**Old Architecture (Multi-Process):** +```mermaid +graph TD + A[Manager Arbitrum] -->|Write| B(UNISWAP_V3_status.json) + C[Manager BNB] -->|Write| D(PANCAKESWAP_BNB_status.json) + + B -->|Read| E[Hedger Process 1] + D -->|Read| F[Hedger Process 2] + + E -->|API Call| G[Hyperliquid] + F -->|API Call| G + + style E fill:#f96,stroke:#333 + style F fill:#f96,stroke:#333 +``` + +**New Architecture (Unified):** +```mermaid +graph TD + A[Manager Arbitrum] -->|Write| B(UNISWAP_V3_status.json) + C[Manager BNB] -->|Write| D(PANCAKESWAP_BNB_status.json) + + B -->|Read| E[Unified Hedger (Master)] + D -->|Read| E + + E -->|Single API Connection| G[Hyperliquid] + + style E fill:#9f9,stroke:#333 +``` + +--- + +## 2. Core Logic Flow +The hedger runs a continuous loop (approx. every 1 second) performing the following steps: + +```mermaid +sequenceDiagram + participant Loop as Main Loop + participant Scanner as Strategy Scanner + participant API as Hyperliquid API + participant Math as Aggregation Engine + participant Exec as Execution Logic + + Loop->>Scanner: Scan *_status.json files + Scanner-->>Loop: Update Active Strategies + + Loop->>API: Fetch All Prices & Account State (Once) + API-->>Loop: Market Data & Balances + + loop For Each Strategy + Loop->>Math: Calculate Ideal Short Size + end + + Math->>Math: Netting (Sum Targets by Coin) + + Loop->>Exec: Compare Net Target vs. Actual Position + + alt Diff > Threshold + Exec->>API: Place Order (Buy/Sell) + Exec->>Loop: Sleep 5s (API Lag Safety) + else Diff < Threshold + Exec->>Loop: Do Nothing (Idle) + end +``` + +--- + +## 3. Detailed Mechanisms + +### A. Strategy Scanning & Initialization +* **Discovery:** The script uses `glob` to find all files matching `*_status.json` in the project directory. +* **Parsing:** It loads the JSON and extracts active positions (`OPEN`, `PENDING_HEDGE`). +* **Liquidity Scaling:** + To support different chains with different decimals (e.g., BNB has 18 decimals, USDC has 6), it calculates a scaling factor: + $$ Scale = 10^{-(d_0 + d_1)/2} $$ + This ensures the liquidity math ($L$) is normalized for the hedging calculations. + +### B. Ideal Delta Calculation +For each active LP position, the strategy calculates how much it *should* be short to be delta-neutral. +Formula for Concentrated Liquidity Delta ($\Delta_{LP}$): + +$$ \Delta_{LP} = L \times \left( \frac{1}{\sqrt{P_{current}}} - \frac{1}{\sqrt{P_{upper}}} \right) $$ + +* If $P_{current} < P_{lower}$: Delta is max (full range). +* If $P_{current} > P_{upper}$: Delta is 0. + +### C. Portfolio Netting (The "Alpha") +This is the key efficiency gain. Instead of trading for every position, the system sums up the requirements. + +| Strategy | Chain | Coin | Ideal Short | +| :--- | :--- | :--- | :--- | +| Strat A | Arbitrum | ETH | -1.5 ETH | +| Strat B | Base | ETH | -0.5 ETH | +| Strat C | Arbitrum | ETH | +0.2 ETH (Long/Closing) | +| **NET TOTAL** | **ALL** | **ETH** | **-1.8 ETH** | + +The hedger only checks the Hyperliquid account once: +* **Reality:** Account has `-1.6 ETH` short. +* **Action:** Sell `0.2 ETH` to reach `-1.8`. +* *Result:* Strat C's "Buy" was internally netted against Strat A's "Sell". **Zero fees paid for that portion.** + +### D. Execution & Thresholds + +The decision to trade is based on a dynamic threshold system to avoid churn (over-trading). + +1. **Volatility Adjustment:** + It calculates the standard deviation of the last 30 price points. + $$ Threshold_{Dynamic} = BaseThreshold \times \min(3.0, \frac{Vol_{Current}}{Vol_{Base}}) $$ + *High Volatility = Wider Thresholds (Trade less).* + +2. **Edge Protection:** + If the price is very close to the range boundary (e.g., within 2%), the math becomes unstable (Gamma spike). + * **Action:** Force the threshold to the minimum (`MIN_HEDGE_THRESHOLD`) to ensure precise hedging at the dangerous "exit" zones. + +3. **Safety Checks:** + * **Large Hedge Multiplier (5.0x):** If the required trade size is huge (>5x normal threshold), it assumes a "Catch-up" is needed but treats it carefully. + * **API Lag Sleep:** After *any* trade, the loop **sleeps for 5 seconds**. This prevents the "Double Hedge" bug where the bot trades again because the API hasn't updated the position size yet. + +### E. Shadow Orders +Since the bot often uses Taker orders (Market/IOC) during urgent rebalances, it simulates "What if I had used a Maker order?". +* It creates a virtual "Shadow Order" in memory. +* It tracks the order book. If the price crosses the shadow price, it marks it as "Filled". +* *Purpose:* To gather data on whether a purely Maker-based strategy would be viable in the future. + +--- + +## 4. Configuration Reference + +All settings are tunable in `unified_hedger.py` or via `clp_config.py`. + +| Parameter | Default | Description | +| :--- | :--- | :--- | +| `LARGE_HEDGE_MULTIPLIER` | `5.0` | Multiplier for "Urgent" trade flag. Higher = Less Panic. | +| `MIN_TIME_BETWEEN_TRADES` | `60s` | Cooldown for standard rebalances. | +| `BASE_REBALANCE_THRESHOLD_PCT` | `0.09` | 9% deviation allowed before rebalancing (scaled by Vol). | +| `ENABLE_EDGE_CLEANUP` | `True` | Forces tight hedging at range edges. | diff --git a/florida/doc/UNIFIED_HEDGER_LOGS.md b/florida/doc/UNIFIED_HEDGER_LOGS.md new file mode 100644 index 0000000..a9e970c --- /dev/null +++ b/florida/doc/UNIFIED_HEDGER_LOGS.md @@ -0,0 +1,57 @@ +# Unified Hedger Logs Explained + +This document explains how to read and interpret the `[IDLE]` logs generated by the `unified_hedger.py` system. + +## Log Structure + +A standard log entry looks like this: + +```text +[IDLE] BNB | Px: 861.66 | M: 862.1 | B: 863.4 / S: 860.9 | delta: -0.5818(+0.0332) | Adj: +0.01%, Vol: 1.00, Thr: 0.0873 | PnL: -0.04 | TotPnL: -0.04 +``` + +### Fields Breakdown + +| Field | Full Name | Description | +| :--- | :--- | :--- | +| **Px** | Price | The current mid-price of the asset on Hyperliquid. | +| **M** | Mid-Hedge Price | The theoretical price where your Hedge Difference (`Diff`) would be exactly 0 (Perfect Equilibrium). | +| **B** | Buy Trigger | The price at which the bot estimates it will need to **BUY** to rebalance (hedge is too heavy). | +| **S** | Sell Trigger | The price at which the bot estimates it will need to **SELL** to rebalance (hedge is too light). | +| **delta** | Net Target Delta | The total size (in coins) the bot *wants* to be Short. Value is negative for Short.
**Format:** `Target (Difference)`
*Example:* `-0.5818(+0.0332)` means target is -0.5818, and you are currently +0.0332 away from it (under-hedged, need to sell). | +| **Adj** | Adjustment % | The **Asymmetric Compensation** boost applied to the delta. Positive means the bot is "boosting" the short (anticipating downside), negative means it is reducing it. | +| **Vol** | Volatility Multiplier | A factor (1.0 to 3.0) that widens the threshold during high volatility to prevent chop. | +| **Thr** | Threshold | The dynamic trigger distance. If `Diff` > `Thr`, a trade occurs. | +| **PnL** | Unrealized PnL | The current PnL of your open position on Hyperliquid. | +| **TotPnL** | Total PnL | The sum of Realized PnL (from closed rebalancing trades) + Unrealized PnL. | + +--- + +## Detailed Examples + +### Example 1: BNB (Stable) +```text +[IDLE] BNB | Px: 861.66 | M: 862.1 | B: 863.4 / S: 860.9 | delta: -0.5818(+0.0332) | Adj: +0.01%, Vol: 1.00, Thr: 0.0873 | PnL: -0.04 | TotPnL: -0.04 +``` +* **Status:** The bot wants to be Short `0.5818` BNB. +* **Reality:** It is currently off by `+0.0332` (meaning it has slightly *less* short than it wants). +* **Action:** The difference (`0.0332`) is smaller than the Threshold (`0.0873`), so it does nothing. +* **Triggers:** If price rises to `863.4` (B), it will Buy. If it drops to `860.9` (S), it will Sell. + +### Example 2: ETH (Asymmetric Boost) +```text +[IDLE] ETH | Px: 2934.35 | M: 2935.3 | B: 2939.1 / S: 2931.5 | delta: -0.2957(+0.0111) | Adj: -0.35%, Vol: 1.00, Thr: 0.0444 | PnL: 0.05 | TotPnL: -303.71 +``` +* **Status:** The bot has applied a `-0.35%` adjustment (Adj) because price is likely near a range edge or moving favorably. +* **Delta:** This adjustment reduced the target delta slightly. +* **Safety:** The Volatility is low (`1.00`), keeping the Threshold tight (`0.0444`). + +## How Calculations Work + +1. **Net Delta:** Sum of all Uniswap V3 position deltas + `Adj` factor. +2. **Diff:** `Target Delta` - `Current Hyperliquid Position`. +3. **Triggers (B/S):** Calculated using the **Gamma** (rate of change of delta). + * `Gamma` tells us "How much does Delta change for a $1 price move?" + * `B = Price + (Threshold + Diff) / Gamma` + * `S = Price - (Threshold - Diff) / Gamma` + * *Note:* These are estimates. In tight ranges, Gamma increases rapidly, so actual trades may happen before these prices are hit. diff --git a/florida/market_data/BNB_1s_LIVE_WS.csv b/florida/market_data/BNB_1s_LIVE_WS.csv new file mode 100644 index 0000000..7ece551 --- /dev/null +++ b/florida/market_data/BNB_1s_LIVE_WS.csv @@ -0,0 +1,2649 @@ +timestamp,open,high,low,close,count +1767037228000,851.88,851.88,851.88,851.88,1 +1767037229000,851.885,851.885,851.885,851.885,1 +1767037230000,851.885,851.885,851.885,851.885,1 +1767037231000,851.885,851.885,851.885,851.885,1 +1767037232000,851.885,851.885,851.885,851.885,1 +1767037233000,851.885,851.885,851.885,851.885,1 +1767037234000,851.885,851.885,851.885,851.885,1 +1767037235000,851.885,851.885,851.885,851.885,1 +1767037236000,851.885,851.885,851.885,851.885,1 +1767037237000,851.885,851.885,851.885,851.885,1 +1767037238000,851.885,851.885,851.885,851.885,1 +1767037239000,851.885,851.885,851.885,851.885,1 +1767037240000,851.885,851.885,851.885,851.885,1 +1767037241000,851.885,851.885,851.885,851.885,1 +1767037242000,851.885,851.885,851.885,851.885,1 +1767037243000,851.915,851.915,851.915,851.915,1 +1767037244000,851.925,851.925,851.925,851.925,1 +1767037245000,851.925,851.925,851.925,851.925,1 +1767037246000,851.9,851.9,851.9,851.9,1 +1767037247000,851.905,851.905,851.905,851.905,1 +1767037248000,851.905,851.905,851.905,851.905,1 +1767037249000,851.905,851.905,851.905,851.905,1 +1767037251000,851.905,851.905,851.905,851.905,1 +1767037252000,851.905,851.905,851.905,851.905,2 +1767037253000,851.905,851.905,851.905,851.905,1 +1767037254000,851.905,851.905,851.905,851.905,1 +1767037255000,851.905,851.905,851.905,851.905,1 +1767037256000,851.905,851.905,851.905,851.905,1 +1767037258000,851.905,851.905,851.905,851.905,1 +1767037259000,851.905,851.905,851.905,851.905,1 +1767037260000,851.905,851.905,851.905,851.905,1 +1767037261000,851.905,851.905,851.905,851.905,1 +1767037262000,851.895,851.895,851.895,851.895,1 +1767037263000,851.885,851.885,851.885,851.885,1 +1767037264000,851.885,851.885,851.885,851.885,1 +1767037265000,851.89,851.89,851.89,851.89,1 +1767037266000,851.89,851.89,851.89,851.89,1 +1767037267000,851.885,851.885,851.885,851.885,1 +1767037268000,851.885,851.885,851.885,851.885,1 +1767037269000,851.885,851.885,851.885,851.885,1 +1767037270000,851.895,851.895,851.895,851.895,1 +1767037271000,851.895,851.895,851.895,851.895,1 +1767037272000,851.895,851.895,851.895,851.895,1 +1767037273000,851.895,851.895,851.895,851.895,1 +1767037274000,851.895,851.895,851.895,851.895,1 +1767037275000,851.895,851.895,851.895,851.895,1 +1767037276000,851.895,851.895,851.895,851.895,1 +1767037277000,851.895,851.895,851.895,851.895,1 +1767037278000,851.895,851.895,851.895,851.895,1 +1767037279000,851.895,851.895,851.895,851.895,1 +1767037280000,851.895,851.895,851.895,851.895,1 +1767037281000,851.895,851.895,851.895,851.895,1 +1767037282000,851.895,851.895,851.895,851.895,1 +1767037283000,851.895,851.895,851.895,851.895,1 +1767037284000,851.895,851.895,851.895,851.895,1 +1767037285000,851.895,851.895,851.895,851.895,1 +1767037286000,851.895,851.895,851.895,851.895,1 +1767037287000,851.895,851.895,851.895,851.895,1 +1767037288000,851.895,851.895,851.895,851.895,1 +1767037289000,851.895,851.895,851.895,851.895,1 +1767037290000,851.895,851.895,851.895,851.895,1 +1767037291000,851.895,851.895,851.895,851.895,1 +1767037292000,851.895,851.895,851.895,851.895,1 +1767037293000,851.895,851.895,851.895,851.895,1 +1767037295000,851.895,851.895,851.895,851.895,1 +1767037296000,851.895,851.895,851.895,851.895,1 +1767037297000,851.895,851.895,851.895,851.895,2 +1767037298000,851.895,851.895,851.895,851.895,1 +1767037299000,851.895,851.895,851.895,851.895,1 +1767037301000,851.895,851.895,851.895,851.895,1 +1767037302000,851.895,851.895,851.895,851.895,1 +1767037303000,851.895,851.895,851.895,851.895,2 +1767037305000,851.895,851.895,851.895,851.895,1 +1767037306000,851.895,851.895,851.895,851.895,1 +1767037307000,851.895,851.895,851.895,851.895,1 +1767037308000,851.895,851.895,851.895,851.895,1 +1767037309000,851.895,851.895,851.895,851.895,1 +1767037310000,851.895,851.895,851.895,851.895,1 +1767037311000,851.895,851.895,851.895,851.895,1 +1767037312000,851.895,851.895,851.895,851.895,1 +1767037313000,851.895,851.895,851.895,851.895,1 +1767037314000,851.895,851.895,851.895,851.895,1 +1767037315000,851.895,851.895,851.895,851.895,1 +1767037316000,851.895,851.895,851.895,851.895,1 +1767037317000,851.895,851.895,851.895,851.895,1 +1767037318000,851.895,851.895,851.895,851.895,1 +1767037319000,851.895,851.895,851.895,851.895,1 +1767037320000,851.895,851.895,851.895,851.895,1 +1767037321000,851.895,851.895,851.895,851.895,1 +1767037322000,851.895,851.895,851.895,851.895,1 +1767037323000,851.895,851.895,851.895,851.895,1 +1767037324000,851.895,851.895,851.895,851.895,1 +1767037325000,851.895,851.895,851.895,851.895,1 +1767037326000,851.895,851.895,851.895,851.895,1 +1767037327000,851.895,851.895,851.895,851.895,1 +1767037328000,851.895,851.895,851.895,851.895,1 +1767037329000,851.895,851.895,851.895,851.895,1 +1767037330000,851.895,851.895,851.895,851.895,1 +1767037332000,851.895,851.895,851.895,851.895,1 +1767037333000,851.895,851.895,851.895,851.895,2 +1767037334000,851.895,851.895,851.895,851.895,1 +1767037336000,851.895,851.895,851.895,851.895,1 +1767037337000,852.135,852.135,852.135,852.135,1 +1767037338000,852.095,852.095,852.095,852.095,1 +1767037339000,852.085,852.085,852.085,852.085,1 +1767037340000,852.085,852.085,852.085,852.085,1 +1767037341000,852.085,852.085,852.085,852.085,1 +1767037342000,852.085,852.085,852.085,852.085,1 +1767037343000,852.085,852.085,852.085,852.085,1 +1767037344000,852.085,852.085,852.085,852.085,1 +1767037345000,852.085,852.085,852.085,852.085,1 +1767037346000,852.08,852.08,852.08,852.08,1 +1767037347000,852.08,852.08,852.08,852.08,1 +1767037348000,852.08,852.08,852.08,852.08,1 +1767037349000,852.08,852.08,852.08,852.08,1 +1767037350000,852.08,852.08,852.08,852.08,1 +1767037351000,852.08,852.08,852.08,852.08,1 +1767037352000,852.08,852.08,852.08,852.08,1 +1767037353000,852.08,852.08,852.08,852.08,1 +1767037354000,852.08,852.08,852.08,852.08,1 +1767037355000,852.08,852.08,852.08,852.08,1 +1767037356000,852.08,852.08,852.08,852.08,1 +1767037357000,852.08,852.08,852.08,852.08,1 +1767037358000,852.08,852.08,852.08,852.08,1 +1767037359000,852.08,852.08,852.08,852.08,1 +1767037360000,852.08,852.08,852.08,852.08,1 +1767037362000,852.08,852.08,852.08,852.08,1 +1767037363000,852.08,852.08,852.08,852.08,2 +1767037364000,852.08,852.08,852.08,852.08,1 +1767037366000,852.085,852.085,852.085,852.085,1 +1767037367000,852.085,852.085,852.085,852.085,1 +1767037368000,852.085,852.085,852.085,852.085,1 +1767037369000,852.085,852.085,852.085,852.085,1 +1767037370000,852.085,852.085,852.085,852.085,1 +1767037371000,852.085,852.085,852.085,852.085,1 +1767037372000,852.085,852.085,852.085,852.085,1 +1767037373000,852.085,852.085,852.085,852.085,1 +1767037374000,852.085,852.085,852.085,852.085,1 +1767037375000,852.085,852.085,852.085,852.085,1 +1767037376000,852.085,852.085,852.085,852.085,1 +1767037377000,852.085,852.085,852.085,852.085,1 +1767037378000,852.085,852.085,852.085,852.085,1 +1767037379000,852.085,852.085,852.085,852.085,1 +1767037380000,852.085,852.085,852.085,852.085,1 +1767037381000,852.085,852.085,852.085,852.085,1 +1767037382000,852.085,852.085,852.085,852.085,1 +1767037383000,852.085,852.085,852.085,852.085,1 +1767037384000,852.2,852.2,852.2,852.2,1 +1767037385000,852.225,852.225,852.225,852.225,1 +1767037387000,852.22,852.22,852.22,852.22,2 +1767037388000,852.215,852.215,852.215,852.215,1 +1767037389000,852.215,852.215,852.215,852.215,1 +1767037390000,852.215,852.215,852.215,852.215,1 +1767037392000,852.215,852.215,852.215,852.215,2 +1767037393000,852.215,852.215,852.215,852.215,1 +1767037394000,852.215,852.215,852.215,852.215,1 +1767037395000,852.215,852.215,852.215,852.215,1 +1767037397000,852.215,852.215,852.215,852.215,2 +1767037398000,852.215,852.215,852.215,852.215,1 +1767037399000,852.295,852.295,852.295,852.295,1 +1767037400000,852.325,852.325,852.325,852.325,1 +1767037402000,852.325,852.325,852.325,852.325,1 +1767037403000,852.325,852.325,852.325,852.325,1 +1767037404000,852.325,852.325,852.325,852.325,1 +1767037405000,852.325,852.325,852.325,852.325,1 +1767037406000,852.325,852.325,852.325,852.325,1 +1767037407000,852.325,852.325,852.325,852.325,1 +1767037408000,852.325,852.325,852.325,852.325,1 +1767037409000,852.325,852.325,852.325,852.325,1 +1767037410000,852.325,852.325,852.325,852.325,1 +1767037411000,852.325,852.325,852.325,852.325,1 +1767037412000,852.325,852.325,852.325,852.325,1 +1767037413000,852.325,852.325,852.325,852.325,1 +1767037414000,852.325,852.325,852.325,852.325,1 +1767037415000,852.325,852.325,852.325,852.325,1 +1767037416000,852.325,852.325,852.325,852.325,1 +1767037417000,852.325,852.325,852.325,852.325,1 +1767037418000,852.325,852.325,852.325,852.325,1 +1767037419000,852.325,852.325,852.325,852.325,1 +1767037420000,852.325,852.325,852.325,852.325,1 +1767037421000,852.325,852.325,852.325,852.325,1 +1767037422000,852.325,852.325,852.325,852.325,1 +1767037423000,852.45,852.45,852.45,852.45,1 +1767037424000,852.455,852.455,852.455,852.455,1 +1767037425000,852.455,852.455,852.455,852.455,1 +1767037426000,852.455,852.455,852.455,852.455,1 +1767037427000,852.455,852.455,852.455,852.455,1 +1767037428000,852.455,852.455,852.455,852.455,1 +1767037429000,852.455,852.455,852.455,852.455,1 +1767037430000,852.455,852.455,852.455,852.455,1 +1767037431000,852.455,852.455,852.455,852.455,1 +1767037432000,852.455,852.455,852.455,852.455,1 +1767037433000,852.455,852.455,852.455,852.455,1 +1767037434000,852.455,852.455,852.455,852.455,1 +1767037435000,852.455,852.455,852.455,852.455,1 +1767037436000,852.455,852.455,852.455,852.455,1 +1767037437000,852.455,852.455,852.455,852.455,1 +1767037438000,852.455,852.455,852.455,852.455,1 +1767037439000,852.455,852.455,852.455,852.455,1 +1767037440000,852.455,852.455,852.455,852.455,1 +1767037441000,852.455,852.455,852.455,852.455,1 +1767037442000,852.455,852.455,852.455,852.455,1 +1767037443000,852.455,852.455,852.455,852.455,1 +1767037444000,852.455,852.455,852.455,852.455,1 +1767037445000,852.455,852.455,852.455,852.455,1 +1767037446000,852.455,852.455,852.455,852.455,1 +1767037448000,852.455,852.455,852.455,852.455,2 +1767037449000,852.455,852.455,852.455,852.455,1 +1767037451000,852.455,852.455,852.455,852.455,1 +1767037452000,852.455,852.455,852.455,852.455,1 +1767037453000,852.455,852.455,852.455,852.455,1 +1767037454000,852.455,852.455,852.455,852.455,1 +1767037455000,852.455,852.455,852.455,852.455,1 +1767037456000,852.455,852.455,852.455,852.455,1 +1767037457000,852.455,852.455,852.455,852.455,1 +1767037458000,852.455,852.455,852.455,852.455,1 +1767037459000,852.455,852.455,852.455,852.455,1 +1767037460000,852.455,852.455,852.455,852.455,1 +1767037461000,852.455,852.455,852.455,852.455,1 +1767037462000,852.455,852.455,852.455,852.455,1 +1767037463000,852.535,852.535,852.535,852.535,1 +1767037464000,852.59,852.59,852.59,852.59,1 +1767037465000,852.595,852.595,852.595,852.595,1 +1767037466000,852.695,852.695,852.695,852.695,1 +1767037467000,852.71,852.71,852.71,852.71,1 +1767037468000,852.71,852.71,852.71,852.71,1 +1767037469000,852.71,852.71,852.71,852.71,1 +1767037470000,852.71,852.71,852.71,852.71,1 +1767037471000,852.71,852.71,852.71,852.71,1 +1767037472000,852.71,852.71,852.71,852.71,1 +1767037473000,852.71,852.71,852.71,852.71,1 +1767037474000,852.685,852.685,852.685,852.685,1 +1767037475000,852.69,852.69,852.69,852.69,1 +1767037476000,852.68,852.68,852.68,852.68,1 +1767037478000,852.68,852.68,852.68,852.68,2 +1767037479000,852.68,852.68,852.68,852.68,1 +1767037480000,852.68,852.68,852.68,852.68,1 +1767037481000,852.68,852.68,852.68,852.68,1 +1767037482000,852.655,852.655,852.655,852.655,1 +1767037484000,852.515,852.515,852.39,852.39,2 +1767037485000,852.345,852.345,852.345,852.345,1 +1767037486000,852.35,852.35,852.35,852.35,1 +1767037488000,852.35,852.35,852.35,852.35,2 +1767037489000,852.345,852.345,852.345,852.345,1 +1767037491000,852.345,852.345,852.345,852.345,1 +1767037492000,852.345,852.345,852.345,852.345,1 +1767037493000,852.345,852.345,852.345,852.345,1 +1767037494000,852.345,852.345,852.345,852.345,1 +1767037495000,852.345,852.345,852.345,852.345,1 +1767037496000,852.345,852.345,852.345,852.345,1 +1767037497000,852.34,852.34,852.34,852.34,1 +1767037498000,852.335,852.335,852.335,852.335,1 +1767037499000,852.33,852.33,852.33,852.33,1 +1767037500000,852.33,852.33,852.33,852.33,1 +1767037501000,852.33,852.33,852.33,852.33,1 +1767037502000,852.335,852.335,852.335,852.335,1 +1767037503000,852.335,852.335,852.335,852.335,1 +1767037504000,852.335,852.335,852.335,852.335,1 +1767037505000,852.335,852.335,852.335,852.335,1 +1767037506000,852.33,852.33,852.33,852.33,1 +1767037507000,852.33,852.33,852.33,852.33,1 +1767037508000,852.33,852.33,852.33,852.33,1 +1767037509000,852.33,852.33,852.33,852.33,1 +1767037510000,852.33,852.33,852.33,852.33,1 +1767037511000,852.33,852.33,852.33,852.33,1 +1767037512000,852.33,852.33,852.33,852.33,1 +1767037513000,852.33,852.33,852.33,852.33,1 +1767037514000,852.33,852.33,852.33,852.33,1 +1767037515000,852.33,852.33,852.33,852.33,1 +1767037516000,852.33,852.33,852.33,852.33,1 +1767037518000,852.33,852.33,852.33,852.33,2 +1767037519000,852.33,852.33,852.33,852.33,1 +1767037520000,852.33,852.33,852.33,852.33,1 +1767037521000,852.33,852.33,852.33,852.33,1 +1767037523000,852.33,852.33,852.33,852.33,2 +1767037524000,852.33,852.33,852.33,852.33,1 +1767037526000,852.33,852.33,852.33,852.33,2 +1767037528000,852.49,852.49,852.49,852.49,1 +1767037529000,852.52,852.52,852.52,852.52,2 +1767037530000,852.515,852.515,852.515,852.515,1 +1767037532000,852.545,852.545,852.545,852.545,1 +1767037533000,852.545,852.545,852.545,852.545,1 +1767037534000,852.545,852.545,852.545,852.545,1 +1767037535000,852.545,852.545,852.545,852.545,2 +1767037537000,852.545,852.545,852.545,852.545,1 +1767037538000,852.545,852.545,852.545,852.545,1 +1767037539000,852.545,852.545,852.545,852.545,1 +1767037540000,852.53,852.53,852.53,852.53,1 +1767037541000,852.52,852.52,852.52,852.52,1 +1767037542000,852.515,852.515,852.515,852.515,1 +1767037543000,852.515,852.515,852.515,852.515,1 +1767037544000,852.515,852.515,852.515,852.515,1 +1767037545000,852.515,852.515,852.515,852.515,1 +1767037546000,852.515,852.515,852.515,852.515,1 +1767037547000,852.515,852.515,852.515,852.515,1 +1767037548000,852.515,852.515,852.515,852.515,1 +1767037549000,852.515,852.515,852.515,852.515,1 +1767037550000,852.515,852.515,852.515,852.515,1 +1767037551000,852.515,852.515,852.515,852.515,1 +1767037552000,852.515,852.515,852.515,852.515,1 +1767037553000,852.515,852.515,852.515,852.515,1 +1767037554000,852.515,852.515,852.515,852.515,1 +1767037555000,852.515,852.515,852.515,852.515,1 +1767037556000,852.515,852.515,852.515,852.515,1 +1767037557000,852.515,852.515,852.515,852.515,1 +1767037559000,852.515,852.515,852.515,852.515,2 +1767037561000,852.515,852.515,852.515,852.515,1 +1767037562000,852.515,852.515,852.515,852.515,1 +1767037563000,852.515,852.515,852.515,852.515,1 +1767037564000,852.515,852.515,852.515,852.515,1 +1767037565000,852.515,852.515,852.515,852.515,1 +1767037566000,852.515,852.515,852.515,852.515,1 +1767037567000,852.515,852.515,852.515,852.515,1 +1767037568000,852.515,852.515,852.515,852.515,1 +1767037569000,852.515,852.515,852.515,852.515,1 +1767037570000,852.515,852.515,852.515,852.515,1 +1767037571000,852.515,852.515,852.515,852.515,1 +1767037572000,852.515,852.515,852.515,852.515,1 +1767037573000,852.515,852.515,852.515,852.515,1 +1767037574000,852.515,852.515,852.515,852.515,1 +1767037575000,852.515,852.515,852.515,852.515,1 +1767037576000,852.515,852.515,852.515,852.515,1 +1767037577000,852.515,852.515,852.515,852.515,1 +1767037578000,852.515,852.515,852.515,852.515,1 +1767037579000,852.515,852.515,852.515,852.515,1 +1767037580000,852.515,852.515,852.515,852.515,1 +1767037581000,852.515,852.515,852.515,852.515,1 +1767037582000,852.515,852.515,852.515,852.515,1 +1767037583000,852.515,852.515,852.515,852.515,1 +1767037584000,852.515,852.515,852.515,852.515,1 +1767037585000,852.515,852.515,852.515,852.515,1 +1767037586000,852.515,852.515,852.515,852.515,1 +1767037587000,852.515,852.515,852.515,852.515,1 +1767037588000,852.515,852.515,852.515,852.515,1 +1767037589000,852.515,852.515,852.515,852.515,1 +1767037590000,852.515,852.515,852.515,852.515,1 +1767037591000,852.515,852.515,852.515,852.515,1 +1767037592000,852.515,852.515,852.515,852.515,1 +1767037594000,852.515,852.515,852.515,852.515,2 +1767037595000,852.515,852.515,852.515,852.515,1 +1767037596000,852.515,852.515,852.515,852.515,1 +1767037597000,852.515,852.515,852.515,852.515,1 +1767037599000,852.515,852.515,852.515,852.515,2 +1767037600000,852.515,852.515,852.515,852.515,1 +1767037601000,852.515,852.515,852.515,852.515,1 +1767037602000,852.515,852.515,852.515,852.515,1 +1767037603000,852.515,852.515,852.515,852.515,1 +1767037604000,852.515,852.515,852.515,852.515,1 +1767037605000,852.515,852.515,852.515,852.515,1 +1767037606000,852.515,852.515,852.515,852.515,1 +1767037607000,852.515,852.515,852.515,852.515,1 +1767037609000,852.515,852.515,852.515,852.515,1 +1767037610000,852.515,852.515,852.515,852.515,1 +1767037611000,852.515,852.515,852.515,852.515,1 +1767037612000,852.515,852.515,852.515,852.515,1 +1767037613000,852.515,852.515,852.515,852.515,1 +1767037614000,852.515,852.515,852.515,852.515,1 +1767037615000,852.515,852.515,852.515,852.515,1 +1767037616000,852.515,852.515,852.515,852.515,1 +1767037617000,852.515,852.515,852.515,852.515,1 +1767037618000,852.515,852.515,852.515,852.515,1 +1767037619000,852.515,852.515,852.515,852.515,1 +1767037620000,852.515,852.515,852.515,852.515,1 +1767037621000,852.515,852.515,852.515,852.515,1 +1767037622000,852.515,852.515,852.515,852.515,1 +1767037623000,852.515,852.515,852.515,852.515,1 +1767037624000,852.515,852.515,852.515,852.515,1 +1767037625000,852.515,852.515,852.515,852.515,1 +1767037626000,852.515,852.515,852.515,852.515,1 +1767037627000,852.565,852.565,852.565,852.565,1 +1767037628000,852.565,852.565,852.565,852.565,1 +1767037629000,852.565,852.565,852.565,852.565,1 +1767037630000,852.525,852.525,852.525,852.525,1 +1767037631000,852.525,852.525,852.525,852.525,1 +1767037632000,852.525,852.525,852.525,852.525,1 +1767037633000,852.525,852.525,852.525,852.525,1 +1767037634000,852.525,852.525,852.525,852.525,1 +1767037635000,852.525,852.525,852.525,852.525,1 +1767037636000,852.525,852.525,852.525,852.525,1 +1767037637000,852.525,852.525,852.525,852.525,1 +1767037638000,852.525,852.525,852.525,852.525,1 +1767037639000,852.525,852.525,852.525,852.525,1 +1767037640000,852.525,852.525,852.525,852.525,1 +1767037641000,852.525,852.525,852.525,852.525,1 +1767037643000,852.525,852.525,852.525,852.525,1 +1767037644000,852.525,852.525,852.525,852.525,1 +1767037645000,852.525,852.525,852.525,852.525,1 +1767037646000,852.55,852.55,852.55,852.55,1 +1767037647000,852.525,852.525,852.525,852.525,1 +1767037648000,852.525,852.525,852.525,852.525,1 +1767037649000,852.525,852.525,852.525,852.525,1 +1767037650000,852.525,852.525,852.525,852.525,1 +1767037651000,852.525,852.525,852.525,852.525,1 +1767037652000,852.525,852.525,852.525,852.525,1 +1767037653000,852.525,852.525,852.525,852.525,1 +1767037654000,852.525,852.525,852.525,852.525,1 +1767037655000,852.525,852.525,852.525,852.525,1 +1767037656000,852.525,852.525,852.525,852.525,1 +1767037657000,852.525,852.525,852.525,852.525,1 +1767037658000,852.525,852.525,852.525,852.525,1 +1767037660000,852.525,852.525,852.525,852.525,2 +1767037661000,852.525,852.525,852.525,852.525,1 +1767037662000,852.525,852.525,852.525,852.525,1 +1767037663000,852.525,852.525,852.525,852.525,1 +1767037664000,852.525,852.525,852.525,852.525,1 +1767037665000,852.525,852.525,852.525,852.525,1 +1767037666000,852.525,852.525,852.525,852.525,1 +1767037667000,852.525,852.525,852.525,852.525,1 +1767037669000,852.525,852.525,852.525,852.525,2 +1767037670000,852.525,852.525,852.525,852.525,1 +1767037671000,852.525,852.525,852.525,852.525,1 +1767037672000,852.525,852.525,852.525,852.525,1 +1767037674000,852.525,852.525,852.525,852.525,2 +1767037676000,852.525,852.525,852.525,852.525,1 +1767037677000,852.525,852.525,852.525,852.525,1 +1767037678000,852.525,852.525,852.525,852.525,1 +1767037679000,852.525,852.525,852.525,852.525,1 +1767037680000,852.525,852.525,852.525,852.525,1 +1767037681000,852.525,852.525,852.525,852.525,1 +1767037682000,852.48,852.48,852.48,852.48,1 +1767037683000,852.455,852.455,852.455,852.455,1 +1767037684000,852.455,852.455,852.455,852.455,1 +1767037685000,852.45,852.45,852.45,852.45,1 +1767037686000,852.45,852.45,852.45,852.45,1 +1767037687000,852.45,852.45,852.45,852.45,1 +1767037688000,852.455,852.455,852.455,852.455,1 +1767037689000,852.455,852.455,852.455,852.455,1 +1767037690000,852.455,852.455,852.455,852.455,1 +1767037691000,852.455,852.455,852.455,852.455,1 +1767037693000,852.46,852.46,852.455,852.455,2 +1767037695000,852.455,852.455,852.455,852.455,2 +1767037696000,852.455,852.455,852.455,852.455,1 +1767037697000,852.455,852.455,852.455,852.455,1 +1767037698000,852.455,852.455,852.455,852.455,1 +1767037700000,852.455,852.455,852.455,852.455,1 +1767037701000,852.455,852.455,852.455,852.455,2 +1767037702000,852.455,852.455,852.455,852.455,1 +1767037703000,852.455,852.455,852.455,852.455,1 +1767037705000,852.455,852.455,852.455,852.455,2 +1767037707000,852.455,852.455,852.455,852.455,1 +1767037708000,852.455,852.455,852.455,852.455,2 +1767037710000,852.455,852.455,852.455,852.455,1 +1767037711000,852.455,852.455,852.455,852.455,1 +1767037712000,852.455,852.455,852.455,852.455,1 +1767037713000,852.465,852.465,852.465,852.465,1 +1767037714000,852.465,852.465,852.465,852.465,1 +1767037715000,852.465,852.465,852.465,852.465,1 +1767037716000,852.465,852.465,852.465,852.465,1 +1767037717000,852.465,852.465,852.465,852.465,1 +1767037718000,852.465,852.465,852.465,852.465,1 +1767037719000,852.465,852.465,852.465,852.465,1 +1767037720000,852.465,852.465,852.465,852.465,1 +1767037721000,852.635,852.635,852.635,852.635,1 +1767037722000,852.715,852.715,852.715,852.715,1 +1767037723000,852.755,852.755,852.755,852.755,1 +1767037724000,852.755,852.755,852.755,852.755,1 +1767037725000,852.755,852.755,852.755,852.755,1 +1767037726000,852.755,852.755,852.755,852.755,1 +1767037727000,852.755,852.755,852.755,852.755,1 +1767037728000,852.755,852.755,852.755,852.755,1 +1767037729000,852.755,852.755,852.755,852.755,1 +1767037730000,852.755,852.755,852.755,852.755,1 +1767037731000,852.755,852.755,852.755,852.755,1 +1767037732000,852.845,852.845,852.845,852.845,1 +1767037733000,852.865,852.865,852.865,852.865,1 +1767037734000,852.865,852.865,852.865,852.865,1 +1767037735000,852.865,852.865,852.865,852.865,1 +1767037736000,852.865,852.865,852.865,852.865,1 +1767037737000,852.865,852.865,852.865,852.865,1 +1767037738000,852.865,852.865,852.865,852.865,1 +1767037739000,852.865,852.865,852.865,852.865,1 +1767037740000,852.81,852.81,852.81,852.81,1 +1767037741000,852.695,852.695,852.695,852.695,1 +1767037742000,852.605,852.605,852.605,852.605,1 +1767037743000,852.565,852.565,852.565,852.565,1 +1767037745000,852.565,852.565,852.565,852.565,2 +1767037747000,852.565,852.565,852.565,852.565,1 +1767037748000,852.54,852.54,852.54,852.54,1 +1767037749000,852.525,852.525,852.525,852.525,1 +1767037750000,852.525,852.525,852.525,852.525,1 +1767037751000,852.525,852.525,852.525,852.525,1 +1767037752000,852.525,852.525,852.525,852.525,1 +1767037753000,852.395,852.395,852.395,852.395,1 +1767037754000,852.365,852.365,852.365,852.365,1 +1767037755000,852.365,852.365,852.365,852.365,1 +1767037756000,852.365,852.365,852.365,852.365,1 +1767037757000,852.365,852.365,852.365,852.365,1 +1767037758000,852.365,852.365,852.365,852.365,1 +1767037759000,852.365,852.365,852.365,852.365,1 +1767037760000,852.365,852.365,852.365,852.365,1 +1767037761000,852.365,852.365,852.365,852.365,1 +1767037762000,852.365,852.365,852.365,852.365,1 +1767037763000,852.365,852.365,852.365,852.365,1 +1767037764000,852.365,852.365,852.365,852.365,1 +1767037765000,852.365,852.365,852.365,852.365,1 +1767037766000,852.365,852.365,852.365,852.365,1 +1767037767000,852.365,852.365,852.365,852.365,1 +1767037768000,852.365,852.365,852.365,852.365,1 +1767037769000,852.365,852.365,852.365,852.365,1 +1767037770000,852.365,852.365,852.365,852.365,1 +1767037771000,852.365,852.365,852.365,852.365,1 +1767037772000,852.365,852.365,852.365,852.365,1 +1767037773000,852.365,852.365,852.365,852.365,1 +1767037774000,852.365,852.365,852.365,852.365,1 +1767037776000,852.365,852.365,852.365,852.365,2 +1767037777000,852.365,852.365,852.365,852.365,1 +1767037778000,852.365,852.365,852.365,852.365,1 +1767037779000,852.365,852.365,852.365,852.365,1 +1767037780000,852.365,852.365,852.365,852.365,1 +1767037781000,852.365,852.365,852.365,852.365,1 +1767037782000,852.365,852.365,852.365,852.365,1 +1767037783000,852.345,852.345,852.345,852.345,1 +1767037785000,852.345,852.345,852.345,852.345,2 +1767037786000,852.34,852.34,852.34,852.34,1 +1767037787000,852.345,852.345,852.345,852.345,1 +1767037788000,852.345,852.345,852.345,852.345,1 +1767037789000,852.345,852.345,852.345,852.345,1 +1767037791000,852.345,852.345,852.345,852.345,1 +1767037792000,852.345,852.345,852.345,852.345,1 +1767037793000,852.345,852.345,852.345,852.345,1 +1767037794000,852.345,852.345,852.345,852.345,1 +1767037795000,852.345,852.345,852.345,852.345,1 +1767037796000,852.345,852.345,852.345,852.345,1 +1767037797000,852.345,852.345,852.345,852.345,1 +1767037798000,852.345,852.345,852.345,852.345,1 +1767037799000,852.345,852.345,852.345,852.345,1 +1767037800000,852.345,852.345,852.345,852.345,1 +1767037801000,852.345,852.345,852.345,852.345,1 +1767037802000,852.345,852.345,852.345,852.345,1 +1767037803000,852.345,852.345,852.345,852.345,1 +1767037804000,852.345,852.345,852.345,852.345,1 +1767037805000,852.345,852.345,852.345,852.345,1 +1767037806000,852.345,852.345,852.345,852.345,1 +1767037807000,852.345,852.345,852.345,852.345,1 +1767037808000,852.345,852.345,852.345,852.345,1 +1767037809000,852.345,852.345,852.345,852.345,1 +1767037810000,852.345,852.345,852.345,852.345,1 +1767037811000,852.345,852.345,852.345,852.345,1 +1767037812000,852.345,852.345,852.345,852.345,1 +1767037813000,852.425,852.425,852.425,852.425,1 +1767037814000,852.43,852.43,852.43,852.43,1 +1767037815000,852.43,852.43,852.43,852.43,1 +1767037816000,852.43,852.43,852.43,852.43,1 +1767037817000,852.43,852.43,852.43,852.43,1 +1767037818000,852.43,852.43,852.43,852.43,1 +1767037819000,852.435,852.435,852.435,852.435,1 +1767037821000,852.425,852.425,852.425,852.425,2 +1767037822000,852.425,852.425,852.425,852.425,1 +1767037823000,852.425,852.425,852.425,852.425,1 +1767037824000,852.425,852.425,852.425,852.425,1 +1767037825000,852.425,852.425,852.425,852.425,1 +1767037826000,852.425,852.425,852.425,852.425,1 +1767037827000,852.425,852.425,852.425,852.425,1 +1767037828000,852.425,852.425,852.425,852.425,1 +1767037829000,852.425,852.425,852.425,852.425,1 +1767037831000,852.425,852.425,852.425,852.425,2 +1767037832000,852.425,852.425,852.425,852.425,1 +1767037833000,852.425,852.425,852.425,852.425,1 +1767037834000,852.425,852.425,852.425,852.425,1 +1767037835000,852.425,852.425,852.425,852.425,1 +1767037837000,852.27,852.27,852.14,852.14,2 +1767037838000,852.135,852.135,852.135,852.135,1 +1767037839000,852.135,852.135,852.135,852.135,1 +1767037841000,852.135,852.135,852.135,852.135,1 +1767037842000,852.135,852.135,852.135,852.135,1 +1767037843000,852.095,852.095,852.095,852.095,1 +1767037844000,852.095,852.095,852.095,852.095,1 +1767037845000,852.095,852.095,852.095,852.095,1 +1767037846000,852.095,852.095,852.095,852.095,1 +1767037847000,852.095,852.095,852.095,852.095,1 +1767037848000,852.095,852.095,852.095,852.095,1 +1767037849000,852.095,852.095,852.095,852.095,1 +1767037850000,852.095,852.095,852.095,852.095,1 +1767037851000,852.095,852.095,852.095,852.095,1 +1767037852000,852.095,852.095,852.095,852.095,1 +1767037853000,852.095,852.095,852.095,852.095,1 +1767037854000,852.095,852.095,852.095,852.095,1 +1767037855000,852.095,852.095,852.095,852.095,1 +1767037856000,852.095,852.095,852.095,852.095,1 +1767037857000,852.095,852.095,852.095,852.095,1 +1767037858000,852.095,852.095,852.095,852.095,1 +1767037859000,852.095,852.095,852.095,852.095,1 +1767037860000,852.095,852.095,852.095,852.095,1 +1767037861000,852.095,852.095,852.095,852.095,1 +1767037862000,852.095,852.095,852.095,852.095,1 +1767037863000,852.095,852.095,852.095,852.095,1 +1767037864000,852.095,852.095,852.095,852.095,1 +1767037865000,852.095,852.095,852.095,852.095,1 +1767037866000,852.095,852.095,852.095,852.095,1 +1767037867000,852.095,852.095,852.095,852.095,1 +1767037868000,852.095,852.095,852.095,852.095,1 +1767037869000,852.095,852.095,852.095,852.095,1 +1767037870000,852.095,852.095,852.095,852.095,1 +1767037871000,852.095,852.095,852.095,852.095,1 +1767037872000,852.095,852.095,852.095,852.095,1 +1767037873000,852.095,852.095,852.095,852.095,1 +1767037874000,852.335,852.335,852.335,852.335,1 +1767037875000,852.335,852.335,852.335,852.335,1 +1767037876000,852.335,852.335,852.335,852.335,1 +1767037877000,852.345,852.345,852.345,852.345,1 +1767037878000,852.345,852.345,852.345,852.345,1 +1767037879000,852.345,852.345,852.345,852.345,1 +1767037881000,852.345,852.345,852.345,852.345,1 +1767037882000,852.345,852.345,852.34,852.34,2 +1767037884000,852.345,852.345,852.345,852.345,1 +1767037885000,852.345,852.345,852.345,852.345,1 +1767037886000,852.345,852.345,852.345,852.345,1 +1767037887000,852.345,852.345,852.345,852.345,1 +1767037888000,852.345,852.345,852.345,852.345,1 +1767037889000,852.345,852.345,852.345,852.345,1 +1767037890000,852.345,852.345,852.345,852.345,1 +1767037891000,852.345,852.345,852.345,852.345,1 +1767037892000,852.345,852.345,852.345,852.345,1 +1767037893000,852.345,852.345,852.345,852.345,1 +1767037894000,852.345,852.345,852.345,852.345,1 +1767037895000,852.345,852.345,852.345,852.345,1 +1767037896000,852.345,852.345,852.345,852.345,1 +1767037897000,852.345,852.345,852.345,852.345,1 +1767037898000,852.345,852.345,852.345,852.345,1 +1767037899000,852.345,852.345,852.345,852.345,1 +1767037900000,852.345,852.345,852.345,852.345,1 +1767037901000,852.345,852.345,852.345,852.345,1 +1767037902000,852.345,852.345,852.345,852.345,1 +1767037903000,852.345,852.345,852.345,852.345,1 +1767037904000,852.345,852.345,852.345,852.345,1 +1767037905000,852.345,852.345,852.345,852.345,1 +1767037906000,852.345,852.345,852.345,852.345,1 +1767037907000,852.345,852.345,852.345,852.345,1 +1767037908000,852.345,852.345,852.345,852.345,1 +1767037909000,852.345,852.345,852.345,852.345,1 +1767037910000,852.345,852.345,852.345,852.345,1 +1767037911000,852.345,852.345,852.345,852.345,1 +1767037912000,852.345,852.345,852.345,852.345,1 +1767037913000,852.345,852.345,852.345,852.345,1 +1767037914000,852.345,852.345,852.345,852.345,1 +1767037915000,852.345,852.345,852.345,852.345,1 +1767037917000,852.345,852.345,852.345,852.345,2 +1767037918000,852.345,852.345,852.345,852.345,1 +1767037919000,852.345,852.345,852.345,852.345,1 +1767037921000,852.345,852.345,852.345,852.345,1 +1767037922000,852.345,852.345,852.345,852.345,2 +1767037923000,852.345,852.345,852.345,852.345,1 +1767037925000,852.345,852.345,852.345,852.345,2 +1767037927000,852.345,852.345,852.345,852.345,1 +1767037928000,852.345,852.345,852.345,852.345,1 +1767037929000,852.345,852.345,852.345,852.345,1 +1767037930000,852.345,852.345,852.345,852.345,1 +1767037931000,852.345,852.345,852.345,852.345,1 +1767037932000,852.345,852.345,852.345,852.345,1 +1767037933000,852.33,852.33,852.33,852.33,1 +1767037934000,852.275,852.275,852.275,852.275,1 +1767037935000,852.31,852.31,852.31,852.31,1 +1767037936000,852.31,852.31,852.31,852.31,1 +1767037937000,852.31,852.31,852.31,852.31,1 +1767037938000,852.31,852.31,852.31,852.31,1 +1767037939000,852.315,852.315,852.315,852.315,1 +1767037940000,852.315,852.315,852.315,852.315,1 +1767037941000,852.305,852.305,852.305,852.305,1 +1767037942000,852.305,852.305,852.305,852.305,1 +1767037943000,852.305,852.305,852.305,852.305,1 +1767037944000,852.305,852.305,852.305,852.305,1 +1767037945000,852.305,852.305,852.305,852.305,1 +1767037946000,852.315,852.315,852.315,852.315,1 +1767037947000,852.315,852.315,852.315,852.315,1 +1767037948000,852.315,852.315,852.315,852.315,1 +1767037949000,852.31,852.31,852.31,852.31,1 +1767037950000,852.275,852.275,852.275,852.275,1 +1767037951000,852.275,852.275,852.275,852.275,1 +1767037952000,852.275,852.275,852.275,852.275,1 +1767037953000,852.275,852.275,852.275,852.275,1 +1767037954000,852.275,852.275,852.275,852.275,1 +1767037955000,852.275,852.275,852.275,852.275,1 +1767037957000,852.275,852.275,852.275,852.275,2 +1767037958000,852.275,852.275,852.275,852.275,1 +1767037959000,852.275,852.275,852.275,852.275,1 +1767037960000,852.275,852.275,852.275,852.275,1 +1767037962000,852.275,852.275,852.275,852.275,1 +1767037963000,852.275,852.275,852.275,852.275,2 +1767037964000,852.275,852.275,852.275,852.275,1 +1767037965000,852.275,852.275,852.275,852.275,1 +1767037967000,852.275,852.275,852.275,852.275,1 +1767037968000,852.275,852.275,852.275,852.275,1 +1767037969000,852.275,852.275,852.275,852.275,1 +1767037970000,852.275,852.275,852.275,852.275,1 +1767037971000,852.275,852.275,852.275,852.275,1 +1767037972000,852.275,852.275,852.275,852.275,1 +1767037973000,852.275,852.275,852.275,852.275,1 +1767037974000,852.275,852.275,852.275,852.275,1 +1767037975000,852.275,852.275,852.275,852.275,1 +1767037976000,852.275,852.275,852.275,852.275,1 +1767037977000,852.275,852.275,852.275,852.275,1 +1767037978000,852.38,852.38,852.38,852.38,1 +1767037979000,852.385,852.385,852.385,852.385,1 +1767037980000,852.37,852.37,852.37,852.37,1 +1767037981000,852.365,852.365,852.365,852.365,1 +1767037982000,852.36,852.36,852.36,852.36,1 +1767037983000,852.36,852.36,852.36,852.36,1 +1767037984000,852.39,852.39,852.39,852.39,1 +1767037985000,852.355,852.355,852.355,852.355,1 +1767037986000,852.355,852.355,852.355,852.355,1 +1767037987000,852.355,852.355,852.355,852.355,1 +1767037988000,852.355,852.355,852.355,852.355,1 +1767037989000,852.355,852.355,852.355,852.355,1 +1767037990000,852.355,852.355,852.355,852.355,1 +1767037991000,852.355,852.355,852.355,852.355,1 +1767037992000,852.355,852.355,852.355,852.355,1 +1767037993000,852.355,852.355,852.355,852.355,1 +1767037994000,852.355,852.355,852.355,852.355,1 +1767037995000,852.355,852.355,852.355,852.355,1 +1767037996000,852.355,852.355,852.355,852.355,1 +1767037998000,852.355,852.355,852.345,852.345,2 +1767037999000,852.345,852.345,852.345,852.345,1 +1767038000000,852.345,852.345,852.345,852.345,1 +1767038001000,852.345,852.345,852.345,852.345,1 +1767038003000,852.345,852.345,852.345,852.345,1 +1767038004000,852.345,852.345,852.345,852.345,2 +1767038006000,852.345,852.345,852.345,852.345,1 +1767038007000,852.345,852.345,852.345,852.345,1 +1767038008000,852.355,852.355,852.355,852.355,1 +1767038009000,852.355,852.355,852.355,852.355,1 +1767038010000,852.355,852.355,852.355,852.355,1 +1767038011000,852.355,852.355,852.355,852.355,1 +1767038012000,852.355,852.355,852.355,852.355,1 +1767038013000,852.355,852.355,852.355,852.355,1 +1767038014000,852.25,852.25,852.25,852.25,1 +1767038015000,852.205,852.205,852.205,852.205,1 +1767038016000,852.155,852.155,852.155,852.155,1 +1767038017000,852.155,852.155,852.155,852.155,1 +1767038018000,852.155,852.155,852.155,852.155,1 +1767038019000,852.155,852.155,852.155,852.155,1 +1767038020000,852.155,852.155,852.155,852.155,1 +1767038021000,852.155,852.155,852.155,852.155,1 +1767038022000,852.155,852.155,852.155,852.155,1 +1767038023000,852.155,852.155,852.155,852.155,1 +1767038024000,852.155,852.155,852.155,852.155,1 +1767038025000,852.155,852.155,852.155,852.155,1 +1767038026000,852.155,852.155,852.155,852.155,1 +1767038027000,852.155,852.155,852.155,852.155,1 +1767038028000,852.155,852.155,852.155,852.155,1 +1767038029000,852.155,852.155,852.155,852.155,1 +1767038030000,852.155,852.155,852.155,852.155,1 +1767038031000,852.155,852.155,852.155,852.155,1 +1767038032000,852.155,852.155,852.155,852.155,1 +1767038033000,852.155,852.155,852.155,852.155,1 +1767038034000,852.155,852.155,852.155,852.155,1 +1767038035000,852.155,852.155,852.155,852.155,1 +1767038036000,852.155,852.155,852.155,852.155,1 +1767038037000,852.155,852.155,852.155,852.155,1 +1767038038000,852.155,852.155,852.155,852.155,1 +1767038039000,852.155,852.155,852.155,852.155,1 +1767038040000,852.155,852.155,852.155,852.155,1 +1767038041000,852.345,852.345,852.345,852.345,1 +1767038043000,852.36,852.36,852.355,852.355,2 +1767038044000,852.35,852.35,852.35,852.35,1 +1767038046000,852.39,852.39,852.39,852.39,2 +1767038048000,852.39,852.39,852.39,852.39,2 +1767038050000,852.395,852.395,852.395,852.395,1 +1767038051000,852.39,852.39,852.39,852.39,1 +1767038052000,852.39,852.39,852.39,852.39,1 +1767038053000,852.385,852.385,852.385,852.385,1 +1767038054000,852.38,852.38,852.38,852.38,1 +1767038055000,852.38,852.38,852.38,852.38,1 +1767038056000,852.375,852.375,852.375,852.375,1 +1767038057000,852.395,852.395,852.395,852.395,1 +1767038058000,852.375,852.375,852.375,852.375,1 +1767038059000,852.37,852.37,852.37,852.37,1 +1767038060000,852.375,852.375,852.375,852.375,1 +1767038061000,852.36,852.36,852.36,852.36,1 +1767038062000,852.36,852.36,852.36,852.36,1 +1767038063000,852.36,852.36,852.36,852.36,1 +1767038064000,852.36,852.36,852.36,852.36,1 +1767038065000,852.355,852.355,852.355,852.355,1 +1767038066000,852.355,852.355,852.355,852.355,1 +1767038067000,852.41,852.41,852.41,852.41,1 +1767038068000,852.385,852.385,852.385,852.385,1 +1767038069000,852.5,852.5,852.5,852.5,1 +1767038070000,852.565,852.565,852.565,852.565,1 +1767038071000,852.515,852.515,852.515,852.515,1 +1767038072000,852.515,852.515,852.515,852.515,1 +1767038073000,852.515,852.515,852.515,852.515,1 +1767038074000,852.555,852.555,852.555,852.555,1 +1767038076000,852.55,852.55,852.55,852.55,1 +1767038077000,852.55,852.55,852.55,852.55,1 +1767038078000,852.54,852.54,852.54,852.54,2 +1767038079000,852.54,852.54,852.54,852.54,1 +1767038080000,852.545,852.545,852.545,852.545,1 +1767038082000,852.54,852.54,852.54,852.54,1 +1767038083000,852.54,852.54,852.54,852.54,2 +1767038084000,852.54,852.54,852.54,852.54,1 +1767038085000,852.54,852.54,852.54,852.54,1 +1767038086000,852.54,852.54,852.54,852.54,1 +1767038088000,852.525,852.525,852.525,852.525,1 +1767038089000,852.53,852.53,852.53,852.53,1 +1767038090000,852.505,852.505,852.505,852.505,1 +1767038091000,852.515,852.515,852.515,852.515,1 +1767038092000,852.515,852.515,852.515,852.515,1 +1767038093000,852.515,852.515,852.515,852.515,1 +1767038094000,852.515,852.515,852.515,852.515,1 +1767038095000,852.51,852.51,852.51,852.51,1 +1767038096000,852.515,852.515,852.515,852.515,1 +1767038097000,852.515,852.515,852.515,852.515,1 +1767038098000,852.515,852.515,852.515,852.515,1 +1767038099000,852.51,852.51,852.51,852.51,1 +1767038100000,852.52,852.52,852.52,852.52,1 +1767038101000,852.52,852.52,852.52,852.52,1 +1767038102000,852.52,852.52,852.52,852.52,1 +1767038103000,852.515,852.515,852.515,852.515,1 +1767038104000,852.515,852.515,852.515,852.515,1 +1767038105000,852.51,852.51,852.51,852.51,1 +1767038106000,852.51,852.51,852.51,852.51,1 +1767038107000,852.505,852.505,852.505,852.505,1 +1767038109000,852.505,852.505,852.505,852.505,2 +1767038110000,852.5,852.5,852.5,852.5,1 +1767038111000,852.51,852.51,852.51,852.51,1 +1767038112000,852.495,852.495,852.495,852.495,1 +1767038113000,852.505,852.505,852.505,852.505,1 +1767038114000,852.505,852.505,852.505,852.505,1 +1767038115000,852.5,852.5,852.5,852.5,1 +1767038116000,852.455,852.455,852.455,852.455,1 +1767038117000,852.455,852.455,852.455,852.455,1 +1767038119000,852.455,852.455,852.455,852.455,2 +1767038120000,852.455,852.455,852.455,852.455,1 +1767038121000,852.455,852.455,852.455,852.455,1 +1767038123000,852.455,852.455,852.455,852.455,1 +1767038124000,852.455,852.455,852.455,852.455,1 +1767038125000,852.455,852.455,852.455,852.455,1 +1767038126000,852.455,852.455,852.455,852.455,1 +1767038127000,852.455,852.455,852.455,852.455,1 +1767038128000,852.455,852.455,852.455,852.455,1 +1767038129000,852.455,852.455,852.455,852.455,1 +1767038130000,852.455,852.455,852.455,852.455,1 +1767038131000,852.455,852.455,852.455,852.455,1 +1767038132000,852.455,852.455,852.455,852.455,1 +1767038133000,852.475,852.475,852.475,852.475,1 +1767038134000,852.475,852.475,852.475,852.475,1 +1767038135000,852.475,852.475,852.475,852.475,1 +1767038136000,852.475,852.475,852.475,852.475,1 +1767038137000,852.475,852.475,852.475,852.475,1 +1767038138000,852.475,852.475,852.475,852.475,1 +1767038139000,852.475,852.475,852.475,852.475,1 +1767038140000,852.475,852.475,852.475,852.475,1 +1767038141000,852.475,852.475,852.475,852.475,1 +1767038142000,852.475,852.475,852.475,852.475,1 +1767038144000,852.51,852.51,852.505,852.505,2 +1767038145000,852.545,852.545,852.545,852.545,1 +1767038146000,852.55,852.55,852.55,852.55,1 +1767038147000,852.545,852.545,852.545,852.545,1 +1767038149000,852.54,852.565,852.54,852.565,2 +1767038150000,852.57,852.57,852.57,852.57,1 +1767038151000,852.605,852.605,852.605,852.605,1 +1767038152000,852.605,852.605,852.605,852.605,1 +1767038154000,852.64,852.64,852.64,852.64,2 +1767038155000,852.64,852.64,852.64,852.64,1 +1767038156000,852.615,852.615,852.615,852.615,1 +1767038157000,852.615,852.615,852.615,852.615,1 +1767038159000,852.61,852.61,852.61,852.61,2 +1767038161000,852.61,852.61,852.61,852.61,2 +1767038162000,852.66,852.66,852.66,852.66,1 +1767038164000,852.61,852.61,852.61,852.61,1 +1767038165000,852.615,852.615,852.615,852.615,1 +1767038166000,852.61,852.61,852.605,852.605,2 +1767038168000,852.605,852.605,852.605,852.605,1 +1767038169000,852.605,852.605,852.605,852.605,1 +1767038170000,852.63,852.63,852.63,852.63,1 +1767038171000,852.665,852.665,852.665,852.665,1 +1767038172000,852.63,852.63,852.63,852.63,1 +1767038173000,852.63,852.63,852.63,852.63,1 +1767038174000,852.63,852.63,852.63,852.63,1 +1767038175000,852.63,852.63,852.63,852.63,1 +1767038176000,852.63,852.63,852.63,852.63,1 +1767038177000,852.63,852.63,852.63,852.63,1 +1767038178000,852.63,852.63,852.63,852.63,1 +1767038179000,852.63,852.63,852.63,852.63,1 +1767038180000,852.63,852.63,852.63,852.63,1 +1767038181000,852.71,852.71,852.71,852.71,1 +1767038182000,852.71,852.71,852.71,852.71,1 +1767038183000,852.71,852.71,852.71,852.71,1 +1767038184000,852.79,852.79,852.79,852.79,1 +1767038185000,852.835,852.835,852.835,852.835,1 +1767038186000,852.835,852.835,852.835,852.835,1 +1767038187000,852.835,852.835,852.835,852.835,1 +1767038188000,852.835,852.835,852.835,852.835,1 +1767038189000,852.925,852.925,852.925,852.925,1 +1767038190000,852.915,852.915,852.915,852.915,1 +1767038191000,852.915,852.915,852.915,852.915,1 +1767038192000,852.915,852.915,852.915,852.915,1 +1767038193000,852.88,852.88,852.88,852.88,1 +1767038194000,852.92,852.92,852.92,852.92,1 +1767038195000,852.875,852.875,852.875,852.875,1 +1767038196000,852.875,852.875,852.875,852.875,1 +1767038197000,852.875,852.875,852.875,852.875,1 +1767038199000,852.875,852.875,852.875,852.875,2 +1767038200000,852.87,852.87,852.87,852.87,1 +1767038202000,852.865,852.88,852.865,852.88,2 +1767038203000,852.875,852.875,852.875,852.875,1 +1767038204000,852.875,852.875,852.875,852.875,1 +1767038205000,852.885,852.885,852.885,852.885,1 +1767038206000,852.885,852.885,852.885,852.885,1 +1767038207000,852.875,852.875,852.875,852.875,1 +1767038209000,852.875,852.875,852.875,852.875,1 +1767038210000,852.875,852.875,852.875,852.875,1 +1767038211000,852.875,852.875,852.875,852.875,1 +1767038212000,852.87,852.87,852.87,852.87,1 +1767038213000,852.87,852.87,852.87,852.87,1 +1767038214000,852.87,852.87,852.87,852.87,1 +1767038215000,852.87,852.87,852.87,852.87,1 +1767038216000,852.87,852.87,852.87,852.87,1 +1767038217000,852.87,852.87,852.87,852.87,1 +1767038218000,852.785,852.785,852.785,852.785,1 +1767038219000,852.765,852.765,852.765,852.765,1 +1767038220000,852.765,852.765,852.765,852.765,1 +1767038221000,852.765,852.765,852.765,852.765,1 +1767038222000,852.785,852.785,852.785,852.785,1 +1767038223000,852.78,852.78,852.78,852.78,1 +1767038224000,852.78,852.78,852.78,852.78,1 +1767038225000,852.775,852.775,852.775,852.775,1 +1767038226000,852.775,852.775,852.775,852.775,1 +1767038227000,852.775,852.775,852.775,852.775,1 +1767038228000,852.775,852.775,852.775,852.775,1 +1767038230000,852.775,852.775,852.775,852.775,2 +1767038231000,852.775,852.775,852.775,852.775,1 +1767038232000,852.775,852.775,852.775,852.775,1 +1767038233000,852.765,852.765,852.765,852.765,1 +1767038235000,852.725,852.725,852.725,852.725,2 +1767038236000,852.73,852.73,852.73,852.73,1 +1767038237000,852.725,852.725,852.725,852.725,1 +1767038238000,852.725,852.725,852.725,852.725,1 +1767038240000,852.725,852.725,852.725,852.725,2 +1767038241000,852.725,852.725,852.725,852.725,1 +1767038242000,852.725,852.725,852.725,852.725,1 +1767038243000,852.75,852.75,852.75,852.75,1 +1767038245000,852.75,852.75,852.75,852.75,2 +1767038246000,852.75,852.75,852.75,852.75,1 +1767038247000,852.75,852.75,852.75,852.75,1 +1767038249000,852.725,852.725,852.725,852.725,1 +1767038250000,852.725,852.725,852.725,852.725,1 +1767038251000,852.725,852.725,852.725,852.725,1 +1767038252000,852.725,852.725,852.725,852.725,1 +1767038253000,852.725,852.725,852.725,852.725,1 +1767038254000,852.725,852.725,852.725,852.725,1 +1767038255000,852.725,852.725,852.725,852.725,1 +1767038256000,852.75,852.75,852.75,852.75,1 +1767038257000,852.745,852.745,852.745,852.745,1 +1767038258000,852.745,852.745,852.745,852.745,1 +1767038259000,852.745,852.745,852.745,852.745,1 +1767038260000,852.745,852.745,852.745,852.745,1 +1767038261000,852.745,852.745,852.745,852.745,1 +1767038262000,852.745,852.745,852.745,852.745,1 +1767038263000,852.75,852.75,852.75,852.75,1 +1767038264000,852.75,852.75,852.75,852.75,1 +1767038265000,852.755,852.755,852.755,852.755,1 +1767038266000,852.765,852.765,852.765,852.765,1 +1767038267000,852.8,852.8,852.8,852.8,1 +1767038268000,852.79,852.79,852.79,852.79,1 +1767038269000,852.79,852.79,852.79,852.79,1 +1767038270000,852.79,852.79,852.79,852.79,1 +1767038271000,852.79,852.79,852.79,852.79,1 +1767038272000,852.79,852.79,852.79,852.79,1 +1767038273000,852.79,852.79,852.79,852.79,1 +1767038274000,852.79,852.79,852.79,852.79,1 +1767038275000,852.79,852.79,852.79,852.79,1 +1767038276000,852.79,852.79,852.79,852.79,1 +1767038277000,852.79,852.79,852.79,852.79,1 +1767038278000,852.79,852.79,852.79,852.79,1 +1767038280000,852.77,852.77,852.75,852.75,2 +1767038281000,852.73,852.73,852.73,852.73,1 +1767038282000,852.725,852.725,852.725,852.725,1 +1767038283000,852.725,852.725,852.725,852.725,1 +1767038285000,852.725,852.725,852.725,852.725,2 +1767038286000,852.725,852.725,852.725,852.725,1 +1767038287000,852.725,852.725,852.725,852.725,1 +1767038288000,852.725,852.725,852.725,852.725,1 +1767038290000,852.725,852.725,852.725,852.725,1 +1767038291000,852.725,852.725,852.725,852.725,1 +1767038292000,852.745,852.745,852.745,852.745,1 +1767038293000,852.735,852.735,852.735,852.735,1 +1767038294000,852.73,852.73,852.73,852.73,1 +1767038295000,852.725,852.725,852.725,852.725,1 +1767038296000,852.725,852.725,852.725,852.725,1 +1767038297000,852.725,852.725,852.725,852.725,1 +1767038298000,852.725,852.725,852.725,852.725,1 +1767038299000,852.725,852.725,852.725,852.725,1 +1767038300000,852.725,852.725,852.725,852.725,1 +1767038301000,852.725,852.725,852.725,852.725,1 +1767038302000,852.725,852.725,852.725,852.725,1 +1767038303000,852.645,852.645,852.645,852.645,1 +1767038304000,852.64,852.64,852.64,852.64,1 +1767038305000,852.64,852.64,852.64,852.64,1 +1767038306000,852.64,852.64,852.64,852.64,1 +1767038307000,852.64,852.64,852.64,852.64,1 +1767038308000,852.64,852.64,852.64,852.64,1 +1767038309000,852.64,852.64,852.64,852.64,1 +1767038310000,852.64,852.64,852.64,852.64,1 +1767038311000,852.635,852.635,852.635,852.635,1 +1767038312000,852.635,852.635,852.635,852.635,1 +1767038313000,852.635,852.635,852.635,852.635,1 +1767038314000,852.635,852.635,852.635,852.635,1 +1767038315000,852.635,852.635,852.635,852.635,1 +1767038316000,852.635,852.635,852.635,852.635,1 +1767038317000,852.635,852.635,852.635,852.635,1 +1767038318000,852.635,852.635,852.635,852.635,1 +1767038319000,852.635,852.635,852.635,852.635,1 +1767038320000,852.635,852.635,852.635,852.635,1 +1767038321000,852.57,852.57,852.57,852.57,1 +1767038322000,852.545,852.545,852.545,852.545,1 +1767038324000,852.545,852.545,852.545,852.545,2 +1767038326000,852.545,852.545,852.545,852.545,1 +1767038327000,852.545,852.545,852.545,852.545,2 +1767038329000,852.545,852.545,852.545,852.545,1 +1767038330000,852.545,852.545,852.545,852.545,1 +1767038331000,852.545,852.545,852.545,852.545,2 +1767038333000,852.545,852.545,852.545,852.545,1 +1767038334000,852.56,852.56,852.56,852.56,1 +1767038335000,852.55,852.55,852.55,852.55,1 +1767038336000,852.475,852.475,852.475,852.475,1 +1767038337000,852.395,852.395,852.395,852.395,1 +1767038338000,852.395,852.395,852.395,852.395,1 +1767038339000,852.395,852.395,852.395,852.395,1 +1767038340000,852.395,852.395,852.395,852.395,1 +1767038341000,852.395,852.395,852.395,852.395,1 +1767038342000,852.42,852.42,852.42,852.42,1 +1767038343000,852.43,852.43,852.43,852.43,1 +1767038344000,852.43,852.43,852.43,852.43,1 +1767038345000,852.425,852.425,852.425,852.425,1 +1767038346000,852.425,852.425,852.425,852.425,1 +1767038347000,852.425,852.425,852.425,852.425,1 +1767038348000,852.43,852.43,852.43,852.43,1 +1767038349000,852.43,852.43,852.43,852.43,1 +1767038351000,852.425,852.425,852.425,852.425,2 +1767038352000,852.425,852.425,852.425,852.425,1 +1767038353000,852.425,852.425,852.425,852.425,1 +1767038354000,852.425,852.425,852.425,852.425,1 +1767038356000,852.425,852.43,852.425,852.43,2 +1767038357000,852.43,852.43,852.43,852.43,1 +1767038358000,852.575,852.575,852.575,852.575,1 +1767038359000,852.615,852.615,852.615,852.615,1 +1767038361000,852.615,852.615,852.615,852.615,1 +1767038362000,852.615,852.615,852.615,852.615,2 +1767038363000,852.615,852.615,852.615,852.615,1 +1767038364000,852.585,852.585,852.585,852.585,1 +1767038366000,852.66,852.695,852.66,852.695,2 +1767038368000,852.725,852.725,852.725,852.725,1 +1767038369000,852.725,852.725,852.725,852.725,1 +1767038370000,852.725,852.725,852.725,852.725,1 +1767038371000,852.725,852.725,852.725,852.725,2 +1767038373000,852.725,852.725,852.725,852.725,1 +1767038374000,852.725,852.725,852.725,852.725,1 +1767038375000,852.725,852.725,852.725,852.725,1 +1767038376000,852.725,852.725,852.725,852.725,1 +1767038377000,852.725,852.725,852.725,852.725,1 +1767038378000,852.72,852.72,852.72,852.72,1 +1767038379000,852.72,852.72,852.72,852.72,1 +1767038380000,852.725,852.725,852.725,852.725,1 +1767038381000,852.725,852.725,852.725,852.725,1 +1767038382000,852.785,852.785,852.785,852.785,1 +1767038383000,852.77,852.77,852.77,852.77,1 +1767038384000,852.77,852.77,852.77,852.77,1 +1767038385000,852.77,852.77,852.77,852.77,1 +1767038386000,852.77,852.77,852.77,852.77,1 +1767038387000,852.77,852.77,852.77,852.77,1 +1767038388000,852.77,852.77,852.77,852.77,1 +1767038389000,852.77,852.77,852.77,852.77,1 +1767038390000,852.74,852.74,852.74,852.74,1 +1767038391000,852.75,852.75,852.75,852.75,1 +1767038392000,852.745,852.745,852.745,852.745,1 +1767038393000,852.745,852.745,852.745,852.745,1 +1767038394000,852.755,852.755,852.755,852.755,1 +1767038395000,852.75,852.75,852.75,852.75,1 +1767038396000,852.745,852.745,852.745,852.745,1 +1767038397000,852.745,852.745,852.745,852.745,1 +1767038398000,852.745,852.745,852.745,852.745,1 +1767038399000,852.745,852.745,852.745,852.745,1 +1767038402000,852.755,852.755,852.755,852.755,1 +1767038403000,852.745,852.745,852.745,852.745,1 +1767038404000,852.745,852.745,852.745,852.745,3 +1767038406000,852.745,852.745,852.745,852.745,1 +1767038407000,852.745,852.745,852.745,852.745,1 +1767038408000,852.74,852.74,852.74,852.74,1 +1767038409000,852.735,852.735,852.735,852.735,1 +1767038410000,852.74,852.74,852.74,852.74,1 +1767038411000,852.74,852.74,852.74,852.74,1 +1767038412000,852.74,852.74,852.74,852.74,1 +1767038413000,852.74,852.74,852.74,852.74,1 +1767038414000,852.74,852.74,852.74,852.74,1 +1767038415000,852.735,852.735,852.735,852.735,1 +1767038416000,852.745,852.745,852.745,852.745,1 +1767038417000,852.745,852.745,852.745,852.745,1 +1767038418000,852.735,852.735,852.735,852.735,1 +1767038419000,852.735,852.735,852.735,852.735,1 +1767038420000,852.735,852.735,852.735,852.735,1 +1767038421000,852.735,852.735,852.735,852.735,1 +1767038422000,852.74,852.74,852.74,852.74,1 +1767038423000,852.74,852.74,852.74,852.74,1 +1767038424000,852.735,852.735,852.735,852.735,1 +1767038425000,852.74,852.74,852.74,852.74,1 +1767038426000,852.735,852.735,852.735,852.735,1 +1767038427000,852.66,852.66,852.66,852.66,1 +1767038428000,852.575,852.575,852.575,852.575,1 +1767038429000,852.56,852.56,852.56,852.56,1 +1767038430000,852.56,852.56,852.56,852.56,1 +1767038431000,852.595,852.595,852.595,852.595,1 +1767038432000,852.59,852.59,852.59,852.59,1 +1767038433000,852.59,852.59,852.59,852.59,1 +1767038434000,852.595,852.595,852.595,852.595,1 +1767038435000,852.615,852.615,852.615,852.615,1 +1767038436000,852.615,852.615,852.615,852.615,1 +1767038437000,852.615,852.615,852.615,852.615,1 +1767038438000,852.615,852.615,852.615,852.615,1 +1767038439000,852.615,852.615,852.615,852.615,1 +1767038440000,852.615,852.615,852.615,852.615,1 +1767038442000,852.68,852.68,852.68,852.68,1 +1767038443000,852.765,852.765,852.765,852.765,1 +1767038444000,852.725,852.725,852.725,852.725,1 +1767038445000,852.725,852.725,852.725,852.725,1 +1767038446000,852.725,852.725,852.725,852.725,1 +1767038447000,852.725,852.725,852.725,852.725,1 +1767038448000,852.725,852.725,852.725,852.725,1 +1767038449000,852.645,852.645,852.645,852.645,1 +1767038450000,852.645,852.645,852.645,852.645,1 +1767038451000,852.645,852.645,852.645,852.645,1 +1767038452000,852.645,852.645,852.645,852.645,1 +1767038453000,852.535,852.535,852.535,852.535,1 +1767038454000,852.455,852.455,852.455,852.455,1 +1767038455000,852.455,852.455,852.455,852.455,1 +1767038456000,852.455,852.455,852.455,852.455,1 +1767038457000,852.455,852.455,852.455,852.455,1 +1767038458000,852.455,852.455,852.455,852.455,1 +1767038459000,852.455,852.455,852.455,852.455,1 +1767038460000,852.455,852.455,852.455,852.455,1 +1767038461000,852.455,852.455,852.455,852.455,1 +1767038462000,852.455,852.455,852.455,852.455,1 +1767038463000,852.525,852.525,852.525,852.525,1 +1767038464000,852.505,852.505,852.505,852.505,1 +1767038465000,852.505,852.505,852.505,852.505,1 +1767038466000,852.505,852.505,852.505,852.505,1 +1767038467000,852.505,852.505,852.505,852.505,1 +1767038468000,852.505,852.505,852.505,852.505,1 +1767038469000,852.505,852.505,852.505,852.505,1 +1767038470000,852.505,852.505,852.505,852.505,1 +1767038471000,852.505,852.505,852.505,852.505,1 +1767038472000,852.505,852.505,852.505,852.505,1 +1767038473000,852.505,852.505,852.505,852.505,1 +1767038474000,852.505,852.505,852.505,852.505,1 +1767038475000,852.505,852.505,852.505,852.505,1 +1767038477000,852.505,852.505,852.505,852.505,2 +1767038478000,852.505,852.505,852.505,852.505,1 +1767038479000,852.505,852.505,852.505,852.505,1 +1767038480000,852.47,852.47,852.47,852.47,1 +1767038481000,852.455,852.455,852.455,852.455,1 +1767038482000,852.455,852.455,852.455,852.455,1 +1767038483000,852.445,852.445,852.445,852.445,1 +1767038484000,852.315,852.315,852.315,852.315,1 +1767038485000,852.33,852.33,852.33,852.33,1 +1767038487000,852.375,852.375,852.375,852.375,1 +1767038488000,852.375,852.375,852.375,852.375,1 +1767038489000,852.375,852.375,852.375,852.375,1 +1767038490000,852.375,852.375,852.375,852.375,2 +1767038492000,852.375,852.375,852.375,852.375,1 +1767038493000,852.375,852.375,852.375,852.375,1 +1767038494000,852.375,852.375,852.375,852.375,1 +1767038495000,852.375,852.375,852.375,852.375,1 +1767038496000,852.375,852.375,852.375,852.375,1 +1767038497000,852.375,852.375,852.375,852.375,1 +1767038498000,852.375,852.375,852.375,852.375,1 +1767038499000,852.375,852.375,852.375,852.375,1 +1767038500000,852.375,852.375,852.375,852.375,1 +1767038501000,852.375,852.375,852.375,852.375,1 +1767038502000,852.375,852.375,852.375,852.375,1 +1767038503000,852.375,852.375,852.375,852.375,1 +1767038504000,852.375,852.375,852.375,852.375,1 +1767038505000,852.625,852.625,852.625,852.625,1 +1767038506000,852.625,852.625,852.625,852.625,1 +1767038507000,852.62,852.62,852.62,852.62,1 +1767038508000,852.62,852.62,852.62,852.62,1 +1767038509000,852.71,852.71,852.71,852.71,1 +1767038510000,852.71,852.71,852.71,852.71,1 +1767038511000,852.71,852.71,852.71,852.71,1 +1767038512000,852.715,852.715,852.715,852.715,1 +1767038513000,852.725,852.725,852.725,852.725,1 +1767038514000,852.725,852.725,852.725,852.725,1 +1767038515000,852.725,852.725,852.725,852.725,1 +1767038516000,852.725,852.725,852.725,852.725,1 +1767038517000,852.725,852.725,852.725,852.725,1 +1767038518000,852.725,852.725,852.725,852.725,1 +1767038519000,852.69,852.69,852.69,852.69,1 +1767038520000,852.7,852.7,852.7,852.7,1 +1767038522000,852.7,852.7,852.655,852.655,2 +1767038523000,852.615,852.615,852.615,852.615,1 +1767038524000,852.625,852.625,852.625,852.625,1 +1767038525000,852.625,852.625,852.625,852.625,1 +1767038527000,852.64,852.645,852.64,852.645,2 +1767038529000,852.64,852.64,852.64,852.64,1 +1767038530000,852.645,852.645,852.645,852.645,2 +1767038532000,852.645,852.645,852.645,852.645,1 +1767038533000,852.64,852.64,852.64,852.64,1 +1767038534000,852.64,852.64,852.64,852.64,1 +1767038535000,852.64,852.64,852.64,852.64,1 +1767038536000,852.66,852.66,852.66,852.66,1 +1767038537000,852.66,852.66,852.66,852.66,1 +1767038538000,852.665,852.665,852.665,852.665,1 +1767038539000,852.66,852.66,852.66,852.66,1 +1767038540000,852.7,852.7,852.7,852.7,1 +1767038541000,852.635,852.635,852.635,852.635,1 +1767038542000,852.635,852.635,852.635,852.635,1 +1767038543000,852.545,852.545,852.545,852.545,1 +1767038544000,852.465,852.465,852.465,852.465,1 +1767038545000,852.425,852.425,852.425,852.425,1 +1767038546000,852.425,852.425,852.425,852.425,1 +1767038547000,852.425,852.425,852.425,852.425,1 +1767038548000,852.425,852.425,852.425,852.425,1 +1767038549000,852.425,852.425,852.425,852.425,1 +1767038550000,852.425,852.425,852.425,852.425,1 +1767038551000,852.425,852.425,852.425,852.425,1 +1767038552000,852.425,852.425,852.425,852.425,1 +1767038553000,852.425,852.425,852.425,852.425,1 +1767038554000,852.425,852.425,852.425,852.425,1 +1767038555000,852.455,852.455,852.455,852.455,1 +1767038556000,852.46,852.46,852.46,852.46,1 +1767038557000,852.455,852.455,852.455,852.455,1 +1767038558000,852.46,852.46,852.46,852.46,1 +1767038559000,852.62,852.62,852.62,852.62,1 +1767038560000,852.615,852.615,852.615,852.615,1 +1767038561000,852.615,852.615,852.615,852.615,1 +1767038562000,852.605,852.605,852.605,852.605,1 +1767038563000,852.595,852.595,852.595,852.595,1 +1767038564000,852.6,852.6,852.6,852.6,1 +1767038565000,852.595,852.595,852.595,852.595,1 +1767038567000,852.595,852.595,852.595,852.595,1 +1767038568000,852.595,852.595,852.595,852.595,1 +1767038569000,852.595,852.595,852.595,852.595,1 +1767038570000,852.595,852.595,852.595,852.595,1 +1767038571000,852.595,852.595,852.595,852.595,1 +1767038572000,852.605,852.605,852.605,852.605,1 +1767038573000,852.72,852.72,852.72,852.72,1 +1767038574000,852.725,852.725,852.725,852.725,1 +1767038575000,852.725,852.725,852.725,852.725,1 +1767038576000,852.725,852.725,852.725,852.725,1 +1767038577000,852.725,852.725,852.725,852.725,1 +1767038578000,852.725,852.725,852.725,852.725,1 +1767038579000,852.725,852.725,852.725,852.725,1 +1767038580000,852.725,852.725,852.725,852.725,1 +1767038581000,852.725,852.725,852.725,852.725,1 +1767038582000,852.725,852.725,852.725,852.725,1 +1767038583000,852.725,852.725,852.725,852.725,1 +1767038584000,852.725,852.725,852.725,852.725,1 +1767038585000,852.725,852.725,852.725,852.725,1 +1767038586000,852.725,852.725,852.725,852.725,1 +1767038588000,852.725,852.725,852.725,852.725,2 +1767038589000,852.725,852.725,852.725,852.725,1 +1767038590000,852.725,852.725,852.725,852.725,1 +1767038591000,852.725,852.725,852.725,852.725,1 +1767038592000,852.725,852.725,852.725,852.725,1 +1767038593000,852.725,852.725,852.725,852.725,1 +1767038594000,852.725,852.725,852.725,852.725,1 +1767038595000,852.725,852.725,852.725,852.725,1 +1767038596000,852.725,852.725,852.725,852.725,1 +1767038597000,852.725,852.725,852.725,852.725,1 +1767038598000,852.725,852.725,852.725,852.725,1 +1767038599000,852.875,852.875,852.875,852.875,1 +1767038600000,852.875,852.875,852.875,852.875,1 +1767038601000,852.875,852.875,852.875,852.875,1 +1767038602000,852.875,852.875,852.875,852.875,1 +1767038603000,853.01,853.01,853.01,853.01,1 +1767038604000,853.015,853.015,853.015,853.015,1 +1767038605000,853.02,853.02,853.02,853.02,1 +1767038606000,853.03,853.03,853.03,853.03,1 +1767038607000,853.05,853.05,853.05,853.05,1 +1767038608000,853.08,853.08,853.08,853.08,1 +1767038609000,853.05,853.05,853.05,853.05,1 +1767038610000,853.055,853.055,853.055,853.055,1 +1767038611000,853.085,853.085,853.085,853.085,1 +1767038613000,853.095,853.095,853.095,853.095,1 +1767038614000,853.095,853.095,853.095,853.095,1 +1767038615000,853.09,853.09,853.09,853.09,1 +1767038616000,853.06,853.06,853.06,853.06,1 +1767038617000,853.075,853.075,853.075,853.075,1 +1767038618000,853.08,853.08,853.08,853.08,1 +1767038619000,853.085,853.085,853.085,853.085,1 +1767038620000,853.075,853.075,853.075,853.075,1 +1767038621000,853.075,853.075,853.075,853.075,1 +1767038622000,853.075,853.075,853.075,853.075,1 +1767038623000,852.97,852.97,852.97,852.97,1 +1767038624000,852.92,852.92,852.92,852.92,1 +1767038625000,852.895,852.895,852.895,852.895,1 +1767038626000,852.895,852.895,852.895,852.895,1 +1767038627000,852.895,852.895,852.895,852.895,1 +1767038628000,852.895,852.895,852.895,852.895,1 +1767038629000,852.925,852.925,852.925,852.925,1 +1767038630000,852.92,852.92,852.92,852.92,1 +1767038631000,852.915,852.915,852.915,852.915,1 +1767038632000,852.915,852.915,852.915,852.915,1 +1767038633000,852.915,852.915,852.915,852.915,1 +1767038634000,852.915,852.915,852.915,852.915,1 +1767038635000,852.915,852.915,852.915,852.915,1 +1767038637000,852.915,852.915,852.915,852.915,1 +1767038638000,852.915,852.925,852.915,852.925,2 +1767038640000,852.92,852.92,852.92,852.92,1 +1767038641000,852.92,852.92,852.92,852.92,1 +1767038642000,852.915,852.915,852.915,852.915,1 +1767038643000,852.915,852.915,852.915,852.915,1 +1767038644000,852.915,852.915,852.915,852.915,1 +1767038645000,852.915,852.915,852.915,852.915,1 +1767038646000,852.915,852.915,852.915,852.915,1 +1767038647000,852.915,852.915,852.915,852.915,1 +1767038648000,852.915,852.915,852.915,852.915,1 +1767038649000,852.915,852.915,852.915,852.915,1 +1767038650000,852.915,852.915,852.915,852.915,1 +1767038651000,852.915,852.915,852.915,852.915,1 +1767038652000,852.915,852.915,852.915,852.915,1 +1767038653000,852.915,852.915,852.915,852.915,1 +1767038654000,852.915,852.915,852.915,852.915,1 +1767038655000,853.02,853.02,853.02,853.02,1 +1767038656000,852.985,852.985,852.985,852.985,1 +1767038657000,852.985,852.985,852.985,852.985,1 +1767038658000,852.985,852.985,852.985,852.985,1 +1767038659000,852.985,852.985,852.985,852.985,1 +1767038660000,852.985,852.985,852.985,852.985,1 +1767038661000,852.985,852.985,852.985,852.985,1 +1767038662000,852.985,852.985,852.985,852.985,1 +1767038663000,852.985,852.985,852.985,852.985,1 +1767038664000,852.985,852.985,852.985,852.985,1 +1767038665000,852.985,852.985,852.985,852.985,1 +1767038666000,853.005,853.005,853.005,853.005,1 +1767038667000,853.005,853.005,853.005,853.005,1 +1767038669000,853.005,853.005,853.005,853.005,2 +1767038670000,853.005,853.005,853.005,853.005,1 +1767038671000,853.06,853.06,853.06,853.06,1 +1767038672000,853.06,853.06,853.06,853.06,1 +1767038673000,853.065,853.065,853.065,853.065,1 +1767038674000,853.095,853.095,853.095,853.095,1 +1767038675000,853.095,853.095,853.095,853.095,1 +1767038676000,853.095,853.095,853.095,853.095,1 +1767038678000,853.095,853.095,853.095,853.095,1 +1767038679000,853.285,853.46,853.285,853.46,2 +1767038681000,853.525,853.525,853.525,853.525,1 +1767038682000,853.525,853.525,853.525,853.525,1 +1767038683000,853.525,853.525,853.525,853.525,2 +1767038685000,853.525,853.525,853.525,853.525,1 +1767038686000,853.525,853.525,853.525,853.525,1 +1767038687000,853.49,853.49,853.49,853.49,1 +1767038688000,853.455,853.455,853.455,853.455,1 +1767038689000,853.455,853.455,853.455,853.455,1 +1767038690000,853.455,853.455,853.455,853.455,1 +1767038691000,853.455,853.455,853.455,853.455,1 +1767038692000,853.45,853.45,853.45,853.45,1 +1767038693000,853.445,853.445,853.445,853.445,1 +1767038694000,853.445,853.445,853.445,853.445,1 +1767038695000,853.445,853.445,853.445,853.445,1 +1767038696000,853.445,853.445,853.445,853.445,1 +1767038697000,853.41,853.41,853.41,853.41,1 +1767038698000,853.385,853.385,853.385,853.385,1 +1767038699000,853.385,853.385,853.385,853.385,1 +1767038700000,853.385,853.385,853.385,853.385,1 +1767038701000,853.385,853.385,853.385,853.385,1 +1767038702000,853.375,853.375,853.375,853.375,1 +1767038703000,853.375,853.375,853.375,853.375,1 +1767038704000,853.375,853.375,853.375,853.375,1 +1767038705000,853.375,853.375,853.375,853.375,1 +1767038706000,853.375,853.375,853.375,853.375,1 +1767038707000,853.345,853.345,853.345,853.345,1 +1767038709000,853.235,853.235,853.235,853.235,1 +1767038710000,853.175,853.175,853.175,853.175,1 +1767038711000,853.105,853.105,853.105,853.105,1 +1767038712000,853.085,853.085,853.085,853.085,1 +1767038713000,853.085,853.085,853.085,853.085,2 +1767038715000,853.085,853.085,853.085,853.085,2 +1767038717000,853.085,853.085,853.085,853.085,1 +1767038718000,853.085,853.085,853.085,853.085,1 +1767038719000,853.085,853.085,853.085,853.085,1 +1767038720000,853.085,853.085,853.085,853.085,1 +1767038721000,853.085,853.085,853.085,853.085,1 +1767038722000,853.005,853.005,853.005,853.005,1 +1767038723000,853.005,853.005,853.005,853.005,1 +1767038724000,853.005,853.005,853.005,853.005,1 +1767038725000,853.0,853.0,853.0,853.0,1 +1767038726000,853.0,853.0,853.0,853.0,1 +1767038727000,853.0,853.0,853.0,853.0,1 +1767038728000,853.005,853.005,853.005,853.005,1 +1767038729000,853.005,853.005,853.005,853.005,1 +1767038730000,853.005,853.005,853.005,853.005,1 +1767038731000,853.115,853.115,853.115,853.115,1 +1767038732000,853.105,853.105,853.105,853.105,1 +1767038733000,853.1,853.1,853.1,853.1,1 +1767038734000,853.145,853.145,853.145,853.145,1 +1767038735000,853.115,853.115,853.115,853.115,1 +1767038736000,853.115,853.115,853.115,853.115,1 +1767038737000,853.115,853.115,853.115,853.115,1 +1767038738000,853.12,853.12,853.12,853.12,1 +1767038739000,853.265,853.265,853.265,853.265,1 +1767038740000,853.27,853.27,853.27,853.27,1 +1767038741000,853.265,853.265,853.265,853.265,1 +1767038742000,853.265,853.265,853.265,853.265,1 +1767038743000,853.265,853.265,853.265,853.265,1 +1767038744000,853.265,853.265,853.265,853.265,1 +1767038745000,853.265,853.265,853.265,853.265,1 +1767038746000,853.265,853.265,853.265,853.265,1 +1767038747000,853.265,853.265,853.265,853.265,1 +1767038749000,853.265,853.265,853.265,853.265,1 +1767038750000,853.265,853.265,853.265,853.265,2 +1767038751000,853.265,853.265,853.265,853.265,1 +1767038752000,853.265,853.265,853.265,853.265,1 +1767038754000,853.265,853.265,853.265,853.265,1 +1767038755000,853.265,853.265,853.265,853.265,1 +1767038756000,853.265,853.265,853.265,853.265,1 +1767038757000,853.265,853.265,853.265,853.265,1 +1767038758000,853.265,853.265,853.265,853.265,1 +1767038759000,853.265,853.265,853.265,853.265,1 +1767038760000,853.265,853.265,853.265,853.265,1 +1767038761000,853.265,853.265,853.265,853.265,1 +1767038762000,853.265,853.265,853.265,853.265,1 +1767038763000,853.265,853.265,853.265,853.265,1 +1767038764000,853.265,853.265,853.265,853.265,1 +1767038765000,853.265,853.265,853.265,853.265,1 +1767038766000,853.265,853.265,853.265,853.265,1 +1767038767000,853.265,853.265,853.265,853.265,1 +1767038768000,853.265,853.265,853.265,853.265,1 +1767038769000,853.265,853.265,853.265,853.265,1 +1767038770000,853.265,853.265,853.265,853.265,1 +1767038771000,853.265,853.265,853.265,853.265,1 +1767038772000,853.265,853.265,853.265,853.265,1 +1767038774000,853.33,853.47,853.33,853.47,2 +1767038775000,853.585,853.585,853.585,853.585,1 +1767038776000,853.585,853.585,853.585,853.585,1 +1767038777000,853.585,853.585,853.585,853.585,1 +1767038779000,853.585,853.585,853.585,853.585,2 +1767038781000,853.585,853.585,853.585,853.585,1 +1767038782000,853.585,853.585,853.585,853.585,1 +1767038783000,853.585,853.585,853.585,853.585,1 +1767038784000,853.585,853.585,853.585,853.585,1 +1767038785000,853.585,853.585,853.585,853.585,1 +1767038786000,853.585,853.585,853.585,853.585,1 +1767038787000,853.585,853.585,853.585,853.585,1 +1767038788000,853.565,853.565,853.565,853.565,1 +1767038789000,853.565,853.565,853.565,853.565,1 +1767038790000,853.525,853.525,853.525,853.525,1 +1767038791000,853.51,853.51,853.51,853.51,1 +1767038792000,853.435,853.435,853.435,853.435,1 +1767038793000,853.365,853.365,853.365,853.365,1 +1767038794000,853.285,853.285,853.285,853.285,1 +1767038795000,853.215,853.215,853.215,853.215,1 +1767038796000,853.22,853.22,853.22,853.22,1 +1767038797000,853.36,853.36,853.36,853.36,1 +1767038799000,853.46,853.48,853.46,853.48,2 +1767038800000,853.475,853.475,853.475,853.475,1 +1767038801000,853.475,853.475,853.475,853.475,1 +1767038802000,853.475,853.475,853.475,853.475,1 +1767038804000,853.445,853.445,853.415,853.415,2 +1767038805000,853.435,853.435,853.435,853.435,1 +1767038806000,853.43,853.43,853.43,853.43,1 +1767038807000,853.425,853.425,853.425,853.425,1 +1767038809000,853.495,853.525,853.495,853.525,2 +1767038811000,853.585,853.585,853.585,853.585,1 +1767038812000,853.585,853.585,853.585,853.585,1 +1767038813000,853.585,853.585,853.585,853.585,1 +1767038814000,853.585,853.585,853.585,853.585,1 +1767038815000,853.585,853.585,853.585,853.585,1 +1767038816000,853.585,853.585,853.585,853.585,1 +1767038817000,853.56,853.56,853.56,853.56,1 +1767038818000,853.535,853.535,853.535,853.535,1 +1767038819000,853.535,853.535,853.535,853.535,1 +1767038820000,853.535,853.535,853.535,853.535,1 +1767038821000,853.535,853.535,853.535,853.535,1 +1767038822000,853.52,853.52,853.52,853.52,1 +1767038823000,853.58,853.58,853.58,853.58,1 +1767038824000,853.575,853.575,853.575,853.575,1 +1767038825000,853.575,853.575,853.575,853.575,1 +1767038826000,853.565,853.565,853.565,853.565,1 +1767038827000,853.565,853.565,853.565,853.565,1 +1767038828000,853.565,853.565,853.565,853.565,1 +1767038830000,853.57,853.57,853.565,853.565,2 +1767038831000,853.57,853.57,853.57,853.57,1 +1767038832000,853.565,853.565,853.565,853.565,1 +1767038833000,853.565,853.565,853.565,853.565,1 +1767038834000,853.565,853.565,853.565,853.565,1 +1767038835000,853.565,853.565,853.565,853.565,1 +1767038837000,853.565,853.565,853.565,853.565,1 +1767038838000,853.565,853.565,853.565,853.565,1 +1767038839000,853.57,853.57,853.57,853.57,1 +1767038840000,853.57,853.57,853.57,853.57,1 +1767038841000,853.57,853.57,853.57,853.57,1 +1767038842000,853.565,853.565,853.565,853.565,1 +1767038843000,853.565,853.565,853.565,853.565,1 +1767038844000,853.565,853.565,853.565,853.565,1 +1767038845000,853.565,853.565,853.565,853.565,1 +1767038846000,853.57,853.57,853.57,853.57,1 +1767038847000,853.56,853.56,853.56,853.56,1 +1767038848000,853.555,853.555,853.555,853.555,1 +1767038849000,853.555,853.555,853.555,853.555,1 +1767038850000,853.555,853.555,853.555,853.555,1 +1767038851000,853.555,853.555,853.555,853.555,1 +1767038852000,853.545,853.545,853.545,853.545,1 +1767038853000,853.545,853.545,853.545,853.545,1 +1767038854000,853.545,853.545,853.545,853.545,1 +1767038855000,853.545,853.545,853.545,853.545,1 +1767038856000,853.545,853.545,853.545,853.545,1 +1767038858000,853.55,853.55,853.55,853.55,1 +1767038859000,853.55,853.55,853.55,853.55,2 +1767038860000,853.555,853.555,853.555,853.555,1 +1767038861000,853.555,853.555,853.555,853.555,1 +1767038862000,853.555,853.555,853.555,853.555,1 +1767038864000,853.515,853.515,853.515,853.515,1 +1767038865000,853.495,853.495,853.495,853.495,2 +1767038867000,853.495,853.495,853.495,853.495,1 +1767038868000,853.495,853.495,853.495,853.495,1 +1767038869000,853.555,853.555,853.555,853.555,1 +1767038870000,853.615,853.615,853.615,853.615,1 +1767038871000,853.615,853.615,853.615,853.615,1 +1767038872000,853.615,853.615,853.615,853.615,1 +1767038873000,853.615,853.615,853.615,853.615,1 +1767038874000,853.615,853.615,853.615,853.615,1 +1767038875000,853.615,853.615,853.615,853.615,1 +1767038876000,853.615,853.615,853.615,853.615,1 +1767038877000,853.615,853.615,853.615,853.615,1 +1767038878000,853.615,853.615,853.615,853.615,1 +1767038879000,853.705,853.705,853.705,853.705,1 +1767038880000,853.705,853.705,853.705,853.705,1 +1767038881000,853.73,853.73,853.73,853.73,1 +1767038882000,853.725,853.725,853.725,853.725,1 +1767038883000,853.735,853.735,853.735,853.735,1 +1767038885000,853.735,853.825,853.735,853.825,2 +1767038886000,853.865,853.865,853.865,853.865,1 +1767038887000,853.98,853.98,853.98,853.98,1 +1767038888000,853.995,853.995,853.995,853.995,1 +1767038889000,853.995,853.995,853.995,853.995,1 +1767038890000,853.995,853.995,853.995,853.995,1 +1767038891000,853.975,853.975,853.975,853.975,1 +1767038892000,853.975,853.975,853.975,853.975,1 +1767038893000,853.915,853.915,853.915,853.915,1 +1767038895000,853.875,853.985,853.875,853.985,2 +1767038896000,853.965,853.965,853.965,853.965,1 +1767038897000,853.965,853.965,853.965,853.965,1 +1767038898000,853.965,853.965,853.965,853.965,1 +1767038900000,853.965,853.965,853.965,853.965,1 +1767038901000,854.06,854.06,854.06,854.06,1 +1767038902000,854.125,854.125,854.125,854.125,1 +1767038903000,854.125,854.125,854.125,854.125,1 +1767038904000,854.125,854.125,854.125,854.125,1 +1767038905000,854.125,854.125,854.125,854.125,1 +1767038906000,854.165,854.165,854.165,854.165,1 +1767038907000,854.175,854.175,854.175,854.175,1 +1767038908000,854.185,854.185,854.185,854.185,1 +1767038909000,854.185,854.185,854.185,854.185,1 +1767038910000,854.185,854.185,854.185,854.185,1 +1767038911000,854.185,854.185,854.185,854.185,1 +1767038912000,854.185,854.185,854.185,854.185,1 +1767038913000,854.185,854.185,854.185,854.185,1 +1767038914000,854.185,854.185,854.185,854.185,1 +1767038915000,854.185,854.185,854.185,854.185,1 +1767038916000,854.125,854.125,854.125,854.125,1 +1767038917000,854.125,854.125,854.125,854.125,1 +1767038918000,854.125,854.125,854.125,854.125,1 +1767038919000,854.125,854.125,854.125,854.125,1 +1767038920000,854.125,854.125,854.125,854.125,1 +1767038921000,854.125,854.125,854.125,854.125,1 +1767038922000,854.125,854.125,854.125,854.125,1 +1767038923000,854.125,854.125,854.125,854.125,1 +1767038925000,854.125,854.125,854.125,854.125,1 +1767038926000,854.125,854.125,854.125,854.125,2 +1767038928000,854.125,854.125,854.125,854.125,1 +1767038929000,854.15,854.15,854.15,854.15,1 +1767038930000,854.125,854.125,854.125,854.125,1 +1767038931000,854.125,854.125,854.125,854.125,1 +1767038932000,854.125,854.125,854.125,854.125,2 +1767038933000,854.125,854.125,854.125,854.125,1 +1767038935000,854.125,854.125,854.125,854.125,1 +1767038936000,854.125,854.125,854.125,854.125,1 +1767038937000,854.125,854.125,854.125,854.125,1 +1767038938000,854.125,854.125,854.125,854.125,1 +1767038939000,854.125,854.125,854.125,854.125,1 +1767038940000,854.125,854.125,854.125,854.125,1 +1767038941000,854.125,854.125,854.125,854.125,1 +1767038942000,854.125,854.125,854.125,854.125,1 +1767038943000,854.125,854.125,854.125,854.125,1 +1767038944000,854.125,854.125,854.125,854.125,1 +1767038945000,854.125,854.125,854.125,854.125,1 +1767038946000,854.125,854.125,854.125,854.125,1 +1767038947000,854.125,854.125,854.125,854.125,1 +1767038948000,854.155,854.155,854.155,854.155,1 +1767038949000,854.14,854.14,854.14,854.14,1 +1767038950000,854.115,854.115,854.115,854.115,1 +1767038951000,854.115,854.115,854.115,854.115,1 +1767038952000,854.115,854.115,854.115,854.115,1 +1767038953000,854.115,854.115,854.115,854.115,1 +1767038954000,854.155,854.155,854.155,854.155,1 +1767038955000,854.16,854.16,854.16,854.16,1 +1767038956000,854.195,854.195,854.195,854.195,1 +1767038957000,854.34,854.34,854.34,854.34,1 +1767038958000,854.345,854.345,854.345,854.345,1 +1767038959000,854.345,854.345,854.345,854.345,1 +1767038960000,854.345,854.345,854.345,854.345,1 +1767038962000,854.345,854.345,854.345,854.345,2 +1767038963000,854.345,854.345,854.345,854.345,1 +1767038965000,854.345,854.345,854.345,854.345,1 +1767038966000,854.3,854.3,854.3,854.3,1 +1767038967000,854.285,854.285,854.285,854.285,1 +1767038968000,854.285,854.285,854.285,854.285,1 +1767038969000,854.285,854.285,854.285,854.285,1 +1767038970000,854.3,854.3,854.3,854.3,1 +1767038971000,854.305,854.305,854.305,854.305,1 +1767038972000,854.305,854.305,854.305,854.305,1 +1767038973000,854.305,854.305,854.305,854.305,1 +1767038974000,854.305,854.305,854.305,854.305,1 +1767038975000,854.305,854.305,854.305,854.305,1 +1767038976000,854.3,854.3,854.3,854.3,1 +1767038977000,854.3,854.3,854.3,854.3,1 +1767038978000,854.365,854.365,854.365,854.365,1 +1767038979000,854.33,854.33,854.33,854.33,1 +1767038980000,854.335,854.335,854.335,854.335,1 +1767038981000,854.34,854.34,854.34,854.34,1 +1767038982000,854.305,854.305,854.305,854.305,1 +1767038983000,854.305,854.305,854.305,854.305,1 +1767038984000,854.33,854.33,854.33,854.33,1 +1767038985000,854.325,854.325,854.325,854.325,1 +1767038986000,854.325,854.325,854.325,854.325,1 +1767038987000,854.375,854.375,854.375,854.375,1 +1767038988000,854.435,854.435,854.435,854.435,1 +1767038989000,854.435,854.435,854.435,854.435,1 +1767038990000,854.425,854.425,854.425,854.425,1 +1767038991000,854.445,854.445,854.445,854.445,1 +1767038992000,854.405,854.405,854.405,854.405,1 +1767038993000,854.4,854.4,854.4,854.4,1 +1767038994000,854.445,854.445,854.445,854.445,1 +1767038995000,854.395,854.395,854.395,854.395,1 +1767038996000,854.395,854.395,854.395,854.395,1 +1767038997000,854.39,854.39,854.39,854.39,1 +1767038998000,854.385,854.385,854.385,854.385,1 +1767038999000,854.385,854.385,854.385,854.385,1 +1767039000000,854.385,854.385,854.385,854.385,1 +1767039002000,854.495,854.495,854.495,854.495,1 +1767039003000,854.44,854.44,854.44,854.44,1 +1767039004000,854.465,854.465,854.465,854.465,1 +1767039005000,854.47,854.47,854.47,854.47,1 +1767039006000,854.385,854.385,854.385,854.385,1 +1767039007000,854.375,854.375,854.375,854.375,1 +1767039008000,854.425,854.425,854.425,854.425,1 +1767039009000,854.415,854.415,854.415,854.415,1 +1767039010000,854.415,854.415,854.415,854.415,1 +1767039011000,854.405,854.405,854.405,854.405,1 +1767039012000,854.395,854.395,854.395,854.395,1 +1767039013000,854.39,854.39,854.39,854.39,1 +1767039014000,854.385,854.385,854.385,854.385,1 +1767039015000,854.39,854.39,854.39,854.39,1 +1767039016000,854.39,854.39,854.39,854.39,1 +1767039017000,854.43,854.43,854.43,854.43,1 +1767039018000,854.44,854.44,854.44,854.44,1 +1767039019000,854.45,854.45,854.45,854.45,1 +1767039020000,854.45,854.45,854.45,854.45,1 +1767039021000,854.4,854.4,854.4,854.4,1 +1767039022000,854.405,854.405,854.405,854.405,1 +1767039023000,854.43,854.43,854.43,854.43,1 +1767039024000,854.43,854.43,854.43,854.43,1 +1767039025000,854.43,854.43,854.43,854.43,1 +1767039026000,854.43,854.43,854.43,854.43,1 +1767039027000,854.43,854.43,854.43,854.43,1 +1767039028000,854.465,854.465,854.465,854.465,1 +1767039029000,854.43,854.43,854.43,854.43,1 +1767039030000,854.42,854.42,854.42,854.42,1 +1767039032000,854.535,854.535,854.535,854.535,1 +1767039033000,854.54,854.54,854.54,854.54,1 +1767039034000,854.53,854.53,854.53,854.53,1 +1767039035000,854.53,854.53,854.53,854.53,1 +1767039036000,854.53,854.53,854.53,854.53,1 +1767039037000,854.53,854.53,854.53,854.53,1 +1767039038000,854.53,854.53,854.53,854.53,1 +1767039039000,854.53,854.53,854.53,854.53,1 +1767039040000,854.525,854.525,854.525,854.525,1 +1767039041000,854.525,854.525,854.525,854.525,1 +1767039042000,854.555,854.555,854.555,854.555,1 +1767039043000,854.52,854.52,854.52,854.52,1 +1767039044000,854.535,854.535,854.535,854.535,1 +1767039045000,854.54,854.54,854.54,854.54,1 +1767039046000,854.535,854.535,854.535,854.535,1 +1767039047000,854.535,854.535,854.535,854.535,1 +1767039048000,854.515,854.515,854.515,854.515,1 +1767039049000,854.465,854.465,854.465,854.465,1 +1767039050000,854.465,854.465,854.465,854.465,1 +1767039051000,854.465,854.465,854.465,854.465,1 +1767039052000,854.395,854.395,854.395,854.395,1 +1767039053000,854.345,854.345,854.345,854.345,1 +1767039054000,854.345,854.345,854.345,854.345,1 +1767039056000,854.345,854.345,854.345,854.345,2 +1767039057000,854.345,854.345,854.345,854.345,1 +1767039058000,854.25,854.25,854.25,854.25,1 +1767039059000,854.175,854.175,854.175,854.175,1 +1767039061000,854.2,854.2,854.2,854.2,1 +1767039062000,854.23,854.23,854.23,854.23,1 +1767039063000,854.23,854.275,854.23,854.275,2 +1767039064000,854.235,854.235,854.235,854.235,1 +1767039066000,854.24,854.24,854.24,854.24,1 +1767039067000,854.25,854.25,854.25,854.25,1 +1767039068000,854.33,854.33,854.33,854.33,1 +1767039069000,854.32,854.32,854.32,854.32,1 +1767039070000,854.32,854.32,854.32,854.32,1 +1767039071000,854.37,854.37,854.37,854.37,1 +1767039072000,854.365,854.365,854.365,854.365,1 +1767039073000,854.445,854.445,854.445,854.445,1 +1767039074000,854.475,854.475,854.475,854.475,1 +1767039075000,854.54,854.54,854.54,854.54,1 +1767039076000,854.61,854.61,854.61,854.61,1 +1767039077000,854.635,854.635,854.635,854.635,1 +1767039078000,854.635,854.635,854.635,854.635,1 +1767039079000,854.635,854.635,854.635,854.635,1 +1767039080000,854.635,854.635,854.635,854.635,1 +1767039081000,854.635,854.635,854.635,854.635,1 +1767039082000,854.635,854.635,854.635,854.635,1 +1767039083000,854.635,854.635,854.635,854.635,1 +1767039084000,854.635,854.635,854.635,854.635,1 +1767039085000,854.635,854.635,854.635,854.635,1 +1767039086000,854.635,854.635,854.635,854.635,1 +1767039087000,854.635,854.635,854.635,854.635,1 +1767039088000,854.635,854.635,854.635,854.635,1 +1767039089000,854.635,854.635,854.635,854.635,1 +1767039090000,854.635,854.635,854.635,854.635,1 +1767039091000,854.635,854.635,854.635,854.635,1 +1767039092000,854.635,854.635,854.635,854.635,1 +1767039093000,854.635,854.635,854.635,854.635,1 +1767039094000,854.635,854.635,854.635,854.635,1 +1767039096000,854.635,854.635,854.635,854.635,2 +1767039097000,854.635,854.635,854.635,854.635,1 +1767039098000,854.635,854.635,854.635,854.635,1 +1767039099000,854.635,854.635,854.635,854.635,1 +1767039100000,854.635,854.635,854.635,854.635,1 +1767039102000,854.635,854.635,854.635,854.635,1 +1767039103000,854.635,854.635,854.635,854.635,1 +1767039104000,854.615,854.615,854.615,854.615,1 +1767039105000,854.595,854.595,854.595,854.595,1 +1767039106000,854.595,854.595,854.595,854.595,1 +1767039107000,854.595,854.595,854.595,854.595,1 +1767039108000,854.595,854.595,854.595,854.595,1 +1767039109000,854.595,854.595,854.595,854.595,1 +1767039110000,854.595,854.595,854.595,854.595,1 +1767039111000,854.595,854.595,854.595,854.595,1 +1767039112000,854.595,854.595,854.595,854.595,1 +1767039113000,854.57,854.57,854.57,854.57,1 +1767039114000,854.58,854.58,854.58,854.58,1 +1767039115000,854.595,854.595,854.595,854.595,1 +1767039116000,854.595,854.595,854.595,854.595,1 +1767039117000,854.59,854.59,854.59,854.59,1 +1767039118000,854.6,854.6,854.6,854.6,1 +1767039119000,854.6,854.6,854.6,854.6,1 +1767039120000,854.6,854.6,854.6,854.6,1 +1767039121000,854.605,854.605,854.605,854.605,1 +1767039122000,854.6,854.6,854.6,854.6,1 +1767039123000,854.6,854.6,854.6,854.6,1 +1767039124000,854.6,854.6,854.6,854.6,1 +1767039125000,854.58,854.58,854.58,854.58,1 +1767039127000,854.58,854.58,854.58,854.58,2 +1767039128000,854.58,854.58,854.58,854.58,1 +1767039129000,854.58,854.58,854.58,854.58,1 +1767039130000,854.58,854.58,854.58,854.58,1 +1767039131000,854.58,854.58,854.58,854.58,1 +1767039133000,854.58,854.58,854.58,854.58,2 +1767039134000,854.605,854.605,854.605,854.605,1 +1767039135000,854.6,854.6,854.6,854.6,1 +1767039137000,854.595,854.595,854.595,854.595,1 +1767039138000,854.605,854.605,854.605,854.605,1 +1767039139000,854.61,854.61,854.61,854.61,1 +1767039140000,854.61,854.61,854.61,854.61,1 +1767039141000,854.61,854.61,854.61,854.61,1 +1767039142000,854.61,854.61,854.61,854.61,1 +1767039143000,854.605,854.605,854.605,854.605,1 +1767039144000,854.615,854.615,854.615,854.615,1 +1767039145000,854.615,854.615,854.615,854.615,1 +1767039146000,854.615,854.615,854.615,854.615,1 +1767039147000,854.615,854.615,854.615,854.615,1 +1767039148000,854.615,854.615,854.615,854.615,1 +1767039149000,854.615,854.615,854.615,854.615,1 +1767039150000,854.615,854.615,854.615,854.615,1 +1767039151000,854.615,854.615,854.615,854.615,1 +1767039152000,854.615,854.615,854.615,854.615,1 +1767039153000,854.615,854.615,854.615,854.615,1 +1767039154000,854.615,854.615,854.615,854.615,1 +1767039155000,854.615,854.615,854.615,854.615,1 +1767039156000,854.575,854.575,854.575,854.575,1 +1767039157000,854.575,854.575,854.575,854.575,1 +1767039158000,854.575,854.575,854.575,854.575,1 +1767039159000,854.575,854.575,854.575,854.575,1 +1767039160000,854.575,854.575,854.575,854.575,1 +1767039161000,854.5,854.5,854.5,854.5,1 +1767039162000,854.445,854.445,854.445,854.445,1 +1767039163000,854.455,854.455,854.455,854.455,1 +1767039164000,854.455,854.455,854.455,854.455,1 +1767039165000,854.455,854.455,854.455,854.455,1 +1767039166000,854.455,854.455,854.455,854.455,1 +1767039167000,854.455,854.455,854.455,854.455,1 +1767039168000,854.455,854.455,854.455,854.455,1 +1767039169000,854.455,854.455,854.455,854.455,1 +1767039170000,854.335,854.335,854.335,854.335,1 +1767039172000,854.305,854.305,854.305,854.305,1 +1767039173000,854.285,854.32,854.285,854.32,2 +1767039174000,854.32,854.32,854.32,854.32,1 +1767039175000,854.32,854.32,854.32,854.32,1 +1767039177000,854.32,854.32,854.32,854.32,2 +1767039178000,854.32,854.32,854.32,854.32,1 +1767039180000,854.325,854.33,854.325,854.33,2 +1767039182000,854.33,854.33,854.33,854.33,1 +1767039183000,854.33,854.33,854.33,854.33,1 +1767039184000,854.315,854.315,854.315,854.315,1 +1767039185000,854.315,854.315,854.315,854.315,1 +1767039186000,854.27,854.27,854.27,854.27,1 +1767039187000,854.265,854.265,854.265,854.265,1 +1767039188000,854.265,854.265,854.265,854.265,1 +1767039189000,854.265,854.265,854.265,854.265,1 +1767039190000,854.265,854.265,854.265,854.265,1 +1767039191000,854.265,854.265,854.265,854.265,1 +1767039192000,854.265,854.265,854.265,854.265,1 +1767039193000,854.265,854.265,854.265,854.265,1 +1767039194000,854.265,854.265,854.265,854.265,1 +1767039195000,854.265,854.265,854.265,854.265,1 +1767039196000,853.82,853.82,853.82,853.82,1 +1767039197000,853.805,853.805,853.805,853.805,1 +1767039198000,853.805,853.805,853.805,853.805,1 +1767039199000,853.805,853.805,853.805,853.805,1 +1767039200000,853.805,853.805,853.805,853.805,1 +1767039201000,853.805,853.805,853.805,853.805,1 +1767039202000,853.805,853.805,853.805,853.805,1 +1767039203000,853.74,853.74,853.74,853.74,1 +1767039204000,853.74,853.74,853.74,853.74,1 +1767039205000,853.77,853.77,853.77,853.77,1 +1767039206000,853.745,853.745,853.745,853.745,1 +1767039208000,853.745,853.745,853.745,853.745,1 +1767039209000,853.745,853.745,853.745,853.745,1 +1767039210000,853.745,853.745,853.745,853.745,1 +1767039211000,853.745,853.745,853.745,853.745,1 +1767039212000,853.745,853.745,853.745,853.745,1 +1767039213000,853.74,853.74,853.74,853.74,1 +1767039214000,853.735,853.735,853.735,853.735,1 +1767039215000,853.735,853.735,853.735,853.735,1 +1767039216000,853.735,853.735,853.735,853.735,1 +1767039217000,853.9,853.9,853.9,853.9,1 +1767039218000,853.965,853.965,853.965,853.965,1 +1767039219000,853.965,853.965,853.965,853.965,1 +1767039220000,853.965,853.965,853.965,853.965,1 +1767039221000,853.965,853.965,853.965,853.965,1 +1767039223000,853.965,853.965,853.965,853.965,2 +1767039224000,853.965,853.965,853.965,853.965,1 +1767039225000,853.965,853.965,853.965,853.965,1 +1767039226000,853.965,853.965,853.965,853.965,1 +1767039227000,853.965,853.965,853.965,853.965,1 +1767039229000,853.965,853.965,853.965,853.965,1 +1767039230000,853.965,853.965,853.965,853.965,1 +1767039231000,853.965,853.965,853.965,853.965,1 +1767039232000,853.965,853.965,853.965,853.965,1 +1767039233000,854.095,854.095,854.095,854.095,1 +1767039234000,854.065,854.065,854.065,854.065,1 +1767039235000,854.07,854.07,854.07,854.07,1 +1767039236000,854.065,854.065,854.065,854.065,1 +1767039237000,854.06,854.06,854.06,854.06,1 +1767039238000,854.06,854.06,854.06,854.06,1 +1767039239000,854.06,854.06,854.06,854.06,1 +1767039240000,854.06,854.06,854.06,854.06,1 +1767039241000,854.06,854.06,854.06,854.06,1 +1767039242000,854.05,854.05,854.05,854.05,1 +1767039243000,854.095,854.095,854.095,854.095,1 +1767039244000,854.1,854.1,854.1,854.1,1 +1767039245000,854.095,854.095,854.095,854.095,1 +1767039246000,854.115,854.115,854.115,854.115,1 +1767039248000,854.085,854.09,854.085,854.09,2 +1767039249000,854.09,854.09,854.09,854.09,1 +1767039250000,854.085,854.085,854.085,854.085,1 +1767039251000,854.085,854.085,854.085,854.085,1 +1767039252000,854.09,854.09,854.09,854.09,1 +1767039253000,854.115,854.115,854.115,854.115,1 +1767039254000,854.185,854.185,854.185,854.185,1 +1767039255000,854.21,854.21,854.21,854.21,1 +1767039256000,854.215,854.215,854.215,854.215,1 +1767039257000,854.215,854.215,854.215,854.215,1 +1767039258000,854.215,854.215,854.215,854.215,1 +1767039259000,854.32,854.32,854.32,854.32,1 +1767039260000,854.325,854.325,854.325,854.325,1 +1767039261000,854.325,854.325,854.325,854.325,1 +1767039263000,854.325,854.325,854.32,854.32,2 +1767039265000,854.325,854.325,854.325,854.325,2 +1767039267000,854.325,854.325,854.325,854.325,1 +1767039268000,854.355,854.355,854.355,854.355,1 +1767039269000,854.37,854.37,854.37,854.37,1 +1767039270000,854.37,854.37,854.37,854.37,1 +1767039271000,854.37,854.37,854.37,854.37,1 +1767039272000,854.365,854.365,854.365,854.365,1 +1767039273000,854.36,854.36,854.36,854.36,1 +1767039274000,854.365,854.365,854.365,854.365,1 +1767039275000,854.365,854.365,854.365,854.365,1 +1767039276000,854.365,854.365,854.365,854.365,1 +1767039277000,854.365,854.365,854.365,854.365,1 +1767039278000,854.365,854.365,854.365,854.365,1 +1767039279000,854.365,854.365,854.365,854.365,1 +1767039280000,854.395,854.395,854.395,854.395,1 +1767039281000,854.42,854.42,854.42,854.42,1 +1767039282000,854.515,854.515,854.515,854.515,1 +1767039283000,854.615,854.615,854.615,854.615,1 +1767039284000,854.635,854.635,854.635,854.635,1 +1767039285000,854.68,854.68,854.68,854.68,1 +1767039286000,854.725,854.725,854.725,854.725,1 +1767039287000,854.815,854.815,854.815,854.815,1 +1767039288000,854.815,854.815,854.815,854.815,1 +1767039289000,854.76,854.76,854.76,854.76,1 +1767039290000,854.575,854.575,854.575,854.575,1 +1767039291000,854.535,854.535,854.535,854.535,1 +1767039292000,854.535,854.535,854.535,854.535,1 +1767039293000,854.485,854.485,854.485,854.485,1 +1767039294000,854.485,854.485,854.485,854.485,1 +1767039295000,854.485,854.485,854.485,854.485,1 +1767039296000,854.485,854.485,854.485,854.485,1 +1767039298000,854.485,854.485,854.485,854.485,2 +1767039299000,854.485,854.485,854.485,854.485,1 +1767039300000,854.485,854.485,854.485,854.485,1 +1767039301000,854.445,854.445,854.445,854.445,1 +1767039303000,854.375,854.375,854.375,854.375,2 +1767039304000,854.375,854.375,854.375,854.375,1 +1767039305000,854.375,854.375,854.375,854.375,1 +1767039306000,854.245,854.245,854.245,854.245,1 +1767039308000,854.205,854.205,854.205,854.205,1 +1767039309000,854.195,854.195,854.195,854.195,1 +1767039310000,854.195,854.195,854.195,854.195,1 +1767039311000,854.195,854.195,854.195,854.195,1 +1767039312000,854.19,854.19,854.19,854.19,1 +1767039313000,854.245,854.245,854.245,854.245,1 +1767039314000,854.175,854.175,854.175,854.175,1 +1767039315000,854.175,854.175,854.175,854.175,1 +1767039316000,854.175,854.175,854.175,854.175,1 +1767039317000,854.175,854.175,854.175,854.175,1 +1767039318000,854.17,854.17,854.17,854.17,1 +1767039319000,854.17,854.17,854.17,854.17,1 +1767039320000,854.17,854.17,854.17,854.17,1 +1767039321000,854.165,854.165,854.165,854.165,1 +1767039322000,854.165,854.165,854.165,854.165,1 +1767039323000,854.165,854.165,854.165,854.165,1 +1767039324000,854.165,854.165,854.165,854.165,1 +1767039325000,854.165,854.165,854.165,854.165,1 +1767039326000,854.165,854.165,854.165,854.165,1 +1767039327000,854.17,854.17,854.17,854.17,1 +1767039328000,854.17,854.17,854.17,854.17,1 +1767039329000,854.165,854.165,854.165,854.165,1 +1767039330000,854.165,854.165,854.165,854.165,1 +1767039331000,854.165,854.165,854.165,854.165,1 +1767039332000,854.17,854.17,854.17,854.17,1 +1767039333000,854.165,854.165,854.165,854.165,1 +1767039334000,854.165,854.165,854.165,854.165,1 +1767039335000,854.165,854.165,854.165,854.165,1 +1767039336000,854.165,854.165,854.165,854.165,1 +1767039337000,854.165,854.165,854.165,854.165,1 +1767039339000,854.165,854.165,854.165,854.165,1 +1767039340000,854.105,854.105,854.105,854.105,1 +1767039341000,854.02,854.02,854.02,854.02,1 +1767039342000,853.995,853.995,853.995,853.995,1 +1767039343000,853.995,853.995,853.995,853.995,1 +1767039344000,854.01,854.01,854.01,854.01,1 +1767039345000,853.995,853.995,853.995,853.995,1 +1767039346000,853.995,853.995,853.995,853.995,1 +1767039347000,853.99,853.99,853.99,853.99,1 +1767039348000,853.985,853.985,853.985,853.985,1 +1767039349000,853.985,853.985,853.985,853.985,1 +1767039350000,854.045,854.045,854.045,854.045,1 +1767039351000,854.005,854.005,854.005,854.005,1 +1767039352000,854.0,854.0,854.0,854.0,1 +1767039353000,853.995,853.995,853.995,853.995,1 +1767039354000,853.995,853.995,853.995,853.995,1 +1767039355000,853.985,853.985,853.985,853.985,1 +1767039356000,853.985,853.985,853.985,853.985,1 +1767039357000,853.945,853.945,853.945,853.945,1 +1767039358000,853.905,853.905,853.905,853.905,1 +1767039359000,853.905,853.905,853.905,853.905,1 +1767039360000,853.905,853.905,853.905,853.905,1 +1767039361000,853.905,853.905,853.905,853.905,1 +1767039362000,853.84,853.84,853.84,853.84,1 +1767039363000,853.815,853.815,853.815,853.815,1 +1767039364000,853.815,853.815,853.815,853.815,1 +1767039365000,853.815,853.815,853.815,853.815,1 +1767039367000,853.96,854.025,853.96,854.025,2 +1767039369000,854.115,854.13,854.115,854.13,2 +1767039371000,854.165,854.165,854.165,854.165,1 +1767039372000,854.265,854.265,854.265,854.265,1 +1767039373000,854.265,854.265,854.265,854.265,1 +1767039374000,854.24,854.24,854.24,854.24,1 +1767039375000,854.275,854.275,854.275,854.275,1 +1767039376000,854.255,854.255,854.255,854.255,1 +1767039377000,854.255,854.255,854.255,854.255,1 +1767039378000,854.28,854.28,854.28,854.28,1 +1767039379000,854.265,854.265,854.265,854.265,1 +1767039380000,854.265,854.265,854.265,854.265,1 +1767039381000,854.355,854.355,854.355,854.355,1 +1767039382000,854.365,854.365,854.365,854.365,1 +1767039383000,854.355,854.355,854.355,854.355,1 +1767039384000,854.35,854.35,854.35,854.35,1 +1767039385000,854.345,854.345,854.345,854.345,1 +1767039386000,854.345,854.345,854.345,854.345,1 +1767039387000,854.345,854.345,854.345,854.345,1 +1767039389000,854.345,854.345,854.26,854.26,2 +1767039390000,854.26,854.26,854.26,854.26,1 +1767039391000,854.26,854.26,854.26,854.26,1 +1767039392000,854.26,854.26,854.26,854.26,1 +1767039394000,854.34,854.39,854.34,854.39,2 +1767039395000,854.485,854.485,854.485,854.485,1 +1767039396000,854.485,854.485,854.485,854.485,1 +1767039397000,854.485,854.485,854.485,854.485,1 +1767039399000,854.485,854.485,854.485,854.485,2 +1767039400000,854.485,854.485,854.485,854.485,1 +1767039401000,854.485,854.485,854.485,854.485,1 +1767039402000,854.485,854.485,854.485,854.485,1 +1767039404000,854.485,854.485,854.485,854.485,2 +1767039405000,854.37,854.37,854.37,854.37,1 +1767039406000,854.365,854.365,854.365,854.365,1 +1767039408000,854.28,854.28,854.28,854.28,1 +1767039409000,854.275,854.275,854.275,854.275,1 +1767039410000,854.26,854.26,854.26,854.26,1 +1767039411000,854.26,854.26,854.26,854.26,1 +1767039412000,854.26,854.26,854.26,854.26,1 +1767039413000,854.255,854.255,854.255,854.255,1 +1767039414000,854.26,854.26,854.26,854.26,1 +1767039415000,854.26,854.26,854.26,854.26,1 +1767039416000,854.26,854.26,854.26,854.26,1 +1767039417000,854.26,854.26,854.26,854.26,1 +1767039418000,854.26,854.26,854.26,854.26,1 +1767039419000,854.44,854.44,854.44,854.44,1 +1767039420000,854.38,854.38,854.38,854.38,1 +1767039421000,854.385,854.385,854.385,854.385,1 +1767039422000,854.38,854.38,854.38,854.38,1 +1767039423000,854.38,854.38,854.38,854.38,1 +1767039424000,854.365,854.365,854.365,854.365,1 +1767039425000,854.37,854.37,854.37,854.37,1 +1767039426000,854.375,854.375,854.375,854.375,1 +1767039427000,854.425,854.425,854.425,854.425,1 +1767039428000,854.365,854.365,854.365,854.365,1 +1767039429000,854.365,854.365,854.365,854.365,1 +1767039430000,854.365,854.365,854.365,854.365,1 +1767039431000,854.365,854.365,854.365,854.365,1 +1767039432000,854.365,854.365,854.365,854.365,1 +1767039433000,854.365,854.365,854.365,854.365,1 +1767039434000,854.365,854.365,854.365,854.365,1 +1767039435000,854.365,854.365,854.365,854.365,1 +1767039436000,854.365,854.365,854.365,854.365,1 +1767039437000,854.365,854.365,854.365,854.365,1 +1767039438000,854.365,854.365,854.365,854.365,1 +1767039439000,854.365,854.365,854.365,854.365,1 +1767039441000,854.365,854.365,854.365,854.365,1 +1767039442000,854.385,854.385,854.385,854.385,1 +1767039443000,854.365,854.365,854.365,854.365,1 +1767039444000,854.375,854.375,854.375,854.375,1 +1767039445000,854.365,854.365,854.365,854.365,1 +1767039446000,854.365,854.365,854.365,854.365,1 +1767039447000,854.365,854.365,854.365,854.365,1 +1767039448000,854.35,854.35,854.35,854.35,1 +1767039449000,854.355,854.355,854.355,854.355,1 +1767039450000,854.36,854.36,854.36,854.36,1 +1767039451000,854.36,854.36,854.36,854.36,1 +1767039452000,854.36,854.36,854.36,854.36,1 +1767039453000,854.36,854.36,854.36,854.36,1 +1767039454000,854.36,854.36,854.36,854.36,1 +1767039455000,854.345,854.345,854.345,854.345,1 +1767039456000,854.335,854.335,854.335,854.335,1 +1767039457000,854.335,854.335,854.335,854.335,1 +1767039458000,854.335,854.335,854.335,854.335,1 +1767039459000,854.335,854.335,854.335,854.335,1 +1767039460000,854.335,854.335,854.335,854.335,1 +1767039461000,854.335,854.335,854.335,854.335,1 +1767039462000,854.365,854.365,854.365,854.365,1 +1767039463000,854.45,854.45,854.45,854.45,1 +1767039464000,854.435,854.435,854.435,854.435,1 +1767039465000,854.43,854.43,854.43,854.43,1 +1767039466000,854.415,854.415,854.415,854.415,1 +1767039467000,854.365,854.365,854.365,854.365,1 +1767039468000,854.365,854.365,854.365,854.365,1 +1767039469000,854.315,854.315,854.315,854.315,1 +1767039470000,854.315,854.315,854.315,854.315,1 +1767039471000,854.315,854.315,854.315,854.315,1 +1767039472000,854.315,854.315,854.315,854.315,1 +1767039473000,854.265,854.265,854.265,854.265,1 +1767039475000,854.265,854.265,854.265,854.265,1 +1767039476000,854.17,854.17,854.17,854.17,1 +1767039477000,854.035,854.035,854.025,854.025,2 +1767039478000,854.025,854.025,854.025,854.025,1 +1767039480000,854.025,854.025,854.025,854.025,1 +1767039481000,854.025,854.025,854.025,854.025,1 +1767039482000,854.025,854.025,854.025,854.025,1 +1767039483000,854.025,854.025,854.025,854.025,1 +1767039484000,854.025,854.025,854.025,854.025,1 +1767039485000,854.03,854.03,854.03,854.03,1 +1767039486000,854.025,854.025,854.025,854.025,1 +1767039487000,853.895,853.895,853.895,853.895,1 +1767039488000,853.895,853.895,853.895,853.895,1 +1767039489000,853.865,853.865,853.865,853.865,1 +1767039490000,853.875,853.875,853.875,853.875,1 +1767039491000,853.875,853.875,853.875,853.875,1 +1767039492000,853.91,853.91,853.91,853.91,1 +1767039493000,853.895,853.895,853.895,853.895,1 +1767039495000,853.985,853.99,853.985,853.99,2 +1767039496000,853.96,853.96,853.96,853.96,1 +1767039497000,853.96,853.96,853.96,853.96,1 +1767039498000,853.96,853.96,853.96,853.96,1 +1767039500000,853.885,853.885,853.865,853.865,2 +1767039501000,853.755,853.755,853.755,853.755,1 +1767039502000,853.755,853.755,853.755,853.755,1 +1767039503000,853.755,853.755,853.755,853.755,1 +1767039505000,853.755,853.755,853.755,853.755,2 +1767039506000,853.755,853.755,853.755,853.755,1 +1767039507000,853.775,853.775,853.775,853.775,1 +1767039508000,853.8,853.8,853.8,853.8,1 +1767039510000,853.79,853.865,853.79,853.865,2 +1767039512000,853.855,853.855,853.855,853.855,2 +1767039514000,854.035,854.035,854.035,854.035,1 +1767039515000,854.04,854.04,854.04,854.04,1 +1767039516000,854.03,854.03,854.03,854.03,1 +1767039517000,854.03,854.03,854.03,854.03,1 +1767039518000,854.03,854.03,854.03,854.03,1 +1767039519000,854.03,854.03,854.03,854.03,1 +1767039520000,854.03,854.03,854.03,854.03,1 +1767039521000,854.03,854.03,854.03,854.03,1 +1767039522000,854.03,854.03,854.03,854.03,1 +1767039523000,854.0,854.0,854.0,854.0,1 +1767039524000,853.985,853.985,853.985,853.985,1 +1767039525000,853.935,853.935,853.935,853.935,1 +1767039526000,853.935,853.935,853.935,853.935,1 +1767039527000,853.935,853.935,853.935,853.935,1 +1767039528000,853.935,853.935,853.935,853.935,1 +1767039529000,853.935,853.935,853.935,853.935,1 +1767039530000,853.935,853.935,853.935,853.935,1 +1767039531000,853.935,853.935,853.935,853.935,1 +1767039532000,853.935,853.935,853.935,853.935,1 +1767039533000,853.945,853.945,853.945,853.945,1 +1767039534000,853.935,853.935,853.935,853.935,1 +1767039535000,853.935,853.935,853.935,853.935,1 +1767039536000,853.935,853.935,853.935,853.935,1 +1767039537000,853.845,853.845,853.845,853.845,1 +1767039538000,853.845,853.845,853.845,853.845,1 +1767039539000,853.845,853.845,853.845,853.845,1 +1767039540000,853.845,853.845,853.845,853.845,1 +1767039541000,853.885,853.885,853.885,853.885,1 +1767039542000,854.0,854.0,854.0,854.0,1 +1767039543000,853.93,853.93,853.93,853.93,1 +1767039544000,853.845,853.845,853.845,853.845,1 +1767039545000,853.845,853.845,853.845,853.845,1 +1767039546000,853.845,853.845,853.845,853.845,1 +1767039547000,853.845,853.845,853.845,853.845,1 +1767039548000,853.845,853.845,853.845,853.845,1 +1767039550000,853.845,853.845,853.845,853.845,2 +1767039551000,853.845,853.845,853.845,853.845,1 +1767039553000,853.845,853.845,853.845,853.845,2 +1767039555000,853.845,853.845,853.845,853.845,1 +1767039556000,853.805,853.805,853.805,853.805,1 +1767039557000,853.755,853.755,853.755,853.755,1 +1767039558000,853.755,853.755,853.755,853.755,1 +1767039559000,853.755,853.755,853.755,853.755,1 +1767039560000,853.755,853.755,853.755,853.755,1 +1767039561000,853.775,853.775,853.775,853.775,1 +1767039562000,853.77,853.77,853.77,853.77,1 +1767039563000,853.755,853.755,853.755,853.755,1 +1767039564000,853.755,853.755,853.755,853.755,1 +1767039565000,853.755,853.755,853.755,853.755,1 +1767039566000,853.755,853.755,853.755,853.755,1 +1767039567000,853.755,853.755,853.755,853.755,1 +1767039568000,853.77,853.77,853.77,853.77,1 +1767039569000,853.83,853.83,853.83,853.83,1 +1767039570000,853.82,853.82,853.82,853.82,1 +1767039571000,853.865,853.865,853.865,853.865,1 +1767039572000,853.86,853.86,853.86,853.86,1 +1767039573000,853.885,853.885,853.885,853.885,1 +1767039574000,853.94,853.94,853.94,853.94,1 +1767039575000,853.935,853.935,853.935,853.935,1 +1767039576000,853.93,853.93,853.93,853.93,1 +1767039577000,853.92,853.92,853.92,853.92,1 +1767039578000,853.92,853.92,853.92,853.92,1 +1767039579000,853.92,853.92,853.92,853.92,1 +1767039580000,853.94,853.94,853.94,853.94,1 +1767039581000,853.935,853.935,853.935,853.935,1 +1767039583000,854.045,854.05,854.045,854.05,2 +1767039585000,854.05,854.05,854.05,854.05,2 +1767039586000,854.05,854.05,854.05,854.05,1 +1767039587000,854.03,854.03,854.03,854.03,1 +1767039588000,854.025,854.025,854.025,854.025,1 +1767039590000,854.025,854.025,854.025,854.025,1 +1767039591000,854.025,854.025,854.025,854.025,1 +1767039592000,854.025,854.025,854.025,854.025,1 +1767039593000,854.025,854.025,854.025,854.025,1 +1767039594000,854.025,854.025,854.025,854.025,1 +1767039596000,854.025,854.025,854.01,854.01,2 +1767039597000,853.985,853.985,853.985,853.985,1 +1767039598000,853.97,853.97,853.97,853.97,1 +1767039599000,853.96,853.96,853.96,853.96,1 +1767039600000,853.97,853.97,853.97,853.97,1 +1767039601000,853.97,853.97,853.97,853.97,1 +1767039602000,853.955,853.955,853.955,853.955,1 +1767039603000,853.955,853.955,853.955,853.955,1 +1767039604000,853.945,853.945,853.945,853.945,1 +1767039605000,853.94,853.94,853.94,853.94,1 +1767039606000,853.935,853.935,853.935,853.935,1 +1767039607000,853.885,853.885,853.885,853.885,1 +1767039608000,853.885,853.885,853.885,853.885,1 +1767039609000,853.885,853.885,853.885,853.885,1 +1767039610000,853.885,853.885,853.885,853.885,1 +1767039611000,853.88,853.88,853.88,853.88,1 +1767039612000,853.905,853.905,853.905,853.905,1 +1767039613000,853.89,853.89,853.89,853.89,1 +1767039614000,853.885,853.885,853.885,853.885,1 +1767039616000,853.91,853.91,853.905,853.905,2 +1767039618000,853.89,853.89,853.885,853.885,2 +1767039619000,853.885,853.885,853.885,853.885,1 +1767039621000,853.885,853.885,853.885,853.885,2 +1767039622000,853.87,853.87,853.87,853.87,1 +1767039624000,853.89,853.89,853.89,853.89,1 +1767039625000,853.89,853.89,853.89,853.89,1 +1767039626000,853.925,853.925,853.925,853.925,1 +1767039627000,853.9,853.9,853.9,853.9,1 +1767039628000,853.89,853.89,853.89,853.89,1 +1767039629000,853.855,853.855,853.855,853.855,1 +1767039630000,853.845,853.845,853.845,853.845,1 +1767039631000,853.845,853.845,853.845,853.845,1 +1767039632000,853.845,853.845,853.845,853.845,1 +1767039633000,853.845,853.845,853.845,853.845,1 +1767039634000,853.845,853.845,853.845,853.845,1 +1767039635000,853.845,853.845,853.845,853.845,1 +1767039636000,853.845,853.845,853.845,853.845,1 +1767039637000,853.845,853.845,853.845,853.845,1 +1767039638000,853.845,853.845,853.845,853.845,1 +1767039639000,853.845,853.845,853.845,853.845,1 +1767039640000,853.845,853.845,853.845,853.845,1 +1767039641000,853.845,853.845,853.845,853.845,1 +1767039642000,853.845,853.845,853.845,853.845,1 +1767039643000,853.775,853.775,853.775,853.775,1 +1767039644000,853.755,853.755,853.755,853.755,1 +1767039645000,853.755,853.755,853.755,853.755,1 +1767039646000,853.755,853.755,853.755,853.755,1 +1767039647000,853.755,853.755,853.755,853.755,1 +1767039648000,853.755,853.755,853.755,853.755,1 +1767039649000,853.755,853.755,853.755,853.755,1 +1767039650000,853.755,853.755,853.755,853.755,1 +1767039651000,853.755,853.755,853.755,853.755,1 +1767039652000,853.755,853.755,853.755,853.755,1 +1767039653000,853.675,853.675,853.675,853.675,1 +1767039654000,853.675,853.675,853.675,853.675,1 +1767039656000,853.675,853.675,853.665,853.665,2 +1767039657000,853.655,853.655,853.655,853.655,1 +1767039658000,853.67,853.67,853.67,853.67,1 +1767039659000,853.665,853.665,853.665,853.665,1 +1767039661000,853.665,853.665,853.66,853.66,2 +1767039662000,853.65,853.65,853.65,853.65,1 +1767039664000,853.69,853.69,853.69,853.69,1 +1767039665000,853.645,853.645,853.645,853.645,1 +1767039666000,853.645,853.645,853.645,853.645,2 +1767039667000,853.645,853.645,853.645,853.645,1 +1767039669000,853.645,853.645,853.645,853.645,1 +1767039670000,853.645,853.645,853.645,853.645,1 +1767039671000,853.645,853.645,853.645,853.645,1 +1767039672000,853.645,853.645,853.645,853.645,1 +1767039673000,853.645,853.645,853.645,853.645,1 +1767039674000,853.645,853.645,853.645,853.645,1 +1767039675000,853.645,853.645,853.645,853.645,1 +1767039676000,853.645,853.645,853.645,853.645,1 +1767039677000,853.645,853.645,853.645,853.645,1 +1767039678000,853.71,853.71,853.71,853.71,1 +1767039679000,853.85,853.85,853.85,853.85,1 +1767039680000,853.84,853.84,853.84,853.84,1 +1767039681000,853.785,853.785,853.785,853.785,1 +1767039682000,853.77,853.77,853.77,853.77,1 +1767039683000,853.775,853.775,853.775,853.775,1 +1767039684000,853.775,853.775,853.775,853.775,1 +1767039685000,853.765,853.765,853.765,853.765,1 +1767039686000,853.755,853.755,853.755,853.755,1 +1767039687000,853.765,853.765,853.765,853.765,1 +1767039688000,853.765,853.765,853.765,853.765,1 +1767039689000,853.765,853.765,853.765,853.765,1 +1767039690000,853.765,853.765,853.765,853.765,1 +1767039691000,853.765,853.765,853.765,853.765,1 +1767039692000,853.765,853.765,853.765,853.765,1 +1767039693000,853.76,853.76,853.76,853.76,1 +1767039694000,853.755,853.755,853.755,853.755,1 +1767039695000,853.755,853.755,853.755,853.755,1 +1767039696000,853.755,853.755,853.755,853.755,1 +1767039697000,853.755,853.755,853.755,853.755,1 +1767039698000,853.78,853.78,853.78,853.78,1 +1767039699000,853.775,853.775,853.775,853.775,1 +1767039700000,853.77,853.77,853.77,853.77,1 +1767039701000,853.655,853.655,853.655,853.655,1 +1767039702000,853.65,853.65,853.65,853.65,1 +1767039703000,853.68,853.68,853.68,853.68,1 +1767039704000,853.645,853.645,853.645,853.645,1 +1767039706000,853.645,853.645,853.56,853.56,2 +1767039708000,853.465,853.465,853.465,853.465,1 +1767039709000,853.465,853.465,853.465,853.465,1 +1767039710000,853.465,853.465,853.465,853.465,2 +1767039711000,853.465,853.465,853.465,853.465,1 +1767039712000,853.465,853.465,853.465,853.465,1 +1767039714000,853.465,853.465,853.465,853.465,1 +1767039715000,853.395,853.395,853.395,853.395,1 +1767039716000,853.345,853.345,853.345,853.345,1 +1767039717000,853.325,853.325,853.325,853.325,1 +1767039718000,853.325,853.325,853.325,853.325,1 +1767039719000,853.325,853.325,853.325,853.325,1 +1767039720000,853.325,853.325,853.325,853.325,1 +1767039721000,853.325,853.325,853.325,853.325,1 +1767039722000,853.325,853.325,853.325,853.325,1 +1767039723000,853.325,853.325,853.325,853.325,1 +1767039724000,853.3,853.3,853.3,853.3,1 +1767039725000,853.285,853.285,853.285,853.285,1 +1767039727000,853.255,853.255,853.235,853.235,2 +1767039728000,853.235,853.235,853.235,853.235,1 +1767039729000,853.235,853.235,853.235,853.235,1 +1767039730000,853.235,853.235,853.235,853.235,1 +1767039731000,853.235,853.235,853.235,853.235,1 +1767039732000,853.245,853.245,853.245,853.245,1 +1767039733000,853.235,853.235,853.235,853.235,1 +1767039734000,853.24,853.24,853.24,853.24,1 +1767039735000,853.24,853.24,853.24,853.24,1 +1767039736000,853.24,853.24,853.24,853.24,1 +1767039737000,853.31,853.31,853.31,853.31,1 +1767039739000,853.31,853.31,853.31,853.31,1 +1767039740000,853.305,853.305,853.305,853.305,1 +1767039741000,853.31,853.31,853.31,853.31,1 +1767039742000,853.3,853.3,853.3,853.3,1 +1767039743000,853.275,853.275,853.275,853.275,1 +1767039744000,853.3,853.3,853.3,853.3,1 +1767039745000,853.3,853.3,853.3,853.3,1 +1767039746000,853.305,853.305,853.305,853.305,1 +1767039747000,853.345,853.345,853.345,853.345,1 +1767039748000,853.33,853.33,853.33,853.33,1 +1767039749000,853.325,853.325,853.325,853.325,1 +1767039750000,853.325,853.325,853.325,853.325,1 +1767039752000,853.325,853.325,853.325,853.325,2 +1767039753000,853.325,853.325,853.325,853.325,1 +1767039754000,853.325,853.325,853.325,853.325,1 +1767039755000,853.325,853.325,853.325,853.325,1 +1767039757000,853.3,853.3,853.3,853.3,2 +1767039758000,853.32,853.32,853.32,853.32,1 +1767039759000,853.32,853.32,853.32,853.32,1 +1767039760000,853.315,853.315,853.315,853.315,1 +1767039761000,853.31,853.31,853.31,853.31,1 +1767039762000,853.31,853.31,853.31,853.31,1 +1767039763000,853.295,853.295,853.295,853.295,1 +1767039764000,853.295,853.295,853.295,853.295,1 +1767039765000,853.295,853.295,853.295,853.295,1 +1767039767000,853.495,853.585,853.495,853.585,2 +1767039768000,853.585,853.585,853.585,853.585,1 +1767039769000,853.585,853.585,853.585,853.585,1 +1767039771000,853.585,853.585,853.585,853.585,1 +1767039772000,853.585,853.585,853.585,853.585,1 +1767039773000,853.5,853.5,853.5,853.5,1 +1767039774000,853.535,853.535,853.535,853.535,1 +1767039775000,853.525,853.525,853.525,853.525,1 +1767039776000,853.52,853.52,853.52,853.52,1 +1767039777000,853.5,853.5,853.5,853.5,1 +1767039778000,853.5,853.5,853.5,853.5,1 +1767039779000,853.5,853.5,853.5,853.5,1 +1767039780000,853.5,853.5,853.5,853.5,1 +1767039781000,853.645,853.645,853.645,853.645,1 +1767039782000,853.565,853.565,853.565,853.565,1 +1767039783000,853.565,853.565,853.565,853.565,1 +1767039784000,853.565,853.565,853.565,853.565,1 +1767039785000,853.565,853.565,853.565,853.565,1 +1767039786000,853.565,853.565,853.565,853.565,1 +1767039787000,853.565,853.565,853.565,853.565,1 +1767039788000,853.565,853.565,853.565,853.565,1 +1767039789000,853.565,853.565,853.565,853.565,1 +1767039790000,853.565,853.565,853.565,853.565,1 +1767039791000,853.565,853.565,853.565,853.565,1 +1767039792000,853.535,853.535,853.535,853.535,1 +1767039793000,853.535,853.535,853.535,853.535,1 +1767039794000,853.63,853.63,853.63,853.63,1 +1767039795000,853.585,853.585,853.585,853.585,1 +1767039796000,853.585,853.585,853.585,853.585,1 +1767039797000,853.585,853.585,853.585,853.585,1 +1767039798000,853.585,853.585,853.585,853.585,1 +1767039799000,853.57,853.57,853.57,853.57,1 +1767039800000,853.565,853.565,853.565,853.565,1 +1767039802000,853.565,853.565,853.565,853.565,2 +1767039803000,853.56,853.56,853.56,853.56,1 +1767039804000,853.56,853.56,853.56,853.56,1 +1767039805000,853.56,853.56,853.56,853.56,1 +1767039807000,853.56,853.56,853.56,853.56,1 +1767039808000,853.56,853.56,853.56,853.56,1 +1767039809000,853.55,853.55,853.55,853.55,1 +1767039810000,853.54,853.54,853.54,853.54,1 +1767039811000,853.51,853.51,853.51,853.51,1 +1767039812000,853.445,853.445,853.445,853.445,1 +1767039813000,853.425,853.425,853.425,853.425,1 +1767039814000,853.425,853.425,853.425,853.425,1 +1767039815000,853.425,853.425,853.425,853.425,1 +1767039816000,853.275,853.275,853.275,853.275,1 +1767039817000,853.255,853.255,853.255,853.255,1 +1767039818000,853.255,853.255,853.255,853.255,1 +1767039819000,853.205,853.205,853.205,853.205,1 +1767039820000,853.205,853.205,853.205,853.205,1 +1767039821000,853.205,853.205,853.205,853.205,1 +1767039822000,853.205,853.205,853.205,853.205,1 +1767039823000,853.205,853.205,853.205,853.205,1 +1767039824000,853.205,853.205,853.205,853.205,1 +1767039825000,853.205,853.205,853.205,853.205,1 +1767039826000,853.205,853.205,853.205,853.205,1 +1767039827000,853.205,853.205,853.205,853.205,1 +1767039828000,853.205,853.205,853.205,853.205,1 +1767039829000,853.205,853.205,853.205,853.205,1 +1767039830000,853.205,853.205,853.205,853.205,1 +1767039831000,853.205,853.205,853.205,853.205,1 +1767039832000,853.205,853.205,853.205,853.205,1 +1767039833000,853.12,853.12,853.12,853.12,1 +1767039834000,853.115,853.115,853.115,853.115,1 +1767039835000,853.1,853.1,853.1,853.1,1 +1767039837000,853.105,853.105,853.105,853.105,2 +1767039838000,853.105,853.105,853.105,853.105,1 +1767039839000,853.15,853.15,853.15,853.15,1 +1767039840000,853.105,853.105,853.105,853.105,1 +1767039842000,853.115,853.115,853.115,853.115,1 +1767039843000,853.085,853.085,853.085,853.085,1 +1767039844000,853.075,853.075,853.045,853.045,2 +1767039845000,853.045,853.045,853.045,853.045,1 +1767039847000,852.985,852.985,852.985,852.985,1 +1767039848000,852.99,852.99,852.99,852.99,1 +1767039849000,853.005,853.005,853.005,853.005,1 +1767039850000,852.99,852.99,852.99,852.99,1 +1767039851000,852.99,852.99,852.99,852.99,1 +1767039852000,852.99,852.99,852.99,852.99,1 +1767039853000,852.99,852.99,852.99,852.99,1 +1767039854000,852.995,852.995,852.995,852.995,1 +1767039855000,852.995,852.995,852.995,852.995,1 +1767039856000,852.995,852.995,852.995,852.995,1 +1767039857000,852.985,852.985,852.985,852.985,1 +1767039858000,852.995,852.995,852.995,852.995,1 +1767039859000,852.99,852.99,852.99,852.99,1 +1767039860000,852.985,852.985,852.985,852.985,1 +1767039861000,852.985,852.985,852.985,852.985,1 +1767039862000,852.985,852.985,852.985,852.985,1 +1767039863000,852.985,852.985,852.985,852.985,1 +1767039864000,852.985,852.985,852.985,852.985,1 +1767039865000,852.985,852.985,852.985,852.985,1 +1767039866000,852.985,852.985,852.985,852.985,1 +1767039867000,852.985,852.985,852.985,852.985,1 +1767039868000,852.985,852.985,852.985,852.985,1 +1767039870000,852.985,852.985,852.985,852.985,2 +1767039871000,852.985,852.985,852.985,852.985,1 +1767039872000,852.985,852.985,852.985,852.985,1 +1767039874000,852.985,852.985,852.985,852.985,2 +1767039875000,852.985,852.985,852.985,852.985,1 +1767039876000,852.985,852.985,852.985,852.985,1 +1767039877000,852.985,852.985,852.985,852.985,1 +1767039879000,852.985,852.985,852.985,852.985,1 +1767039880000,852.985,852.985,852.985,852.985,1 +1767039881000,852.985,852.985,852.985,852.985,1 +1767039882000,852.985,852.985,852.985,852.985,1 +1767039883000,852.985,852.985,852.985,852.985,1 +1767039884000,852.985,852.985,852.985,852.985,1 +1767039885000,852.985,852.985,852.985,852.985,1 +1767039886000,852.985,852.985,852.985,852.985,1 +1767039887000,852.985,852.985,852.985,852.985,1 +1767039888000,852.985,852.985,852.985,852.985,1 +1767039889000,852.985,852.985,852.985,852.985,1 +1767039890000,852.985,852.985,852.985,852.985,1 +1767039891000,852.985,852.985,852.985,852.985,1 +1767039892000,852.985,852.985,852.985,852.985,1 +1767039893000,852.985,852.985,852.985,852.985,1 +1767039894000,852.985,852.985,852.985,852.985,1 +1767039895000,852.985,852.985,852.985,852.985,1 +1767039896000,852.985,852.985,852.985,852.985,1 +1767039897000,852.985,852.985,852.985,852.985,1 +1767039898000,852.985,852.985,852.985,852.985,1 +1767039899000,852.985,852.985,852.985,852.985,1 +1767039900000,852.88,852.88,852.88,852.88,1 +1767039901000,852.935,852.935,852.935,852.935,1 +1767039902000,852.915,852.915,852.915,852.915,1 +1767039903000,852.975,852.975,852.975,852.975,1 +1767039904000,852.975,852.975,852.975,852.975,1 +1767039905000,852.905,852.905,852.905,852.905,1 +1767039906000,852.905,852.905,852.905,852.905,1 +1767039908000,852.905,852.905,852.815,852.815,2 +1767039909000,852.79,852.79,852.79,852.79,1 +1767039910000,852.8,852.8,852.8,852.8,1 +1767039911000,852.8,852.8,852.8,852.8,1 +1767039913000,852.81,852.81,852.81,852.81,2 +1767039914000,852.8,852.8,852.8,852.8,1 +1767039915000,852.935,852.935,852.935,852.935,1 +1767039917000,852.895,852.895,852.895,852.895,1 +1767039918000,852.895,852.895,852.895,852.895,1 +1767039919000,852.895,852.895,852.895,852.895,1 +1767039920000,852.895,852.895,852.895,852.895,1 +1767039921000,852.915,852.915,852.915,852.915,1 +1767039922000,852.91,852.91,852.91,852.91,1 +1767039923000,852.88,852.88,852.88,852.88,1 +1767039924000,852.89,852.89,852.89,852.89,1 +1767039925000,852.88,852.88,852.88,852.88,1 +1767039926000,852.9,852.9,852.9,852.9,1 +1767039927000,852.9,852.9,852.9,852.9,1 +1767039928000,852.88,852.88,852.88,852.88,1 +1767039929000,852.835,852.835,852.835,852.835,1 +1767039930000,852.835,852.835,852.835,852.835,1 +1767039931000,852.835,852.835,852.835,852.835,1 +1767039932000,852.82,852.82,852.82,852.82,1 +1767039933000,852.82,852.82,852.82,852.82,1 +1767039934000,852.82,852.82,852.82,852.82,1 +1767039935000,852.82,852.82,852.82,852.82,1 +1767039936000,852.82,852.82,852.82,852.82,1 +1767039937000,852.82,852.82,852.82,852.82,1 +1767039938000,852.82,852.82,852.82,852.82,1 +1767039939000,852.82,852.82,852.82,852.82,1 +1767039940000,852.82,852.82,852.82,852.82,1 +1767039941000,852.685,852.685,852.685,852.685,1 +1767039942000,852.67,852.67,852.67,852.67,1 +1767039943000,852.665,852.665,852.665,852.665,1 +1767039944000,852.665,852.665,852.665,852.665,1 +1767039945000,852.665,852.665,852.665,852.665,1 +1767039946000,852.665,852.665,852.665,852.665,1 +1767039947000,852.665,852.665,852.665,852.665,1 +1767039948000,852.665,852.665,852.665,852.665,1 +1767039949000,852.745,852.745,852.745,852.745,1 +1767039950000,852.705,852.705,852.705,852.705,1 +1767039951000,852.705,852.705,852.705,852.705,1 +1767039952000,852.705,852.705,852.705,852.705,1 +1767039954000,852.705,852.705,852.705,852.705,2 +1767039955000,852.71,852.71,852.71,852.71,1 +1767039957000,852.705,852.705,852.705,852.705,1 +1767039958000,852.675,852.675,852.675,852.675,1 +1767039959000,852.675,852.675,852.675,852.675,1 +1767039960000,852.675,852.675,852.675,852.675,1 +1767039961000,852.66,852.66,852.66,852.66,1 +1767039962000,852.66,852.66,852.66,852.66,1 +1767039963000,852.66,852.66,852.66,852.66,1 +1767039964000,852.66,852.66,852.66,852.66,1 +1767039965000,852.635,852.66,852.635,852.66,2 +1767039967000,852.66,852.66,852.66,852.66,1 +1767039968000,852.66,852.66,852.66,852.66,1 +1767039969000,852.66,852.66,852.66,852.66,1 +1767039970000,852.685,852.685,852.685,852.685,1 +1767039971000,852.75,852.75,852.75,852.75,1 +1767039972000,852.745,852.745,852.745,852.745,1 +1767039973000,852.74,852.74,852.74,852.74,1 +1767039974000,852.74,852.74,852.74,852.74,1 +1767039975000,852.74,852.74,852.74,852.74,1 +1767039976000,852.74,852.74,852.74,852.74,1 +1767039977000,852.71,852.71,852.71,852.71,1 +1767039978000,852.71,852.71,852.71,852.71,1 +1767039979000,852.705,852.705,852.705,852.705,1 +1767039980000,852.71,852.71,852.71,852.71,1 +1767039981000,852.71,852.71,852.71,852.71,1 +1767039982000,852.71,852.71,852.71,852.71,1 +1767039983000,852.715,852.715,852.715,852.715,1 +1767039984000,852.715,852.715,852.715,852.715,1 +1767039985000,852.715,852.715,852.715,852.715,1 +1767039986000,852.72,852.72,852.72,852.72,1 +1767039987000,852.72,852.72,852.72,852.72,1 +1767039988000,852.73,852.73,852.73,852.73,1 +1767039989000,852.765,852.765,852.765,852.765,1 +1767039990000,852.72,852.72,852.72,852.72,1 +1767039991000,852.64,852.64,852.64,852.64,1 +1767039992000,852.635,852.635,852.635,852.635,1 +1767039994000,852.635,852.635,852.635,852.635,2 +1767039995000,852.565,852.565,852.565,852.565,1 +1767039996000,852.525,852.525,852.525,852.525,1 +1767039997000,852.455,852.455,852.455,852.455,1 +1767039999000,852.415,852.415,852.415,852.415,1 +1767040000000,852.415,852.415,852.415,852.415,1 +1767040001000,852.415,852.415,852.415,852.415,1 +1767040002000,852.495,852.495,852.495,852.495,1 +1767040003000,852.46,852.46,852.46,852.46,1 +1767040004000,852.45,852.45,852.45,852.45,1 +1767040005000,852.45,852.45,852.45,852.45,1 +1767040006000,852.645,852.645,852.645,852.645,1 +1767040007000,852.665,852.665,852.665,852.665,1 +1767040008000,852.655,852.655,852.655,852.655,1 +1767040009000,852.65,852.65,852.65,852.65,1 +1767040010000,852.645,852.645,852.645,852.645,1 +1767040011000,852.68,852.68,852.68,852.68,1 +1767040012000,852.675,852.675,852.675,852.675,1 +1767040013000,852.67,852.67,852.67,852.67,1 +1767040014000,852.67,852.67,852.67,852.67,1 +1767040015000,852.67,852.67,852.67,852.67,1 +1767040016000,852.67,852.67,852.67,852.67,1 +1767040017000,852.665,852.665,852.665,852.665,1 +1767040018000,852.66,852.66,852.66,852.66,1 +1767040019000,852.655,852.655,852.655,852.655,1 +1767040020000,852.655,852.655,852.655,852.655,1 +1767040021000,852.655,852.655,852.655,852.655,1 +1767040022000,852.665,852.665,852.665,852.665,1 +1767040024000,852.66,852.68,852.66,852.68,2 +1767040026000,852.655,852.655,852.655,852.655,2 +1767040027000,852.665,852.665,852.665,852.665,1 +1767040029000,852.665,852.67,852.665,852.67,2 +1767040030000,852.665,852.665,852.665,852.665,1 +1767040031000,852.67,852.67,852.67,852.67,1 +1767040032000,852.67,852.67,852.67,852.67,1 +1767040034000,852.665,852.665,852.665,852.665,1 +1767040035000,852.665,852.665,852.665,852.665,1 +1767040036000,852.685,852.685,852.685,852.685,1 +1767040037000,852.685,852.685,852.685,852.685,1 +1767040038000,852.755,852.755,852.755,852.755,1 +1767040039000,852.755,852.755,852.755,852.755,1 +1767040040000,852.77,852.77,852.77,852.77,1 +1767040041000,852.755,852.755,852.755,852.755,1 +1767040042000,852.75,852.75,852.75,852.75,1 +1767040043000,852.75,852.75,852.75,852.75,1 +1767040044000,852.765,852.765,852.765,852.765,1 +1767040045000,852.95,852.95,852.95,852.95,1 +1767040046000,852.945,852.945,852.945,852.945,1 +1767040047000,852.93,852.93,852.93,852.93,1 +1767040048000,852.93,852.93,852.93,852.93,1 +1767040049000,852.93,852.93,852.93,852.93,1 +1767040050000,852.915,852.915,852.915,852.915,1 +1767040051000,852.905,852.905,852.905,852.905,1 +1767040052000,852.895,852.895,852.895,852.895,1 +1767040053000,852.89,852.89,852.89,852.89,1 +1767040054000,852.885,852.885,852.885,852.885,1 +1767040055000,852.885,852.885,852.885,852.885,1 +1767040056000,852.885,852.885,852.885,852.885,1 +1767040057000,852.885,852.885,852.885,852.885,1 +1767040058000,852.885,852.885,852.885,852.885,1 +1767040059000,852.885,852.885,852.885,852.885,1 +1767040060000,852.84,852.84,852.84,852.84,1 +1767040062000,852.765,852.765,852.765,852.765,2 +1767040063000,852.765,852.765,852.765,852.765,1 +1767040064000,852.735,852.735,852.735,852.735,1 +1767040065000,852.705,852.705,852.705,852.705,1 +1767040066000,852.705,852.705,852.705,852.705,1 +1767040067000,852.705,852.705,852.705,852.705,1 +1767040068000,852.705,852.705,852.705,852.705,1 +1767040070000,852.84,852.84,852.84,852.84,1 +1767040071000,852.935,852.935,852.935,852.935,1 +1767040072000,852.935,852.935,852.935,852.935,1 +1767040073000,853.025,853.025,853.025,853.025,1 +1767040074000,853.005,853.005,853.005,853.005,1 +1767040075000,853.005,853.005,853.005,853.005,1 +1767040076000,852.985,852.985,852.985,852.985,1 +1767040077000,852.985,852.985,852.985,852.985,1 +1767040078000,852.985,852.985,852.985,852.985,1 +1767040079000,852.985,852.985,852.985,852.985,1 +1767040080000,852.985,852.985,852.985,852.985,1 +1767040081000,852.985,852.985,852.985,852.985,1 +1767040082000,852.985,852.985,852.985,852.985,1 +1767040083000,852.985,852.985,852.985,852.985,1 +1767040084000,852.985,852.985,852.985,852.985,1 +1767040085000,852.985,852.985,852.985,852.985,1 +1767040086000,852.985,852.985,852.985,852.985,1 +1767040087000,852.965,852.965,852.965,852.965,1 +1767040088000,852.965,852.965,852.965,852.965,1 +1767040089000,852.985,852.985,852.985,852.985,1 +1767040090000,852.975,852.975,852.975,852.975,1 +1767040091000,852.97,852.97,852.97,852.97,1 +1767040092000,852.97,852.97,852.97,852.97,1 +1767040093000,852.97,852.97,852.97,852.97,1 +1767040094000,852.955,852.955,852.955,852.955,1 +1767040095000,852.955,852.955,852.955,852.955,1 +1767040096000,852.955,852.955,852.955,852.955,1 +1767040097000,852.955,852.955,852.955,852.955,1 +1767040098000,852.955,852.955,852.955,852.955,1 +1767040099000,852.955,852.955,852.955,852.955,1 +1767040101000,852.955,852.955,852.955,852.955,2 +1767040103000,852.955,852.955,852.91,852.91,2 +1767040105000,852.955,852.955,852.955,852.955,1 +1767040106000,852.93,852.93,852.93,852.93,1 +1767040107000,852.95,852.95,852.95,852.95,2 +1767040109000,852.97,852.97,852.97,852.97,1 +1767040110000,852.955,852.955,852.955,852.955,1 +1767040111000,852.95,852.95,852.95,852.95,1 +1767040112000,852.945,852.945,852.945,852.945,1 diff --git a/florida/market_data/ETH_1s.csv b/florida/market_data/ETH_1s.csv new file mode 100644 index 0000000..e69de29 diff --git a/florida/market_data/ETH_1s_LIVE_WS.csv b/florida/market_data/ETH_1s_LIVE_WS.csv new file mode 100644 index 0000000..0796f1e --- /dev/null +++ b/florida/market_data/ETH_1s_LIVE_WS.csv @@ -0,0 +1,2817 @@ +timestamp,open,high,low,close,count +1767037048000,2930.35,2930.35,2930.35,2930.35,1 +1767037049000,2930.35,2930.35,2930.35,2930.35,1 +1767037050000,2930.35,2930.35,2930.35,2930.35,1 +1767037051000,2930.35,2930.35,2930.35,2930.35,1 +1767037052000,2930.35,2930.35,2930.35,2930.35,1 +1767037053000,2930.45,2930.45,2930.45,2930.45,1 +1767037054000,2930.45,2930.45,2930.45,2930.45,1 +1767037055000,2930.45,2930.45,2930.45,2930.45,1 +1767037056000,2930.95,2930.95,2930.95,2930.95,1 +1767037057000,2930.95,2930.95,2930.95,2930.95,1 +1767037059000,2930.95,2930.95,2930.95,2930.95,2 +1767037060000,2930.95,2930.95,2930.95,2930.95,1 +1767037061000,2930.95,2930.95,2930.95,2930.95,1 +1767037062000,2931.25,2931.25,2931.25,2931.25,1 +1767037064000,2931.25,2931.25,2931.25,2931.25,2 +1767037065000,2931.25,2931.25,2931.25,2931.25,1 +1767037067000,2931.25,2931.25,2931.25,2931.25,1 +1767037068000,2931.35,2931.35,2931.35,2931.35,1 +1767037069000,2931.35,2931.35,2931.35,2931.35,2 +1767037070000,2931.35,2931.35,2931.35,2931.35,1 +1767037072000,2931.35,2931.45,2931.35,2931.45,2 +1767037074000,2931.45,2931.45,2931.45,2931.45,1 +1767037075000,2931.45,2931.45,2931.45,2931.45,1 +1767037076000,2931.45,2931.45,2931.45,2931.45,1 +1767037077000,2931.45,2931.45,2931.45,2931.45,1 +1767037078000,2931.15,2931.15,2931.15,2931.15,1 +1767037079000,2931.15,2931.15,2931.15,2931.15,1 +1767037080000,2931.05,2931.05,2931.05,2931.05,1 +1767037081000,2930.95,2930.95,2930.95,2930.95,1 +1767037082000,2930.95,2930.95,2930.95,2930.95,1 +1767037083000,2930.95,2930.95,2930.95,2930.95,1 +1767037084000,2930.95,2930.95,2930.95,2930.95,1 +1767037085000,2930.95,2930.95,2930.95,2930.95,1 +1767037086000,2930.95,2930.95,2930.95,2930.95,1 +1767037087000,2930.95,2930.95,2930.95,2930.95,1 +1767037088000,2930.95,2930.95,2930.95,2930.95,1 +1767037089000,2930.75,2930.75,2930.75,2930.75,1 +1767037090000,2930.75,2930.75,2930.75,2930.75,1 +1767037091000,2930.75,2930.75,2930.75,2930.75,1 +1767037092000,2930.75,2930.75,2930.75,2930.75,1 +1767037093000,2930.75,2930.75,2930.75,2930.75,1 +1767037094000,2930.75,2930.75,2930.75,2930.75,1 +1767037095000,2930.75,2930.75,2930.75,2930.75,1 +1767037096000,2930.75,2930.75,2930.75,2930.75,1 +1767037097000,2930.75,2930.75,2930.75,2930.75,1 +1767037098000,2930.75,2930.75,2930.75,2930.75,1 +1767037099000,2930.75,2930.75,2930.75,2930.75,1 +1767037100000,2930.75,2930.75,2930.75,2930.75,1 +1767037101000,2930.75,2930.75,2930.75,2930.75,1 +1767037102000,2930.75,2930.75,2930.75,2930.75,1 +1767037103000,2930.75,2930.75,2930.75,2930.75,1 +1767037104000,2930.75,2930.75,2930.75,2930.75,1 +1767037105000,2930.75,2930.75,2930.75,2930.75,1 +1767037107000,2930.75,2930.75,2930.75,2930.75,1 +1767037108000,2930.75,2930.75,2930.75,2930.75,1 +1767037109000,2930.75,2930.75,2930.75,2930.75,1 +1767037110000,2930.75,2930.75,2930.75,2930.75,1 +1767037111000,2930.75,2930.75,2930.75,2930.75,1 +1767037112000,2930.75,2930.75,2930.75,2930.75,1 +1767037113000,2930.45,2930.45,2930.45,2930.45,1 +1767037114000,2929.95,2929.95,2929.95,2929.95,1 +1767037115000,2929.85,2929.85,2929.85,2929.85,1 +1767037116000,2929.75,2929.75,2929.75,2929.75,1 +1767037117000,2928.75,2928.75,2928.75,2928.75,1 +1767037118000,2928.75,2928.75,2928.75,2928.75,1 +1767037119000,2928.65,2928.65,2928.65,2928.65,1 +1767037120000,2928.45,2928.45,2928.45,2928.45,1 +1767037121000,2928.45,2928.45,2928.45,2928.45,1 +1767037122000,2928.7,2928.7,2928.7,2928.7,1 +1767037123000,2928.75,2928.75,2928.75,2928.75,1 +1767037124000,2928.75,2928.75,2928.75,2928.75,1 +1767037125000,2928.75,2928.75,2928.75,2928.75,1 +1767037126000,2928.75,2928.75,2928.75,2928.75,1 +1767037127000,2928.85,2928.85,2928.85,2928.85,1 +1767037128000,2928.85,2928.85,2928.85,2928.85,1 +1767037129000,2928.35,2928.35,2928.35,2928.35,1 +1767037130000,2928.35,2928.35,2928.35,2928.35,1 +1767037132000,2928.25,2928.25,2928.25,2928.25,1 +1767037133000,2928.25,2928.25,2928.25,2928.25,1 +1767037134000,2928.2,2928.2,2928.2,2928.2,1 +1767037135000,2928.15,2928.15,2928.15,2928.15,1 +1767037136000,2928.15,2928.15,2928.15,2928.15,1 +1767037137000,2928.15,2928.15,2928.15,2928.15,1 +1767037138000,2928.55,2928.55,2928.55,2928.55,1 +1767037139000,2927.55,2927.55,2927.55,2927.55,1 +1767037140000,2927.25,2927.25,2927.25,2927.25,1 +1767037141000,2927.15,2927.15,2927.15,2927.15,1 +1767037142000,2927.25,2927.25,2927.25,2927.25,1 +1767037143000,2927.45,2927.45,2927.45,2927.45,1 +1767037144000,2927.65,2927.65,2927.65,2927.65,1 +1767037145000,2927.95,2927.95,2927.95,2927.95,1 +1767037146000,2927.95,2927.95,2927.95,2927.95,1 +1767037147000,2927.95,2927.95,2927.95,2927.95,1 +1767037148000,2927.95,2927.95,2927.95,2927.95,1 +1767037149000,2928.05,2928.05,2928.05,2928.05,1 +1767037150000,2928.65,2928.65,2928.65,2928.65,1 +1767037151000,2928.65,2928.65,2928.65,2928.65,1 +1767037152000,2928.65,2928.65,2928.65,2928.65,1 +1767037153000,2928.65,2928.65,2928.65,2928.65,1 +1767037154000,2928.65,2928.65,2928.65,2928.65,1 +1767037156000,2928.65,2928.65,2928.65,2928.65,2 +1767037157000,2928.65,2928.65,2928.65,2928.65,1 +1767037158000,2928.65,2928.65,2928.65,2928.65,1 +1767037160000,2928.65,2928.65,2928.65,2928.65,1 +1767037161000,2928.65,2928.65,2928.65,2928.65,1 +1767037162000,2928.65,2928.65,2928.65,2928.65,1 +1767037163000,2928.65,2928.65,2928.65,2928.65,1 +1767037164000,2928.65,2928.65,2928.65,2928.65,1 +1767037165000,2928.65,2928.65,2928.65,2928.65,1 +1767037166000,2928.65,2928.65,2928.65,2928.65,1 +1767037167000,2928.65,2928.65,2928.65,2928.65,1 +1767037168000,2928.65,2928.65,2928.65,2928.65,1 +1767037169000,2928.65,2928.65,2928.65,2928.65,1 +1767037170000,2928.65,2928.65,2928.65,2928.65,1 +1767037171000,2928.65,2928.65,2928.65,2928.65,1 +1767037172000,2928.65,2928.65,2928.65,2928.65,1 +1767037173000,2929.55,2929.55,2929.55,2929.55,1 +1767037174000,2929.55,2929.55,2929.55,2929.55,1 +1767037175000,2929.55,2929.55,2929.55,2929.55,1 +1767037176000,2929.55,2929.55,2929.55,2929.55,1 +1767037177000,2929.8,2929.8,2929.8,2929.8,1 +1767037178000,2929.75,2929.75,2929.75,2929.75,1 +1767037179000,2929.75,2929.75,2929.75,2929.75,1 +1767037180000,2929.75,2929.75,2929.75,2929.75,1 +1767037181000,2929.85,2929.85,2929.85,2929.85,1 +1767037182000,2929.85,2929.85,2929.85,2929.85,1 +1767037184000,2929.85,2929.85,2929.85,2929.85,1 +1767037185000,2929.85,2929.85,2929.85,2929.85,2 +1767037186000,2929.85,2929.85,2929.85,2929.85,1 +1767037187000,2930.15,2930.15,2930.15,2930.15,1 +1767037188000,2930.15,2930.15,2930.15,2930.15,1 +1767037190000,2930.15,2930.15,2930.15,2930.15,2 +1767037191000,2930.15,2930.15,2930.15,2930.15,1 +1767037193000,2930.15,2930.15,2930.15,2930.15,1 +1767037194000,2930.15,2930.15,2930.15,2930.15,1 +1767037195000,2930.15,2930.15,2930.15,2930.15,1 +1767037196000,2930.15,2930.15,2930.15,2930.15,1 +1767037197000,2930.15,2930.15,2930.15,2930.15,1 +1767037198000,2930.15,2930.15,2930.15,2930.15,1 +1767037199000,2930.15,2930.15,2930.15,2930.15,1 +1767037200000,2930.55,2930.55,2930.55,2930.55,1 +1767037201000,2930.55,2930.55,2930.55,2930.55,1 +1767037202000,2930.55,2930.55,2930.55,2930.55,1 +1767037203000,2930.15,2930.15,2930.15,2930.15,1 +1767037204000,2930.05,2930.05,2930.05,2930.05,1 +1767037205000,2930.05,2930.05,2930.05,2930.05,1 +1767037206000,2930.05,2930.05,2930.05,2930.05,1 +1767037207000,2930.05,2930.05,2930.05,2930.05,1 +1767037208000,2930.05,2930.05,2930.05,2930.05,1 +1767037209000,2930.05,2930.05,2930.05,2930.05,1 +1767037210000,2930.05,2930.05,2930.05,2930.05,1 +1767037211000,2930.05,2930.05,2930.05,2930.05,1 +1767037212000,2930.05,2930.05,2930.05,2930.05,1 +1767037213000,2930.05,2930.05,2930.05,2930.05,1 +1767037214000,2930.05,2930.05,2930.05,2930.05,1 +1767037215000,2930.05,2930.05,2930.05,2930.05,1 +1767037216000,2929.85,2929.85,2929.85,2929.85,1 +1767037218000,2929.25,2929.25,2929.25,2929.25,2 +1767037219000,2929.25,2929.25,2929.25,2929.25,1 +1767037220000,2929.25,2929.25,2929.25,2929.25,1 +1767037222000,2929.25,2929.25,2929.25,2929.25,1 +1767037223000,2929.25,2929.25,2929.25,2929.25,1 +1767037224000,2929.25,2929.25,2929.25,2929.25,1 +1767037225000,2929.25,2929.25,2929.25,2929.25,1 +1767037226000,2929.25,2929.25,2929.25,2929.25,1 +1767037227000,2929.25,2929.25,2929.25,2929.25,1 +1767037228000,2929.25,2929.25,2929.25,2929.25,1 +1767037229000,2929.25,2929.25,2929.25,2929.25,1 +1767037230000,2929.25,2929.25,2929.25,2929.25,1 +1767037231000,2929.25,2929.25,2929.25,2929.25,1 +1767037232000,2929.25,2929.25,2929.25,2929.25,1 +1767037233000,2929.25,2929.25,2929.25,2929.25,1 +1767037234000,2929.25,2929.25,2929.25,2929.25,1 +1767037235000,2929.25,2929.25,2929.25,2929.25,1 +1767037236000,2929.25,2929.25,2929.25,2929.25,1 +1767037237000,2929.25,2929.25,2929.25,2929.25,1 +1767037238000,2929.25,2929.25,2929.25,2929.25,1 +1767037239000,2929.25,2929.25,2929.25,2929.25,1 +1767037240000,2929.25,2929.25,2929.25,2929.25,1 +1767037241000,2929.25,2929.25,2929.25,2929.25,1 +1767037242000,2929.25,2929.25,2929.25,2929.25,1 +1767037243000,2929.25,2929.25,2929.25,2929.25,1 +1767037244000,2930.25,2930.25,2930.25,2930.25,1 +1767037245000,2930.25,2930.25,2930.25,2930.25,1 +1767037246000,2930.25,2930.25,2930.25,2930.25,1 +1767037247000,2930.25,2930.25,2930.25,2930.25,1 +1767037248000,2930.25,2930.25,2930.25,2930.25,1 +1767037249000,2930.25,2930.25,2930.25,2930.25,1 +1767037251000,2930.25,2930.25,2930.25,2930.25,1 +1767037252000,2930.25,2930.25,2930.25,2930.25,2 +1767037253000,2930.25,2930.25,2930.25,2930.25,1 +1767037254000,2930.25,2930.25,2930.25,2930.25,1 +1767037255000,2930.25,2930.25,2930.25,2930.25,1 +1767037256000,2930.25,2930.25,2930.25,2930.25,1 +1767037258000,2930.25,2930.25,2930.25,2930.25,1 +1767037259000,2930.25,2930.25,2930.25,2930.25,1 +1767037260000,2930.25,2930.25,2930.25,2930.25,1 +1767037261000,2930.25,2930.25,2930.25,2930.25,1 +1767037262000,2929.85,2929.85,2929.85,2929.85,1 +1767037263000,2929.55,2929.55,2929.55,2929.55,1 +1767037264000,2929.55,2929.55,2929.55,2929.55,1 +1767037265000,2929.55,2929.55,2929.55,2929.55,1 +1767037266000,2929.55,2929.55,2929.55,2929.55,1 +1767037267000,2929.55,2929.55,2929.55,2929.55,1 +1767037268000,2929.55,2929.55,2929.55,2929.55,1 +1767037269000,2929.55,2929.55,2929.55,2929.55,1 +1767037270000,2929.55,2929.55,2929.55,2929.55,1 +1767037271000,2929.55,2929.55,2929.55,2929.55,1 +1767037272000,2929.45,2929.45,2929.45,2929.45,1 +1767037273000,2929.45,2929.45,2929.45,2929.45,1 +1767037274000,2929.45,2929.45,2929.45,2929.45,1 +1767037275000,2929.45,2929.45,2929.45,2929.45,1 +1767037276000,2929.45,2929.45,2929.45,2929.45,1 +1767037277000,2929.45,2929.45,2929.45,2929.45,1 +1767037278000,2929.45,2929.45,2929.45,2929.45,1 +1767037279000,2929.45,2929.45,2929.45,2929.45,1 +1767037280000,2929.45,2929.45,2929.45,2929.45,1 +1767037281000,2929.45,2929.45,2929.45,2929.45,1 +1767037282000,2929.45,2929.45,2929.45,2929.45,1 +1767037283000,2929.45,2929.45,2929.45,2929.45,1 +1767037284000,2929.45,2929.45,2929.45,2929.45,1 +1767037285000,2929.45,2929.45,2929.45,2929.45,1 +1767037286000,2929.45,2929.45,2929.45,2929.45,1 +1767037287000,2929.85,2929.85,2929.85,2929.85,1 +1767037288000,2930.15,2930.15,2930.15,2930.15,1 +1767037289000,2930.25,2930.25,2930.25,2930.25,1 +1767037290000,2930.25,2930.25,2930.25,2930.25,1 +1767037291000,2930.25,2930.25,2930.25,2930.25,1 +1767037292000,2930.25,2930.25,2930.25,2930.25,1 +1767037293000,2930.25,2930.25,2930.25,2930.25,1 +1767037295000,2930.25,2930.25,2930.25,2930.25,1 +1767037296000,2930.25,2930.25,2930.25,2930.25,1 +1767037297000,2930.25,2930.25,2930.25,2930.25,2 +1767037298000,2930.25,2930.25,2930.25,2930.25,1 +1767037299000,2930.35,2930.35,2930.35,2930.35,1 +1767037301000,2930.35,2930.35,2930.35,2930.35,1 +1767037302000,2930.35,2930.35,2930.35,2930.35,1 +1767037303000,2930.35,2930.35,2930.35,2930.35,2 +1767037305000,2930.35,2930.35,2930.35,2930.35,1 +1767037306000,2930.35,2930.35,2930.35,2930.35,1 +1767037307000,2930.4,2930.4,2930.4,2930.4,1 +1767037308000,2930.45,2930.45,2930.45,2930.45,1 +1767037309000,2930.45,2930.45,2930.45,2930.45,1 +1767037310000,2930.45,2930.45,2930.45,2930.45,1 +1767037311000,2930.75,2930.75,2930.75,2930.75,1 +1767037312000,2930.75,2930.75,2930.75,2930.75,1 +1767037313000,2930.95,2930.95,2930.95,2930.95,1 +1767037314000,2930.95,2930.95,2930.95,2930.95,1 +1767037315000,2930.95,2930.95,2930.95,2930.95,1 +1767037316000,2930.95,2930.95,2930.95,2930.95,1 +1767037317000,2930.95,2930.95,2930.95,2930.95,1 +1767037318000,2931.25,2931.25,2931.25,2931.25,1 +1767037319000,2931.55,2931.55,2931.55,2931.55,1 +1767037320000,2931.55,2931.55,2931.55,2931.55,1 +1767037321000,2931.55,2931.55,2931.55,2931.55,1 +1767037322000,2931.25,2931.25,2931.25,2931.25,1 +1767037323000,2931.25,2931.25,2931.25,2931.25,1 +1767037324000,2931.25,2931.25,2931.25,2931.25,1 +1767037325000,2931.25,2931.25,2931.25,2931.25,1 +1767037326000,2931.25,2931.25,2931.25,2931.25,1 +1767037327000,2931.25,2931.25,2931.25,2931.25,1 +1767037328000,2931.25,2931.25,2931.25,2931.25,1 +1767037329000,2931.25,2931.25,2931.25,2931.25,1 +1767037330000,2931.25,2931.25,2931.25,2931.25,1 +1767037332000,2931.25,2931.25,2931.25,2931.25,1 +1767037333000,2931.25,2931.25,2931.25,2931.25,2 +1767037334000,2931.25,2931.25,2931.25,2931.25,1 +1767037336000,2931.25,2931.25,2931.25,2931.25,1 +1767037337000,2931.25,2931.25,2931.25,2931.25,1 +1767037338000,2931.25,2931.25,2931.25,2931.25,1 +1767037339000,2930.95,2930.95,2930.95,2930.95,1 +1767037340000,2930.95,2930.95,2930.95,2930.95,1 +1767037341000,2930.95,2930.95,2930.95,2930.95,1 +1767037342000,2930.95,2930.95,2930.95,2930.95,1 +1767037343000,2930.95,2930.95,2930.95,2930.95,1 +1767037344000,2930.95,2930.95,2930.95,2930.95,1 +1767037345000,2930.95,2930.95,2930.95,2930.95,1 +1767037346000,2930.95,2930.95,2930.95,2930.95,1 +1767037347000,2930.95,2930.95,2930.95,2930.95,1 +1767037348000,2930.95,2930.95,2930.95,2930.95,1 +1767037349000,2930.95,2930.95,2930.95,2930.95,1 +1767037350000,2930.95,2930.95,2930.95,2930.95,1 +1767037351000,2930.95,2930.95,2930.95,2930.95,1 +1767037352000,2930.95,2930.95,2930.95,2930.95,1 +1767037353000,2930.95,2930.95,2930.95,2930.95,1 +1767037354000,2930.95,2930.95,2930.95,2930.95,1 +1767037355000,2930.95,2930.95,2930.95,2930.95,1 +1767037356000,2930.95,2930.95,2930.95,2930.95,1 +1767037357000,2930.95,2930.95,2930.95,2930.95,1 +1767037358000,2930.95,2930.95,2930.95,2930.95,1 +1767037359000,2930.95,2930.95,2930.95,2930.95,1 +1767037360000,2930.95,2930.95,2930.95,2930.95,1 +1767037362000,2930.95,2930.95,2930.95,2930.95,1 +1767037363000,2930.95,2930.95,2930.95,2930.95,2 +1767037364000,2930.95,2930.95,2930.95,2930.95,1 +1767037366000,2930.95,2930.95,2930.95,2930.95,1 +1767037367000,2931.55,2931.55,2931.55,2931.55,1 +1767037368000,2931.55,2931.55,2931.55,2931.55,1 +1767037369000,2931.55,2931.55,2931.55,2931.55,1 +1767037370000,2931.55,2931.55,2931.55,2931.55,1 +1767037371000,2931.55,2931.55,2931.55,2931.55,1 +1767037372000,2931.55,2931.55,2931.55,2931.55,1 +1767037373000,2931.55,2931.55,2931.55,2931.55,1 +1767037374000,2931.55,2931.55,2931.55,2931.55,1 +1767037375000,2931.55,2931.55,2931.55,2931.55,1 +1767037376000,2931.55,2931.55,2931.55,2931.55,1 +1767037377000,2931.55,2931.55,2931.55,2931.55,1 +1767037378000,2931.55,2931.55,2931.55,2931.55,1 +1767037379000,2931.75,2931.75,2931.75,2931.75,1 +1767037380000,2931.85,2931.85,2931.85,2931.85,1 +1767037381000,2931.85,2931.85,2931.85,2931.85,1 +1767037382000,2931.95,2931.95,2931.95,2931.95,1 +1767037383000,2931.95,2931.95,2931.95,2931.95,1 +1767037384000,2932.25,2932.25,2932.25,2932.25,1 +1767037385000,2932.25,2932.25,2932.25,2932.25,1 +1767037387000,2932.45,2932.45,2932.45,2932.45,2 +1767037388000,2932.45,2932.45,2932.45,2932.45,1 +1767037389000,2932.45,2932.45,2932.45,2932.45,1 +1767037390000,2932.45,2932.45,2932.45,2932.45,1 +1767037392000,2932.45,2932.45,2932.45,2932.45,2 +1767037393000,2932.45,2932.45,2932.45,2932.45,1 +1767037394000,2932.45,2932.45,2932.45,2932.45,1 +1767037395000,2932.65,2932.65,2932.65,2932.65,1 +1767037397000,2932.65,2932.65,2932.65,2932.65,2 +1767037398000,2932.9,2932.9,2932.9,2932.9,1 +1767037399000,2933.05,2933.05,2933.05,2933.05,1 +1767037400000,2933.05,2933.05,2933.05,2933.05,1 +1767037402000,2933.05,2933.05,2933.05,2933.05,1 +1767037403000,2933.05,2933.05,2933.05,2933.05,1 +1767037404000,2933.05,2933.05,2933.05,2933.05,1 +1767037405000,2933.05,2933.05,2933.05,2933.05,1 +1767037406000,2933.05,2933.05,2933.05,2933.05,1 +1767037407000,2933.05,2933.05,2933.05,2933.05,1 +1767037408000,2933.05,2933.05,2933.05,2933.05,1 +1767037409000,2933.05,2933.05,2933.05,2933.05,1 +1767037410000,2933.05,2933.05,2933.05,2933.05,1 +1767037411000,2933.05,2933.05,2933.05,2933.05,1 +1767037412000,2933.05,2933.05,2933.05,2933.05,1 +1767037413000,2933.05,2933.05,2933.05,2933.05,1 +1767037414000,2933.05,2933.05,2933.05,2933.05,1 +1767037415000,2933.05,2933.05,2933.05,2933.05,1 +1767037416000,2933.05,2933.05,2933.05,2933.05,1 +1767037417000,2933.05,2933.05,2933.05,2933.05,1 +1767037418000,2933.05,2933.05,2933.05,2933.05,1 +1767037419000,2933.05,2933.05,2933.05,2933.05,1 +1767037420000,2933.05,2933.05,2933.05,2933.05,1 +1767037421000,2933.05,2933.05,2933.05,2933.05,1 +1767037422000,2933.05,2933.05,2933.05,2933.05,1 +1767037423000,2933.05,2933.05,2933.05,2933.05,1 +1767037424000,2933.45,2933.45,2933.45,2933.45,1 +1767037425000,2933.45,2933.45,2933.45,2933.45,1 +1767037426000,2933.45,2933.45,2933.45,2933.45,1 +1767037427000,2933.45,2933.45,2933.45,2933.45,1 +1767037428000,2933.45,2933.45,2933.45,2933.45,1 +1767037429000,2933.45,2933.45,2933.45,2933.45,1 +1767037430000,2933.45,2933.45,2933.45,2933.45,1 +1767037431000,2933.45,2933.45,2933.45,2933.45,1 +1767037432000,2933.45,2933.45,2933.45,2933.45,1 +1767037433000,2933.45,2933.45,2933.45,2933.45,1 +1767037434000,2933.45,2933.45,2933.45,2933.45,1 +1767037435000,2933.45,2933.45,2933.45,2933.45,1 +1767037436000,2933.45,2933.45,2933.45,2933.45,1 +1767037437000,2933.45,2933.45,2933.45,2933.45,1 +1767037438000,2933.45,2933.45,2933.45,2933.45,1 +1767037439000,2933.45,2933.45,2933.45,2933.45,1 +1767037440000,2933.45,2933.45,2933.45,2933.45,1 +1767037441000,2933.45,2933.45,2933.45,2933.45,1 +1767037442000,2933.45,2933.45,2933.45,2933.45,1 +1767037443000,2933.45,2933.45,2933.45,2933.45,1 +1767037444000,2933.45,2933.45,2933.45,2933.45,1 +1767037445000,2933.45,2933.45,2933.45,2933.45,1 +1767037446000,2933.45,2933.45,2933.45,2933.45,1 +1767037448000,2933.45,2933.45,2933.45,2933.45,2 +1767037449000,2933.45,2933.45,2933.45,2933.45,1 +1767037451000,2933.45,2933.45,2933.45,2933.45,1 +1767037452000,2933.45,2933.45,2933.45,2933.45,1 +1767037453000,2933.45,2933.45,2933.45,2933.45,1 +1767037454000,2933.45,2933.45,2933.45,2933.45,1 +1767037455000,2933.45,2933.45,2933.45,2933.45,1 +1767037456000,2933.45,2933.45,2933.45,2933.45,1 +1767037457000,2933.45,2933.45,2933.45,2933.45,1 +1767037458000,2933.45,2933.45,2933.45,2933.45,1 +1767037459000,2933.45,2933.45,2933.45,2933.45,1 +1767037460000,2933.45,2933.45,2933.45,2933.45,1 +1767037461000,2933.45,2933.45,2933.45,2933.45,1 +1767037462000,2933.45,2933.45,2933.45,2933.45,1 +1767037463000,2933.95,2933.95,2933.95,2933.95,1 +1767037464000,2933.95,2933.95,2933.95,2933.95,1 +1767037465000,2933.95,2933.95,2933.95,2933.95,1 +1767037466000,2934.35,2934.35,2934.35,2934.35,1 +1767037467000,2934.35,2934.35,2934.35,2934.35,1 +1767037468000,2934.35,2934.35,2934.35,2934.35,1 +1767037469000,2934.35,2934.35,2934.35,2934.35,1 +1767037470000,2934.35,2934.35,2934.35,2934.35,1 +1767037471000,2934.35,2934.35,2934.35,2934.35,1 +1767037472000,2934.35,2934.35,2934.35,2934.35,1 +1767037473000,2934.35,2934.35,2934.35,2934.35,1 +1767037474000,2934.35,2934.35,2934.35,2934.35,1 +1767037475000,2934.35,2934.35,2934.35,2934.35,1 +1767037476000,2933.65,2933.65,2933.65,2933.65,1 +1767037477000,2933.65,2933.65,2933.65,2933.65,1 +1767037478000,2933.85,2933.85,2933.85,2933.85,1 +1767037479000,2933.85,2933.85,2933.85,2933.85,1 +1767037480000,2933.95,2933.95,2933.95,2933.95,1 +1767037481000,2933.95,2933.95,2933.95,2933.95,1 +1767037482000,2933.95,2933.95,2933.95,2933.95,1 +1767037484000,2933.8,2933.8,2933.65,2933.65,2 +1767037485000,2933.65,2933.65,2933.65,2933.65,1 +1767037486000,2933.65,2933.65,2933.65,2933.65,1 +1767037488000,2933.65,2933.65,2933.65,2933.65,2 +1767037489000,2933.65,2933.65,2933.65,2933.65,1 +1767037491000,2933.65,2933.65,2933.65,2933.65,1 +1767037492000,2933.65,2933.65,2933.65,2933.65,1 +1767037493000,2933.65,2933.65,2933.65,2933.65,1 +1767037494000,2933.65,2933.65,2933.65,2933.65,1 +1767037495000,2933.65,2933.65,2933.65,2933.65,1 +1767037496000,2933.65,2933.65,2933.65,2933.65,1 +1767037497000,2933.65,2933.65,2933.65,2933.65,1 +1767037498000,2933.65,2933.65,2933.65,2933.65,1 +1767037499000,2933.65,2933.65,2933.65,2933.65,1 +1767037500000,2933.65,2933.65,2933.65,2933.65,1 +1767037501000,2934.35,2934.35,2934.35,2934.35,1 +1767037502000,2934.9,2934.9,2934.9,2934.9,1 +1767037503000,2935.25,2935.25,2935.25,2935.25,1 +1767037504000,2935.25,2935.25,2935.25,2935.25,1 +1767037505000,2935.15,2935.15,2935.15,2935.15,1 +1767037506000,2935.05,2935.05,2935.05,2935.05,1 +1767037507000,2935.05,2935.05,2935.05,2935.05,1 +1767037508000,2934.65,2934.65,2934.65,2934.65,1 +1767037509000,2934.65,2934.65,2934.65,2934.65,1 +1767037510000,2934.65,2934.65,2934.65,2934.65,1 +1767037511000,2934.65,2934.65,2934.65,2934.65,1 +1767037512000,2934.65,2934.65,2934.65,2934.65,1 +1767037513000,2934.65,2934.65,2934.65,2934.65,1 +1767037514000,2934.65,2934.65,2934.65,2934.65,1 +1767037515000,2934.65,2934.65,2934.65,2934.65,1 +1767037516000,2934.65,2934.65,2934.65,2934.65,1 +1767037518000,2934.65,2934.65,2934.65,2934.65,2 +1767037519000,2934.65,2934.65,2934.65,2934.65,1 +1767037520000,2934.65,2934.65,2934.65,2934.65,1 +1767037521000,2934.65,2934.65,2934.65,2934.65,1 +1767037523000,2934.65,2934.65,2934.05,2934.05,2 +1767037524000,2934.05,2934.05,2934.05,2934.05,1 +1767037526000,2934.05,2934.05,2934.05,2934.05,2 +1767037528000,2934.05,2934.05,2934.05,2934.05,1 +1767037529000,2934.05,2934.05,2934.05,2934.05,2 +1767037530000,2934.05,2934.05,2934.05,2934.05,1 +1767037532000,2934.45,2934.45,2934.45,2934.45,1 +1767037533000,2934.45,2934.45,2934.45,2934.45,1 +1767037534000,2934.65,2934.65,2934.65,2934.65,1 +1767037535000,2934.65,2934.65,2934.65,2934.65,2 +1767037537000,2934.65,2934.65,2934.65,2934.65,1 +1767037538000,2934.65,2934.65,2934.65,2934.65,1 +1767037539000,2934.65,2934.65,2934.65,2934.65,1 +1767037540000,2934.65,2934.65,2934.65,2934.65,1 +1767037541000,2934.65,2934.65,2934.65,2934.65,1 +1767037542000,2934.65,2934.65,2934.65,2934.65,1 +1767037543000,2934.65,2934.65,2934.65,2934.65,1 +1767037544000,2934.65,2934.65,2934.65,2934.65,1 +1767037545000,2934.65,2934.65,2934.65,2934.65,1 +1767037546000,2934.65,2934.65,2934.65,2934.65,1 +1767037547000,2934.65,2934.65,2934.65,2934.65,1 +1767037548000,2934.65,2934.65,2934.65,2934.65,1 +1767037549000,2935.05,2935.05,2935.05,2935.05,1 +1767037550000,2935.05,2935.05,2935.05,2935.05,1 +1767037551000,2935.05,2935.05,2935.05,2935.05,1 +1767037552000,2935.05,2935.05,2935.05,2935.05,1 +1767037553000,2935.05,2935.05,2935.05,2935.05,1 +1767037554000,2935.05,2935.05,2935.05,2935.05,1 +1767037555000,2935.05,2935.05,2935.05,2935.05,1 +1767037556000,2935.05,2935.05,2935.05,2935.05,1 +1767037557000,2935.05,2935.05,2935.05,2935.05,1 +1767037558000,2935.05,2935.05,2935.05,2935.05,1 +1767037559000,2935.05,2935.05,2935.05,2935.05,1 +1767037561000,2935.05,2935.05,2935.05,2935.05,1 +1767037562000,2935.05,2935.05,2935.05,2935.05,1 +1767037563000,2935.05,2935.05,2935.05,2935.05,1 +1767037564000,2935.05,2935.05,2935.05,2935.05,1 +1767037565000,2935.05,2935.05,2935.05,2935.05,1 +1767037566000,2935.05,2935.05,2935.05,2935.05,1 +1767037567000,2935.05,2935.05,2935.05,2935.05,1 +1767037568000,2935.05,2935.05,2935.05,2935.05,1 +1767037569000,2935.05,2935.05,2935.05,2935.05,1 +1767037570000,2935.05,2935.05,2935.05,2935.05,1 +1767037571000,2935.05,2935.05,2935.05,2935.05,1 +1767037572000,2935.05,2935.05,2935.05,2935.05,1 +1767037573000,2935.05,2935.05,2935.05,2935.05,1 +1767037574000,2935.05,2935.05,2935.05,2935.05,1 +1767037575000,2935.35,2935.35,2935.35,2935.35,1 +1767037576000,2935.35,2935.35,2935.35,2935.35,1 +1767037577000,2935.45,2935.45,2935.45,2935.45,1 +1767037578000,2935.35,2935.35,2935.35,2935.35,1 +1767037579000,2935.35,2935.35,2935.35,2935.35,1 +1767037580000,2935.35,2935.35,2935.35,2935.35,1 +1767037581000,2935.35,2935.35,2935.35,2935.35,1 +1767037582000,2935.35,2935.35,2935.35,2935.35,1 +1767037583000,2935.35,2935.35,2935.35,2935.35,1 +1767037584000,2935.35,2935.35,2935.35,2935.35,1 +1767037585000,2935.35,2935.35,2935.35,2935.35,1 +1767037586000,2935.35,2935.35,2935.35,2935.35,1 +1767037587000,2935.35,2935.35,2935.35,2935.35,1 +1767037588000,2935.35,2935.35,2935.35,2935.35,1 +1767037589000,2935.35,2935.35,2935.35,2935.35,1 +1767037590000,2935.35,2935.35,2935.35,2935.35,1 +1767037591000,2935.35,2935.35,2935.35,2935.35,1 +1767037592000,2935.35,2935.35,2935.35,2935.35,1 +1767037594000,2935.35,2935.35,2935.35,2935.35,2 +1767037595000,2935.35,2935.35,2935.35,2935.35,1 +1767037596000,2935.35,2935.35,2935.35,2935.35,1 +1767037597000,2935.35,2935.35,2935.35,2935.35,1 +1767037599000,2935.35,2935.35,2935.35,2935.35,2 +1767037600000,2935.35,2935.35,2935.35,2935.35,1 +1767037601000,2935.35,2935.35,2935.35,2935.35,1 +1767037602000,2935.35,2935.35,2935.35,2935.35,1 +1767037603000,2935.35,2935.35,2935.35,2935.35,1 +1767037604000,2935.35,2935.35,2935.35,2935.35,1 +1767037605000,2935.35,2935.35,2935.35,2935.35,1 +1767037606000,2935.35,2935.35,2935.35,2935.35,1 +1767037607000,2935.35,2935.35,2935.35,2935.35,1 +1767037609000,2935.35,2935.35,2935.35,2935.35,1 +1767037610000,2935.35,2935.35,2935.35,2935.35,1 +1767037611000,2935.35,2935.35,2935.35,2935.35,1 +1767037612000,2935.35,2935.35,2935.35,2935.35,1 +1767037613000,2935.35,2935.35,2935.35,2935.35,1 +1767037614000,2935.35,2935.35,2935.35,2935.35,1 +1767037615000,2935.35,2935.35,2935.35,2935.35,1 +1767037616000,2935.35,2935.35,2935.35,2935.35,1 +1767037617000,2935.35,2935.35,2935.35,2935.35,1 +1767037618000,2935.35,2935.35,2935.35,2935.35,1 +1767037619000,2935.35,2935.35,2935.35,2935.35,1 +1767037620000,2935.35,2935.35,2935.35,2935.35,1 +1767037621000,2935.35,2935.35,2935.35,2935.35,1 +1767037622000,2935.35,2935.35,2935.35,2935.35,1 +1767037623000,2935.35,2935.35,2935.35,2935.35,1 +1767037624000,2935.35,2935.35,2935.35,2935.35,1 +1767037625000,2935.35,2935.35,2935.35,2935.35,1 +1767037626000,2935.35,2935.35,2935.35,2935.35,1 +1767037627000,2935.35,2935.35,2935.35,2935.35,1 +1767037628000,2935.35,2935.35,2935.35,2935.35,1 +1767037629000,2935.35,2935.35,2935.35,2935.35,1 +1767037630000,2935.35,2935.35,2935.35,2935.35,1 +1767037631000,2935.35,2935.35,2935.35,2935.35,1 +1767037632000,2935.35,2935.35,2935.35,2935.35,1 +1767037633000,2935.35,2935.35,2935.35,2935.35,1 +1767037634000,2935.35,2935.35,2935.35,2935.35,1 +1767037635000,2935.35,2935.35,2935.35,2935.35,1 +1767037636000,2935.35,2935.35,2935.35,2935.35,1 +1767037637000,2935.35,2935.35,2935.35,2935.35,1 +1767037638000,2935.35,2935.35,2935.35,2935.35,1 +1767037639000,2935.35,2935.35,2935.35,2935.35,1 +1767037640000,2935.35,2935.35,2935.35,2935.35,1 +1767037641000,2935.35,2935.35,2935.35,2935.35,1 +1767037643000,2935.35,2935.35,2935.35,2935.35,1 +1767037644000,2935.35,2935.35,2935.35,2935.35,1 +1767037645000,2935.35,2935.35,2935.35,2935.35,1 +1767037646000,2935.35,2935.35,2935.35,2935.35,1 +1767037647000,2935.35,2935.35,2935.35,2935.35,1 +1767037648000,2935.35,2935.35,2935.35,2935.35,1 +1767037649000,2935.35,2935.35,2935.35,2935.35,1 +1767037650000,2935.35,2935.35,2935.35,2935.35,1 +1767037651000,2935.35,2935.35,2935.35,2935.35,1 +1767037652000,2935.35,2935.35,2935.35,2935.35,1 +1767037653000,2935.35,2935.35,2935.35,2935.35,1 +1767037654000,2935.35,2935.35,2935.35,2935.35,1 +1767037655000,2935.35,2935.35,2935.35,2935.35,1 +1767037656000,2935.35,2935.35,2935.35,2935.35,1 +1767037657000,2935.35,2935.35,2935.35,2935.35,1 +1767037658000,2935.35,2935.35,2935.35,2935.35,1 +1767037660000,2935.35,2935.35,2935.35,2935.35,2 +1767037661000,2935.35,2935.35,2935.35,2935.35,1 +1767037662000,2935.35,2935.35,2935.35,2935.35,1 +1767037663000,2935.35,2935.35,2935.35,2935.35,1 +1767037664000,2935.35,2935.35,2935.35,2935.35,1 +1767037665000,2935.35,2935.35,2935.35,2935.35,1 +1767037666000,2935.35,2935.35,2935.35,2935.35,1 +1767037667000,2935.35,2935.35,2935.35,2935.35,1 +1767037669000,2935.35,2935.35,2935.35,2935.35,2 +1767037670000,2935.35,2935.35,2935.35,2935.35,1 +1767037671000,2935.35,2935.35,2935.35,2935.35,1 +1767037673000,2935.35,2935.35,2935.35,2935.35,1 +1767037674000,2935.65,2935.65,2935.65,2935.65,2 +1767037676000,2935.65,2935.65,2935.65,2935.65,1 +1767037677000,2935.65,2935.65,2935.65,2935.65,1 +1767037678000,2935.65,2935.65,2935.65,2935.65,1 +1767037679000,2935.65,2935.65,2935.65,2935.65,1 +1767037680000,2935.65,2935.65,2935.65,2935.65,1 +1767037681000,2935.65,2935.65,2935.65,2935.65,1 +1767037682000,2935.5,2935.5,2935.5,2935.5,1 +1767037683000,2935.25,2935.25,2935.25,2935.25,1 +1767037684000,2935.25,2935.25,2935.25,2935.25,1 +1767037685000,2935.25,2935.25,2935.25,2935.25,1 +1767037686000,2935.25,2935.25,2935.25,2935.25,1 +1767037687000,2935.25,2935.25,2935.25,2935.25,1 +1767037688000,2935.25,2935.25,2935.25,2935.25,1 +1767037689000,2935.25,2935.25,2935.25,2935.25,1 +1767037690000,2935.25,2935.25,2935.25,2935.25,1 +1767037691000,2935.25,2935.25,2935.25,2935.25,1 +1767037693000,2935.25,2935.25,2935.25,2935.25,2 +1767037695000,2935.25,2935.25,2935.25,2935.25,2 +1767037696000,2935.45,2935.45,2935.45,2935.45,1 +1767037697000,2935.55,2935.55,2935.55,2935.55,1 +1767037698000,2935.55,2935.55,2935.55,2935.55,1 +1767037700000,2935.65,2935.65,2935.65,2935.65,1 +1767037701000,2935.65,2935.65,2935.65,2935.65,2 +1767037702000,2935.65,2935.65,2935.65,2935.65,1 +1767037703000,2935.65,2935.65,2935.65,2935.65,1 +1767037705000,2935.65,2935.65,2935.65,2935.65,2 +1767037707000,2935.65,2935.65,2935.65,2935.65,1 +1767037708000,2935.65,2935.65,2935.65,2935.65,2 +1767037710000,2935.65,2935.65,2935.65,2935.65,1 +1767037711000,2935.65,2935.65,2935.65,2935.65,1 +1767037712000,2935.65,2935.65,2935.65,2935.65,1 +1767037713000,2935.75,2935.75,2935.75,2935.75,1 +1767037714000,2935.75,2935.75,2935.75,2935.75,1 +1767037715000,2935.75,2935.75,2935.75,2935.75,1 +1767037716000,2936.25,2936.25,2936.25,2936.25,1 +1767037717000,2936.25,2936.25,2936.25,2936.25,1 +1767037718000,2935.95,2935.95,2935.95,2935.95,1 +1767037719000,2935.95,2935.95,2935.95,2935.95,1 +1767037720000,2936.25,2936.25,2936.25,2936.25,1 +1767037721000,2936.35,2936.35,2936.35,2936.35,1 +1767037722000,2936.35,2936.35,2936.35,2936.35,1 +1767037723000,2936.45,2936.45,2936.45,2936.45,1 +1767037724000,2936.45,2936.45,2936.45,2936.45,1 +1767037725000,2936.85,2936.85,2936.85,2936.85,1 +1767037726000,2936.85,2936.85,2936.85,2936.85,1 +1767037727000,2936.85,2936.85,2936.85,2936.85,1 +1767037728000,2936.85,2936.85,2936.85,2936.85,1 +1767037729000,2937.15,2937.15,2937.15,2937.15,1 +1767037730000,2937.15,2937.15,2937.15,2937.15,1 +1767037731000,2937.15,2937.15,2937.15,2937.15,1 +1767037732000,2937.15,2937.15,2937.15,2937.15,1 +1767037733000,2936.75,2936.75,2936.75,2936.75,1 +1767037734000,2936.75,2936.75,2936.75,2936.75,1 +1767037735000,2936.75,2936.75,2936.75,2936.75,1 +1767037736000,2936.75,2936.75,2936.75,2936.75,1 +1767037737000,2936.75,2936.75,2936.75,2936.75,1 +1767037738000,2936.75,2936.75,2936.75,2936.75,1 +1767037739000,2936.75,2936.75,2936.75,2936.75,1 +1767037740000,2936.75,2936.75,2936.75,2936.75,1 +1767037741000,2936.75,2936.75,2936.75,2936.75,1 +1767037742000,2936.25,2936.25,2936.25,2936.25,1 +1767037743000,2936.25,2936.25,2936.25,2936.25,1 +1767037745000,2936.25,2936.25,2936.25,2936.25,2 +1767037747000,2936.2,2936.2,2936.2,2936.2,1 +1767037748000,2935.75,2935.75,2935.75,2935.75,1 +1767037749000,2935.75,2935.75,2935.75,2935.75,1 +1767037750000,2935.75,2935.75,2935.75,2935.75,1 +1767037751000,2935.75,2935.75,2935.75,2935.75,1 +1767037752000,2935.75,2935.75,2935.75,2935.75,1 +1767037753000,2934.85,2934.85,2934.85,2934.85,1 +1767037754000,2934.85,2934.85,2934.85,2934.85,1 +1767037755000,2934.85,2934.85,2934.85,2934.85,1 +1767037756000,2934.85,2934.85,2934.85,2934.85,1 +1767037757000,2934.85,2934.85,2934.85,2934.85,1 +1767037758000,2934.85,2934.85,2934.85,2934.85,1 +1767037759000,2934.85,2934.85,2934.85,2934.85,1 +1767037760000,2934.85,2934.85,2934.85,2934.85,1 +1767037761000,2934.85,2934.85,2934.85,2934.85,1 +1767037762000,2934.85,2934.85,2934.85,2934.85,1 +1767037763000,2934.85,2934.85,2934.85,2934.85,1 +1767037764000,2934.85,2934.85,2934.85,2934.85,1 +1767037765000,2934.85,2934.85,2934.85,2934.85,1 +1767037766000,2934.85,2934.85,2934.85,2934.85,1 +1767037767000,2934.85,2934.85,2934.85,2934.85,1 +1767037768000,2934.85,2934.85,2934.85,2934.85,1 +1767037769000,2935.05,2935.05,2935.05,2935.05,1 +1767037770000,2935.25,2935.25,2935.25,2935.25,1 +1767037771000,2935.25,2935.25,2935.25,2935.25,1 +1767037772000,2935.25,2935.25,2935.25,2935.25,1 +1767037773000,2935.25,2935.25,2935.25,2935.25,1 +1767037774000,2935.25,2935.25,2935.25,2935.25,1 +1767037776000,2935.25,2935.25,2935.25,2935.25,2 +1767037777000,2935.25,2935.25,2935.25,2935.25,1 +1767037778000,2935.25,2935.25,2935.25,2935.25,1 +1767037779000,2935.25,2935.25,2935.25,2935.25,1 +1767037780000,2935.25,2935.25,2935.25,2935.25,1 +1767037781000,2935.25,2935.25,2935.25,2935.25,1 +1767037782000,2935.25,2935.25,2935.25,2935.25,1 +1767037783000,2934.95,2934.95,2934.95,2934.95,1 +1767037785000,2934.85,2934.85,2934.85,2934.85,2 +1767037786000,2934.85,2934.85,2934.85,2934.85,1 +1767037787000,2934.85,2934.85,2934.85,2934.85,1 +1767037788000,2934.85,2934.85,2934.85,2934.85,1 +1767037789000,2934.85,2934.85,2934.85,2934.85,1 +1767037791000,2934.85,2934.85,2934.85,2934.85,1 +1767037792000,2934.85,2934.85,2934.85,2934.85,1 +1767037793000,2934.85,2934.85,2934.85,2934.85,1 +1767037794000,2934.85,2934.85,2934.85,2934.85,1 +1767037795000,2934.85,2934.85,2934.85,2934.85,1 +1767037796000,2934.85,2934.85,2934.85,2934.85,1 +1767037797000,2934.85,2934.85,2934.85,2934.85,1 +1767037798000,2934.4,2934.4,2934.4,2934.4,1 +1767037799000,2934.35,2934.35,2934.35,2934.35,1 +1767037800000,2934.35,2934.35,2934.35,2934.35,1 +1767037801000,2934.35,2934.35,2934.35,2934.35,1 +1767037802000,2934.35,2934.35,2934.35,2934.35,1 +1767037803000,2934.0,2934.0,2934.0,2934.0,1 +1767037804000,2933.85,2933.85,2933.85,2933.85,1 +1767037805000,2933.65,2933.65,2933.65,2933.65,1 +1767037806000,2933.65,2933.65,2933.65,2933.65,1 +1767037807000,2933.65,2933.65,2933.65,2933.65,1 +1767037808000,2933.65,2933.65,2933.65,2933.65,1 +1767037809000,2933.65,2933.65,2933.65,2933.65,1 +1767037810000,2933.75,2933.75,2933.75,2933.75,1 +1767037811000,2933.75,2933.75,2933.75,2933.75,1 +1767037812000,2933.75,2933.75,2933.75,2933.75,1 +1767037813000,2933.75,2933.75,2933.75,2933.75,1 +1767037814000,2933.75,2933.75,2933.75,2933.75,1 +1767037815000,2933.75,2933.75,2933.75,2933.75,1 +1767037816000,2933.75,2933.75,2933.75,2933.75,1 +1767037817000,2933.75,2933.75,2933.75,2933.75,1 +1767037818000,2933.75,2933.75,2933.75,2933.75,1 +1767037819000,2933.75,2933.75,2933.75,2933.75,1 +1767037821000,2933.75,2933.75,2933.75,2933.75,2 +1767037822000,2933.75,2933.75,2933.75,2933.75,1 +1767037823000,2933.75,2933.75,2933.75,2933.75,1 +1767037824000,2933.75,2933.75,2933.75,2933.75,1 +1767037825000,2933.65,2933.65,2933.65,2933.65,1 +1767037826000,2933.45,2933.45,2933.45,2933.45,1 +1767037827000,2933.45,2933.45,2933.45,2933.45,1 +1767037828000,2933.45,2933.45,2933.45,2933.45,1 +1767037829000,2933.45,2933.45,2933.45,2933.45,1 +1767037831000,2933.45,2933.45,2933.45,2933.45,2 +1767037832000,2933.45,2933.45,2933.45,2933.45,1 +1767037833000,2933.45,2933.45,2933.45,2933.45,1 +1767037834000,2933.45,2933.45,2933.45,2933.45,1 +1767037835000,2933.45,2933.45,2933.45,2933.45,1 +1767037837000,2931.45,2931.45,2931.45,2931.45,2 +1767037838000,2931.45,2931.45,2931.45,2931.45,1 +1767037839000,2931.85,2931.85,2931.85,2931.85,1 +1767037841000,2931.85,2931.85,2931.85,2931.85,1 +1767037842000,2931.85,2931.85,2931.85,2931.85,1 +1767037843000,2931.85,2931.85,2931.85,2931.85,1 +1767037844000,2931.85,2931.85,2931.85,2931.85,1 +1767037845000,2931.85,2931.85,2931.85,2931.85,1 +1767037846000,2931.85,2931.85,2931.85,2931.85,1 +1767037847000,2931.85,2931.85,2931.85,2931.85,1 +1767037848000,2932.75,2932.75,2932.75,2932.75,1 +1767037849000,2932.75,2932.75,2932.75,2932.75,1 +1767037850000,2932.75,2932.75,2932.75,2932.75,1 +1767037851000,2932.75,2932.75,2932.75,2932.75,1 +1767037852000,2932.75,2932.75,2932.75,2932.75,1 +1767037853000,2932.75,2932.75,2932.75,2932.75,1 +1767037854000,2932.75,2932.75,2932.75,2932.75,1 +1767037855000,2932.75,2932.75,2932.75,2932.75,1 +1767037856000,2932.75,2932.75,2932.75,2932.75,1 +1767037857000,2932.75,2932.75,2932.75,2932.75,1 +1767037858000,2933.05,2933.05,2933.05,2933.05,1 +1767037859000,2933.05,2933.05,2933.05,2933.05,1 +1767037860000,2933.05,2933.05,2933.05,2933.05,1 +1767037861000,2933.25,2933.25,2933.25,2933.25,1 +1767037862000,2933.25,2933.25,2933.25,2933.25,1 +1767037863000,2933.25,2933.25,2933.25,2933.25,1 +1767037864000,2933.25,2933.25,2933.25,2933.25,1 +1767037865000,2933.05,2933.05,2933.05,2933.05,1 +1767037866000,2933.05,2933.05,2933.05,2933.05,1 +1767037867000,2933.05,2933.05,2933.05,2933.05,1 +1767037868000,2933.05,2933.05,2933.05,2933.05,1 +1767037869000,2933.05,2933.05,2933.05,2933.05,1 +1767037870000,2933.05,2933.05,2933.05,2933.05,1 +1767037871000,2933.05,2933.05,2933.05,2933.05,1 +1767037872000,2933.05,2933.05,2933.05,2933.05,1 +1767037873000,2933.05,2933.05,2933.05,2933.05,1 +1767037874000,2933.05,2933.05,2933.05,2933.05,1 +1767037875000,2933.05,2933.05,2933.05,2933.05,1 +1767037876000,2933.05,2933.05,2933.05,2933.05,1 +1767037877000,2933.05,2933.05,2933.05,2933.05,1 +1767037878000,2933.05,2933.05,2933.05,2933.05,1 +1767037879000,2933.25,2933.25,2933.25,2933.25,1 +1767037881000,2933.25,2933.25,2933.25,2933.25,1 +1767037882000,2933.35,2933.35,2933.35,2933.35,2 +1767037884000,2933.65,2933.65,2933.65,2933.65,1 +1767037885000,2933.75,2933.75,2933.75,2933.75,1 +1767037886000,2933.95,2933.95,2933.95,2933.95,1 +1767037887000,2933.95,2933.95,2933.95,2933.95,1 +1767037888000,2934.0,2934.0,2934.0,2934.0,1 +1767037889000,2934.05,2934.05,2934.05,2934.05,1 +1767037890000,2934.05,2934.05,2934.05,2934.05,1 +1767037891000,2934.05,2934.05,2934.05,2934.05,1 +1767037892000,2934.05,2934.05,2934.05,2934.05,1 +1767037893000,2934.05,2934.05,2934.05,2934.05,1 +1767037894000,2934.05,2934.05,2934.05,2934.05,1 +1767037895000,2934.05,2934.05,2934.05,2934.05,1 +1767037896000,2934.05,2934.05,2934.05,2934.05,1 +1767037897000,2933.9,2933.9,2933.9,2933.9,1 +1767037898000,2933.75,2933.75,2933.75,2933.75,1 +1767037899000,2933.75,2933.75,2933.75,2933.75,1 +1767037900000,2933.75,2933.75,2933.75,2933.75,1 +1767037901000,2933.75,2933.75,2933.75,2933.75,1 +1767037902000,2933.75,2933.75,2933.75,2933.75,1 +1767037903000,2933.75,2933.75,2933.75,2933.75,1 +1767037904000,2933.75,2933.75,2933.75,2933.75,1 +1767037905000,2933.75,2933.75,2933.75,2933.75,1 +1767037906000,2933.75,2933.75,2933.75,2933.75,1 +1767037907000,2933.75,2933.75,2933.75,2933.75,1 +1767037908000,2933.75,2933.75,2933.75,2933.75,1 +1767037909000,2933.75,2933.75,2933.75,2933.75,1 +1767037910000,2933.75,2933.75,2933.75,2933.75,1 +1767037911000,2933.75,2933.75,2933.75,2933.75,1 +1767037912000,2933.75,2933.75,2933.75,2933.75,1 +1767037913000,2933.75,2933.75,2933.75,2933.75,1 +1767037914000,2933.75,2933.75,2933.75,2933.75,1 +1767037915000,2933.75,2933.75,2933.75,2933.75,1 +1767037917000,2933.75,2933.75,2933.75,2933.75,2 +1767037918000,2933.75,2933.75,2933.75,2933.75,1 +1767037919000,2933.75,2933.75,2933.75,2933.75,1 +1767037921000,2933.75,2933.75,2933.75,2933.75,1 +1767037922000,2933.75,2933.75,2933.75,2933.75,2 +1767037923000,2933.45,2933.45,2933.45,2933.45,1 +1767037925000,2933.45,2933.45,2933.45,2933.45,2 +1767037927000,2933.45,2933.45,2933.45,2933.45,1 +1767037928000,2933.45,2933.45,2933.45,2933.45,1 +1767037929000,2933.45,2933.45,2933.45,2933.45,1 +1767037930000,2933.45,2933.45,2933.45,2933.45,1 +1767037931000,2933.45,2933.45,2933.45,2933.45,1 +1767037932000,2933.45,2933.45,2933.45,2933.45,1 +1767037933000,2933.45,2933.45,2933.45,2933.45,1 +1767037934000,2933.45,2933.45,2933.45,2933.45,1 +1767037935000,2933.45,2933.45,2933.45,2933.45,1 +1767037936000,2933.45,2933.45,2933.45,2933.45,1 +1767037937000,2933.45,2933.45,2933.45,2933.45,1 +1767037938000,2933.45,2933.45,2933.45,2933.45,1 +1767037939000,2933.45,2933.45,2933.45,2933.45,1 +1767037940000,2933.45,2933.45,2933.45,2933.45,1 +1767037941000,2933.45,2933.45,2933.45,2933.45,1 +1767037942000,2933.45,2933.45,2933.45,2933.45,1 +1767037943000,2933.45,2933.45,2933.45,2933.45,1 +1767037944000,2933.45,2933.45,2933.45,2933.45,1 +1767037945000,2933.45,2933.45,2933.45,2933.45,1 +1767037946000,2933.45,2933.45,2933.45,2933.45,1 +1767037947000,2933.45,2933.45,2933.45,2933.45,1 +1767037948000,2933.45,2933.45,2933.45,2933.45,1 +1767037949000,2933.45,2933.45,2933.45,2933.45,1 +1767037950000,2933.25,2933.25,2933.25,2933.25,1 +1767037951000,2933.25,2933.25,2933.25,2933.25,1 +1767037952000,2933.25,2933.25,2933.25,2933.25,1 +1767037953000,2933.25,2933.25,2933.25,2933.25,1 +1767037954000,2932.95,2932.95,2932.95,2932.95,1 +1767037955000,2932.95,2932.95,2932.95,2932.95,1 +1767037957000,2932.95,2932.95,2932.95,2932.95,2 +1767037958000,2932.95,2932.95,2932.95,2932.95,1 +1767037959000,2932.95,2932.95,2932.95,2932.95,1 +1767037960000,2932.95,2932.95,2932.95,2932.95,1 +1767037962000,2932.95,2932.95,2932.95,2932.95,1 +1767037963000,2932.95,2932.95,2932.95,2932.95,1 +1767037964000,2932.95,2932.95,2932.95,2932.95,2 +1767037965000,2932.95,2932.95,2932.95,2932.95,1 +1767037967000,2932.95,2932.95,2932.95,2932.95,1 +1767037968000,2932.95,2932.95,2932.95,2932.95,1 +1767037969000,2932.95,2932.95,2932.95,2932.95,1 +1767037970000,2932.95,2932.95,2932.95,2932.95,1 +1767037971000,2932.95,2932.95,2932.95,2932.95,1 +1767037972000,2932.95,2932.95,2932.95,2932.95,1 +1767037973000,2932.95,2932.95,2932.95,2932.95,1 +1767037974000,2932.95,2932.95,2932.95,2932.95,1 +1767037975000,2932.95,2932.95,2932.95,2932.95,1 +1767037976000,2932.95,2932.95,2932.95,2932.95,1 +1767037977000,2932.95,2932.95,2932.95,2932.95,1 +1767037978000,2933.15,2933.15,2933.15,2933.15,1 +1767037979000,2933.35,2933.35,2933.35,2933.35,1 +1767037980000,2933.35,2933.35,2933.35,2933.35,1 +1767037981000,2933.35,2933.35,2933.35,2933.35,1 +1767037982000,2933.35,2933.35,2933.35,2933.35,1 +1767037983000,2933.35,2933.35,2933.35,2933.35,1 +1767037984000,2933.35,2933.35,2933.35,2933.35,1 +1767037985000,2933.35,2933.35,2933.35,2933.35,1 +1767037986000,2933.35,2933.35,2933.35,2933.35,1 +1767037987000,2933.35,2933.35,2933.35,2933.35,1 +1767037988000,2933.35,2933.35,2933.35,2933.35,1 +1767037989000,2933.35,2933.35,2933.35,2933.35,1 +1767037990000,2933.35,2933.35,2933.35,2933.35,1 +1767037991000,2933.35,2933.35,2933.35,2933.35,1 +1767037992000,2933.35,2933.35,2933.35,2933.35,1 +1767037993000,2933.35,2933.35,2933.35,2933.35,1 +1767037994000,2933.35,2933.35,2933.35,2933.35,1 +1767037995000,2933.35,2933.35,2933.35,2933.35,1 +1767037996000,2933.35,2933.35,2933.35,2933.35,1 +1767037998000,2933.35,2933.35,2933.35,2933.35,2 +1767037999000,2933.35,2933.35,2933.35,2933.35,1 +1767038000000,2933.35,2933.35,2933.35,2933.35,1 +1767038001000,2933.35,2933.35,2933.35,2933.35,1 +1767038003000,2933.35,2933.35,2933.35,2933.35,1 +1767038004000,2933.35,2933.35,2933.35,2933.35,2 +1767038006000,2933.35,2933.35,2933.35,2933.35,1 +1767038007000,2933.35,2933.35,2933.35,2933.35,1 +1767038008000,2933.35,2933.35,2933.35,2933.35,1 +1767038009000,2933.35,2933.35,2933.35,2933.35,1 +1767038010000,2933.65,2933.65,2933.65,2933.65,1 +1767038011000,2933.65,2933.65,2933.65,2933.65,1 +1767038012000,2933.65,2933.65,2933.65,2933.65,1 +1767038013000,2933.65,2933.65,2933.65,2933.65,1 +1767038014000,2932.55,2932.55,2932.55,2932.55,1 +1767038015000,2931.15,2931.15,2931.15,2931.15,1 +1767038016000,2931.15,2931.15,2931.15,2931.15,1 +1767038017000,2931.15,2931.15,2931.15,2931.15,1 +1767038018000,2931.15,2931.15,2931.15,2931.15,1 +1767038019000,2931.15,2931.15,2931.15,2931.15,1 +1767038020000,2931.15,2931.15,2931.15,2931.15,1 +1767038021000,2931.55,2931.55,2931.55,2931.55,1 +1767038022000,2931.55,2931.55,2931.55,2931.55,1 +1767038023000,2931.55,2931.55,2931.55,2931.55,1 +1767038024000,2931.55,2931.55,2931.55,2931.55,1 +1767038025000,2931.75,2931.75,2931.75,2931.75,1 +1767038026000,2931.85,2931.85,2931.85,2931.85,1 +1767038027000,2931.85,2931.85,2931.85,2931.85,1 +1767038028000,2931.85,2931.85,2931.85,2931.85,1 +1767038029000,2931.95,2931.95,2931.95,2931.95,1 +1767038030000,2931.95,2931.95,2931.95,2931.95,1 +1767038031000,2931.95,2931.95,2931.95,2931.95,1 +1767038032000,2931.95,2931.95,2931.95,2931.95,1 +1767038033000,2931.95,2931.95,2931.95,2931.95,1 +1767038034000,2931.95,2931.95,2931.95,2931.95,1 +1767038035000,2931.95,2931.95,2931.95,2931.95,1 +1767038036000,2931.95,2931.95,2931.95,2931.95,1 +1767038037000,2931.95,2931.95,2931.95,2931.95,1 +1767038038000,2931.95,2931.95,2931.95,2931.95,1 +1767038039000,2931.95,2931.95,2931.95,2931.95,1 +1767038040000,2931.95,2931.95,2931.95,2931.95,1 +1767038041000,2931.95,2931.95,2931.95,2931.95,1 +1767038043000,2931.95,2931.95,2931.9,2931.9,2 +1767038044000,2931.75,2931.75,2931.75,2931.75,1 +1767038046000,2931.75,2931.75,2931.75,2931.75,2 +1767038048000,2931.75,2931.75,2931.75,2931.75,2 +1767038050000,2931.75,2931.75,2931.75,2931.75,1 +1767038051000,2931.75,2931.75,2931.75,2931.75,1 +1767038052000,2931.75,2931.75,2931.75,2931.75,1 +1767038053000,2931.75,2931.75,2931.75,2931.75,1 +1767038054000,2931.75,2931.75,2931.75,2931.75,1 +1767038055000,2931.75,2931.75,2931.75,2931.75,1 +1767038056000,2931.75,2931.75,2931.75,2931.75,1 +1767038057000,2931.75,2931.75,2931.75,2931.75,1 +1767038058000,2931.75,2931.75,2931.75,2931.75,1 +1767038059000,2931.75,2931.75,2931.75,2931.75,1 +1767038060000,2931.75,2931.75,2931.75,2931.75,1 +1767038061000,2931.75,2931.75,2931.75,2931.75,1 +1767038062000,2931.75,2931.75,2931.75,2931.75,1 +1767038063000,2931.75,2931.75,2931.75,2931.75,1 +1767038064000,2931.75,2931.75,2931.75,2931.75,1 +1767038065000,2931.75,2931.75,2931.75,2931.75,1 +1767038066000,2931.75,2931.75,2931.75,2931.75,1 +1767038067000,2931.75,2931.75,2931.75,2931.75,1 +1767038068000,2931.75,2931.75,2931.75,2931.75,1 +1767038069000,2932.05,2932.05,2932.05,2932.05,1 +1767038070000,2932.15,2932.15,2932.15,2932.15,1 +1767038071000,2932.45,2932.45,2932.45,2932.45,1 +1767038072000,2932.45,2932.45,2932.45,2932.45,1 +1767038073000,2932.45,2932.45,2932.45,2932.45,1 +1767038074000,2932.45,2932.45,2932.45,2932.45,1 +1767038076000,2932.45,2932.45,2932.45,2932.45,1 +1767038077000,2932.45,2932.45,2932.45,2932.45,1 +1767038078000,2932.45,2932.45,2932.45,2932.45,2 +1767038079000,2932.45,2932.45,2932.45,2932.45,1 +1767038080000,2932.45,2932.45,2932.45,2932.45,1 +1767038082000,2932.45,2932.45,2932.45,2932.45,1 +1767038083000,2932.45,2932.45,2932.45,2932.45,2 +1767038084000,2932.45,2932.45,2932.45,2932.45,1 +1767038085000,2932.45,2932.45,2932.45,2932.45,1 +1767038086000,2932.45,2932.45,2932.45,2932.45,1 +1767038088000,2932.45,2932.45,2932.45,2932.45,1 +1767038089000,2932.45,2932.45,2932.45,2932.45,1 +1767038090000,2932.45,2932.45,2932.45,2932.45,1 +1767038091000,2932.45,2932.45,2932.45,2932.45,1 +1767038092000,2932.45,2932.45,2932.45,2932.45,1 +1767038093000,2932.45,2932.45,2932.45,2932.45,1 +1767038094000,2932.45,2932.45,2932.45,2932.45,1 +1767038095000,2932.45,2932.45,2932.45,2932.45,1 +1767038096000,2932.45,2932.45,2932.45,2932.45,1 +1767038097000,2932.45,2932.45,2932.45,2932.45,1 +1767038098000,2932.45,2932.45,2932.45,2932.45,1 +1767038099000,2932.45,2932.45,2932.45,2932.45,1 +1767038100000,2932.45,2932.45,2932.45,2932.45,1 +1767038101000,2932.45,2932.45,2932.45,2932.45,1 +1767038102000,2932.45,2932.45,2932.45,2932.45,1 +1767038103000,2932.45,2932.45,2932.45,2932.45,1 +1767038104000,2932.35,2932.35,2932.35,2932.35,1 +1767038105000,2932.25,2932.25,2932.25,2932.25,1 +1767038106000,2932.25,2932.25,2932.25,2932.25,1 +1767038107000,2932.25,2932.25,2932.25,2932.25,1 +1767038109000,2932.25,2932.25,2932.25,2932.25,2 +1767038110000,2932.25,2932.25,2932.25,2932.25,1 +1767038111000,2932.25,2932.25,2932.25,2932.25,1 +1767038112000,2932.25,2932.25,2932.25,2932.25,1 +1767038113000,2932.25,2932.25,2932.25,2932.25,1 +1767038114000,2932.25,2932.25,2932.25,2932.25,1 +1767038115000,2931.85,2931.85,2931.85,2931.85,1 +1767038116000,2931.45,2931.45,2931.45,2931.45,1 +1767038117000,2931.45,2931.45,2931.45,2931.45,1 +1767038119000,2931.45,2931.45,2931.45,2931.45,2 +1767038120000,2931.45,2931.45,2931.45,2931.45,1 +1767038121000,2931.45,2931.45,2931.45,2931.45,1 +1767038123000,2931.45,2931.45,2931.45,2931.45,1 +1767038124000,2931.25,2931.25,2931.25,2931.25,1 +1767038125000,2931.25,2931.25,2931.25,2931.25,1 +1767038126000,2931.25,2931.25,2931.25,2931.25,1 +1767038127000,2931.25,2931.25,2931.25,2931.25,1 +1767038128000,2931.25,2931.25,2931.25,2931.25,1 +1767038129000,2931.25,2931.25,2931.25,2931.25,1 +1767038130000,2931.25,2931.25,2931.25,2931.25,1 +1767038131000,2931.25,2931.25,2931.25,2931.25,1 +1767038132000,2931.25,2931.25,2931.25,2931.25,1 +1767038133000,2931.25,2931.25,2931.25,2931.25,1 +1767038134000,2931.25,2931.25,2931.25,2931.25,1 +1767038135000,2931.25,2931.25,2931.25,2931.25,1 +1767038136000,2931.25,2931.25,2931.25,2931.25,1 +1767038137000,2931.25,2931.25,2931.25,2931.25,1 +1767038138000,2931.25,2931.25,2931.25,2931.25,1 +1767038139000,2931.25,2931.25,2931.25,2931.25,1 +1767038140000,2931.25,2931.25,2931.25,2931.25,1 +1767038141000,2931.25,2931.25,2931.25,2931.25,1 +1767038142000,2931.25,2931.25,2931.25,2931.25,1 +1767038144000,2931.85,2931.85,2931.85,2931.85,2 +1767038145000,2932.25,2932.25,2932.25,2932.25,1 +1767038146000,2932.25,2932.25,2932.25,2932.25,1 +1767038147000,2932.45,2932.45,2932.45,2932.45,1 +1767038149000,2932.45,2932.65,2932.45,2932.65,2 +1767038150000,2932.65,2932.65,2932.65,2932.65,1 +1767038151000,2932.65,2932.65,2932.65,2932.65,1 +1767038152000,2932.65,2932.65,2932.65,2932.65,1 +1767038154000,2932.65,2932.65,2932.65,2932.65,2 +1767038155000,2932.65,2932.65,2932.65,2932.65,1 +1767038156000,2932.85,2932.85,2932.85,2932.85,1 +1767038157000,2932.85,2932.85,2932.85,2932.85,1 +1767038159000,2932.85,2932.85,2932.85,2932.85,2 +1767038161000,2932.85,2932.85,2932.85,2932.85,2 +1767038162000,2932.85,2932.85,2932.85,2932.85,1 +1767038164000,2932.85,2932.85,2932.85,2932.85,1 +1767038165000,2932.85,2932.85,2932.85,2932.85,1 +1767038166000,2932.85,2932.85,2932.85,2932.85,2 +1767038167000,2932.85,2932.85,2932.85,2932.85,1 +1767038169000,2932.85,2932.85,2932.85,2932.85,1 +1767038170000,2932.85,2932.85,2932.85,2932.85,1 +1767038171000,2932.95,2932.95,2932.95,2932.95,1 +1767038172000,2932.95,2932.95,2932.95,2932.95,1 +1767038173000,2932.95,2932.95,2932.95,2932.95,1 +1767038174000,2932.95,2932.95,2932.95,2932.95,1 +1767038175000,2932.95,2932.95,2932.95,2932.95,1 +1767038176000,2932.95,2932.95,2932.95,2932.95,1 +1767038177000,2932.95,2932.95,2932.95,2932.95,1 +1767038178000,2932.95,2932.95,2932.95,2932.95,1 +1767038179000,2932.95,2932.95,2932.95,2932.95,1 +1767038180000,2932.95,2932.95,2932.95,2932.95,1 +1767038181000,2932.95,2932.95,2932.95,2932.95,1 +1767038182000,2933.05,2933.05,2933.05,2933.05,1 +1767038183000,2933.05,2933.05,2933.05,2933.05,1 +1767038184000,2933.05,2933.05,2933.05,2933.05,1 +1767038185000,2933.25,2933.25,2933.25,2933.25,1 +1767038186000,2933.25,2933.25,2933.25,2933.25,1 +1767038187000,2933.45,2933.45,2933.45,2933.45,1 +1767038188000,2933.5,2933.5,2933.5,2933.5,1 +1767038189000,2933.55,2933.55,2933.55,2933.55,1 +1767038190000,2933.65,2933.65,2933.65,2933.65,1 +1767038191000,2933.65,2933.65,2933.65,2933.65,1 +1767038192000,2933.65,2933.65,2933.65,2933.65,1 +1767038193000,2933.65,2933.65,2933.65,2933.65,1 +1767038194000,2933.65,2933.65,2933.65,2933.65,1 +1767038195000,2933.65,2933.65,2933.65,2933.65,1 +1767038196000,2933.65,2933.65,2933.65,2933.65,1 +1767038197000,2933.65,2933.65,2933.65,2933.65,1 +1767038199000,2933.65,2933.65,2933.65,2933.65,2 +1767038201000,2933.65,2933.65,2933.65,2933.65,1 +1767038202000,2933.65,2933.65,2933.65,2933.65,2 +1767038203000,2933.65,2933.65,2933.65,2933.65,1 +1767038204000,2933.65,2933.65,2933.65,2933.65,1 +1767038205000,2933.65,2933.65,2933.65,2933.65,1 +1767038206000,2933.65,2933.65,2933.65,2933.65,1 +1767038207000,2933.65,2933.65,2933.65,2933.65,1 +1767038209000,2933.65,2933.65,2933.65,2933.65,1 +1767038210000,2933.65,2933.65,2933.65,2933.65,1 +1767038211000,2933.05,2933.05,2933.05,2933.05,1 +1767038212000,2933.05,2933.05,2933.05,2933.05,1 +1767038213000,2933.05,2933.05,2933.05,2933.05,1 +1767038214000,2933.05,2933.05,2933.05,2933.05,1 +1767038215000,2933.05,2933.05,2933.05,2933.05,1 +1767038216000,2933.05,2933.05,2933.05,2933.05,1 +1767038217000,2933.05,2933.05,2933.05,2933.05,1 +1767038218000,2932.8,2932.8,2932.8,2932.8,1 +1767038219000,2932.75,2932.75,2932.75,2932.75,1 +1767038220000,2932.75,2932.75,2932.75,2932.75,1 +1767038221000,2932.75,2932.75,2932.75,2932.75,1 +1767038222000,2932.75,2932.75,2932.75,2932.75,1 +1767038223000,2932.55,2932.55,2932.55,2932.55,1 +1767038224000,2932.45,2932.45,2932.45,2932.45,1 +1767038225000,2932.45,2932.45,2932.45,2932.45,1 +1767038226000,2932.45,2932.45,2932.45,2932.45,1 +1767038227000,2932.45,2932.45,2932.45,2932.45,1 +1767038228000,2932.45,2932.45,2932.45,2932.45,1 +1767038230000,2932.45,2932.45,2932.45,2932.45,2 +1767038231000,2932.45,2932.45,2932.45,2932.45,1 +1767038232000,2932.45,2932.45,2932.45,2932.45,1 +1767038233000,2932.35,2932.35,2932.35,2932.35,1 +1767038235000,2932.35,2932.35,2932.35,2932.35,2 +1767038236000,2932.35,2932.35,2932.35,2932.35,1 +1767038237000,2932.35,2932.35,2932.35,2932.35,1 +1767038238000,2932.35,2932.35,2932.35,2932.35,1 +1767038240000,2932.35,2932.35,2932.35,2932.35,2 +1767038241000,2932.35,2932.35,2932.35,2932.35,1 +1767038242000,2932.35,2932.35,2932.35,2932.35,1 +1767038243000,2932.35,2932.35,2932.35,2932.35,1 +1767038245000,2932.25,2932.25,2932.25,2932.25,2 +1767038246000,2932.25,2932.25,2932.25,2932.25,1 +1767038247000,2932.25,2932.25,2932.25,2932.25,1 +1767038249000,2932.25,2932.25,2932.25,2932.25,1 +1767038250000,2932.25,2932.25,2932.25,2932.25,1 +1767038251000,2932.25,2932.25,2932.25,2932.25,1 +1767038252000,2932.25,2932.25,2932.25,2932.25,1 +1767038253000,2932.25,2932.25,2932.25,2932.25,2 +1767038255000,2932.25,2932.25,2932.25,2932.25,1 +1767038256000,2932.25,2932.25,2932.25,2932.25,1 +1767038257000,2932.25,2932.25,2932.25,2932.25,1 +1767038258000,2932.25,2932.25,2932.25,2932.25,1 +1767038259000,2932.25,2932.25,2932.25,2932.25,1 +1767038260000,2932.25,2932.25,2932.25,2932.25,1 +1767038261000,2932.25,2932.25,2932.25,2932.25,1 +1767038262000,2932.25,2932.25,2932.25,2932.25,1 +1767038263000,2932.25,2932.25,2932.25,2932.25,1 +1767038264000,2932.25,2932.25,2932.25,2932.25,1 +1767038265000,2932.25,2932.25,2932.25,2932.25,1 +1767038266000,2932.25,2932.25,2932.25,2932.25,1 +1767038267000,2932.25,2932.25,2932.25,2932.25,1 +1767038268000,2932.25,2932.25,2932.25,2932.25,1 +1767038269000,2932.25,2932.25,2932.25,2932.25,1 +1767038270000,2932.25,2932.25,2932.25,2932.25,1 +1767038271000,2932.25,2932.25,2932.25,2932.25,1 +1767038272000,2932.25,2932.25,2932.25,2932.25,1 +1767038273000,2932.25,2932.25,2932.25,2932.25,1 +1767038274000,2932.25,2932.25,2932.25,2932.25,1 +1767038275000,2932.25,2932.25,2932.25,2932.25,1 +1767038276000,2932.25,2932.25,2932.25,2932.25,1 +1767038277000,2932.25,2932.25,2932.25,2932.25,1 +1767038278000,2932.25,2932.25,2932.25,2932.25,1 +1767038280000,2932.25,2932.25,2932.25,2932.25,2 +1767038281000,2932.25,2932.25,2932.25,2932.25,1 +1767038282000,2931.85,2931.85,2931.85,2931.85,1 +1767038283000,2931.85,2931.85,2931.85,2931.85,1 +1767038285000,2931.85,2931.85,2931.85,2931.85,2 +1767038286000,2931.65,2931.65,2931.65,2931.65,1 +1767038287000,2931.65,2931.65,2931.65,2931.65,1 +1767038288000,2931.65,2931.65,2931.65,2931.65,1 +1767038290000,2931.65,2931.65,2931.65,2931.65,1 +1767038291000,2931.65,2931.65,2931.65,2931.65,1 +1767038292000,2931.65,2931.65,2931.65,2931.65,1 +1767038293000,2931.65,2931.65,2931.65,2931.65,1 +1767038294000,2931.65,2931.65,2931.65,2931.65,1 +1767038295000,2931.65,2931.65,2931.65,2931.65,1 +1767038296000,2931.65,2931.65,2931.65,2931.65,1 +1767038297000,2931.65,2931.65,2931.65,2931.65,1 +1767038298000,2931.65,2931.65,2931.65,2931.65,1 +1767038299000,2931.65,2931.65,2931.65,2931.65,1 +1767038300000,2931.65,2931.65,2931.65,2931.65,1 +1767038301000,2931.65,2931.65,2931.65,2931.65,1 +1767038302000,2931.65,2931.65,2931.65,2931.65,1 +1767038303000,2931.65,2931.65,2931.65,2931.65,1 +1767038304000,2931.65,2931.65,2931.65,2931.65,1 +1767038305000,2931.65,2931.65,2931.65,2931.65,1 +1767038306000,2931.65,2931.65,2931.65,2931.65,1 +1767038307000,2931.65,2931.65,2931.65,2931.65,1 +1767038308000,2931.65,2931.65,2931.65,2931.65,1 +1767038309000,2931.65,2931.65,2931.65,2931.65,1 +1767038310000,2931.65,2931.65,2931.65,2931.65,1 +1767038311000,2931.65,2931.65,2931.65,2931.65,1 +1767038312000,2931.65,2931.65,2931.65,2931.65,1 +1767038313000,2931.65,2931.65,2931.65,2931.65,1 +1767038314000,2931.65,2931.65,2931.65,2931.65,1 +1767038315000,2931.65,2931.65,2931.65,2931.65,1 +1767038316000,2931.65,2931.65,2931.65,2931.65,1 +1767038317000,2931.65,2931.65,2931.65,2931.65,1 +1767038318000,2931.65,2931.65,2931.65,2931.65,1 +1767038319000,2931.65,2931.65,2931.65,2931.65,1 +1767038320000,2931.65,2931.65,2931.65,2931.65,1 +1767038321000,2931.35,2931.35,2931.35,2931.35,1 +1767038322000,2931.35,2931.35,2931.35,2931.35,1 +1767038324000,2931.35,2931.35,2931.35,2931.35,2 +1767038326000,2931.35,2931.35,2931.35,2931.35,1 +1767038327000,2931.35,2931.35,2931.35,2931.35,2 +1767038329000,2931.35,2931.35,2931.35,2931.35,1 +1767038330000,2931.35,2931.35,2931.35,2931.35,1 +1767038331000,2931.35,2931.35,2931.35,2931.35,2 +1767038333000,2931.15,2931.15,2931.15,2931.15,1 +1767038334000,2931.15,2931.15,2931.15,2931.15,1 +1767038335000,2931.1,2931.1,2931.1,2931.1,1 +1767038336000,2931.05,2931.05,2931.05,2931.05,1 +1767038337000,2930.75,2930.75,2930.75,2930.75,1 +1767038338000,2930.75,2930.75,2930.75,2930.75,1 +1767038339000,2930.75,2930.75,2930.75,2930.75,1 +1767038340000,2930.75,2930.75,2930.75,2930.75,1 +1767038341000,2930.75,2930.75,2930.75,2930.75,1 +1767038342000,2930.75,2930.75,2930.75,2930.75,1 +1767038343000,2930.75,2930.75,2930.75,2930.75,1 +1767038344000,2930.75,2930.75,2930.75,2930.75,1 +1767038345000,2930.75,2930.75,2930.75,2930.75,1 +1767038346000,2930.75,2930.75,2930.75,2930.75,1 +1767038347000,2930.75,2930.75,2930.75,2930.75,1 +1767038348000,2930.75,2930.75,2930.75,2930.75,1 +1767038349000,2930.75,2930.75,2930.75,2930.75,1 +1767038351000,2930.75,2930.75,2930.75,2930.75,2 +1767038352000,2930.75,2930.75,2930.75,2930.75,1 +1767038353000,2930.75,2930.75,2930.75,2930.75,1 +1767038354000,2930.75,2930.75,2930.75,2930.75,1 +1767038356000,2930.75,2930.75,2930.75,2930.75,2 +1767038357000,2930.75,2930.75,2930.75,2930.75,1 +1767038358000,2930.75,2930.75,2930.75,2930.75,1 +1767038359000,2930.75,2930.75,2930.75,2930.75,1 +1767038361000,2930.75,2930.75,2930.75,2930.75,1 +1767038362000,2930.75,2930.75,2930.75,2930.75,2 +1767038363000,2930.75,2930.75,2930.75,2930.75,1 +1767038364000,2930.75,2930.75,2930.75,2930.75,1 +1767038366000,2930.75,2930.75,2930.75,2930.75,2 +1767038368000,2930.75,2930.75,2930.75,2930.75,1 +1767038369000,2930.75,2930.75,2930.75,2930.75,1 +1767038370000,2930.75,2930.75,2930.75,2930.75,1 +1767038371000,2930.75,2930.75,2930.75,2930.75,2 +1767038373000,2930.85,2930.85,2930.85,2930.85,1 +1767038374000,2930.85,2930.85,2930.85,2930.85,1 +1767038375000,2930.85,2930.85,2930.85,2930.85,1 +1767038376000,2930.85,2930.85,2930.85,2930.85,1 +1767038377000,2930.85,2930.85,2930.85,2930.85,1 +1767038378000,2930.85,2930.85,2930.85,2930.85,1 +1767038379000,2930.85,2930.85,2930.85,2930.85,1 +1767038380000,2930.75,2930.75,2930.75,2930.75,1 +1767038381000,2930.75,2930.75,2930.75,2930.75,1 +1767038382000,2930.8,2930.8,2930.8,2930.8,1 +1767038383000,2930.85,2930.85,2930.85,2930.85,1 +1767038384000,2930.85,2930.85,2930.85,2930.85,1 +1767038385000,2930.85,2930.85,2930.85,2930.85,1 +1767038386000,2930.85,2930.85,2930.85,2930.85,1 +1767038387000,2930.85,2930.85,2930.85,2930.85,1 +1767038388000,2930.85,2930.85,2930.85,2930.85,1 +1767038389000,2930.85,2930.85,2930.85,2930.85,1 +1767038390000,2930.85,2930.85,2930.85,2930.85,1 +1767038391000,2930.85,2930.85,2930.85,2930.85,1 +1767038392000,2930.85,2930.85,2930.85,2930.85,1 +1767038393000,2930.85,2930.85,2930.85,2930.85,1 +1767038394000,2930.85,2930.85,2930.85,2930.85,1 +1767038395000,2930.85,2930.85,2930.85,2930.85,1 +1767038396000,2931.05,2931.05,2931.05,2931.05,1 +1767038397000,2931.05,2931.05,2931.05,2931.05,1 +1767038398000,2931.05,2931.05,2931.05,2931.05,1 +1767038399000,2931.05,2931.05,2931.05,2931.05,1 +1767038402000,2930.7,2930.7,2930.7,2930.7,1 +1767038403000,2930.55,2930.55,2930.55,2930.55,1 +1767038404000,2930.55,2930.55,2930.55,2930.55,3 +1767038406000,2930.55,2930.55,2930.55,2930.55,1 +1767038407000,2930.55,2930.55,2930.55,2930.55,1 +1767038408000,2930.55,2930.55,2930.55,2930.55,1 +1767038409000,2930.55,2930.55,2930.55,2930.55,1 +1767038410000,2930.55,2930.55,2930.55,2930.55,1 +1767038411000,2930.55,2930.55,2930.55,2930.55,1 +1767038412000,2930.55,2930.55,2930.55,2930.55,1 +1767038413000,2930.55,2930.55,2930.55,2930.55,1 +1767038414000,2930.55,2930.55,2930.55,2930.55,1 +1767038415000,2930.55,2930.55,2930.55,2930.55,1 +1767038416000,2930.55,2930.55,2930.55,2930.55,1 +1767038417000,2930.55,2930.55,2930.55,2930.55,1 +1767038418000,2930.55,2930.55,2930.55,2930.55,1 +1767038419000,2930.55,2930.55,2930.55,2930.55,1 +1767038420000,2930.55,2930.55,2930.55,2930.55,1 +1767038421000,2930.55,2930.55,2930.55,2930.55,1 +1767038422000,2930.55,2930.55,2930.55,2930.55,1 +1767038423000,2930.55,2930.55,2930.55,2930.55,1 +1767038424000,2930.55,2930.55,2930.55,2930.55,1 +1767038425000,2930.55,2930.55,2930.55,2930.55,1 +1767038426000,2930.55,2930.55,2930.55,2930.55,1 +1767038427000,2930.55,2930.55,2930.55,2930.55,1 +1767038428000,2930.25,2930.25,2930.25,2930.25,1 +1767038429000,2930.0,2930.0,2930.0,2930.0,1 +1767038430000,2929.75,2929.75,2929.75,2929.75,1 +1767038431000,2929.55,2929.55,2929.55,2929.55,1 +1767038432000,2929.55,2929.55,2929.55,2929.55,1 +1767038433000,2929.55,2929.55,2929.55,2929.55,1 +1767038434000,2929.55,2929.55,2929.55,2929.55,1 +1767038435000,2929.55,2929.55,2929.55,2929.55,1 +1767038436000,2929.65,2929.65,2929.65,2929.65,1 +1767038437000,2929.55,2929.55,2929.55,2929.55,1 +1767038438000,2929.55,2929.55,2929.55,2929.55,1 +1767038439000,2929.55,2929.55,2929.55,2929.55,1 +1767038440000,2929.55,2929.55,2929.55,2929.55,1 +1767038442000,2929.55,2929.55,2929.55,2929.55,1 +1767038443000,2929.55,2929.55,2929.55,2929.55,1 +1767038444000,2929.55,2929.55,2929.55,2929.55,1 +1767038445000,2929.55,2929.55,2929.55,2929.55,1 +1767038446000,2929.55,2929.55,2929.55,2929.55,1 +1767038447000,2929.55,2929.55,2929.55,2929.55,1 +1767038448000,2929.55,2929.55,2929.55,2929.55,1 +1767038449000,2929.55,2929.55,2929.55,2929.55,1 +1767038450000,2929.55,2929.55,2929.55,2929.55,1 +1767038451000,2929.55,2929.55,2929.55,2929.55,1 +1767038452000,2929.55,2929.55,2929.55,2929.55,1 +1767038453000,2929.55,2929.55,2929.55,2929.55,1 +1767038454000,2929.25,2929.25,2929.25,2929.25,1 +1767038455000,2929.25,2929.25,2929.25,2929.25,1 +1767038456000,2929.25,2929.25,2929.25,2929.25,1 +1767038457000,2929.15,2929.15,2929.15,2929.15,1 +1767038458000,2929.15,2929.15,2929.15,2929.15,1 +1767038459000,2929.15,2929.15,2929.15,2929.15,1 +1767038460000,2929.15,2929.15,2929.15,2929.15,1 +1767038461000,2929.15,2929.15,2929.15,2929.15,1 +1767038462000,2929.15,2929.15,2929.15,2929.15,1 +1767038463000,2929.25,2929.25,2929.25,2929.25,1 +1767038464000,2929.3,2929.3,2929.3,2929.3,1 +1767038465000,2929.45,2929.45,2929.45,2929.45,1 +1767038466000,2929.45,2929.45,2929.45,2929.45,1 +1767038467000,2929.55,2929.55,2929.55,2929.55,1 +1767038468000,2929.55,2929.55,2929.55,2929.55,1 +1767038469000,2929.55,2929.55,2929.55,2929.55,1 +1767038470000,2929.55,2929.55,2929.55,2929.55,1 +1767038471000,2929.55,2929.55,2929.55,2929.55,1 +1767038472000,2929.55,2929.55,2929.55,2929.55,1 +1767038473000,2929.55,2929.55,2929.55,2929.55,1 +1767038474000,2929.55,2929.55,2929.55,2929.55,1 +1767038475000,2929.55,2929.55,2929.55,2929.55,1 +1767038477000,2929.55,2929.55,2929.55,2929.55,2 +1767038478000,2929.55,2929.55,2929.55,2929.55,1 +1767038479000,2929.55,2929.55,2929.55,2929.55,1 +1767038480000,2929.55,2929.55,2929.55,2929.55,1 +1767038481000,2929.55,2929.55,2929.55,2929.55,1 +1767038482000,2929.55,2929.55,2929.55,2929.55,1 +1767038483000,2929.15,2929.15,2929.15,2929.15,1 +1767038484000,2928.55,2928.55,2928.55,2928.55,1 +1767038485000,2928.55,2928.55,2928.55,2928.55,1 +1767038487000,2928.55,2928.55,2928.55,2928.55,1 +1767038488000,2928.55,2928.55,2928.55,2928.55,1 +1767038489000,2928.55,2928.55,2928.55,2928.55,1 +1767038490000,2928.55,2928.95,2928.55,2928.95,2 +1767038492000,2928.95,2928.95,2928.95,2928.95,1 +1767038493000,2928.95,2928.95,2928.95,2928.95,1 +1767038494000,2929.25,2929.25,2929.25,2929.25,1 +1767038495000,2929.25,2929.25,2929.25,2929.25,1 +1767038496000,2929.25,2929.25,2929.25,2929.25,1 +1767038497000,2929.25,2929.25,2929.25,2929.25,1 +1767038498000,2929.45,2929.45,2929.45,2929.45,1 +1767038499000,2929.45,2929.45,2929.45,2929.45,1 +1767038500000,2929.45,2929.45,2929.45,2929.45,1 +1767038501000,2929.45,2929.45,2929.45,2929.45,1 +1767038502000,2929.45,2929.45,2929.45,2929.45,1 +1767038503000,2929.45,2929.45,2929.45,2929.45,1 +1767038504000,2929.45,2929.45,2929.45,2929.45,1 +1767038505000,2929.95,2929.95,2929.95,2929.95,1 +1767038506000,2929.95,2929.95,2929.95,2929.95,1 +1767038507000,2929.95,2929.95,2929.95,2929.95,1 +1767038508000,2929.95,2929.95,2929.95,2929.95,1 +1767038509000,2930.45,2930.45,2930.45,2930.45,1 +1767038510000,2930.65,2930.65,2930.65,2930.65,1 +1767038511000,2930.65,2930.65,2930.65,2930.65,1 +1767038512000,2930.65,2930.65,2930.65,2930.65,1 +1767038513000,2930.65,2930.65,2930.65,2930.65,1 +1767038514000,2930.65,2930.65,2930.65,2930.65,1 +1767038515000,2930.65,2930.65,2930.65,2930.65,1 +1767038516000,2931.15,2931.15,2931.15,2931.15,1 +1767038517000,2930.85,2930.85,2930.85,2930.85,1 +1767038518000,2930.45,2930.45,2930.45,2930.45,1 +1767038519000,2930.35,2930.35,2930.35,2930.35,1 +1767038520000,2930.35,2930.35,2930.35,2930.35,1 +1767038522000,2930.35,2930.35,2930.15,2930.15,2 +1767038523000,2930.15,2930.15,2930.15,2930.15,1 +1767038524000,2930.15,2930.15,2930.15,2930.15,1 +1767038525000,2930.15,2930.15,2930.15,2930.15,1 +1767038527000,2930.15,2930.15,2930.15,2930.15,2 +1767038529000,2930.15,2930.15,2930.15,2930.15,1 +1767038530000,2930.15,2930.15,2930.15,2930.15,2 +1767038532000,2930.15,2930.15,2930.15,2930.15,1 +1767038533000,2930.1,2930.1,2930.1,2930.1,1 +1767038534000,2930.05,2930.05,2930.05,2930.05,1 +1767038535000,2930.05,2930.05,2930.05,2930.05,1 +1767038536000,2930.05,2930.05,2930.05,2930.05,1 +1767038537000,2930.05,2930.05,2930.05,2930.05,1 +1767038538000,2930.05,2930.05,2930.05,2930.05,1 +1767038539000,2930.05,2930.05,2930.05,2930.05,1 +1767038540000,2929.8,2929.8,2929.8,2929.8,1 +1767038541000,2929.25,2929.25,2929.25,2929.25,1 +1767038542000,2929.25,2929.25,2929.25,2929.25,1 +1767038543000,2928.75,2928.75,2928.75,2928.75,1 +1767038544000,2928.45,2928.45,2928.45,2928.45,1 +1767038545000,2928.45,2928.45,2928.45,2928.45,1 +1767038546000,2928.45,2928.45,2928.45,2928.45,1 +1767038547000,2928.45,2928.45,2928.45,2928.45,1 +1767038548000,2928.85,2928.85,2928.85,2928.85,1 +1767038549000,2928.85,2928.85,2928.85,2928.85,1 +1767038550000,2929.05,2929.05,2929.05,2929.05,1 +1767038551000,2929.05,2929.05,2929.05,2929.05,1 +1767038552000,2929.05,2929.05,2929.05,2929.05,1 +1767038553000,2929.05,2929.05,2929.05,2929.05,1 +1767038554000,2929.2,2929.2,2929.2,2929.2,1 +1767038555000,2929.35,2929.35,2929.35,2929.35,1 +1767038556000,2929.65,2929.65,2929.65,2929.65,1 +1767038557000,2929.65,2929.65,2929.65,2929.65,1 +1767038558000,2929.65,2929.65,2929.65,2929.65,1 +1767038559000,2929.85,2929.85,2929.85,2929.85,1 +1767038560000,2929.95,2929.95,2929.95,2929.95,1 +1767038561000,2929.95,2929.95,2929.95,2929.95,1 +1767038562000,2929.95,2929.95,2929.95,2929.95,1 +1767038563000,2929.95,2929.95,2929.95,2929.95,1 +1767038564000,2929.95,2929.95,2929.95,2929.95,1 +1767038565000,2929.95,2929.95,2929.95,2929.95,1 +1767038567000,2929.95,2929.95,2929.95,2929.95,1 +1767038568000,2929.95,2929.95,2929.95,2929.95,1 +1767038569000,2929.95,2929.95,2929.95,2929.95,1 +1767038570000,2929.95,2929.95,2929.95,2929.95,1 +1767038571000,2929.95,2929.95,2929.95,2929.95,1 +1767038572000,2930.15,2930.15,2930.15,2930.15,1 +1767038573000,2930.55,2930.55,2930.55,2930.55,1 +1767038574000,2930.55,2930.55,2930.55,2930.55,1 +1767038575000,2930.55,2930.55,2930.55,2930.55,1 +1767038576000,2930.55,2930.55,2930.55,2930.55,1 +1767038577000,2930.55,2930.55,2930.55,2930.55,1 +1767038578000,2930.75,2930.75,2930.75,2930.75,1 +1767038579000,2930.95,2930.95,2930.95,2930.95,1 +1767038580000,2931.15,2931.15,2931.15,2931.15,1 +1767038581000,2931.15,2931.15,2931.15,2931.15,1 +1767038582000,2931.15,2931.15,2931.15,2931.15,1 +1767038583000,2930.95,2930.95,2930.95,2930.95,1 +1767038584000,2930.85,2930.85,2930.85,2930.85,1 +1767038585000,2930.85,2930.85,2930.85,2930.85,1 +1767038586000,2930.85,2930.85,2930.85,2930.85,1 +1767038588000,2930.85,2930.85,2930.65,2930.65,2 +1767038589000,2930.65,2930.65,2930.65,2930.65,1 +1767038590000,2930.65,2930.65,2930.65,2930.65,1 +1767038591000,2930.65,2930.65,2930.65,2930.65,1 +1767038592000,2930.65,2930.65,2930.65,2930.65,1 +1767038593000,2930.65,2930.65,2930.65,2930.65,1 +1767038594000,2930.65,2930.65,2930.65,2930.65,1 +1767038595000,2930.65,2930.65,2930.65,2930.65,1 +1767038596000,2930.65,2930.65,2930.65,2930.65,1 +1767038597000,2930.65,2930.65,2930.65,2930.65,1 +1767038598000,2930.65,2930.65,2930.65,2930.65,1 +1767038599000,2931.25,2931.25,2931.25,2931.25,1 +1767038600000,2931.25,2931.25,2931.25,2931.25,1 +1767038601000,2931.25,2931.25,2931.25,2931.25,1 +1767038602000,2931.55,2931.55,2931.55,2931.55,1 +1767038603000,2931.95,2931.95,2931.95,2931.95,1 +1767038604000,2932.15,2932.15,2932.15,2932.15,1 +1767038605000,2932.15,2932.15,2932.15,2932.15,1 +1767038606000,2932.15,2932.15,2932.15,2932.15,1 +1767038607000,2932.15,2932.15,2932.15,2932.15,1 +1767038608000,2932.35,2932.35,2932.35,2932.35,1 +1767038609000,2932.35,2932.35,2932.35,2932.35,1 +1767038610000,2932.35,2932.35,2932.35,2932.35,1 +1767038611000,2932.35,2932.35,2932.35,2932.35,1 +1767038613000,2932.35,2932.35,2932.35,2932.35,1 +1767038614000,2932.35,2932.35,2932.35,2932.35,1 +1767038615000,2932.35,2932.35,2932.35,2932.35,1 +1767038616000,2932.35,2932.35,2932.35,2932.35,1 +1767038617000,2932.35,2932.35,2932.35,2932.35,1 +1767038618000,2932.55,2932.55,2932.55,2932.55,1 +1767038619000,2932.55,2932.55,2932.55,2932.55,1 +1767038620000,2932.55,2932.55,2932.55,2932.55,1 +1767038621000,2932.55,2932.55,2932.55,2932.55,1 +1767038622000,2932.55,2932.55,2932.55,2932.55,1 +1767038623000,2932.05,2932.05,2932.05,2932.05,1 +1767038624000,2931.85,2931.85,2931.85,2931.85,1 +1767038625000,2931.75,2931.75,2931.75,2931.75,1 +1767038626000,2931.75,2931.75,2931.75,2931.75,1 +1767038627000,2931.75,2931.75,2931.75,2931.75,1 +1767038628000,2931.75,2931.75,2931.75,2931.75,1 +1767038629000,2931.75,2931.75,2931.75,2931.75,1 +1767038630000,2931.75,2931.75,2931.75,2931.75,1 +1767038631000,2931.75,2931.75,2931.75,2931.75,1 +1767038632000,2931.75,2931.75,2931.75,2931.75,1 +1767038633000,2931.75,2931.75,2931.75,2931.75,1 +1767038634000,2931.75,2931.75,2931.75,2931.75,1 +1767038635000,2931.95,2931.95,2931.95,2931.95,1 +1767038637000,2932.15,2932.15,2932.15,2932.15,1 +1767038638000,2932.15,2932.15,2932.15,2932.15,2 +1767038640000,2932.15,2932.15,2932.15,2932.15,1 +1767038641000,2931.85,2931.85,2931.85,2931.85,2 +1767038643000,2931.85,2931.85,2931.85,2931.85,1 +1767038644000,2931.75,2931.75,2931.75,2931.75,1 +1767038645000,2931.75,2931.75,2931.75,2931.75,1 +1767038646000,2931.75,2931.75,2931.75,2931.75,1 +1767038647000,2931.75,2931.75,2931.75,2931.75,1 +1767038648000,2931.75,2931.75,2931.75,2931.75,1 +1767038649000,2931.75,2931.75,2931.75,2931.75,1 +1767038650000,2931.75,2931.75,2931.75,2931.75,1 +1767038651000,2931.75,2931.75,2931.75,2931.75,1 +1767038652000,2931.75,2931.75,2931.75,2931.75,1 +1767038653000,2931.75,2931.75,2931.75,2931.75,1 +1767038654000,2931.75,2931.75,2931.75,2931.75,1 +1767038655000,2931.75,2931.75,2931.75,2931.75,1 +1767038656000,2931.75,2931.75,2931.75,2931.75,1 +1767038657000,2931.75,2931.75,2931.75,2931.75,1 +1767038658000,2931.75,2931.75,2931.75,2931.75,1 +1767038659000,2931.75,2931.75,2931.75,2931.75,1 +1767038660000,2931.75,2931.75,2931.75,2931.75,1 +1767038661000,2931.75,2931.75,2931.75,2931.75,1 +1767038662000,2931.75,2931.75,2931.75,2931.75,1 +1767038663000,2931.75,2931.75,2931.75,2931.75,1 +1767038664000,2931.75,2931.75,2931.75,2931.75,1 +1767038665000,2931.75,2931.75,2931.75,2931.75,1 +1767038666000,2931.75,2931.75,2931.75,2931.75,1 +1767038667000,2931.75,2931.75,2931.75,2931.75,1 +1767038669000,2931.75,2931.75,2931.75,2931.75,2 +1767038670000,2931.75,2931.75,2931.75,2931.75,1 +1767038671000,2931.75,2931.75,2931.75,2931.75,1 +1767038672000,2931.75,2931.75,2931.75,2931.75,1 +1767038673000,2931.85,2931.85,2931.85,2931.85,1 +1767038674000,2932.25,2932.25,2932.25,2932.25,1 +1767038675000,2932.55,2932.55,2932.55,2932.55,1 +1767038676000,2932.65,2932.65,2932.65,2932.65,1 +1767038678000,2932.65,2932.65,2932.65,2932.65,1 +1767038679000,2932.75,2932.75,2932.75,2932.75,2 +1767038681000,2932.75,2932.75,2932.75,2932.75,1 +1767038682000,2932.75,2932.75,2932.75,2932.75,1 +1767038683000,2932.75,2932.75,2932.45,2932.45,2 +1767038685000,2932.45,2932.45,2932.45,2932.45,1 +1767038686000,2932.45,2932.45,2932.45,2932.45,1 +1767038687000,2931.85,2931.85,2931.85,2931.85,1 +1767038688000,2931.85,2931.85,2931.85,2931.85,1 +1767038689000,2931.85,2931.85,2931.85,2931.85,1 +1767038690000,2931.75,2931.75,2931.75,2931.75,1 +1767038691000,2931.75,2931.75,2931.75,2931.75,1 +1767038692000,2931.75,2931.75,2931.75,2931.75,1 +1767038693000,2931.75,2931.75,2931.75,2931.75,1 +1767038694000,2931.75,2931.75,2931.75,2931.75,1 +1767038695000,2931.75,2931.75,2931.75,2931.75,1 +1767038696000,2931.75,2931.75,2931.75,2931.75,1 +1767038697000,2931.6,2931.6,2931.6,2931.6,1 +1767038698000,2931.25,2931.25,2931.25,2931.25,1 +1767038699000,2931.25,2931.25,2931.25,2931.25,1 +1767038700000,2931.25,2931.25,2931.25,2931.25,1 +1767038701000,2931.25,2931.25,2931.25,2931.25,1 +1767038702000,2931.25,2931.25,2931.25,2931.25,1 +1767038703000,2931.25,2931.25,2931.25,2931.25,1 +1767038704000,2931.25,2931.25,2931.25,2931.25,1 +1767038705000,2931.25,2931.25,2931.25,2931.25,1 +1767038706000,2931.25,2931.25,2931.25,2931.25,1 +1767038707000,2931.2,2931.2,2931.2,2931.2,1 +1767038709000,2931.05,2931.05,2931.05,2931.05,1 +1767038710000,2930.75,2930.75,2930.75,2930.75,1 +1767038711000,2930.75,2930.75,2930.75,2930.75,1 +1767038712000,2930.45,2930.45,2930.45,2930.45,1 +1767038713000,2930.45,2930.45,2930.45,2930.45,2 +1767038715000,2930.45,2930.45,2930.45,2930.45,2 +1767038717000,2930.45,2930.45,2930.45,2930.45,1 +1767038718000,2930.45,2930.45,2930.45,2930.45,1 +1767038719000,2930.45,2930.45,2930.45,2930.45,1 +1767038720000,2930.45,2930.45,2930.45,2930.45,1 +1767038721000,2930.45,2930.45,2930.45,2930.45,1 +1767038722000,2930.45,2930.45,2930.45,2930.45,1 +1767038723000,2930.45,2930.45,2930.45,2930.45,1 +1767038724000,2930.45,2930.45,2930.45,2930.45,1 +1767038725000,2930.45,2930.45,2930.45,2930.45,1 +1767038726000,2930.45,2930.45,2930.45,2930.45,1 +1767038727000,2930.45,2930.45,2930.45,2930.45,1 +1767038728000,2930.45,2930.45,2930.45,2930.45,1 +1767038729000,2930.45,2930.45,2930.45,2930.45,1 +1767038730000,2930.45,2930.45,2930.45,2930.45,1 +1767038731000,2930.85,2930.85,2930.85,2930.85,1 +1767038732000,2930.75,2930.75,2930.75,2930.75,1 +1767038733000,2930.75,2930.75,2930.75,2930.75,1 +1767038734000,2930.75,2930.75,2930.75,2930.75,1 +1767038735000,2930.15,2930.15,2930.15,2930.15,1 +1767038736000,2930.15,2930.15,2930.15,2930.15,1 +1767038737000,2930.15,2930.15,2930.15,2930.15,1 +1767038738000,2930.35,2930.35,2930.35,2930.35,1 +1767038739000,2931.15,2931.15,2931.15,2931.15,1 +1767038740000,2930.9,2930.9,2930.9,2930.9,1 +1767038741000,2930.65,2930.65,2930.65,2930.65,1 +1767038742000,2930.65,2930.65,2930.65,2930.65,1 +1767038743000,2930.65,2930.65,2930.65,2930.65,1 +1767038744000,2930.85,2930.85,2930.85,2930.85,1 +1767038745000,2931.05,2931.05,2931.05,2931.05,1 +1767038746000,2930.85,2930.85,2930.85,2930.85,1 +1767038747000,2930.85,2930.85,2930.85,2930.85,1 +1767038749000,2930.85,2930.85,2930.85,2930.85,1 +1767038750000,2930.85,2930.85,2930.85,2930.85,2 +1767038751000,2930.85,2930.85,2930.85,2930.85,1 +1767038752000,2930.85,2930.85,2930.85,2930.85,1 +1767038754000,2930.85,2930.85,2930.85,2930.85,1 +1767038755000,2930.85,2930.85,2930.85,2930.85,1 +1767038756000,2930.85,2930.85,2930.85,2930.85,1 +1767038757000,2930.85,2930.85,2930.85,2930.85,1 +1767038758000,2930.75,2930.75,2930.75,2930.75,1 +1767038759000,2930.75,2930.75,2930.75,2930.75,1 +1767038760000,2930.75,2930.75,2930.75,2930.75,1 +1767038761000,2930.75,2930.75,2930.75,2930.75,1 +1767038762000,2930.75,2930.75,2930.75,2930.75,1 +1767038763000,2930.75,2930.75,2930.75,2930.75,1 +1767038764000,2930.75,2930.75,2930.75,2930.75,1 +1767038765000,2930.75,2930.75,2930.75,2930.75,1 +1767038766000,2930.75,2930.75,2930.75,2930.75,1 +1767038767000,2930.75,2930.75,2930.75,2930.75,1 +1767038768000,2930.75,2930.75,2930.75,2930.75,1 +1767038769000,2930.75,2930.75,2930.75,2930.75,1 +1767038770000,2930.75,2930.75,2930.75,2930.75,1 +1767038771000,2930.75,2930.75,2930.75,2930.75,1 +1767038772000,2930.75,2930.75,2930.75,2930.75,1 +1767038774000,2930.75,2931.25,2930.75,2931.25,2 +1767038775000,2931.85,2931.85,2931.85,2931.85,1 +1767038776000,2932.05,2932.05,2932.05,2932.05,1 +1767038777000,2932.05,2932.05,2932.05,2932.05,1 +1767038779000,2932.05,2932.05,2932.05,2932.05,2 +1767038781000,2932.05,2932.05,2932.05,2932.05,1 +1767038782000,2931.65,2931.65,2931.65,2931.65,1 +1767038783000,2931.65,2931.65,2931.65,2931.65,1 +1767038784000,2931.65,2931.65,2931.65,2931.65,1 +1767038785000,2931.55,2931.55,2931.55,2931.55,1 +1767038786000,2931.55,2931.55,2931.55,2931.55,1 +1767038787000,2931.55,2931.55,2931.55,2931.55,1 +1767038788000,2931.05,2931.05,2931.05,2931.05,1 +1767038789000,2930.75,2930.75,2930.75,2930.75,1 +1767038790000,2930.55,2930.55,2930.55,2930.55,1 +1767038791000,2930.55,2930.55,2930.55,2930.55,1 +1767038792000,2930.05,2930.05,2930.05,2930.05,1 +1767038793000,2929.85,2929.85,2929.85,2929.85,1 +1767038794000,2929.45,2929.45,2929.45,2929.45,1 +1767038795000,2929.15,2929.15,2929.15,2929.15,1 +1767038796000,2929.15,2929.15,2929.15,2929.15,1 +1767038797000,2929.45,2929.45,2929.45,2929.45,1 +1767038799000,2929.85,2930.05,2929.85,2930.05,2 +1767038800000,2930.15,2930.15,2930.15,2930.15,1 +1767038801000,2930.15,2930.15,2930.15,2930.15,1 +1767038802000,2930.15,2930.15,2930.15,2930.15,1 +1767038804000,2930.15,2930.15,2930.15,2930.15,2 +1767038805000,2930.15,2930.15,2930.15,2930.15,1 +1767038806000,2930.15,2930.15,2930.15,2930.15,1 +1767038807000,2930.15,2930.15,2930.15,2930.15,1 +1767038809000,2930.3,2930.75,2930.3,2930.75,2 +1767038811000,2930.85,2930.85,2930.85,2930.85,1 +1767038812000,2930.85,2930.85,2930.85,2930.85,1 +1767038813000,2930.85,2930.85,2930.85,2930.85,1 +1767038814000,2930.85,2930.85,2930.85,2930.85,1 +1767038815000,2930.85,2930.85,2930.85,2930.85,1 +1767038816000,2930.55,2930.55,2930.55,2930.55,1 +1767038817000,2930.35,2930.35,2930.35,2930.35,1 +1767038818000,2930.25,2930.25,2930.25,2930.25,1 +1767038819000,2930.25,2930.25,2930.25,2930.25,1 +1767038820000,2930.25,2930.25,2930.25,2930.25,1 +1767038821000,2930.25,2930.25,2930.25,2930.25,1 +1767038822000,2930.25,2930.25,2930.25,2930.25,1 +1767038823000,2930.35,2930.35,2930.35,2930.35,1 +1767038824000,2930.25,2930.25,2930.25,2930.25,1 +1767038825000,2930.15,2930.15,2930.15,2930.15,1 +1767038826000,2930.15,2930.15,2930.15,2930.15,1 +1767038827000,2930.15,2930.15,2930.15,2930.15,1 +1767038828000,2930.1,2930.1,2930.1,2930.1,1 +1767038830000,2930.05,2930.05,2930.05,2930.05,2 +1767038831000,2930.05,2930.05,2930.05,2930.05,1 +1767038832000,2930.05,2930.05,2930.05,2930.05,1 +1767038833000,2930.05,2930.05,2930.05,2930.05,1 +1767038834000,2930.05,2930.05,2930.05,2930.05,1 +1767038835000,2930.05,2930.05,2930.05,2930.05,1 +1767038837000,2930.05,2930.05,2930.05,2930.05,1 +1767038838000,2930.05,2930.05,2930.05,2930.05,1 +1767038839000,2930.05,2930.05,2930.05,2930.05,1 +1767038840000,2930.05,2930.05,2930.05,2930.05,1 +1767038841000,2930.05,2930.05,2930.05,2930.05,1 +1767038842000,2930.05,2930.05,2930.05,2930.05,1 +1767038843000,2930.05,2930.05,2930.05,2930.05,1 +1767038844000,2930.05,2930.05,2930.05,2930.05,1 +1767038845000,2930.05,2930.05,2930.05,2930.05,1 +1767038846000,2930.05,2930.05,2930.05,2930.05,1 +1767038847000,2930.05,2930.05,2930.05,2930.05,1 +1767038848000,2929.55,2929.55,2929.55,2929.55,1 +1767038849000,2929.35,2929.35,2929.35,2929.35,1 +1767038850000,2929.35,2929.35,2929.35,2929.35,1 +1767038851000,2929.35,2929.35,2929.35,2929.35,1 +1767038852000,2929.35,2929.35,2929.35,2929.35,1 +1767038853000,2929.35,2929.35,2929.35,2929.35,1 +1767038854000,2929.35,2929.35,2929.35,2929.35,1 +1767038855000,2929.35,2929.35,2929.35,2929.35,1 +1767038856000,2929.35,2929.35,2929.35,2929.35,1 +1767038858000,2929.35,2929.35,2929.35,2929.35,1 +1767038859000,2929.35,2929.35,2929.35,2929.35,2 +1767038860000,2929.35,2929.35,2929.35,2929.35,1 +1767038861000,2929.35,2929.35,2929.35,2929.35,1 +1767038862000,2929.35,2929.35,2929.35,2929.35,1 +1767038864000,2929.05,2929.05,2929.05,2929.05,1 +1767038865000,2929.05,2929.05,2929.05,2929.05,2 +1767038867000,2929.05,2929.05,2929.05,2929.05,1 +1767038868000,2929.05,2929.05,2929.05,2929.05,1 +1767038869000,2929.05,2929.05,2929.05,2929.05,1 +1767038870000,2929.05,2929.05,2929.05,2929.05,1 +1767038871000,2929.45,2929.45,2929.45,2929.45,1 +1767038872000,2929.45,2929.45,2929.45,2929.45,1 +1767038873000,2929.45,2929.45,2929.45,2929.45,1 +1767038874000,2929.45,2929.45,2929.45,2929.45,1 +1767038875000,2929.45,2929.45,2929.45,2929.45,1 +1767038876000,2929.45,2929.45,2929.45,2929.45,1 +1767038877000,2929.45,2929.45,2929.45,2929.45,1 +1767038878000,2929.45,2929.45,2929.45,2929.45,1 +1767038879000,2929.45,2929.45,2929.45,2929.45,1 +1767038880000,2929.75,2929.75,2929.75,2929.75,1 +1767038881000,2929.75,2929.75,2929.75,2929.75,1 +1767038882000,2929.75,2929.75,2929.75,2929.75,1 +1767038883000,2930.15,2930.15,2930.15,2930.15,1 +1767038885000,2930.15,2930.55,2930.15,2930.55,2 +1767038886000,2931.25,2931.25,2931.25,2931.25,1 +1767038887000,2931.35,2931.35,2931.35,2931.35,1 +1767038888000,2931.35,2931.35,2931.35,2931.35,1 +1767038889000,2931.35,2931.35,2931.35,2931.35,1 +1767038890000,2931.35,2931.35,2931.35,2931.35,1 +1767038891000,2931.35,2931.35,2931.35,2931.35,1 +1767038892000,2931.35,2931.35,2931.35,2931.35,1 +1767038893000,2931.35,2931.35,2931.35,2931.35,1 +1767038894000,2931.35,2931.35,2931.35,2931.35,1 +1767038895000,2931.95,2931.95,2931.95,2931.95,1 +1767038896000,2932.05,2932.05,2932.05,2932.05,1 +1767038897000,2932.35,2932.35,2932.35,2932.35,1 +1767038898000,2932.35,2932.35,2932.35,2932.35,1 +1767038900000,2932.35,2932.35,2932.35,2932.35,1 +1767038901000,2932.95,2932.95,2932.95,2932.95,1 +1767038902000,2933.85,2933.85,2933.85,2933.85,1 +1767038903000,2933.85,2933.85,2933.85,2933.85,1 +1767038904000,2933.85,2933.85,2933.85,2933.85,1 +1767038905000,2933.95,2933.95,2933.95,2933.95,1 +1767038906000,2933.95,2933.95,2933.95,2933.95,1 +1767038907000,2933.95,2933.95,2933.95,2933.95,1 +1767038908000,2933.95,2933.95,2933.95,2933.95,1 +1767038909000,2933.95,2933.95,2933.95,2933.95,1 +1767038910000,2933.95,2933.95,2933.95,2933.95,1 +1767038911000,2933.7,2933.7,2933.7,2933.7,1 +1767038912000,2933.55,2933.55,2933.55,2933.55,1 +1767038913000,2933.75,2933.75,2933.75,2933.75,1 +1767038914000,2933.75,2933.75,2933.75,2933.75,1 +1767038915000,2933.75,2933.75,2933.75,2933.75,1 +1767038916000,2933.45,2933.45,2933.45,2933.45,1 +1767038917000,2933.45,2933.45,2933.45,2933.45,1 +1767038918000,2933.45,2933.45,2933.45,2933.45,1 +1767038919000,2933.45,2933.45,2933.45,2933.45,1 +1767038920000,2933.45,2933.45,2933.45,2933.45,1 +1767038921000,2933.25,2933.25,2933.25,2933.25,1 +1767038922000,2933.25,2933.25,2933.25,2933.25,1 +1767038923000,2933.25,2933.25,2933.25,2933.25,1 +1767038925000,2933.25,2933.25,2933.25,2933.25,1 +1767038926000,2933.25,2933.25,2933.25,2933.25,2 +1767038928000,2933.25,2933.25,2933.25,2933.25,1 +1767038929000,2933.25,2933.25,2933.25,2933.25,1 +1767038930000,2933.25,2933.25,2933.25,2933.25,1 +1767038931000,2933.25,2933.25,2933.25,2933.25,1 +1767038932000,2933.25,2933.25,2933.25,2933.25,2 +1767038933000,2933.25,2933.25,2933.25,2933.25,1 +1767038935000,2933.15,2933.15,2933.15,2933.15,1 +1767038936000,2933.15,2933.15,2933.15,2933.15,1 +1767038937000,2933.15,2933.15,2933.15,2933.15,1 +1767038938000,2933.15,2933.15,2933.15,2933.15,1 +1767038939000,2933.15,2933.15,2933.15,2933.15,1 +1767038940000,2933.15,2933.15,2933.15,2933.15,1 +1767038941000,2933.15,2933.15,2933.15,2933.15,1 +1767038942000,2933.15,2933.15,2933.15,2933.15,1 +1767038943000,2933.05,2933.05,2933.05,2933.05,1 +1767038944000,2932.85,2932.85,2932.85,2932.85,1 +1767038945000,2932.85,2932.85,2932.85,2932.85,1 +1767038946000,2933.35,2933.35,2933.35,2933.35,1 +1767038947000,2933.35,2933.35,2933.35,2933.35,1 +1767038948000,2933.55,2933.55,2933.55,2933.55,1 +1767038949000,2932.95,2932.95,2932.95,2932.95,1 +1767038950000,2932.75,2932.75,2932.75,2932.75,1 +1767038951000,2932.55,2932.55,2932.55,2932.55,1 +1767038952000,2932.55,2932.55,2932.55,2932.55,1 +1767038953000,2932.55,2932.55,2932.55,2932.55,1 +1767038954000,2932.95,2932.95,2932.95,2932.95,1 +1767038955000,2933.35,2933.35,2933.35,2933.35,1 +1767038956000,2933.35,2933.35,2933.35,2933.35,1 +1767038957000,2934.05,2934.05,2934.05,2934.05,1 +1767038958000,2934.15,2934.15,2934.15,2934.15,1 +1767038959000,2934.15,2934.15,2934.15,2934.15,1 +1767038960000,2934.15,2934.15,2934.15,2934.15,1 +1767038961000,2934.05,2934.05,2934.05,2934.05,1 +1767038962000,2934.05,2934.05,2934.05,2934.05,1 +1767038963000,2933.75,2933.75,2933.75,2933.75,1 +1767038965000,2933.45,2933.45,2933.45,2933.45,1 +1767038966000,2933.15,2933.15,2933.15,2933.15,1 +1767038967000,2933.15,2933.15,2933.15,2933.15,1 +1767038968000,2933.15,2933.15,2933.15,2933.15,1 +1767038969000,2933.15,2933.15,2933.15,2933.15,1 +1767038970000,2933.15,2933.15,2933.15,2933.15,1 +1767038971000,2933.15,2933.15,2933.15,2933.15,1 +1767038972000,2933.15,2933.15,2933.15,2933.15,1 +1767038973000,2933.15,2933.15,2933.15,2933.15,1 +1767038974000,2933.15,2933.15,2933.15,2933.15,1 +1767038975000,2933.15,2933.15,2933.15,2933.15,1 +1767038976000,2933.15,2933.15,2933.15,2933.15,1 +1767038977000,2933.25,2933.25,2933.25,2933.25,1 +1767038978000,2933.75,2933.75,2933.75,2933.75,1 +1767038979000,2934.15,2934.15,2934.15,2934.15,1 +1767038980000,2934.15,2934.15,2934.15,2934.15,1 +1767038981000,2934.15,2934.15,2934.15,2934.15,1 +1767038982000,2934.15,2934.15,2934.15,2934.15,1 +1767038983000,2934.15,2934.15,2934.15,2934.15,1 +1767038984000,2934.15,2934.15,2934.15,2934.15,1 +1767038985000,2934.15,2934.15,2934.15,2934.15,1 +1767038986000,2934.15,2934.15,2934.15,2934.15,1 +1767038987000,2934.15,2934.15,2934.15,2934.15,1 +1767038988000,2934.35,2934.35,2934.35,2934.35,1 +1767038989000,2934.35,2934.35,2934.35,2934.35,1 +1767038990000,2934.35,2934.35,2934.35,2934.35,1 +1767038991000,2934.35,2934.35,2934.35,2934.35,1 +1767038992000,2934.35,2934.35,2934.35,2934.35,1 +1767038993000,2934.35,2934.35,2934.35,2934.35,1 +1767038994000,2934.35,2934.35,2934.35,2934.35,1 +1767038995000,2934.25,2934.25,2934.25,2934.25,1 +1767038996000,2934.25,2934.25,2934.25,2934.25,1 +1767038997000,2934.25,2934.25,2934.25,2934.25,1 +1767038998000,2934.25,2934.25,2934.25,2934.25,1 +1767038999000,2934.25,2934.25,2934.25,2934.25,1 +1767039000000,2934.15,2934.15,2934.15,2934.15,1 +1767039002000,2934.25,2934.25,2934.25,2934.25,1 +1767039003000,2935.85,2935.85,2935.85,2935.85,1 +1767039004000,2935.85,2935.85,2935.85,2935.85,1 +1767039005000,2935.65,2935.65,2935.65,2935.65,1 +1767039006000,2935.45,2935.45,2935.45,2935.45,1 +1767039007000,2935.45,2935.45,2935.45,2935.45,1 +1767039008000,2935.45,2935.45,2935.45,2935.45,1 +1767039009000,2936.45,2936.45,2936.45,2936.45,1 +1767039010000,2936.35,2936.35,2936.35,2936.35,1 +1767039011000,2936.3,2936.3,2936.3,2936.3,1 +1767039012000,2936.15,2936.15,2936.15,2936.15,1 +1767039013000,2936.15,2936.15,2936.15,2936.15,1 +1767039014000,2936.35,2936.35,2936.35,2936.35,1 +1767039015000,2936.15,2936.15,2936.15,2936.15,1 +1767039016000,2936.15,2936.15,2936.15,2936.15,1 +1767039017000,2936.15,2936.15,2936.15,2936.15,1 +1767039018000,2936.55,2936.55,2936.55,2936.55,1 +1767039019000,2936.55,2936.55,2936.55,2936.55,1 +1767039020000,2936.55,2936.55,2936.55,2936.55,1 +1767039021000,2936.1,2936.1,2936.1,2936.1,1 +1767039022000,2935.95,2935.95,2935.95,2935.95,1 +1767039023000,2935.95,2935.95,2935.95,2935.95,1 +1767039024000,2935.95,2935.95,2935.95,2935.95,1 +1767039025000,2935.95,2935.95,2935.95,2935.95,1 +1767039026000,2935.95,2935.95,2935.95,2935.95,1 +1767039027000,2935.95,2935.95,2935.95,2935.95,1 +1767039028000,2936.05,2936.05,2936.05,2936.05,1 +1767039029000,2936.35,2936.35,2936.35,2936.35,1 +1767039030000,2936.65,2936.65,2936.65,2936.65,1 +1767039032000,2936.65,2936.65,2936.65,2936.65,1 +1767039033000,2937.05,2937.05,2936.75,2936.75,2 +1767039035000,2936.65,2936.65,2936.65,2936.65,1 +1767039036000,2936.55,2936.55,2936.55,2936.55,1 +1767039037000,2936.55,2936.55,2936.55,2936.55,1 +1767039038000,2936.55,2936.55,2936.55,2936.55,1 +1767039039000,2936.55,2936.55,2936.55,2936.55,1 +1767039040000,2936.55,2936.55,2936.55,2936.55,1 +1767039041000,2936.55,2936.55,2936.55,2936.55,1 +1767039042000,2936.55,2936.55,2936.55,2936.55,1 +1767039043000,2936.65,2936.65,2936.65,2936.65,1 +1767039044000,2936.65,2936.65,2936.65,2936.65,1 +1767039045000,2936.65,2936.65,2936.65,2936.65,1 +1767039046000,2936.65,2936.65,2936.65,2936.65,1 +1767039047000,2936.55,2936.55,2936.55,2936.55,1 +1767039048000,2936.55,2936.55,2936.55,2936.55,1 +1767039049000,2936.55,2936.55,2936.55,2936.55,1 +1767039050000,2936.05,2936.05,2936.05,2936.05,1 +1767039051000,2936.05,2936.05,2936.05,2936.05,1 +1767039052000,2935.95,2935.95,2935.95,2935.95,1 +1767039053000,2935.15,2935.15,2935.15,2935.15,1 +1767039054000,2935.05,2935.05,2935.05,2935.05,1 +1767039055000,2935.05,2935.05,2935.05,2935.05,1 +1767039056000,2935.05,2935.05,2935.05,2935.05,1 +1767039057000,2935.05,2935.05,2935.05,2935.05,1 +1767039058000,2934.45,2934.45,2934.45,2934.45,1 +1767039059000,2934.45,2934.45,2934.45,2934.45,1 +1767039061000,2934.45,2934.45,2934.45,2934.45,1 +1767039062000,2934.45,2934.45,2934.45,2934.45,1 +1767039063000,2934.75,2934.75,2934.75,2934.75,2 +1767039064000,2934.75,2934.75,2934.75,2934.75,1 +1767039066000,2934.75,2934.75,2934.75,2934.75,1 +1767039067000,2934.75,2934.75,2934.75,2934.75,1 +1767039068000,2934.75,2934.75,2934.75,2934.75,1 +1767039069000,2934.75,2934.75,2934.75,2934.75,1 +1767039070000,2934.75,2934.75,2934.75,2934.75,1 +1767039071000,2934.75,2934.75,2934.75,2934.75,1 +1767039072000,2934.75,2934.75,2934.75,2934.75,1 +1767039073000,2934.95,2934.95,2934.95,2934.95,1 +1767039074000,2934.95,2934.95,2934.95,2934.95,1 +1767039075000,2935.45,2935.45,2935.45,2935.45,1 +1767039076000,2936.35,2936.35,2936.35,2936.35,1 +1767039077000,2936.35,2936.35,2936.35,2936.35,1 +1767039078000,2936.35,2936.35,2936.35,2936.35,1 +1767039079000,2936.35,2936.35,2936.35,2936.35,1 +1767039080000,2936.35,2936.35,2936.35,2936.35,1 +1767039081000,2936.35,2936.35,2936.35,2936.35,1 +1767039082000,2935.95,2935.95,2935.95,2935.95,1 +1767039083000,2935.65,2935.65,2935.65,2935.65,1 +1767039084000,2935.65,2935.65,2935.65,2935.65,1 +1767039085000,2935.45,2935.45,2935.45,2935.45,1 +1767039086000,2935.45,2935.45,2935.45,2935.45,1 +1767039087000,2935.45,2935.45,2935.45,2935.45,1 +1767039088000,2935.45,2935.45,2935.45,2935.45,1 +1767039089000,2935.45,2935.45,2935.45,2935.45,1 +1767039090000,2935.45,2935.45,2935.45,2935.45,1 +1767039091000,2935.45,2935.45,2935.45,2935.45,1 +1767039092000,2935.45,2935.45,2935.45,2935.45,1 +1767039093000,2935.45,2935.45,2935.45,2935.45,1 +1767039094000,2935.45,2935.45,2935.45,2935.45,1 +1767039096000,2935.45,2935.45,2935.45,2935.45,2 +1767039097000,2935.45,2935.45,2935.45,2935.45,1 +1767039098000,2935.45,2935.45,2935.45,2935.45,1 +1767039099000,2935.45,2935.45,2935.45,2935.45,1 +1767039100000,2935.45,2935.45,2935.45,2935.45,1 +1767039102000,2935.45,2935.45,2935.45,2935.45,1 +1767039103000,2935.45,2935.45,2935.45,2935.45,1 +1767039104000,2935.35,2935.35,2935.35,2935.35,1 +1767039105000,2935.35,2935.35,2935.35,2935.35,1 +1767039106000,2935.35,2935.35,2935.35,2935.35,1 +1767039107000,2935.35,2935.35,2935.35,2935.35,1 +1767039108000,2935.05,2935.05,2935.05,2935.05,1 +1767039109000,2935.05,2935.05,2935.05,2935.05,1 +1767039110000,2935.05,2935.05,2935.05,2935.05,1 +1767039111000,2935.05,2935.05,2935.05,2935.05,1 +1767039112000,2935.05,2935.05,2935.05,2935.05,1 +1767039113000,2935.05,2935.05,2935.05,2935.05,1 +1767039114000,2935.05,2935.05,2935.05,2935.05,1 +1767039115000,2935.05,2935.05,2935.05,2935.05,1 +1767039116000,2935.05,2935.05,2935.05,2935.05,1 +1767039117000,2935.05,2935.05,2935.05,2935.05,1 +1767039118000,2935.05,2935.05,2935.05,2935.05,1 +1767039119000,2935.05,2935.05,2935.05,2935.05,1 +1767039120000,2935.05,2935.05,2935.05,2935.05,1 +1767039121000,2935.05,2935.05,2935.05,2935.05,1 +1767039122000,2934.55,2934.55,2934.55,2934.55,1 +1767039123000,2934.15,2934.15,2934.15,2934.15,1 +1767039124000,2934.15,2934.15,2934.15,2934.15,1 +1767039125000,2934.15,2934.15,2934.15,2934.15,1 +1767039127000,2934.15,2934.15,2934.15,2934.15,2 +1767039128000,2934.15,2934.15,2934.15,2934.15,1 +1767039129000,2934.15,2934.15,2934.15,2934.15,1 +1767039130000,2934.15,2934.15,2934.15,2934.15,1 +1767039131000,2934.15,2934.15,2934.15,2934.15,1 +1767039133000,2934.15,2934.15,2934.15,2934.15,2 +1767039134000,2934.15,2934.15,2934.15,2934.15,1 +1767039135000,2934.15,2934.15,2934.15,2934.15,1 +1767039137000,2934.15,2934.15,2934.15,2934.15,1 +1767039138000,2934.15,2934.15,2934.15,2934.15,1 +1767039139000,2934.15,2934.15,2934.15,2934.15,1 +1767039140000,2934.15,2934.15,2934.15,2934.15,1 +1767039141000,2934.15,2934.15,2934.15,2934.15,1 +1767039142000,2934.15,2934.15,2934.15,2934.15,1 +1767039143000,2934.15,2934.15,2934.15,2934.15,1 +1767039144000,2934.15,2934.15,2934.15,2934.15,1 +1767039145000,2933.85,2933.85,2933.85,2933.85,1 +1767039146000,2933.85,2933.85,2933.85,2933.85,1 +1767039147000,2933.85,2933.85,2933.85,2933.85,1 +1767039148000,2933.85,2933.85,2933.85,2933.85,1 +1767039149000,2933.85,2933.85,2933.85,2933.85,1 +1767039150000,2933.85,2933.85,2933.85,2933.85,1 +1767039151000,2933.85,2933.85,2933.85,2933.85,1 +1767039152000,2933.85,2933.85,2933.85,2933.85,1 +1767039153000,2933.85,2933.85,2933.85,2933.85,1 +1767039154000,2933.85,2933.85,2933.85,2933.85,1 +1767039155000,2933.85,2933.85,2933.85,2933.85,1 +1767039156000,2933.75,2933.75,2933.75,2933.75,1 +1767039157000,2933.25,2933.25,2933.25,2933.25,1 +1767039158000,2933.25,2933.25,2933.25,2933.25,1 +1767039159000,2933.25,2933.25,2933.25,2933.25,1 +1767039160000,2933.25,2933.25,2933.25,2933.25,1 +1767039161000,2933.25,2933.25,2933.25,2933.25,1 +1767039162000,2933.25,2933.25,2933.25,2933.25,1 +1767039163000,2933.25,2933.25,2933.25,2933.25,1 +1767039164000,2933.25,2933.25,2933.25,2933.25,1 +1767039165000,2933.25,2933.25,2933.25,2933.25,1 +1767039166000,2933.05,2933.05,2933.05,2933.05,1 +1767039167000,2933.15,2933.15,2933.15,2933.15,1 +1767039168000,2933.15,2933.15,2933.15,2933.15,1 +1767039169000,2933.15,2933.15,2933.15,2933.15,1 +1767039170000,2932.95,2932.95,2932.95,2932.95,1 +1767039172000,2932.95,2932.95,2932.95,2932.95,1 +1767039173000,2932.95,2932.95,2932.95,2932.95,2 +1767039174000,2932.95,2932.95,2932.95,2932.95,1 +1767039175000,2932.95,2932.95,2932.95,2932.95,1 +1767039177000,2932.95,2932.95,2932.95,2932.95,2 +1767039178000,2932.95,2932.95,2932.95,2932.95,1 +1767039180000,2932.95,2933.05,2932.95,2933.05,2 +1767039182000,2933.05,2933.05,2933.05,2933.05,1 +1767039183000,2933.25,2933.25,2933.25,2933.25,1 +1767039184000,2933.05,2933.05,2933.05,2933.05,1 +1767039185000,2933.25,2933.25,2933.25,2933.25,1 +1767039186000,2933.25,2933.25,2933.25,2933.25,1 +1767039187000,2933.25,2933.25,2933.25,2933.25,1 +1767039188000,2933.25,2933.25,2933.25,2933.25,1 +1767039189000,2933.25,2933.25,2933.25,2933.25,1 +1767039190000,2933.25,2933.25,2933.25,2933.25,1 +1767039191000,2933.25,2933.25,2933.25,2933.25,1 +1767039192000,2933.25,2933.25,2933.25,2933.25,1 +1767039193000,2933.05,2933.05,2933.05,2933.05,1 +1767039194000,2933.25,2933.25,2933.25,2933.25,1 +1767039195000,2933.25,2933.25,2933.25,2933.25,1 +1767039196000,2933.25,2933.25,2933.25,2933.25,1 +1767039197000,2932.75,2932.75,2932.75,2932.75,1 +1767039198000,2932.75,2932.75,2932.75,2932.75,1 +1767039199000,2932.75,2932.75,2932.75,2932.75,1 +1767039200000,2932.75,2932.75,2932.75,2932.75,1 +1767039201000,2932.75,2932.75,2932.75,2932.75,1 +1767039202000,2932.75,2932.75,2932.75,2932.75,1 +1767039203000,2932.75,2932.75,2932.75,2932.75,1 +1767039204000,2932.65,2932.65,2932.65,2932.65,1 +1767039205000,2932.35,2932.35,2932.35,2932.35,1 +1767039206000,2932.35,2932.35,2932.35,2932.35,1 +1767039208000,2932.35,2932.35,2932.35,2932.35,1 +1767039209000,2932.15,2932.15,2932.15,2932.15,1 +1767039210000,2932.15,2932.15,2932.15,2932.15,1 +1767039211000,2932.15,2932.15,2932.15,2932.15,1 +1767039212000,2932.15,2932.15,2932.15,2932.15,1 +1767039213000,2932.15,2932.15,2932.15,2932.15,1 +1767039214000,2932.15,2932.15,2932.15,2932.15,1 +1767039215000,2932.25,2932.25,2932.25,2932.25,1 +1767039216000,2932.25,2932.25,2932.25,2932.25,1 +1767039217000,2932.75,2932.75,2932.75,2932.75,1 +1767039218000,2932.95,2932.95,2932.95,2932.95,1 +1767039219000,2932.95,2932.95,2932.95,2932.95,1 +1767039220000,2932.95,2932.95,2932.95,2932.95,1 +1767039221000,2932.95,2932.95,2932.95,2932.95,1 +1767039223000,2932.95,2933.25,2932.95,2933.25,2 +1767039224000,2933.25,2933.25,2933.25,2933.25,1 +1767039225000,2933.25,2933.25,2933.25,2933.25,1 +1767039226000,2933.25,2933.25,2933.25,2933.25,1 +1767039227000,2933.25,2933.25,2933.25,2933.25,1 +1767039229000,2933.25,2933.25,2933.25,2933.25,1 +1767039230000,2933.25,2933.25,2933.25,2933.25,1 +1767039231000,2933.25,2933.25,2933.25,2933.25,1 +1767039232000,2933.25,2933.25,2933.25,2933.25,1 +1767039233000,2933.7,2933.7,2933.7,2933.7,1 +1767039234000,2933.85,2933.85,2933.85,2933.85,1 +1767039235000,2933.85,2933.85,2933.85,2933.85,1 +1767039236000,2933.85,2933.85,2933.85,2933.85,1 +1767039237000,2933.85,2933.85,2933.85,2933.85,1 +1767039238000,2933.85,2933.85,2933.85,2933.85,1 +1767039239000,2933.85,2933.85,2933.85,2933.85,1 +1767039240000,2933.85,2933.85,2933.85,2933.85,1 +1767039241000,2933.85,2933.85,2933.85,2933.85,1 +1767039242000,2933.85,2933.85,2933.85,2933.85,1 +1767039243000,2934.15,2934.15,2934.15,2934.15,1 +1767039244000,2934.25,2934.25,2934.25,2934.25,1 +1767039245000,2934.25,2934.25,2934.25,2934.25,1 +1767039246000,2934.35,2934.35,2934.35,2934.35,1 +1767039248000,2934.35,2934.35,2933.95,2933.95,2 +1767039249000,2933.95,2933.95,2933.95,2933.95,1 +1767039250000,2933.95,2933.95,2933.95,2933.95,1 +1767039251000,2933.75,2933.75,2933.75,2933.75,1 +1767039252000,2933.75,2933.75,2933.75,2933.75,1 +1767039253000,2933.85,2933.85,2933.85,2933.85,1 +1767039254000,2934.15,2934.15,2934.15,2934.15,1 +1767039255000,2934.55,2934.55,2934.55,2934.55,1 +1767039256000,2934.55,2934.55,2934.55,2934.55,1 +1767039257000,2934.55,2934.55,2934.55,2934.55,1 +1767039258000,2934.55,2934.55,2934.55,2934.55,1 +1767039259000,2934.85,2934.85,2934.85,2934.85,1 +1767039260000,2934.95,2934.95,2934.95,2934.95,1 +1767039261000,2934.95,2934.95,2934.95,2934.95,1 +1767039263000,2934.95,2935.15,2934.95,2935.15,2 +1767039264000,2935.15,2935.15,2935.15,2935.15,1 +1767039265000,2935.15,2935.15,2935.15,2935.15,1 +1767039266000,2935.15,2935.15,2935.15,2935.15,1 +1767039268000,2935.15,2935.15,2935.15,2935.15,1 +1767039269000,2935.15,2935.15,2935.15,2935.15,1 +1767039270000,2935.55,2935.55,2935.55,2935.55,1 +1767039271000,2935.55,2935.55,2935.55,2935.55,1 +1767039272000,2935.55,2935.55,2935.55,2935.55,1 +1767039273000,2935.55,2935.55,2935.55,2935.55,1 +1767039274000,2935.55,2935.55,2935.55,2935.55,1 +1767039275000,2935.55,2935.55,2935.55,2935.55,1 +1767039276000,2935.55,2935.55,2935.55,2935.55,1 +1767039277000,2935.55,2935.55,2935.55,2935.55,1 +1767039278000,2935.6,2935.6,2935.6,2935.6,1 +1767039279000,2935.65,2935.65,2935.65,2935.65,1 +1767039280000,2935.65,2935.65,2935.65,2935.65,1 +1767039281000,2935.65,2935.65,2935.65,2935.65,1 +1767039282000,2935.8,2935.8,2935.8,2935.8,1 +1767039283000,2935.95,2935.95,2935.95,2935.95,1 +1767039284000,2936.25,2936.25,2936.25,2936.25,1 +1767039285000,2936.65,2936.65,2936.65,2936.65,1 +1767039286000,2937.75,2937.75,2937.75,2937.75,1 +1767039287000,2937.85,2937.85,2937.85,2937.85,1 +1767039288000,2937.85,2937.85,2937.85,2937.85,1 +1767039289000,2937.85,2937.85,2937.85,2937.85,1 +1767039290000,2937.85,2937.85,2937.85,2937.85,1 +1767039291000,2937.45,2937.45,2937.45,2937.45,1 +1767039292000,2937.45,2937.45,2937.45,2937.45,1 +1767039293000,2937.45,2937.45,2937.45,2937.45,1 +1767039294000,2937.45,2937.45,2937.45,2937.45,1 +1767039295000,2937.45,2937.45,2937.45,2937.45,1 +1767039296000,2937.45,2937.45,2937.45,2937.45,1 +1767039298000,2937.45,2937.45,2937.45,2937.45,2 +1767039299000,2937.35,2937.35,2937.35,2937.35,1 +1767039300000,2937.35,2937.35,2937.35,2937.35,1 +1767039301000,2937.35,2937.35,2937.35,2937.35,1 +1767039303000,2937.35,2937.35,2937.35,2937.35,2 +1767039304000,2937.35,2937.35,2937.35,2937.35,1 +1767039305000,2937.35,2937.35,2937.35,2937.35,1 +1767039306000,2936.85,2936.85,2936.85,2936.85,1 +1767039308000,2936.85,2936.85,2936.85,2936.85,1 +1767039309000,2936.85,2936.85,2936.85,2936.85,1 +1767039310000,2936.85,2936.85,2936.85,2936.85,1 +1767039311000,2936.85,2936.85,2936.85,2936.85,1 +1767039312000,2936.85,2936.85,2936.85,2936.85,1 +1767039313000,2936.85,2936.85,2936.85,2936.85,1 +1767039314000,2936.85,2936.85,2936.85,2936.85,1 +1767039315000,2936.85,2936.85,2936.85,2936.85,1 +1767039316000,2936.85,2936.85,2936.85,2936.85,1 +1767039317000,2936.85,2936.85,2936.85,2936.85,1 +1767039318000,2936.85,2936.85,2936.85,2936.85,1 +1767039319000,2936.85,2936.85,2936.85,2936.85,1 +1767039320000,2936.85,2936.85,2936.85,2936.85,1 +1767039321000,2936.85,2936.85,2936.85,2936.85,1 +1767039322000,2936.85,2936.85,2936.85,2936.85,1 +1767039323000,2936.85,2936.85,2936.85,2936.85,1 +1767039324000,2936.85,2936.85,2936.85,2936.85,1 +1767039325000,2936.95,2936.95,2936.95,2936.95,1 +1767039326000,2936.95,2936.95,2936.95,2936.95,1 +1767039327000,2936.95,2936.95,2936.95,2936.95,1 +1767039328000,2936.95,2936.95,2936.95,2936.95,1 +1767039329000,2936.95,2936.95,2936.95,2936.95,1 +1767039330000,2937.25,2937.25,2937.25,2937.25,1 +1767039331000,2937.25,2937.25,2937.25,2937.25,1 +1767039332000,2937.35,2937.35,2937.35,2937.35,1 +1767039333000,2937.85,2937.85,2937.85,2937.85,1 +1767039334000,2937.85,2937.85,2937.85,2937.85,1 +1767039335000,2937.85,2937.85,2937.85,2937.85,1 +1767039336000,2937.95,2937.95,2937.95,2937.95,1 +1767039337000,2937.95,2937.95,2937.95,2937.95,1 +1767039339000,2937.95,2937.95,2937.95,2937.95,1 +1767039340000,2937.65,2937.65,2937.65,2937.65,1 +1767039341000,2936.95,2936.95,2936.95,2936.95,1 +1767039342000,2936.95,2936.95,2936.95,2936.95,1 +1767039343000,2936.95,2936.95,2936.95,2936.95,1 +1767039344000,2936.95,2936.95,2936.95,2936.95,1 +1767039345000,2936.95,2936.95,2936.95,2936.95,1 +1767039346000,2937.35,2937.35,2937.35,2937.35,1 +1767039347000,2937.85,2937.85,2937.85,2937.85,1 +1767039348000,2937.85,2937.85,2937.85,2937.85,1 +1767039349000,2937.85,2937.85,2937.85,2937.85,1 +1767039350000,2937.85,2937.85,2937.85,2937.85,1 +1767039351000,2937.95,2937.95,2937.95,2937.95,1 +1767039352000,2937.95,2937.95,2937.95,2937.95,1 +1767039353000,2937.95,2937.95,2937.95,2937.95,1 +1767039354000,2937.95,2937.95,2937.95,2937.95,1 +1767039355000,2937.95,2937.95,2937.95,2937.95,1 +1767039356000,2937.95,2937.95,2937.95,2937.95,1 +1767039357000,2937.95,2937.95,2937.95,2937.95,1 +1767039358000,2937.85,2937.85,2937.85,2937.85,1 +1767039359000,2937.85,2937.85,2937.85,2937.85,1 +1767039360000,2937.65,2937.65,2937.65,2937.65,1 +1767039361000,2937.65,2937.65,2937.65,2937.65,1 +1767039362000,2937.5,2937.5,2937.5,2937.5,1 +1767039363000,2937.35,2937.35,2937.35,2937.35,1 +1767039364000,2937.35,2937.35,2937.35,2937.35,1 +1767039365000,2937.35,2937.35,2937.35,2937.35,1 +1767039367000,2937.35,2937.75,2937.35,2937.75,2 +1767039369000,2937.95,2937.95,2937.95,2937.95,2 +1767039371000,2937.95,2937.95,2937.95,2937.95,1 +1767039372000,2937.95,2937.95,2937.95,2937.95,1 +1767039373000,2938.45,2938.45,2938.45,2938.45,1 +1767039374000,2938.45,2938.45,2938.45,2938.45,1 +1767039375000,2938.65,2938.65,2938.65,2938.65,1 +1767039376000,2939.35,2939.35,2939.35,2939.35,1 +1767039377000,2939.35,2939.35,2939.35,2939.35,1 +1767039378000,2939.45,2939.45,2939.45,2939.45,1 +1767039379000,2939.45,2939.45,2939.45,2939.45,1 +1767039380000,2939.6,2939.6,2939.6,2939.6,1 +1767039381000,2940.25,2940.25,2940.25,2940.25,1 +1767039382000,2940.15,2940.15,2940.15,2940.15,1 +1767039383000,2939.95,2939.95,2939.95,2939.95,1 +1767039384000,2940.35,2940.35,2940.35,2940.35,1 +1767039385000,2940.35,2940.35,2940.35,2940.35,1 +1767039386000,2939.95,2939.95,2939.95,2939.95,1 +1767039387000,2939.95,2939.95,2939.95,2939.95,1 +1767039389000,2939.95,2939.95,2939.85,2939.85,2 +1767039390000,2939.85,2939.85,2939.85,2939.85,1 +1767039391000,2939.35,2939.35,2939.35,2939.35,1 +1767039392000,2939.35,2939.35,2939.35,2939.35,1 +1767039394000,2939.65,2940.35,2939.65,2940.35,2 +1767039395000,2940.75,2940.75,2940.75,2940.75,1 +1767039396000,2940.95,2940.95,2940.95,2940.95,1 +1767039397000,2940.95,2940.95,2940.95,2940.95,1 +1767039399000,2940.95,2940.95,2940.95,2940.95,2 +1767039400000,2940.95,2940.95,2940.95,2940.95,1 +1767039401000,2941.15,2941.15,2941.15,2941.15,1 +1767039402000,2941.15,2941.15,2941.15,2941.15,1 +1767039404000,2941.15,2941.15,2941.15,2941.15,2 +1767039405000,2940.75,2940.75,2940.75,2940.75,1 +1767039406000,2940.75,2940.75,2940.75,2940.75,1 +1767039408000,2939.95,2939.95,2939.95,2939.95,1 +1767039409000,2939.7,2939.7,2939.7,2939.7,1 +1767039410000,2939.45,2939.45,2939.45,2939.45,1 +1767039411000,2939.45,2939.45,2939.45,2939.45,1 +1767039412000,2939.45,2939.45,2939.45,2939.45,1 +1767039413000,2939.45,2939.45,2939.45,2939.45,1 +1767039414000,2939.45,2939.45,2939.45,2939.45,1 +1767039415000,2939.45,2939.45,2939.45,2939.45,1 +1767039416000,2939.45,2939.45,2939.45,2939.45,1 +1767039417000,2939.45,2939.45,2939.45,2939.45,1 +1767039418000,2939.45,2939.45,2939.45,2939.45,1 +1767039419000,2939.55,2939.55,2939.55,2939.55,1 +1767039420000,2939.55,2939.55,2939.55,2939.55,1 +1767039421000,2939.55,2939.55,2939.55,2939.55,1 +1767039422000,2939.55,2939.55,2939.55,2939.55,1 +1767039423000,2939.55,2939.55,2939.55,2939.55,1 +1767039424000,2939.5,2939.5,2939.5,2939.5,1 +1767039425000,2939.45,2939.45,2939.45,2939.45,1 +1767039426000,2939.45,2939.45,2939.45,2939.45,1 +1767039427000,2939.45,2939.45,2939.45,2939.45,1 +1767039428000,2939.45,2939.45,2939.45,2939.45,1 +1767039429000,2939.45,2939.45,2939.45,2939.45,1 +1767039430000,2939.45,2939.45,2939.45,2939.45,1 +1767039431000,2939.45,2939.45,2939.45,2939.45,1 +1767039432000,2939.45,2939.45,2939.45,2939.45,1 +1767039433000,2939.45,2939.45,2939.45,2939.45,1 +1767039434000,2939.45,2939.45,2939.45,2939.45,1 +1767039435000,2939.45,2939.45,2939.45,2939.45,1 +1767039436000,2939.45,2939.45,2939.45,2939.45,1 +1767039437000,2939.45,2939.45,2939.45,2939.45,1 +1767039438000,2939.45,2939.45,2939.45,2939.45,1 +1767039439000,2939.85,2939.85,2939.85,2939.85,1 +1767039441000,2939.95,2939.95,2939.95,2939.95,1 +1767039442000,2939.95,2939.95,2939.95,2939.95,1 +1767039443000,2939.95,2939.95,2939.95,2939.95,1 +1767039444000,2939.95,2939.95,2939.95,2939.95,1 +1767039445000,2939.95,2939.95,2939.95,2939.95,1 +1767039446000,2939.95,2939.95,2939.95,2939.95,1 +1767039447000,2939.95,2939.95,2939.95,2939.95,1 +1767039448000,2939.95,2939.95,2939.95,2939.95,1 +1767039449000,2939.95,2939.95,2939.95,2939.95,1 +1767039450000,2939.95,2939.95,2939.95,2939.95,1 +1767039451000,2939.95,2939.95,2939.95,2939.95,1 +1767039452000,2939.95,2939.95,2939.95,2939.95,1 +1767039453000,2939.95,2939.95,2939.95,2939.95,1 +1767039454000,2939.95,2939.95,2939.95,2939.95,1 +1767039455000,2939.95,2939.95,2939.95,2939.95,1 +1767039456000,2939.95,2939.95,2939.95,2939.95,1 +1767039457000,2940.15,2940.15,2940.15,2940.15,1 +1767039458000,2940.15,2940.15,2940.15,2940.15,1 +1767039459000,2940.15,2940.15,2940.15,2940.15,1 +1767039460000,2940.15,2940.15,2940.15,2940.15,1 +1767039461000,2940.15,2940.15,2940.15,2940.15,1 +1767039462000,2940.15,2940.15,2940.15,2940.15,1 +1767039463000,2940.15,2940.15,2940.15,2940.15,1 +1767039464000,2940.15,2940.15,2940.15,2940.15,1 +1767039465000,2940.35,2940.35,2940.35,2940.35,1 +1767039466000,2940.35,2940.35,2940.35,2940.35,1 +1767039467000,2940.35,2940.35,2940.35,2940.35,1 +1767039468000,2940.35,2940.35,2940.35,2940.35,1 +1767039469000,2940.05,2940.05,2940.05,2940.05,1 +1767039470000,2940.05,2940.05,2940.05,2940.05,1 +1767039471000,2940.05,2940.05,2940.05,2940.05,1 +1767039472000,2940.05,2940.05,2940.05,2940.05,1 +1767039473000,2939.45,2939.45,2939.45,2939.45,1 +1767039475000,2939.25,2939.25,2939.25,2939.25,1 +1767039476000,2938.35,2938.35,2938.35,2938.35,1 +1767039477000,2937.75,2937.75,2937.75,2937.75,2 +1767039478000,2937.75,2937.75,2937.75,2937.75,1 +1767039479000,2937.75,2937.75,2937.75,2937.75,1 +1767039481000,2937.75,2937.75,2937.75,2937.75,1 +1767039482000,2937.75,2937.75,2937.75,2937.75,1 +1767039483000,2937.75,2937.75,2937.75,2937.75,1 +1767039484000,2937.75,2937.75,2937.75,2937.75,1 +1767039485000,2937.75,2937.75,2937.75,2937.75,1 +1767039486000,2937.65,2937.65,2937.65,2937.65,1 +1767039487000,2937.65,2937.65,2937.65,2937.65,1 +1767039488000,2937.55,2937.55,2937.55,2937.55,1 +1767039489000,2937.55,2937.55,2937.55,2937.55,1 +1767039490000,2937.55,2937.55,2937.55,2937.55,1 +1767039491000,2937.55,2937.55,2937.55,2937.55,1 +1767039492000,2937.55,2937.55,2937.55,2937.55,1 +1767039493000,2937.55,2937.55,2937.55,2937.55,1 +1767039495000,2937.65,2937.85,2937.65,2937.85,2 +1767039496000,2937.55,2937.55,2937.55,2937.55,1 +1767039497000,2937.75,2937.75,2937.75,2937.75,1 +1767039498000,2937.75,2937.75,2937.75,2937.75,1 +1767039500000,2937.55,2937.55,2937.55,2937.55,2 +1767039501000,2936.65,2936.65,2936.65,2936.65,1 +1767039503000,2936.65,2936.65,2936.45,2936.45,2 +1767039505000,2936.25,2936.25,2936.25,2936.25,2 +1767039506000,2936.25,2936.25,2936.25,2936.25,1 +1767039507000,2936.35,2936.35,2936.35,2936.35,1 +1767039508000,2936.35,2936.35,2936.35,2936.35,1 +1767039510000,2936.35,2936.75,2936.35,2936.75,2 +1767039512000,2936.75,2936.75,2936.75,2936.75,2 +1767039514000,2937.65,2937.65,2937.65,2937.65,1 +1767039515000,2937.65,2937.65,2937.65,2937.65,1 +1767039516000,2938.05,2938.05,2938.05,2938.05,1 +1767039517000,2937.75,2937.75,2937.75,2937.75,1 +1767039518000,2937.65,2937.65,2937.65,2937.65,1 +1767039519000,2937.65,2937.65,2937.65,2937.65,1 +1767039520000,2937.65,2937.65,2937.65,2937.65,1 +1767039521000,2937.35,2937.35,2937.35,2937.35,1 +1767039522000,2937.35,2937.35,2937.35,2937.35,1 +1767039523000,2937.35,2937.35,2937.35,2937.35,1 +1767039524000,2937.35,2937.35,2937.35,2937.35,1 +1767039525000,2936.75,2936.75,2936.75,2936.75,1 +1767039526000,2936.75,2936.75,2936.75,2936.75,1 +1767039527000,2936.75,2936.75,2936.75,2936.75,1 +1767039528000,2936.75,2936.75,2936.75,2936.75,1 +1767039529000,2936.75,2936.75,2936.75,2936.75,1 +1767039530000,2936.75,2936.75,2936.75,2936.75,1 +1767039531000,2936.75,2936.75,2936.75,2936.75,1 +1767039532000,2936.75,2936.75,2936.75,2936.75,1 +1767039533000,2936.85,2936.85,2936.85,2936.85,1 +1767039534000,2937.0,2937.0,2937.0,2937.0,1 +1767039535000,2936.85,2936.85,2936.85,2936.85,1 +1767039536000,2936.8,2936.8,2936.8,2936.8,1 +1767039537000,2936.75,2936.75,2936.75,2936.75,1 +1767039538000,2936.75,2936.75,2936.75,2936.75,1 +1767039539000,2936.75,2936.75,2936.75,2936.75,1 +1767039540000,2936.55,2936.55,2936.55,2936.55,1 +1767039541000,2936.55,2936.55,2936.55,2936.55,1 +1767039542000,2936.55,2936.55,2936.55,2936.55,1 +1767039543000,2936.05,2936.05,2936.05,2936.05,1 +1767039544000,2936.05,2936.05,2936.05,2936.05,1 +1767039545000,2935.75,2935.75,2935.75,2935.75,1 +1767039546000,2935.55,2935.55,2935.55,2935.55,1 +1767039547000,2935.55,2935.55,2935.55,2935.55,1 +1767039548000,2935.55,2935.55,2935.55,2935.55,1 +1767039550000,2935.55,2935.55,2935.55,2935.55,2 +1767039551000,2935.55,2935.55,2935.55,2935.55,1 +1767039553000,2935.55,2935.55,2935.55,2935.55,2 +1767039555000,2935.55,2935.55,2935.55,2935.55,1 +1767039556000,2935.45,2935.45,2935.45,2935.45,1 +1767039557000,2935.45,2935.45,2935.45,2935.45,1 +1767039558000,2935.45,2935.45,2935.45,2935.45,1 +1767039559000,2935.45,2935.45,2935.45,2935.45,1 +1767039560000,2935.45,2935.45,2935.45,2935.45,1 +1767039561000,2935.45,2935.45,2935.45,2935.45,1 +1767039562000,2935.45,2935.45,2935.45,2935.45,1 +1767039563000,2935.45,2935.45,2935.45,2935.45,1 +1767039564000,2935.55,2935.55,2935.55,2935.55,1 +1767039565000,2935.55,2935.55,2935.55,2935.55,1 +1767039566000,2935.65,2935.65,2935.65,2935.65,1 +1767039567000,2935.65,2935.65,2935.65,2935.65,1 +1767039568000,2935.65,2935.65,2935.65,2935.65,1 +1767039569000,2935.85,2935.85,2935.85,2935.85,1 +1767039570000,2935.85,2935.85,2935.85,2935.85,1 +1767039571000,2936.15,2936.15,2936.15,2936.15,1 +1767039572000,2936.3,2936.3,2936.3,2936.3,1 +1767039573000,2936.35,2936.35,2936.35,2936.35,1 +1767039574000,2936.35,2936.35,2936.35,2936.35,1 +1767039575000,2936.45,2936.45,2936.45,2936.45,1 +1767039576000,2936.55,2936.55,2936.55,2936.55,1 +1767039577000,2936.35,2936.35,2936.35,2936.35,1 +1767039578000,2936.35,2936.35,2936.35,2936.35,1 +1767039579000,2936.45,2936.45,2936.45,2936.45,1 +1767039580000,2936.45,2936.45,2936.45,2936.45,1 +1767039581000,2936.45,2936.45,2936.45,2936.45,1 +1767039583000,2936.75,2936.75,2936.75,2936.75,1 +1767039584000,2936.95,2936.95,2936.95,2936.95,1 +1767039585000,2936.95,2937.15,2936.95,2937.15,2 +1767039586000,2937.15,2937.15,2937.15,2937.15,1 +1767039587000,2937.15,2937.15,2937.15,2937.15,1 +1767039588000,2937.15,2937.15,2937.15,2937.15,1 +1767039590000,2937.15,2937.15,2937.15,2937.15,1 +1767039591000,2937.15,2937.15,2937.15,2937.15,1 +1767039592000,2936.75,2936.75,2936.75,2936.75,1 +1767039593000,2936.75,2936.75,2936.75,2936.75,1 +1767039594000,2936.75,2936.75,2936.75,2936.75,1 +1767039596000,2936.75,2936.75,2936.75,2936.75,2 +1767039597000,2936.75,2936.75,2936.75,2936.75,1 +1767039598000,2936.75,2936.75,2936.75,2936.75,1 +1767039599000,2936.75,2936.75,2936.75,2936.75,1 +1767039600000,2936.75,2936.75,2936.75,2936.75,1 +1767039601000,2936.75,2936.75,2936.75,2936.75,1 +1767039602000,2936.75,2936.75,2936.75,2936.75,1 +1767039603000,2936.75,2936.75,2936.75,2936.75,1 +1767039604000,2936.75,2936.75,2936.75,2936.75,1 +1767039605000,2936.75,2936.75,2936.75,2936.75,1 +1767039606000,2936.25,2936.25,2936.25,2936.25,1 +1767039607000,2936.25,2936.25,2936.25,2936.25,1 +1767039608000,2936.25,2936.25,2936.25,2936.25,1 +1767039609000,2936.25,2936.25,2936.25,2936.25,1 +1767039610000,2936.25,2936.25,2936.25,2936.25,1 +1767039611000,2936.25,2936.25,2936.25,2936.25,1 +1767039612000,2936.25,2936.25,2936.25,2936.25,1 +1767039613000,2936.25,2936.25,2936.25,2936.25,1 +1767039614000,2936.25,2936.25,2936.25,2936.25,1 +1767039616000,2936.05,2936.05,2936.05,2936.05,2 +1767039618000,2936.05,2936.05,2936.05,2936.05,2 +1767039619000,2936.05,2936.05,2936.05,2936.05,1 +1767039621000,2936.05,2936.05,2936.05,2936.05,2 +1767039622000,2936.05,2936.05,2936.05,2936.05,1 +1767039624000,2936.05,2936.05,2936.05,2936.05,1 +1767039625000,2936.05,2936.05,2936.05,2936.05,1 +1767039626000,2936.05,2936.05,2936.05,2936.05,1 +1767039627000,2936.05,2936.05,2936.05,2936.05,1 +1767039628000,2936.05,2936.05,2936.05,2936.05,1 +1767039629000,2935.65,2935.65,2935.65,2935.65,1 +1767039630000,2935.65,2935.65,2935.65,2935.65,1 +1767039631000,2935.65,2935.65,2935.65,2935.65,1 +1767039632000,2935.65,2935.65,2935.65,2935.65,1 +1767039633000,2935.65,2935.65,2935.65,2935.65,1 +1767039634000,2935.65,2935.65,2935.65,2935.65,1 +1767039635000,2935.65,2935.65,2935.65,2935.65,1 +1767039636000,2935.65,2935.65,2935.65,2935.65,1 +1767039637000,2935.65,2935.65,2935.65,2935.65,1 +1767039638000,2935.65,2935.65,2935.65,2935.65,1 +1767039639000,2935.65,2935.65,2935.65,2935.65,1 +1767039640000,2935.65,2935.65,2935.65,2935.65,1 +1767039641000,2935.65,2935.65,2935.65,2935.65,1 +1767039642000,2935.65,2935.65,2935.65,2935.65,1 +1767039643000,2935.55,2935.55,2935.55,2935.55,1 +1767039644000,2935.55,2935.55,2935.55,2935.55,1 +1767039645000,2935.55,2935.55,2935.55,2935.55,1 +1767039646000,2935.55,2935.55,2935.55,2935.55,1 +1767039647000,2935.55,2935.55,2935.55,2935.55,1 +1767039648000,2935.55,2935.55,2935.55,2935.55,1 +1767039649000,2935.55,2935.55,2935.55,2935.55,1 +1767039650000,2935.55,2935.55,2935.55,2935.55,1 +1767039651000,2935.55,2935.55,2935.55,2935.55,1 +1767039652000,2935.55,2935.55,2935.55,2935.55,1 +1767039653000,2935.15,2935.15,2935.15,2935.15,1 +1767039654000,2935.15,2935.15,2935.15,2935.15,1 +1767039656000,2935.05,2935.05,2934.95,2934.95,2 +1767039657000,2934.95,2934.95,2934.95,2934.95,1 +1767039658000,2934.15,2934.15,2934.15,2934.15,1 +1767039659000,2934.35,2934.35,2934.35,2934.35,1 +1767039661000,2934.45,2934.45,2934.45,2934.45,2 +1767039662000,2934.45,2934.45,2934.45,2934.45,1 +1767039664000,2934.45,2934.45,2934.45,2934.45,1 +1767039665000,2934.45,2934.45,2934.45,2934.45,1 +1767039666000,2934.45,2934.45,2934.45,2934.45,2 +1767039667000,2934.45,2934.45,2934.45,2934.45,1 +1767039669000,2934.45,2934.45,2934.45,2934.45,1 +1767039670000,2934.45,2934.45,2934.45,2934.45,1 +1767039671000,2934.45,2934.45,2934.45,2934.45,1 +1767039672000,2934.45,2934.45,2934.45,2934.45,1 +1767039673000,2934.45,2934.45,2934.45,2934.45,1 +1767039674000,2934.45,2934.45,2934.45,2934.45,1 +1767039675000,2934.45,2934.45,2934.45,2934.45,1 +1767039676000,2934.45,2934.45,2934.45,2934.45,1 +1767039677000,2934.45,2934.45,2934.45,2934.45,1 +1767039678000,2934.45,2934.45,2934.45,2934.45,1 +1767039679000,2934.75,2934.75,2934.75,2934.75,1 +1767039680000,2934.75,2934.75,2934.75,2934.75,1 +1767039681000,2934.75,2934.75,2934.75,2934.75,1 +1767039682000,2934.75,2934.75,2934.75,2934.75,1 +1767039683000,2934.75,2934.75,2934.75,2934.75,1 +1767039684000,2934.75,2934.75,2934.75,2934.75,1 +1767039685000,2934.75,2934.75,2934.75,2934.75,1 +1767039686000,2934.75,2934.75,2934.75,2934.75,1 +1767039687000,2934.75,2934.75,2934.75,2934.75,1 +1767039688000,2934.75,2934.75,2934.75,2934.75,1 +1767039689000,2934.75,2934.75,2934.75,2934.75,1 +1767039690000,2934.75,2934.75,2934.75,2934.75,1 +1767039691000,2934.75,2934.75,2934.75,2934.75,1 +1767039692000,2934.75,2934.75,2934.75,2934.75,1 +1767039693000,2934.75,2934.75,2934.75,2934.75,1 +1767039694000,2934.75,2934.75,2934.75,2934.75,1 +1767039695000,2934.75,2934.75,2934.75,2934.75,1 +1767039696000,2934.75,2934.75,2934.75,2934.75,1 +1767039697000,2934.75,2934.75,2934.75,2934.75,1 +1767039698000,2935.05,2935.05,2935.05,2935.05,1 +1767039699000,2935.05,2935.05,2935.05,2935.05,1 +1767039700000,2935.05,2935.05,2935.05,2935.05,1 +1767039701000,2935.05,2935.05,2935.05,2935.05,1 +1767039702000,2935.05,2935.05,2935.05,2935.05,1 +1767039703000,2935.05,2935.05,2935.05,2935.05,1 +1767039704000,2935.05,2935.05,2935.05,2935.05,1 +1767039706000,2935.05,2935.05,2935.05,2935.05,2 +1767039708000,2935.05,2935.05,2935.05,2935.05,1 +1767039709000,2934.95,2934.95,2934.95,2934.95,1 +1767039710000,2934.75,2934.75,2934.75,2934.75,2 +1767039711000,2934.75,2934.75,2934.75,2934.75,1 +1767039712000,2934.75,2934.75,2934.75,2934.75,1 +1767039714000,2934.75,2934.75,2934.75,2934.75,1 +1767039715000,2934.55,2934.55,2934.55,2934.55,1 +1767039716000,2934.4,2934.4,2934.4,2934.4,1 +1767039717000,2934.35,2934.35,2934.35,2934.35,1 +1767039718000,2934.35,2934.35,2934.35,2934.35,1 +1767039719000,2934.35,2934.35,2934.35,2934.35,1 +1767039720000,2934.35,2934.35,2934.35,2934.35,1 +1767039721000,2934.35,2934.35,2934.35,2934.35,1 +1767039722000,2934.35,2934.35,2934.35,2934.35,1 +1767039723000,2934.35,2934.35,2934.35,2934.35,1 +1767039724000,2934.05,2934.05,2934.05,2934.05,1 +1767039725000,2933.55,2933.55,2933.55,2933.55,1 +1767039727000,2933.55,2933.55,2933.55,2933.55,2 +1767039728000,2933.55,2933.55,2933.55,2933.55,1 +1767039729000,2933.95,2933.95,2933.95,2933.95,1 +1767039730000,2933.95,2933.95,2933.95,2933.95,1 +1767039731000,2933.95,2933.95,2933.95,2933.95,1 +1767039732000,2933.95,2933.95,2933.95,2933.95,1 +1767039733000,2933.95,2933.95,2933.95,2933.95,1 +1767039734000,2933.95,2933.95,2933.95,2933.95,1 +1767039735000,2933.95,2933.95,2933.95,2933.95,1 +1767039736000,2933.95,2933.95,2933.95,2933.95,1 +1767039737000,2934.35,2934.35,2934.35,2934.35,1 +1767039739000,2934.05,2934.05,2934.05,2934.05,1 +1767039740000,2934.05,2934.05,2934.05,2934.05,1 +1767039741000,2934.05,2934.05,2934.05,2934.05,1 +1767039742000,2934.05,2934.05,2934.05,2934.05,1 +1767039743000,2934.25,2934.25,2934.25,2934.25,1 +1767039744000,2934.25,2934.25,2934.25,2934.25,1 +1767039745000,2934.35,2934.35,2934.35,2934.35,1 +1767039746000,2934.35,2934.35,2934.35,2934.35,1 +1767039747000,2934.75,2934.75,2934.75,2934.75,1 +1767039748000,2934.75,2934.75,2934.75,2934.75,1 +1767039749000,2935.05,2935.05,2935.05,2935.05,1 +1767039750000,2935.05,2935.05,2935.05,2935.05,1 +1767039752000,2935.05,2935.05,2935.05,2935.05,2 +1767039753000,2935.05,2935.05,2935.05,2935.05,1 +1767039754000,2935.05,2935.05,2935.05,2935.05,1 +1767039755000,2935.05,2935.05,2935.05,2935.05,1 +1767039757000,2935.05,2935.05,2935.05,2935.05,2 +1767039758000,2935.05,2935.05,2935.05,2935.05,1 +1767039759000,2935.05,2935.05,2935.05,2935.05,1 +1767039760000,2935.05,2935.05,2935.05,2935.05,1 +1767039761000,2935.05,2935.05,2935.05,2935.05,1 +1767039762000,2935.05,2935.05,2935.05,2935.05,1 +1767039763000,2935.05,2935.05,2935.05,2935.05,1 +1767039764000,2935.05,2935.05,2935.05,2935.05,1 +1767039765000,2935.05,2935.05,2935.05,2935.05,1 +1767039767000,2935.55,2935.55,2935.55,2935.55,2 +1767039768000,2935.55,2935.55,2935.55,2935.55,1 +1767039769000,2935.55,2935.55,2935.55,2935.55,1 +1767039771000,2935.55,2935.55,2935.55,2935.55,1 +1767039772000,2935.55,2935.55,2935.55,2935.55,1 +1767039773000,2935.55,2935.55,2935.55,2935.55,1 +1767039774000,2935.85,2935.85,2935.85,2935.85,1 +1767039775000,2936.25,2936.25,2936.25,2936.25,1 +1767039776000,2936.25,2936.25,2936.25,2936.25,1 +1767039777000,2936.25,2936.25,2936.25,2936.25,1 +1767039778000,2936.25,2936.25,2936.25,2936.25,1 +1767039779000,2936.25,2936.25,2936.25,2936.25,1 +1767039780000,2936.25,2936.25,2936.25,2936.25,1 +1767039781000,2936.25,2936.25,2936.25,2936.25,1 +1767039782000,2936.25,2936.25,2936.25,2936.25,1 +1767039783000,2936.25,2936.25,2936.25,2936.25,1 +1767039784000,2936.25,2936.25,2936.25,2936.25,1 +1767039785000,2936.25,2936.25,2936.25,2936.25,1 +1767039786000,2936.25,2936.25,2936.25,2936.25,1 +1767039787000,2936.25,2936.25,2936.25,2936.25,1 +1767039788000,2936.25,2936.25,2936.25,2936.25,1 +1767039789000,2936.25,2936.25,2936.25,2936.25,1 +1767039790000,2936.25,2936.25,2936.25,2936.25,1 +1767039791000,2936.25,2936.25,2936.25,2936.25,1 +1767039792000,2936.25,2936.25,2936.25,2936.25,1 +1767039793000,2936.25,2936.25,2936.25,2936.25,1 +1767039794000,2936.35,2936.35,2936.35,2936.35,1 +1767039795000,2936.55,2936.55,2936.55,2936.55,1 +1767039796000,2936.85,2936.85,2936.85,2936.85,1 +1767039797000,2936.85,2936.85,2936.85,2936.85,1 +1767039798000,2936.85,2936.85,2936.85,2936.85,1 +1767039799000,2937.05,2937.05,2937.05,2937.05,1 +1767039800000,2937.15,2937.15,2937.15,2937.15,1 +1767039802000,2937.15,2937.15,2937.15,2937.15,2 +1767039803000,2937.15,2937.15,2937.15,2937.15,1 +1767039804000,2937.15,2937.15,2937.15,2937.15,1 +1767039805000,2937.15,2937.15,2937.15,2937.15,1 +1767039807000,2937.15,2937.15,2937.15,2937.15,1 +1767039808000,2937.15,2937.15,2937.15,2937.15,1 +1767039809000,2937.15,2937.15,2937.15,2937.15,1 +1767039810000,2937.15,2937.15,2937.15,2937.15,1 +1767039811000,2937.15,2937.15,2937.15,2937.15,1 +1767039812000,2936.25,2936.25,2936.25,2936.25,1 +1767039813000,2936.05,2936.05,2936.05,2936.05,1 +1767039814000,2935.85,2935.85,2935.85,2935.85,1 +1767039815000,2935.85,2935.85,2935.85,2935.85,1 +1767039816000,2935.65,2935.65,2935.65,2935.65,1 +1767039817000,2935.35,2935.35,2935.35,2935.35,1 +1767039818000,2935.05,2935.05,2935.05,2935.05,1 +1767039819000,2934.55,2934.55,2934.55,2934.55,1 +1767039820000,2934.55,2934.55,2934.55,2934.55,1 +1767039821000,2934.35,2934.35,2934.35,2934.35,1 +1767039822000,2934.35,2934.35,2934.35,2934.35,1 +1767039823000,2934.35,2934.35,2934.35,2934.35,1 +1767039824000,2934.35,2934.35,2934.35,2934.35,1 +1767039825000,2934.35,2934.35,2934.35,2934.35,1 +1767039826000,2934.35,2934.35,2934.35,2934.35,1 +1767039827000,2934.35,2934.35,2934.35,2934.35,1 +1767039828000,2934.35,2934.35,2934.35,2934.35,1 +1767039829000,2934.35,2934.35,2934.35,2934.35,1 +1767039830000,2934.35,2934.35,2934.35,2934.35,1 +1767039831000,2934.35,2934.35,2934.35,2934.35,1 +1767039832000,2934.85,2934.85,2934.85,2934.85,1 +1767039833000,2934.85,2934.85,2934.85,2934.85,1 +1767039834000,2934.85,2934.85,2934.85,2934.85,1 +1767039835000,2934.85,2934.85,2934.85,2934.85,1 +1767039837000,2934.95,2934.95,2934.95,2934.95,2 +1767039838000,2934.95,2934.95,2934.95,2934.95,1 +1767039839000,2934.95,2934.95,2934.95,2934.95,1 +1767039840000,2934.95,2934.95,2934.95,2934.95,1 +1767039842000,2934.95,2934.95,2934.95,2934.95,1 +1767039843000,2934.45,2934.45,2934.45,2934.45,1 +1767039844000,2934.45,2934.45,2934.15,2934.15,2 +1767039845000,2934.15,2934.15,2934.15,2934.15,1 +1767039847000,2934.05,2934.05,2934.05,2934.05,1 +1767039848000,2934.05,2934.05,2934.05,2934.05,1 +1767039849000,2934.05,2934.05,2934.05,2934.05,1 +1767039850000,2934.15,2934.15,2934.15,2934.15,1 +1767039851000,2934.45,2934.45,2934.45,2934.45,1 +1767039852000,2934.45,2934.45,2934.45,2934.45,1 +1767039853000,2934.65,2934.65,2934.65,2934.65,1 +1767039854000,2934.65,2934.65,2934.65,2934.65,1 +1767039855000,2934.65,2934.65,2934.65,2934.65,1 +1767039856000,2934.65,2934.65,2934.65,2934.65,1 +1767039857000,2934.65,2934.65,2934.65,2934.65,1 +1767039858000,2934.85,2934.85,2934.85,2934.85,1 +1767039859000,2934.85,2934.85,2934.85,2934.85,1 +1767039860000,2934.85,2934.85,2934.85,2934.85,1 +1767039861000,2934.85,2934.85,2934.85,2934.85,1 +1767039862000,2934.85,2934.85,2934.85,2934.85,1 +1767039863000,2934.85,2934.85,2934.85,2934.85,1 +1767039864000,2934.85,2934.85,2934.85,2934.85,1 +1767039865000,2934.85,2934.85,2934.85,2934.85,1 +1767039866000,2934.85,2934.85,2934.85,2934.85,1 +1767039867000,2934.85,2934.85,2934.85,2934.85,1 +1767039868000,2934.85,2934.85,2934.85,2934.85,1 +1767039870000,2934.85,2934.85,2934.85,2934.85,2 +1767039871000,2934.85,2934.85,2934.85,2934.85,1 +1767039872000,2934.85,2934.85,2934.85,2934.85,1 +1767039874000,2934.85,2934.85,2934.85,2934.85,2 +1767039875000,2934.85,2934.85,2934.85,2934.85,1 +1767039876000,2934.85,2934.85,2934.85,2934.85,1 +1767039877000,2934.85,2934.85,2934.85,2934.85,1 +1767039879000,2934.85,2934.85,2934.85,2934.85,1 +1767039880000,2934.85,2934.85,2934.85,2934.85,1 +1767039881000,2934.85,2934.85,2934.85,2934.85,1 +1767039882000,2934.85,2934.85,2934.85,2934.85,1 +1767039883000,2934.85,2934.85,2934.85,2934.85,1 +1767039884000,2934.85,2934.85,2934.85,2934.85,1 +1767039885000,2934.85,2934.85,2934.85,2934.85,1 +1767039886000,2934.85,2934.85,2934.85,2934.85,1 +1767039887000,2934.85,2934.85,2934.85,2934.85,1 +1767039888000,2934.85,2934.85,2934.85,2934.85,1 +1767039889000,2934.85,2934.85,2934.85,2934.85,1 +1767039890000,2934.85,2934.85,2934.85,2934.85,1 +1767039891000,2934.85,2934.85,2934.85,2934.85,1 +1767039892000,2934.85,2934.85,2934.85,2934.85,1 +1767039893000,2934.85,2934.85,2934.85,2934.85,1 +1767039894000,2934.85,2934.85,2934.85,2934.85,1 +1767039895000,2934.85,2934.85,2934.85,2934.85,1 +1767039896000,2934.85,2934.85,2934.85,2934.85,1 +1767039897000,2934.85,2934.85,2934.85,2934.85,1 +1767039898000,2934.85,2934.85,2934.85,2934.85,1 +1767039899000,2934.85,2934.85,2934.85,2934.85,1 +1767039900000,2934.85,2934.85,2934.85,2934.85,1 +1767039901000,2934.85,2934.85,2934.85,2934.85,1 +1767039902000,2934.85,2934.85,2934.85,2934.85,1 +1767039903000,2934.85,2934.85,2934.85,2934.85,1 +1767039904000,2934.85,2934.85,2934.85,2934.85,1 +1767039905000,2934.45,2934.45,2934.45,2934.45,1 +1767039906000,2934.05,2934.05,2934.05,2934.05,1 +1767039908000,2934.05,2934.05,2933.55,2933.55,2 +1767039909000,2933.55,2933.55,2933.55,2933.55,1 +1767039910000,2933.55,2933.55,2933.55,2933.55,1 +1767039911000,2933.55,2933.55,2933.55,2933.55,1 +1767039913000,2933.55,2933.55,2933.55,2933.55,2 +1767039914000,2933.55,2933.55,2933.55,2933.55,1 +1767039915000,2933.55,2933.55,2933.55,2933.55,1 +1767039917000,2933.55,2933.55,2933.55,2933.55,1 +1767039918000,2933.55,2933.55,2933.55,2933.55,1 +1767039919000,2933.55,2933.55,2933.55,2933.55,1 +1767039920000,2933.55,2933.55,2933.55,2933.55,1 +1767039921000,2933.55,2933.55,2933.55,2933.55,1 +1767039922000,2933.55,2933.55,2933.55,2933.55,1 +1767039923000,2933.55,2933.55,2933.55,2933.55,1 +1767039924000,2933.55,2933.55,2933.55,2933.55,1 +1767039925000,2933.55,2933.55,2933.55,2933.55,2 +1767039927000,2933.55,2933.55,2933.55,2933.55,1 +1767039928000,2933.55,2933.55,2933.55,2933.55,1 +1767039929000,2933.5,2933.5,2933.5,2933.5,1 +1767039930000,2933.45,2933.45,2933.45,2933.45,1 +1767039931000,2933.45,2933.45,2933.45,2933.45,1 +1767039932000,2933.45,2933.45,2933.45,2933.45,1 +1767039933000,2933.45,2933.45,2933.45,2933.45,1 +1767039934000,2933.45,2933.45,2933.45,2933.45,1 +1767039935000,2933.45,2933.45,2933.45,2933.45,1 +1767039936000,2933.45,2933.45,2933.45,2933.45,1 +1767039937000,2933.45,2933.45,2933.45,2933.45,1 +1767039938000,2933.45,2933.45,2933.45,2933.45,1 +1767039939000,2933.45,2933.45,2933.45,2933.45,1 +1767039940000,2933.25,2933.25,2933.25,2933.25,1 +1767039941000,2933.25,2933.25,2933.25,2933.25,1 +1767039942000,2933.25,2933.25,2933.25,2933.25,1 +1767039943000,2933.25,2933.25,2933.25,2933.25,1 +1767039944000,2933.25,2933.25,2933.25,2933.25,1 +1767039945000,2933.25,2933.25,2933.25,2933.25,1 +1767039946000,2933.25,2933.25,2933.25,2933.25,1 +1767039947000,2933.25,2933.25,2933.25,2933.25,1 +1767039948000,2933.25,2933.25,2933.25,2933.25,1 +1767039949000,2933.45,2933.45,2933.45,2933.45,1 +1767039950000,2933.45,2933.45,2933.45,2933.45,1 +1767039951000,2933.45,2933.45,2933.45,2933.45,1 +1767039952000,2933.45,2933.45,2933.45,2933.45,1 +1767039954000,2933.45,2933.45,2933.45,2933.45,2 +1767039955000,2933.45,2933.45,2933.45,2933.45,1 +1767039957000,2933.45,2933.45,2933.45,2933.45,1 +1767039958000,2933.45,2933.45,2933.45,2933.45,1 +1767039959000,2933.45,2933.45,2933.45,2933.45,1 +1767039960000,2933.45,2933.45,2933.45,2933.45,1 +1767039961000,2933.45,2933.45,2933.45,2933.45,1 +1767039962000,2933.45,2933.45,2933.45,2933.45,1 +1767039963000,2933.45,2933.45,2933.45,2933.45,1 +1767039964000,2933.45,2933.45,2933.45,2933.45,1 +1767039965000,2933.35,2933.35,2933.35,2933.35,2 +1767039967000,2933.35,2933.35,2933.35,2933.35,1 +1767039968000,2933.35,2933.35,2933.35,2933.35,1 +1767039969000,2933.35,2933.35,2933.35,2933.35,1 +1767039970000,2933.35,2933.35,2933.35,2933.35,1 +1767039971000,2933.35,2933.35,2933.35,2933.35,1 +1767039972000,2933.35,2933.35,2933.35,2933.35,1 +1767039973000,2933.35,2933.35,2933.35,2933.35,1 +1767039974000,2933.35,2933.35,2933.35,2933.35,1 +1767039975000,2933.35,2933.35,2933.35,2933.35,1 +1767039976000,2933.35,2933.35,2933.35,2933.35,1 +1767039977000,2933.35,2933.35,2933.35,2933.35,1 +1767039978000,2933.35,2933.35,2933.35,2933.35,1 +1767039979000,2933.35,2933.35,2933.35,2933.35,1 +1767039980000,2933.35,2933.35,2933.35,2933.35,1 +1767039981000,2933.35,2933.35,2933.35,2933.35,1 +1767039982000,2933.35,2933.35,2933.35,2933.35,1 +1767039983000,2933.35,2933.35,2933.35,2933.35,1 +1767039984000,2933.35,2933.35,2933.35,2933.35,1 +1767039985000,2933.35,2933.35,2933.35,2933.35,1 +1767039986000,2933.35,2933.35,2933.35,2933.35,1 +1767039987000,2933.35,2933.35,2933.35,2933.35,1 +1767039988000,2933.35,2933.35,2933.35,2933.35,1 +1767039989000,2933.75,2933.75,2933.75,2933.75,1 +1767039990000,2933.75,2933.75,2933.75,2933.75,1 +1767039991000,2932.95,2932.95,2932.95,2932.95,1 +1767039992000,2932.95,2932.95,2932.95,2932.95,1 +1767039994000,2932.95,2932.95,2932.95,2932.95,2 +1767039995000,2932.25,2932.25,2932.25,2932.25,1 +1767039996000,2931.9,2931.9,2931.9,2931.9,1 +1767039997000,2931.85,2931.85,2931.85,2931.85,1 +1767039999000,2931.85,2931.85,2931.85,2931.85,1 +1767040000000,2931.35,2931.35,2931.35,2931.35,1 +1767040001000,2931.25,2931.25,2931.25,2931.25,1 +1767040002000,2931.25,2931.25,2931.25,2931.25,1 +1767040003000,2931.25,2931.25,2931.25,2931.25,1 +1767040004000,2931.25,2931.25,2931.25,2931.25,1 +1767040005000,2931.25,2931.25,2931.25,2931.25,1 +1767040006000,2931.25,2931.25,2931.25,2931.25,1 +1767040007000,2931.25,2931.25,2931.25,2931.25,1 +1767040008000,2931.25,2931.25,2931.25,2931.25,1 +1767040009000,2931.25,2931.25,2931.25,2931.25,1 +1767040010000,2931.25,2931.25,2931.25,2931.25,1 +1767040011000,2931.25,2931.25,2931.25,2931.25,1 +1767040012000,2931.25,2931.25,2931.25,2931.25,1 +1767040013000,2931.25,2931.25,2931.25,2931.25,1 +1767040014000,2931.25,2931.25,2931.25,2931.25,1 +1767040015000,2931.4,2931.4,2931.4,2931.4,1 +1767040016000,2931.55,2931.55,2931.55,2931.55,1 +1767040017000,2931.55,2931.55,2931.55,2931.55,1 +1767040018000,2931.55,2931.55,2931.55,2931.55,1 +1767040019000,2931.55,2931.55,2931.55,2931.55,1 +1767040020000,2931.35,2931.35,2931.35,2931.35,1 +1767040021000,2931.15,2931.15,2931.15,2931.15,1 +1767040022000,2931.15,2931.15,2931.15,2931.15,1 +1767040024000,2931.35,2931.35,2931.35,2931.35,2 +1767040026000,2931.35,2931.45,2931.35,2931.45,2 +1767040027000,2931.45,2931.45,2931.45,2931.45,1 +1767040029000,2931.45,2931.45,2931.45,2931.45,2 +1767040030000,2931.45,2931.45,2931.45,2931.45,1 +1767040031000,2931.65,2931.65,2931.65,2931.65,1 +1767040032000,2931.75,2931.75,2931.75,2931.75,1 +1767040034000,2931.75,2931.75,2931.75,2931.75,1 +1767040035000,2931.75,2931.75,2931.75,2931.75,1 +1767040036000,2931.85,2931.85,2931.85,2931.85,1 +1767040037000,2931.85,2931.85,2931.85,2931.85,1 +1767040038000,2932.25,2932.25,2932.25,2932.25,1 +1767040039000,2932.25,2932.25,2932.25,2932.25,1 +1767040040000,2932.25,2932.25,2932.25,2932.25,1 +1767040041000,2932.25,2932.25,2932.25,2932.25,1 +1767040042000,2932.25,2932.25,2932.25,2932.25,1 +1767040043000,2932.25,2932.25,2932.25,2932.25,1 +1767040044000,2932.25,2932.25,2932.25,2932.25,1 +1767040045000,2933.35,2933.35,2933.35,2933.35,1 +1767040046000,2933.35,2933.35,2933.35,2933.35,1 +1767040047000,2933.35,2933.35,2933.35,2933.35,1 +1767040048000,2933.35,2933.35,2933.35,2933.35,1 +1767040049000,2933.35,2933.35,2933.35,2933.35,1 +1767040050000,2933.35,2933.35,2933.35,2933.35,1 +1767040051000,2933.35,2933.35,2933.35,2933.35,1 +1767040052000,2933.35,2933.35,2933.35,2933.35,1 +1767040053000,2933.35,2933.35,2933.35,2933.35,1 +1767040054000,2933.35,2933.35,2933.35,2933.35,1 +1767040055000,2933.35,2933.35,2933.35,2933.35,1 +1767040056000,2933.35,2933.35,2933.35,2933.35,1 +1767040057000,2933.35,2933.35,2933.35,2933.35,1 +1767040058000,2933.35,2933.35,2933.35,2933.35,1 +1767040059000,2933.35,2933.35,2933.35,2933.35,1 +1767040060000,2932.95,2932.95,2932.95,2932.95,1 +1767040062000,2932.75,2932.75,2932.55,2932.55,2 +1767040063000,2932.45,2932.45,2932.45,2932.45,1 +1767040064000,2932.45,2932.45,2932.45,2932.45,1 +1767040065000,2932.45,2932.45,2932.45,2932.45,1 +1767040066000,2932.45,2932.45,2932.45,2932.45,1 +1767040067000,2932.45,2932.45,2932.45,2932.45,1 +1767040068000,2932.45,2932.45,2932.45,2932.45,1 +1767040070000,2932.35,2932.35,2932.35,2932.35,1 +1767040071000,2932.35,2932.35,2932.35,2932.35,1 +1767040072000,2932.35,2932.35,2932.35,2932.35,1 +1767040073000,2932.35,2932.35,2932.35,2932.35,1 +1767040074000,2932.95,2932.95,2932.95,2932.95,1 +1767040075000,2932.95,2932.95,2932.95,2932.95,1 +1767040076000,2932.95,2932.95,2932.95,2932.95,1 +1767040077000,2932.95,2932.95,2932.95,2932.95,1 +1767040078000,2932.95,2932.95,2932.95,2932.95,1 +1767040079000,2932.95,2932.95,2932.95,2932.95,1 +1767040080000,2932.95,2932.95,2932.95,2932.95,1 +1767040081000,2932.95,2932.95,2932.95,2932.95,1 +1767040082000,2932.95,2932.95,2932.95,2932.95,1 +1767040083000,2932.95,2932.95,2932.95,2932.95,1 +1767040084000,2932.95,2932.95,2932.95,2932.95,1 +1767040085000,2932.95,2932.95,2932.95,2932.95,1 +1767040086000,2932.95,2932.95,2932.95,2932.95,1 +1767040087000,2932.95,2932.95,2932.95,2932.95,1 +1767040088000,2932.95,2932.95,2932.95,2932.95,1 +1767040089000,2932.95,2932.95,2932.95,2932.95,1 +1767040090000,2932.95,2932.95,2932.95,2932.95,1 +1767040091000,2932.95,2932.95,2932.95,2932.95,1 +1767040092000,2932.95,2932.95,2932.95,2932.95,1 +1767040093000,2932.95,2932.95,2932.95,2932.95,1 +1767040094000,2932.95,2932.95,2932.95,2932.95,1 +1767040095000,2932.55,2932.55,2932.55,2932.55,1 +1767040096000,2932.25,2932.25,2932.25,2932.25,1 +1767040097000,2931.85,2931.85,2931.85,2931.85,1 +1767040098000,2931.85,2931.85,2931.85,2931.85,1 +1767040099000,2931.85,2931.85,2931.85,2931.85,1 +1767040101000,2931.85,2931.85,2931.85,2931.85,2 +1767040103000,2931.85,2931.85,2931.85,2931.85,2 +1767040105000,2931.85,2931.85,2931.85,2931.85,1 +1767040106000,2931.85,2931.85,2931.85,2931.85,1 +1767040107000,2931.85,2931.85,2931.85,2931.85,2 +1767040109000,2931.85,2931.85,2931.85,2931.85,1 +1767040110000,2931.85,2931.85,2931.85,2931.85,1 +1767040111000,2931.85,2931.85,2931.85,2931.85,1 +1767040112000,2931.85,2931.85,2931.85,2931.85,1 diff --git a/florida/requirements.txt b/florida/requirements.txt new file mode 100644 index 0000000..5221f31 --- /dev/null +++ b/florida/requirements.txt @@ -0,0 +1,12 @@ +# Core Web3 and Blockchain interaction +web3>=7.0.0 +eth-account>=0.13.0 + +# Hyperliquid SDK for hedging +hyperliquid-python-sdk>=0.6.0 + +# Environment and Configuration +python-dotenv>=1.0.0 + +# Utility +requests>=2.31.0 diff --git a/florida/summaries/5178639.PNG b/florida/summaries/5178639.PNG new file mode 100644 index 0000000000000000000000000000000000000000..50eee4b4cef90aadc86ed8c6719c565e84d3420f GIT binary patch literal 141407 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 HmAC#c0k= 0.0869 (x5.0) +1766982586249, 2025-12-29 05:29:46,249 - [TRIG] Net BNB: SELL 0.5795 | Tgt: -0.5795 / Cur: 0.0000 | Thresh: 0.0869 +1766982586250, 2025-12-29 05:29:46,250 - [ORDER] IOC BNB SELL 0.579 @ 868.4 +1766982588546, 2025-12-29 05:29:48,546 - Order filled immediately. +1766982588547, 2025-12-29 05:29:48,547 - [SHADOW] Created Maker SELL @ 869.28 +1766982588548, 2025-12-29 05:29:48,548 - Sleeping 5s to allow position update... +1766982600941, 2025-12-29 05:30:00,941 - [IDLE] ETH | Px: 3043.85 | M: 3036.1 | B: 3046.7 / S: 3025.6 | delta: -0.1580(-0.0174) | Adj: -3.81%, Vol: 2.51, Thr: 0.0237 | PnL: -10.62 | TotPnL: -10.62 +1766982600943, 2025-12-29 05:30:00,943 - [IDLE] BNB | Px: 869.28 | M: 869.3 | B: 871.2 / S: 867.3 | delta: -0.5793(-0.0003) | Adj: +0.08%, Vol: 1.33, Thr: 0.0869 | PnL: 0.01 | TotPnL: 0.01 +1766982630906, 2025-12-29 05:30:30,906 - [IDLE] ETH | Px: 3044.25 | M: 3036.9 | B: 3047.4 / S: 3026.4 | delta: -0.1571(-0.0165) | Adj: -3.83%, Vol: 2.31, Thr: 0.0236 | PnL: -10.60 | TotPnL: -10.60 +1766982630909, 2025-12-29 05:30:30,909 - [IDLE] BNB | Px: 869.36 | M: 869.4 | B: 871.4 / S: 867.5 | delta: -0.5752(+0.0038) | Adj: +0.03%, Vol: 1.28, Thr: 0.0863 | PnL: -0.09 | TotPnL: -0.09 +1766982690463, 2025-12-29 05:31:30,463 - [IDLE] ETH | Px: 3041.65 | M: 3031.7 | B: 3042.6 / S: 3020.9 | delta: -0.1630(-0.0224) | Adj: -3.69%, Vol: 1.77, Thr: 0.0244 | PnL: -10.32 | TotPnL: -10.32 +1766982690465, 2025-12-29 05:31:30,465 - [IDLE] BNB | Px: 868.84 | M: 868.3 | B: 870.4 / S: 866.3 | delta: -0.6007(-0.0217) | Adj: +0.34%, Vol: 1.00, Thr: 0.0901 | PnL: 0.23 | TotPnL: 0.23 +1766982720857, 2025-12-29 05:32:00,857 - [IDLE] ETH | Px: 3041.85 | M: 3032.1 | B: 3042.9 / S: 3021.3 | delta: -0.1625(-0.0219) | Adj: -3.70%, Vol: 1.41, Thr: 0.0244 | PnL: -10.36 | TotPnL: -10.36 +1766982720859, 2025-12-29 05:32:00,859 - [IDLE] BNB | Px: 868.84 | M: 868.4 | B: 870.4 / S: 866.4 | delta: -0.6002(-0.0212) | Adj: +0.33%, Vol: 1.00, Thr: 0.0900 | PnL: 0.19 | TotPnL: 0.19 +1766982810334, 2025-12-29 05:33:30,334 - [IDLE] ETH | Px: 3042.05 | M: 3032.5 | B: 3043.3 / S: 3021.7 | delta: -0.1621(-0.0215) | Adj: -3.71%, Vol: 1.00, Thr: 0.0243 | PnL: -10.33 | TotPnL: -10.33 +1766982810337, 2025-12-29 05:33:30,337 - [IDLE] BNB | Px: 868.98 | M: 868.6 | B: 870.6 / S: 866.6 | delta: -0.5940(-0.0150) | Adj: +0.26%, Vol: 1.00, Thr: 0.0891 | PnL: 0.17 | TotPnL: 0.17 +1766982870958, 2025-12-29 05:34:30,958 - [IDLE] ETH | Px: 3045.55 | M: 3039.5 | B: 3049.8 / S: 3029.2 | delta: -0.1542(-0.0136) | Adj: -3.89%, Vol: 1.00, Thr: 0.0231 | PnL: -10.84 | TotPnL: -10.84 +1766982870961, 2025-12-29 05:34:30,961 - [IDLE] BNB | Px: 869.40 | M: 869.5 | B: 871.5 / S: 867.6 | delta: -0.5736(+0.0054) | Adj: +0.01%, Vol: 1.00, Thr: 0.0860 | PnL: -0.08 | TotPnL: -0.08 +1766982900857, 2025-12-29 05:35:00,857 - [IDLE] ETH | Px: 3046.55 | M: 3041.5 | B: 3051.6 / S: 3031.4 | delta: -0.1519(-0.0113) | Adj: -3.95%, Vol: 1.00, Thr: 0.0228 | PnL: -10.99 | TotPnL: -10.99 +1766982900859, 2025-12-29 05:35:00,859 - [IDLE] BNB | Px: 869.72 | M: 870.2 | B: 872.1 / S: 868.3 | delta: -0.5580(+0.0210) | Adj: -0.18%, Vol: 1.00, Thr: 0.0837 | PnL: -0.24 | TotPnL: -0.24 +1766982960405, 2025-12-29 05:36:00,405 - [IDLE] ETH | Px: 3047.65 | M: 3043.7 | B: 3053.7 / S: 3033.7 | delta: -0.1495(-0.0089) | Adj: -4.00%, Vol: 1.12, Thr: 0.0224 | PnL: -11.11 | TotPnL: -11.11 +1766982960407, 2025-12-29 05:36:00,407 - [IDLE] BNB | Px: 870.04 | M: 870.8 | B: 872.7 / S: 869.0 | delta: -0.5433(+0.0357) | Adj: -0.36%, Vol: 1.00, Thr: 0.0815 | PnL: -0.45 | TotPnL: -0.45 +1766983020846, 2025-12-29 05:37:00,846 - [IDLE] ETH | Px: 3049.15 | M: 3046.7 | B: 3056.5 / S: 3036.9 | delta: -0.1461(-0.0055) | Adj: -4.08%, Vol: 1.53, Thr: 0.0219 | PnL: -11.32 | TotPnL: -11.32 +1766983020848, 2025-12-29 05:37:00,848 - [IDLE] BNB | Px: 870.31 | M: 871.4 | B: 873.2 / S: 869.6 | delta: -0.5302(+0.0488) | Adj: -0.52%, Vol: 1.04, Thr: 0.0795 | PnL: -0.55 | TotPnL: -0.55 +1766983050330, 2025-12-29 05:37:30,330 - [IDLE] ETH | Px: 3049.85 | M: 3048.1 | B: 3057.7 / S: 3038.4 | delta: -0.1446(-0.0040) | Adj: -4.12%, Vol: 1.74, Thr: 0.0217 | PnL: -11.46 | TotPnL: -11.46 +1766983050333, 2025-12-29 05:37:30,333 - [IDLE] BNB | Px: 870.26 | M: 871.3 | B: 873.1 / S: 869.5 | delta: -0.5328(+0.0462) | Adj: -0.49%, Vol: 1.14, Thr: 0.0799 | PnL: -0.61 | TotPnL: -0.61 +1766983110106, 2025-12-29 05:38:30,106 - [IDLE] ETH | Px: 3051.45 | M: 3051.3 | B: 3060.7 / S: 3041.8 | delta: -0.1410(-0.0004) | Adj: -4.20%, Vol: 2.05, Thr: 0.0211 | PnL: -11.64 | TotPnL: -11.64 +1766983110109, 2025-12-29 05:38:30,109 - [IDLE] BNB | Px: 870.32 | M: 871.4 | B: 873.2 / S: 869.6 | delta: -0.5300(+0.0490) | Adj: -0.52%, Vol: 1.24, Thr: 0.0795 | PnL: -0.63 | TotPnL: -0.63 +1766983140082, 2025-12-29 05:39:00,082 - [IDLE] ETH | Px: 3051.45 | M: 3051.3 | B: 3060.7 / S: 3041.8 | delta: -0.1410(-0.0004) | Adj: -4.20%, Vol: 2.24, Thr: 0.0211 | PnL: -11.61 | TotPnL: -11.61 +1766983140084, 2025-12-29 05:39:00,084 - [IDLE] BNB | Px: 870.22 | M: 871.2 | B: 873.0 / S: 869.4 | delta: -0.5345(+0.0445) | Adj: -0.47%, Vol: 1.28, Thr: 0.0802 | PnL: -0.58 | TotPnL: -0.58 +1766983170916, 2025-12-29 05:39:30,916 - [IDLE] ETH | Px: 3049.05 | M: 3046.5 | B: 3056.3 / S: 3036.7 | delta: -0.1463(-0.0057) | Adj: -4.07%, Vol: 2.27, Thr: 0.0220 | PnL: -11.33 | TotPnL: -11.33 +1766983170918, 2025-12-29 05:39:30,918 - [IDLE] BNB | Px: 869.91 | M: 870.6 | B: 872.4 / S: 868.7 | delta: -0.5492(+0.0298) | Adj: -0.29%, Vol: 1.27, Thr: 0.0824 | PnL: -0.38 | TotPnL: -0.38 +1766983200818, 2025-12-29 05:40:00,818 - [IDLE] ETH | Px: 3049.05 | M: 3046.5 | B: 3056.3 / S: 3036.7 | delta: -0.1463(-0.0057) | Adj: -4.07%, Vol: 2.29, Thr: 0.0220 | PnL: -11.33 | TotPnL: -11.33 +1766983200821, 2025-12-29 05:40:00,821 - [IDLE] BNB | Px: 869.98 | M: 870.7 | B: 872.6 / S: 868.9 | delta: -0.5459(+0.0331) | Adj: -0.33%, Vol: 1.28, Thr: 0.0819 | PnL: -0.39 | TotPnL: -0.39 +1766983260084, 2025-12-29 05:41:00,084 - [IDLE] ETH | Px: 3049.25 | M: 3046.9 | B: 3056.6 / S: 3037.1 | delta: -0.1459(-0.0053) | Adj: -4.08%, Vol: 2.22, Thr: 0.0219 | PnL: -11.36 | TotPnL: -11.36 +1766983260086, 2025-12-29 05:41:00,086 - [IDLE] BNB | Px: 870.06 | M: 870.9 | B: 872.7 / S: 869.1 | delta: -0.5423(+0.0367) | Adj: -0.37%, Vol: 1.23, Thr: 0.0813 | PnL: -0.46 | TotPnL: -0.46 +1766983290675, 2025-12-29 05:41:30,675 - [IDLE] ETH | Px: 3046.55 | M: 3041.5 | B: 3051.6 / S: 3031.4 | delta: -0.1519(-0.0113) | Adj: -3.95%, Vol: 2.07, Thr: 0.0228 | PnL: -11.01 | TotPnL: -11.01 +1766983290678, 2025-12-29 05:41:30,678 - [IDLE] BNB | Px: 869.51 | M: 869.8 | B: 871.7 / S: 867.8 | delta: -0.5683(+0.0107) | Adj: -0.05%, Vol: 1.14, Thr: 0.0852 | PnL: -0.25 | TotPnL: -0.25 +1766983320684, 2025-12-29 05:42:00,684 - [IDLE] ETH | Px: 3045.85 | M: 3040.1 | B: 3050.4 / S: 3029.9 | delta: -0.1535(-0.0129) | Adj: -3.91%, Vol: 1.90, Thr: 0.0230 | PnL: -10.90 | TotPnL: -10.90 +1766983320686, 2025-12-29 05:42:00,686 - [IDLE] BNB | Px: 869.32 | M: 869.4 | B: 871.3 / S: 867.4 | delta: -0.5772(+0.0018) | Adj: +0.05%, Vol: 1.05, Thr: 0.0866 | PnL: -0.06 | TotPnL: -0.06 +1766983410347, 2025-12-29 05:43:30,347 - [IDLE] ETH | Px: 3047.35 | M: 3043.1 | B: 3053.1 / S: 3033.1 | delta: -0.1501(-0.0095) | Adj: -3.99%, Vol: 1.20, Thr: 0.0225 | PnL: -11.11 | TotPnL: -11.11 +1766983410350, 2025-12-29 05:43:30,350 - [IDLE] BNB | Px: 869.52 | M: 869.8 | B: 871.7 / S: 867.9 | delta: -0.5676(+0.0114) | Adj: -0.06%, Vol: 1.00, Thr: 0.0851 | PnL: -0.17 | TotPnL: -0.17 +1766983440872, 2025-12-29 05:44:00,872 - [IDLE] ETH | Px: 3047.15 | M: 3042.7 | B: 3052.8 / S: 3032.6 | delta: -0.1506(-0.0100) | Adj: -3.98%, Vol: 1.06, Thr: 0.0226 | PnL: -11.07 | TotPnL: -11.07 +1766983440874, 2025-12-29 05:44:00,874 - [IDLE] BNB | Px: 869.34 | M: 869.4 | B: 871.3 / S: 867.4 | delta: -0.5767(+0.0023) | Adj: +0.05%, Vol: 1.00, Thr: 0.0865 | PnL: -0.10 | TotPnL: -0.10 +1766983500399, 2025-12-29 05:45:00,399 - [IDLE] ETH | Px: 3045.85 | M: 3040.1 | B: 3050.4 / S: 3029.9 | delta: -0.1535(-0.0129) | Adj: -3.91%, Vol: 1.07, Thr: 0.0230 | PnL: -10.90 | TotPnL: -10.90 +1766983500402, 2025-12-29 05:45:00,402 - [IDLE] BNB | Px: 869.44 | M: 869.6 | B: 871.5 / S: 867.7 | delta: -0.5714(+0.0076) | Adj: -0.02%, Vol: 1.00, Thr: 0.0857 | PnL: -0.13 | TotPnL: -0.13 +1766983530852, 2025-12-29 05:45:30,852 - [IDLE] ETH | Px: 3045.05 | M: 3038.5 | B: 3048.9 / S: 3028.2 | delta: -0.1553(-0.0147) | Adj: -3.87%, Vol: 1.13, Thr: 0.0233 | PnL: -10.73 | TotPnL: -10.73 +1766983530854, 2025-12-29 05:45:30,854 - [IDLE] BNB | Px: 869.32 | M: 869.3 | B: 871.3 / S: 867.4 | delta: -0.5776(+0.0014) | Adj: +0.06%, Vol: 1.00, Thr: 0.0866 | PnL: -0.05 | TotPnL: -0.05 +1766983650920, 2025-12-29 05:47:30,920 - [IDLE] ETH | Px: 3044.15 | M: 3036.7 | B: 3047.2 / S: 3026.2 | delta: -0.1573(-0.0167) | Adj: -3.82%, Vol: 1.40, Thr: 0.0236 | PnL: -10.66 | TotPnL: -10.66 +1766983650922, 2025-12-29 05:47:30,922 - [IDLE] BNB | Px: 869.22 | M: 869.1 | B: 871.1 / S: 867.2 | delta: -0.5822(-0.0032) | Adj: +0.12%, Vol: 1.00, Thr: 0.0873 | PnL: 0.01 | TotPnL: 0.01 +1766983680725, 2025-12-29 05:48:00,725 - [IDLE] ETH | Px: 3044.25 | M: 3036.9 | B: 3047.4 / S: 3026.4 | delta: -0.1571(-0.0165) | Adj: -3.83%, Vol: 1.35, Thr: 0.0236 | PnL: -10.64 | TotPnL: -10.64 +1766983680728, 2025-12-29 05:48:00,728 - [IDLE] BNB | Px: 869.28 | M: 869.3 | B: 871.2 / S: 867.3 | delta: -0.5791(-0.0001) | Adj: +0.08%, Vol: 1.00, Thr: 0.0869 | PnL: -0.04 | TotPnL: -0.04 +1766983710673, 2025-12-29 05:48:30,673 - [IDLE] ETH | Px: 3044.15 | M: 3036.7 | B: 3047.2 / S: 3026.2 | delta: -0.1573(-0.0167) | Adj: -3.82%, Vol: 1.20, Thr: 0.0236 | PnL: -10.63 | TotPnL: -10.63 +1766983710676, 2025-12-29 05:48:30,676 - [IDLE] BNB | Px: 869.13 | M: 869.0 | B: 870.9 / S: 867.0 | delta: -0.5865(-0.0075) | Adj: +0.17%, Vol: 1.00, Thr: 0.0880 | PnL: 0.04 | TotPnL: 0.04 +1766983830715, 2025-12-29 05:50:30,715 - [IDLE] ETH | Px: 3043.35 | M: 3035.1 | B: 3045.7 / S: 3024.5 | delta: -0.1591(-0.0185) | Adj: -3.78%, Vol: 1.08, Thr: 0.0239 | PnL: -10.53 | TotPnL: -10.53 +1766983830718, 2025-12-29 05:50:30,718 - [IDLE] BNB | Px: 868.78 | M: 868.2 | B: 870.3 / S: 866.2 | delta: -0.6031(-0.0241) | Adj: +0.37%, Vol: 1.00, Thr: 0.0905 | PnL: 0.30 | TotPnL: 0.30 +1766983860864, 2025-12-29 05:51:00,864 - [IDLE] ETH | Px: 3043.65 | M: 3035.7 | B: 3046.3 / S: 3025.2 | delta: -0.1584(-0.0178) | Adj: -3.80%, Vol: 1.00, Thr: 0.0238 | PnL: -10.59 | TotPnL: -10.59 +1766983860867, 2025-12-29 05:51:00,867 - [IDLE] BNB | Px: 868.94 | M: 868.6 | B: 870.6 / S: 866.6 | delta: -0.5959(-0.0169) | Adj: +0.28%, Vol: 1.00, Thr: 0.0894 | PnL: 0.20 | TotPnL: 0.20 +1766983920930, 2025-12-29 05:52:00,930 - [IDLE] ETH | Px: 3041.15 | M: 3030.7 | B: 3041.7 / S: 3019.8 | delta: -0.1641(-0.0235) | Adj: -3.67%, Vol: 1.11, Thr: 0.0246 | PnL: -10.22 | TotPnL: -10.22 +1766983920933, 2025-12-29 05:52:00,933 - [IDLE] BNB | Px: 868.50 | M: 867.7 | B: 869.7 / S: 865.6 | delta: -0.6167(-0.0377) | Adj: +0.53%, Vol: 1.00, Thr: 0.0925 | PnL: 0.47 | TotPnL: 0.47 +1766983924859, 2025-12-29 05:52:04,859 - [TRIG] Net ETH: SELL 0.0248 | Tgt: -0.1654 / Cur: -0.1406 | Thresh: 0.0248 +1766983924860, 2025-12-29 05:52:04,860 - [ORDER] ALO ETH SELL 0.0248 @ 3040.6 +1766983926618, 2025-12-29 05:52:06,618 - Sleeping 5s to allow position update... +1766983950997, 2025-12-29 05:52:30,997 - [IDLE] ETH | Px: 3040.25 | M: 3039.9 | B: 3051.0 / S: 3028.9 | delta: -0.1661(-0.0007) | Adj: -3.62%, Vol: 1.16, Thr: 0.0249 | PnL: -10.12 | TotPnL: -10.12 +1766984010082, 2025-12-29 05:53:30,082 - [IDLE] ETH | Px: 3039.05 | M: 3037.5 | B: 3048.8 / S: 3026.3 | delta: -0.1688(-0.0034) | Adj: -3.56%, Vol: 1.33, Thr: 0.0253 | PnL: -9.89 | TotPnL: -9.89 +1766984010085, 2025-12-29 05:53:30,085 - [IDLE] BNB | Px: 868.06 | M: 866.7 | B: 868.9 / S: 864.6 | delta: -0.6383(-0.0593) | Adj: +0.79%, Vol: 1.00, Thr: 0.0957 | PnL: 0.65 | TotPnL: 0.65 +1766984040268, 2025-12-29 05:54:00,268 - [IDLE] ETH | Px: 3039.35 | M: 3038.1 | B: 3049.3 / S: 3026.9 | delta: -0.1682(-0.0028) | Adj: -3.57%, Vol: 1.40, Thr: 0.0252 | PnL: -9.95 | TotPnL: -9.95 +1766984040271, 2025-12-29 05:54:00,271 - [IDLE] BNB | Px: 868.13 | M: 866.9 | B: 869.0 / S: 864.7 | delta: -0.6349(-0.0559) | Adj: +0.75%, Vol: 1.05, Thr: 0.0952 | PnL: 0.65 | TotPnL: 0.65 +1766984070708, 2025-12-29 05:54:30,708 - [IDLE] ETH | Px: 3039.35 | M: 3038.1 | B: 3049.3 / S: 3026.9 | delta: -0.1682(-0.0028) | Adj: -3.57%, Vol: 1.45, Thr: 0.0252 | PnL: -9.94 | TotPnL: -9.94 +1766984070711, 2025-12-29 05:54:30,711 - [IDLE] BNB | Px: 868.10 | M: 866.8 | B: 869.0 / S: 864.7 | delta: -0.6363(-0.0573) | Adj: +0.77%, Vol: 1.09, Thr: 0.0955 | PnL: 0.66 | TotPnL: 0.66 +1766984100726, 2025-12-29 05:55:00,726 - [IDLE] ETH | Px: 3040.15 | M: 3039.7 | B: 3050.8 / S: 3028.7 | delta: -0.1663(-0.0009) | Adj: -3.62%, Vol: 1.45, Thr: 0.0250 | PnL: -10.09 | TotPnL: -10.09 +1766984100729, 2025-12-29 05:55:00,729 - [IDLE] BNB | Px: 868.14 | M: 866.9 | B: 869.0 / S: 864.8 | delta: -0.6342(-0.0552) | Adj: +0.74%, Vol: 1.08, Thr: 0.0951 | PnL: 0.65 | TotPnL: 0.65 +1766984130556, 2025-12-29 05:55:30,556 - [IDLE] ETH | Px: 3042.05 | M: 3043.5 | B: 3054.3 / S: 3032.7 | delta: -0.1621(+0.0033) | Adj: -3.71%, Vol: 1.38, Thr: 0.0243 | PnL: -10.35 | TotPnL: -10.35 +1766984130558, 2025-12-29 05:55:30,558 - [IDLE] BNB | Px: 868.56 | M: 867.8 | B: 869.8 / S: 865.7 | delta: -0.6138(-0.0348) | Adj: +0.50%, Vol: 1.04, Thr: 0.0921 | PnL: 0.42 | TotPnL: 0.42 +1766984160838, 2025-12-29 05:56:00,838 - [IDLE] ETH | Px: 3042.45 | M: 3044.3 | B: 3055.1 / S: 3033.6 | delta: -0.1611(+0.0043) | Adj: -3.73%, Vol: 1.32, Thr: 0.0242 | PnL: -10.45 | TotPnL: -10.45 +1766984160841, 2025-12-29 05:56:00,841 - [IDLE] BNB | Px: 868.54 | M: 867.7 | B: 869.8 / S: 865.7 | delta: -0.6150(-0.0360) | Adj: +0.51%, Vol: 1.00, Thr: 0.0922 | PnL: 0.42 | TotPnL: 0.42 +1766984190576, 2025-12-29 05:56:30,576 - [IDLE] ETH | Px: 3041.05 | M: 3041.5 | B: 3052.5 / S: 3030.6 | delta: -0.1643(+0.0011) | Adj: -3.66%, Vol: 1.27, Thr: 0.0246 | PnL: -10.22 | TotPnL: -10.22 +1766984190579, 2025-12-29 05:56:30,579 - [IDLE] BNB | Px: 868.38 | M: 867.4 | B: 869.5 / S: 865.3 | delta: -0.6227(-0.0437) | Adj: +0.61%, Vol: 1.00, Thr: 0.0934 | PnL: 0.50 | TotPnL: 0.50 +1766984220961, 2025-12-29 05:57:00,961 - [IDLE] ETH | Px: 3040.55 | M: 3040.5 | B: 3051.5 / S: 3029.5 | delta: -0.1654(-0.0000) | Adj: -3.64%, Vol: 1.22, Thr: 0.0248 | PnL: -10.15 | TotPnL: -10.15 +1766984220964, 2025-12-29 05:57:00,964 - [IDLE] BNB | Px: 868.49 | M: 867.6 | B: 869.7 / S: 865.6 | delta: -0.6174(-0.0384) | Adj: +0.54%, Vol: 1.00, Thr: 0.0926 | PnL: 0.43 | TotPnL: 0.43 +1766984400215, 2025-12-29 06:00:00,215 - [IDLE] ETH | Px: 3038.65 | M: 3036.7 | B: 3048.0 / S: 3025.4 | delta: -0.1697(-0.0043) | Adj: -3.54%, Vol: 1.00, Thr: 0.0255 | PnL: -9.80 | TotPnL: -9.80 +1766984400218, 2025-12-29 06:00:00,218 - [IDLE] BNB | Px: 868.38 | M: 867.4 | B: 869.5 / S: 865.3 | delta: -0.6230(-0.0440) | Adj: +0.61%, Vol: 1.00, Thr: 0.0934 | PnL: 0.53 | TotPnL: 0.53 +1766984460070, 2025-12-29 06:01:00,070 - [IDLE] ETH | Px: 3039.85 | M: 3039.1 | B: 3050.2 / S: 3028.0 | delta: -0.1670(-0.0016) | Adj: -3.60%, Vol: 1.00, Thr: 0.0251 | PnL: -10.04 | TotPnL: -10.04 +1766984460073, 2025-12-29 06:01:00,073 - [IDLE] BNB | Px: 868.32 | M: 867.3 | B: 869.4 / S: 865.2 | delta: -0.6259(-0.0469) | Adj: +0.64%, Vol: 1.00, Thr: 0.0939 | PnL: 0.56 | TotPnL: 0.56 +1766984490373, 2025-12-29 06:01:30,373 - [IDLE] ETH | Px: 3039.85 | M: 3039.1 | B: 3050.2 / S: 3028.0 | delta: -0.1670(-0.0016) | Adj: -3.60%, Vol: 1.00, Thr: 0.0251 | PnL: -10.02 | TotPnL: -10.02 +1766984490375, 2025-12-29 06:01:30,375 - [IDLE] BNB | Px: 868.32 | M: 867.3 | B: 869.4 / S: 865.2 | delta: -0.6259(-0.0469) | Adj: +0.64%, Vol: 1.00, Thr: 0.0939 | PnL: 0.55 | TotPnL: 0.55 +1766984520649, 2025-12-29 06:02:00,649 - [IDLE] ETH | Px: 3039.85 | M: 3039.1 | B: 3050.2 / S: 3028.0 | delta: -0.1670(-0.0016) | Adj: -3.60%, Vol: 1.00, Thr: 0.0251 | PnL: -10.02 | TotPnL: -10.02 +1766984520651, 2025-12-29 06:02:00,651 - [IDLE] BNB | Px: 868.30 | M: 867.2 | B: 869.3 / S: 865.1 | delta: -0.6269(-0.0479) | Adj: +0.65%, Vol: 1.00, Thr: 0.0940 | PnL: 0.55 | TotPnL: 0.55 +1766984610641, 2025-12-29 06:03:30,641 - [IDLE] ETH | Px: 3035.45 | M: 3030.3 | B: 3042.1 / S: 3018.6 | delta: -0.1770(-0.0116) | Adj: -3.37%, Vol: 1.00, Thr: 0.0266 | PnL: -9.51 | TotPnL: -9.51 +1766984610643, 2025-12-29 06:03:30,643 - [IDLE] BNB | Px: 868.38 | M: 867.4 | B: 869.5 / S: 865.3 | delta: -0.6225(-0.0435) | Adj: +0.60%, Vol: 1.00, Thr: 0.0934 | PnL: 0.52 | TotPnL: 0.52 +1766984640266, 2025-12-29 06:04:00,266 - [IDLE] ETH | Px: 3033.45 | M: 3026.3 | B: 3038.3 / S: 3014.3 | delta: -0.1816(-0.0162) | Adj: -3.27%, Vol: 1.21, Thr: 0.0272 | PnL: -8.99 | TotPnL: -8.99 +1766984640269, 2025-12-29 06:04:00,269 - [IDLE] BNB | Px: 868.18 | M: 867.0 | B: 869.1 / S: 864.9 | delta: -0.6322(-0.0532) | Adj: +0.72%, Vol: 1.00, Thr: 0.0948 | PnL: 0.65 | TotPnL: 0.65 +1766984670519, 2025-12-29 06:04:30,519 - [IDLE] ETH | Px: 3034.35 | M: 3028.1 | B: 3040.0 / S: 3016.2 | delta: -0.1795(-0.0141) | Adj: -3.32%, Vol: 1.45, Thr: 0.0269 | PnL: -9.06 | TotPnL: -9.06 +1766984670522, 2025-12-29 06:04:30,522 - [IDLE] BNB | Px: 868.22 | M: 867.1 | B: 869.2 / S: 864.9 | delta: -0.6305(-0.0515) | Adj: +0.70%, Vol: 1.00, Thr: 0.0946 | PnL: 0.63 | TotPnL: 0.63 +1766984730700, 2025-12-29 06:05:30,700 - [IDLE] ETH | Px: 3034.55 | M: 3028.5 | B: 3040.4 / S: 3016.6 | delta: -0.1791(-0.0137) | Adj: -3.33%, Vol: 1.71, Thr: 0.0269 | PnL: -9.16 | TotPnL: -9.16 +1766984730703, 2025-12-29 06:05:30,703 - [IDLE] BNB | Px: 868.53 | M: 867.7 | B: 869.8 / S: 865.6 | delta: -0.6155(-0.0365) | Adj: +0.52%, Vol: 1.00, Thr: 0.0923 | PnL: 0.46 | TotPnL: 0.46 +1766984760287, 2025-12-29 06:06:00,287 - [IDLE] ETH | Px: 3035.35 | M: 3030.1 | B: 3041.9 / S: 3018.3 | delta: -0.1772(-0.0118) | Adj: -3.37%, Vol: 1.68, Thr: 0.0266 | PnL: -9.29 | TotPnL: -9.29 +1766984760288, 2025-12-29 06:06:00,288 - [IDLE] BNB | Px: 868.44 | M: 867.5 | B: 869.6 / S: 865.5 | delta: -0.6196(-0.0406) | Adj: +0.57%, Vol: 1.00, Thr: 0.0929 | PnL: 0.47 | TotPnL: 0.47 +1766984850199, 2025-12-29 06:07:30,199 - [IDLE] ETH | Px: 3034.25 | M: 3027.9 | B: 3039.8 / S: 3016.0 | delta: -0.1797(-0.0143) | Adj: -3.31%, Vol: 1.66, Thr: 0.0270 | PnL: -9.16 | TotPnL: -9.16 +1766984850201, 2025-12-29 06:07:30,201 - [IDLE] BNB | Px: 868.26 | M: 867.1 | B: 869.3 / S: 865.0 | delta: -0.6288(-0.0498) | Adj: +0.68%, Vol: 1.00, Thr: 0.0943 | PnL: 0.53 | TotPnL: 0.53 +1766984880382, 2025-12-29 06:08:00,382 - [IDLE] ETH | Px: 3034.55 | M: 3028.5 | B: 3040.4 / S: 3016.6 | delta: -0.1791(-0.0137) | Adj: -3.33%, Vol: 1.64, Thr: 0.0269 | PnL: -9.16 | TotPnL: -9.16 +1766984880384, 2025-12-29 06:08:00,384 - [IDLE] BNB | Px: 867.64 | M: 865.9 | B: 868.1 / S: 863.7 | delta: -0.6586(-0.0796) | Adj: +1.03%, Vol: 1.00, Thr: 0.0988 | PnL: 0.94 | TotPnL: 0.94 +1766984940003, 2025-12-29 06:09:00,003 - [IDLE] ETH | Px: 3038.15 | M: 3035.7 | B: 3047.1 / S: 3024.4 | delta: -0.1709(-0.0055) | Adj: -3.51%, Vol: 1.50, Thr: 0.0256 | PnL: -9.70 | TotPnL: -9.70 +1766984940006, 2025-12-29 06:09:00,006 - [IDLE] BNB | Px: 868.10 | M: 866.8 | B: 869.0 / S: 864.7 | delta: -0.6363(-0.0573) | Adj: +0.77%, Vol: 1.00, Thr: 0.0955 | PnL: 0.68 | TotPnL: 0.68 +1766985000707, 2025-12-29 06:10:00,707 - [IDLE] ETH | Px: 3034.45 | M: 3028.3 | B: 3040.2 / S: 3016.4 | delta: -0.1793(-0.0139) | Adj: -3.32%, Vol: 1.43, Thr: 0.0269 | PnL: -9.13 | TotPnL: -9.13 +1766985000710, 2025-12-29 06:10:00,710 - [IDLE] BNB | Px: 867.20 | M: 864.9 | B: 867.2 / S: 862.7 | delta: -0.6802(-0.1012) | Adj: +1.29%, Vol: 1.00, Thr: 0.1020 | PnL: 1.23 | TotPnL: 1.23 +1766985002853, 2025-12-29 06:10:02,853 - [TRIG] Net BNB: SELL 0.1085 | Tgt: -0.6875 / Cur: -0.5790 | Thresh: 0.1031 +1766985002853, 2025-12-29 06:10:02,853 - [ORDER] ALO BNB SELL 0.108 @ 867.1 +1766985004972, 2025-12-29 06:10:04,972 - Sleeping 5s to allow position update... +1766985030719, 2025-12-29 06:10:30,719 - [IDLE] ETH | Px: 3035.65 | M: 3030.7 | B: 3042.4 / S: 3019.0 | delta: -0.1766(-0.0112) | Adj: -3.38%, Vol: 1.36, Thr: 0.0265 | PnL: -9.27 | TotPnL: -9.27 +1766985030721, 2025-12-29 06:10:30,721 - [WAIT] BNB Pending SELL Order 281210439159 @ 867.1 (Dist: 0.001%) +1766985034615, 2025-12-29 06:10:34,615 - Cancelling idle order 281210439159 (A @ 867.1) +1766985060669, 2025-12-29 06:11:00,669 - [IDLE] ETH | Px: 3036.75 | M: 3032.9 | B: 3044.5 / S: 3021.4 | delta: -0.1741(-0.0087) | Adj: -3.44%, Vol: 1.24, Thr: 0.0261 | PnL: -9.51 | TotPnL: -9.51 +1766985060672, 2025-12-29 06:11:00,672 - [IDLE] BNB | Px: 867.28 | M: 866.4 | B: 868.7 / S: 864.2 | delta: -0.6767(-0.0377) | Adj: +1.25%, Vol: 1.00, Thr: 0.1015 | PnL: 1.10 | TotPnL: 1.10 +1766985090464, 2025-12-29 06:11:30,464 - [IDLE] ETH | Px: 3037.95 | M: 3035.3 | B: 3046.7 / S: 3023.9 | delta: -0.1713(-0.0059) | Adj: -3.50%, Vol: 1.12, Thr: 0.0257 | PnL: -9.72 | TotPnL: -9.72 +1766985090467, 2025-12-29 06:11:30,467 - [IDLE] BNB | Px: 867.34 | M: 866.6 | B: 868.8 / S: 864.3 | delta: -0.6733(-0.0343) | Adj: +1.21%, Vol: 1.03, Thr: 0.1010 | PnL: 1.03 | TotPnL: 1.03 +1766985150181, 2025-12-29 06:12:30,181 - [IDLE] ETH | Px: 3038.75 | M: 3036.9 | B: 3048.2 / S: 3025.7 | delta: -0.1695(-0.0041) | Adj: -3.54%, Vol: 1.19, Thr: 0.0254 | PnL: -9.85 | TotPnL: -9.85 +1766985150184, 2025-12-29 06:12:30,184 - [IDLE] BNB | Px: 867.56 | M: 867.0 | B: 869.2 / S: 864.8 | delta: -0.6630(-0.0240) | Adj: +1.09%, Vol: 1.04, Thr: 0.0994 | PnL: 0.94 | TotPnL: 0.94 +1766985330338, 2025-12-29 06:15:30,338 - [IDLE] ETH | Px: 3040.25 | M: 3039.9 | B: 3051.0 / S: 3028.9 | delta: -0.1661(-0.0007) | Adj: -3.62%, Vol: 1.79, Thr: 0.0249 | PnL: -10.09 | TotPnL: -10.09 +1766985330341, 2025-12-29 06:15:30,341 - [IDLE] BNB | Px: 867.44 | M: 866.8 | B: 869.0 / S: 864.5 | delta: -0.6684(-0.0294) | Adj: +1.15%, Vol: 1.00, Thr: 0.1003 | PnL: 1.03 | TotPnL: 1.03 +1766985390060, 2025-12-29 06:16:30,060 - [IDLE] ETH | Px: 3039.55 | M: 3038.5 | B: 3049.7 / S: 3027.4 | delta: -0.1677(-0.0023) | Adj: -3.58%, Vol: 1.74, Thr: 0.0252 | PnL: -9.97 | TotPnL: -9.97 +1766985390062, 2025-12-29 06:16:30,062 - [IDLE] BNB | Px: 867.56 | M: 867.0 | B: 869.3 / S: 864.8 | delta: -0.6625(-0.0235) | Adj: +1.08%, Vol: 1.00, Thr: 0.0994 | PnL: 0.99 | TotPnL: 0.99 +1766985420317, 2025-12-29 06:17:00,317 - [IDLE] ETH | Px: 3039.75 | M: 3038.9 | B: 3050.1 / S: 3027.8 | delta: -0.1672(-0.0018) | Adj: -3.60%, Vol: 1.66, Thr: 0.0251 | PnL: -9.99 | TotPnL: -9.99 +1766985420320, 2025-12-29 06:17:00,320 - [IDLE] BNB | Px: 867.68 | M: 867.3 | B: 869.5 / S: 865.1 | delta: -0.6571(-0.0181) | Adj: +1.02%, Vol: 1.00, Thr: 0.0986 | PnL: 0.92 | TotPnL: 0.92 +1766985480870, 2025-12-29 06:18:00,870 - [IDLE] ETH | Px: 3040.45 | M: 3040.3 | B: 3051.4 / S: 3029.3 | delta: -0.1657(-0.0003) | Adj: -3.63%, Vol: 1.48, Thr: 0.0248 | PnL: -10.12 | TotPnL: -10.12 +1766985480873, 2025-12-29 06:18:00,873 - [IDLE] BNB | Px: 867.34 | M: 866.6 | B: 868.8 / S: 864.3 | delta: -0.6733(-0.0343) | Adj: +1.21%, Vol: 1.00, Thr: 0.1010 | PnL: 1.06 | TotPnL: 1.06 +1766985510732, 2025-12-29 06:18:30,732 - [IDLE] ETH | Px: 3038.25 | M: 3035.9 | B: 3047.3 / S: 3024.6 | delta: -0.1706(-0.0052) | Adj: -3.52%, Vol: 1.45, Thr: 0.0256 | PnL: -9.72 | TotPnL: -9.72 +1766985510735, 2025-12-29 06:18:30,735 - [IDLE] BNB | Px: 867.01 | M: 865.9 | B: 868.2 / S: 863.6 | delta: -0.6898(-0.0508) | Adj: +1.40%, Vol: 1.00, Thr: 0.1035 | PnL: 1.29 | TotPnL: 1.29 +1766985570705, 2025-12-29 06:19:30,705 - [IDLE] ETH | Px: 3037.25 | M: 3033.9 | B: 3045.4 / S: 3022.4 | delta: -0.1729(-0.0075) | Adj: -3.47%, Vol: 1.26, Thr: 0.0259 | PnL: -9.56 | TotPnL: -9.56 +1766985570707, 2025-12-29 06:19:30,707 - [IDLE] BNB | Px: 866.88 | M: 865.6 | B: 867.9 / S: 863.3 | delta: -0.6959(-0.0569) | Adj: +1.48%, Vol: 1.00, Thr: 0.1044 | PnL: 1.40 | TotPnL: 1.40 +1766985690574, 2025-12-29 06:21:30,574 - [IDLE] ETH | Px: 3036.75 | M: 3032.9 | B: 3044.5 / S: 3021.4 | delta: -0.1741(-0.0087) | Adj: -3.44%, Vol: 1.08, Thr: 0.0261 | PnL: -9.51 | TotPnL: -9.51 +1766985690577, 2025-12-29 06:21:30,577 - [IDLE] BNB | Px: 866.73 | M: 865.3 | B: 867.6 / S: 862.9 | delta: -0.7036(-0.0646) | Adj: +1.57%, Vol: 1.00, Thr: 0.1055 | PnL: 1.47 | TotPnL: 1.47 +1766985720479, 2025-12-29 06:22:00,479 - [IDLE] ETH | Px: 3036.55 | M: 3032.5 | B: 3044.1 / S: 3020.9 | delta: -0.1745(-0.0091) | Adj: -3.43%, Vol: 1.15, Thr: 0.0262 | PnL: -9.49 | TotPnL: -9.49 +1766985720482, 2025-12-29 06:22:00,482 - [IDLE] BNB | Px: 866.42 | M: 864.6 | B: 867.0 / S: 862.2 | delta: -0.7192(-0.0802) | Adj: +1.75%, Vol: 1.08, Thr: 0.1079 | PnL: 1.72 | TotPnL: 1.72 +1766985750172, 2025-12-29 06:22:30,172 - [IDLE] ETH | Px: 3037.25 | M: 3033.9 | B: 3045.4 / S: 3022.4 | delta: -0.1729(-0.0075) | Adj: -3.47%, Vol: 1.18, Thr: 0.0259 | PnL: -9.59 | TotPnL: -9.59 +1766985750175, 2025-12-29 06:22:30,175 - [IDLE] BNB | Px: 866.34 | M: 864.5 | B: 866.9 / S: 862.0 | delta: -0.7230(-0.0840) | Adj: +1.79%, Vol: 1.17, Thr: 0.1084 | PnL: 1.72 | TotPnL: 1.72 +1766985780899, 2025-12-29 06:23:00,899 - [IDLE] ETH | Px: 3037.05 | M: 3033.5 | B: 3045.0 / S: 3022.0 | delta: -0.1734(-0.0080) | Adj: -3.46%, Vol: 1.18, Thr: 0.0260 | PnL: -9.57 | TotPnL: -9.57 +1766985780902, 2025-12-29 06:23:00,902 - [IDLE] BNB | Px: 866.26 | M: 864.3 | B: 866.7 / S: 861.9 | delta: -0.7272(-0.0882) | Adj: +1.84%, Vol: 1.24, Thr: 0.1091 | PnL: 1.80 | TotPnL: 1.80 +1766985870557, 2025-12-29 06:24:30,557 - [IDLE] ETH | Px: 3038.55 | M: 3036.5 | B: 3047.8 / S: 3025.2 | delta: -0.1700(-0.0046) | Adj: -3.53%, Vol: 1.00, Thr: 0.0255 | PnL: -9.82 | TotPnL: -9.82 +1766985870559, 2025-12-29 06:24:30,559 - [IDLE] BNB | Px: 866.59 | M: 865.0 | B: 867.4 / S: 862.6 | delta: -0.7105(-0.0715) | Adj: +1.65%, Vol: 1.08, Thr: 0.1066 | PnL: 1.54 | TotPnL: 1.54 +1766985930277, 2025-12-29 06:25:30,277 - [IDLE] ETH | Px: 3036.75 | M: 3032.9 | B: 3044.5 / S: 3021.4 | delta: -0.1741(-0.0087) | Adj: -3.44%, Vol: 1.00, Thr: 0.0261 | PnL: -9.52 | TotPnL: -9.52 +1766985930280, 2025-12-29 06:25:30,280 - [IDLE] BNB | Px: 866.54 | M: 864.9 | B: 867.3 / S: 862.5 | delta: -0.7133(-0.0743) | Adj: +1.68%, Vol: 1.00, Thr: 0.1070 | PnL: 1.61 | TotPnL: 1.61 +1766985990861, 2025-12-29 06:26:30,861 - [IDLE] ETH | Px: 3036.65 | M: 3032.7 | B: 3044.3 / S: 3021.1 | delta: -0.1743(-0.0089) | Adj: -3.44%, Vol: 1.00, Thr: 0.0261 | PnL: -9.52 | TotPnL: -9.52 +1766985990864, 2025-12-29 06:26:30,864 - [IDLE] BNB | Px: 866.52 | M: 864.8 | B: 867.2 / S: 862.4 | delta: -0.7143(-0.0753) | Adj: +1.69%, Vol: 1.00, Thr: 0.1071 | PnL: 1.67 | TotPnL: 1.67 +1766986110034, 2025-12-29 06:28:30,034 - [IDLE] ETH | Px: 3035.85 | M: 3031.1 | B: 3042.8 / S: 3019.4 | delta: -0.1761(-0.0107) | Adj: -3.39%, Vol: 1.00, Thr: 0.0264 | PnL: -9.37 | TotPnL: -9.37 +1766986110037, 2025-12-29 06:28:30,037 - [IDLE] BNB | Px: 866.20 | M: 864.2 | B: 866.6 / S: 861.7 | delta: -0.7302(-0.0912) | Adj: +1.88%, Vol: 1.00, Thr: 0.1095 | PnL: 1.83 | TotPnL: 1.83 +1766986170521, 2025-12-29 06:29:30,521 - [IDLE] ETH | Px: 3035.45 | M: 3030.3 | B: 3042.1 / S: 3018.6 | delta: -0.1770(-0.0116) | Adj: -3.37%, Vol: 1.00, Thr: 0.0266 | PnL: -9.31 | TotPnL: -9.31 +1766986170524, 2025-12-29 06:29:30,524 - [IDLE] BNB | Px: 866.20 | M: 864.2 | B: 866.6 / S: 861.7 | delta: -0.7302(-0.0912) | Adj: +1.88%, Vol: 1.00, Thr: 0.1095 | PnL: 1.80 | TotPnL: 1.80 +1766986200655, 2025-12-29 06:30:00,655 - [IDLE] ETH | Px: 3035.25 | M: 3029.9 | B: 3041.7 / S: 3018.1 | delta: -0.1775(-0.0121) | Adj: -3.36%, Vol: 1.00, Thr: 0.0266 | PnL: -9.29 | TotPnL: -9.29 +1766986200657, 2025-12-29 06:30:00,657 - [IDLE] BNB | Px: 866.15 | M: 864.1 | B: 866.5 / S: 861.6 | delta: -0.7324(-0.0934) | Adj: +1.90%, Vol: 1.00, Thr: 0.1099 | PnL: 1.83 | TotPnL: 1.83 +1766986350574, 2025-12-29 06:32:30,574 - [IDLE] ETH | Px: 3034.95 | M: 3029.3 | B: 3041.1 / S: 3017.5 | delta: -0.1782(-0.0128) | Adj: -3.35%, Vol: 1.00, Thr: 0.0267 | PnL: -9.23 | TotPnL: -9.23 +1766986350576, 2025-12-29 06:32:30,576 - [IDLE] BNB | Px: 866.14 | M: 864.0 | B: 866.5 / S: 861.6 | delta: -0.7332(-0.0942) | Adj: +1.91%, Vol: 1.00, Thr: 0.1100 | PnL: 1.87 | TotPnL: 1.87 +1766986380986, 2025-12-29 06:33:00,986 - [IDLE] ETH | Px: 3034.65 | M: 3028.7 | B: 3040.6 / S: 3016.8 | delta: -0.1788(-0.0134) | Adj: -3.33%, Vol: 1.00, Thr: 0.0268 | PnL: -9.14 | TotPnL: -9.14 +1766986380989, 2025-12-29 06:33:00,989 - [IDLE] BNB | Px: 866.14 | M: 864.0 | B: 866.5 / S: 861.6 | delta: -0.7332(-0.0942) | Adj: +1.91%, Vol: 1.00, Thr: 0.1100 | PnL: 1.87 | TotPnL: 1.87 +1766986440933, 2025-12-29 06:34:00,933 - [IDLE] ETH | Px: 3035.65 | M: 3030.7 | B: 3042.4 / S: 3019.0 | delta: -0.1766(-0.0112) | Adj: -3.38%, Vol: 1.00, Thr: 0.0265 | PnL: -9.27 | TotPnL: -9.27 +1766986440935, 2025-12-29 06:34:00,935 - [IDLE] BNB | Px: 866.24 | M: 864.2 | B: 866.7 / S: 861.8 | delta: -0.7282(-0.0892) | Adj: +1.86%, Vol: 1.00, Thr: 0.1092 | PnL: 1.92 | TotPnL: 1.92 +1766986500326, 2025-12-29 06:35:00,326 - [IDLE] ETH | Px: 3035.45 | M: 3030.3 | B: 3042.1 / S: 3018.6 | delta: -0.1770(-0.0116) | Adj: -3.37%, Vol: 1.00, Thr: 0.0266 | PnL: -9.24 | TotPnL: -9.24 +1766986500329, 2025-12-29 06:35:00,329 - [IDLE] BNB | Px: 865.90 | M: 863.5 | B: 866.0 / S: 861.0 | delta: -0.7452(-0.1062) | Adj: +2.05%, Vol: 1.00, Thr: 0.1118 | PnL: 2.00 | TotPnL: 2.00 +1766986530765, 2025-12-29 06:35:30,765 - [IDLE] ETH | Px: 3035.65 | M: 3030.7 | B: 3042.4 / S: 3019.0 | delta: -0.1766(-0.0112) | Adj: -3.38%, Vol: 1.00, Thr: 0.0265 | PnL: -9.31 | TotPnL: -9.31 +1766986530768, 2025-12-29 06:35:30,768 - [IDLE] BNB | Px: 866.04 | M: 863.8 | B: 866.3 / S: 861.4 | delta: -0.7379(-0.0989) | Adj: +1.97%, Vol: 1.00, Thr: 0.1107 | PnL: 1.93 | TotPnL: 1.93 +1766986560795, 2025-12-29 06:36:00,795 - [IDLE] ETH | Px: 3036.05 | M: 3031.5 | B: 3043.2 / S: 3019.9 | delta: -0.1756(-0.0102) | Adj: -3.40%, Vol: 1.00, Thr: 0.0263 | PnL: -9.39 | TotPnL: -9.39 +1766986560798, 2025-12-29 06:36:00,798 - [IDLE] BNB | Px: 866.36 | M: 864.5 | B: 866.9 / S: 862.1 | delta: -0.7222(-0.0832) | Adj: +1.79%, Vol: 1.00, Thr: 0.1083 | PnL: 1.74 | TotPnL: 1.74 +1766986710529, 2025-12-29 06:38:30,529 - [IDLE] ETH | Px: 3039.45 | M: 3038.3 | B: 3049.5 / S: 3027.2 | delta: -0.1679(-0.0025) | Adj: -3.58%, Vol: 1.52, Thr: 0.0252 | PnL: -9.95 | TotPnL: -9.95 +1766986710532, 2025-12-29 06:38:30,532 - [IDLE] BNB | Px: 866.78 | M: 865.4 | B: 867.7 / S: 863.0 | delta: -0.7014(-0.0624) | Adj: +1.54%, Vol: 1.00, Thr: 0.1052 | PnL: 1.46 | TotPnL: 1.46 +1766986740525, 2025-12-29 06:39:00,525 - [IDLE] ETH | Px: 3038.75 | M: 3036.9 | B: 3048.2 / S: 3025.7 | delta: -0.1695(-0.0041) | Adj: -3.54%, Vol: 1.55, Thr: 0.0254 | PnL: -9.82 | TotPnL: -9.82 +1766986740528, 2025-12-29 06:39:00,528 - [IDLE] BNB | Px: 866.32 | M: 864.4 | B: 866.9 / S: 862.0 | delta: -0.7237(-0.0847) | Adj: +1.80%, Vol: 1.00, Thr: 0.1086 | PnL: 1.74 | TotPnL: 1.74 +1766986770504, 2025-12-29 06:39:30,504 - [IDLE] ETH | Px: 3038.95 | M: 3037.3 | B: 3048.6 / S: 3026.1 | delta: -0.1691(-0.0037) | Adj: -3.55%, Vol: 1.57, Thr: 0.0254 | PnL: -9.85 | TotPnL: -9.85 +1766986770507, 2025-12-29 06:39:30,507 - [IDLE] BNB | Px: 866.23 | M: 864.2 | B: 866.7 / S: 861.8 | delta: -0.7284(-0.0894) | Adj: +1.86%, Vol: 1.00, Thr: 0.1093 | PnL: 1.83 | TotPnL: 1.83 +1766986800351, 2025-12-29 06:40:00,351 - [IDLE] ETH | Px: 3038.35 | M: 3036.1 | B: 3047.5 / S: 3024.8 | delta: -0.1704(-0.0050) | Adj: -3.52%, Vol: 1.57, Thr: 0.0256 | PnL: -9.74 | TotPnL: -9.74 +1766986800353, 2025-12-29 06:40:00,353 - [IDLE] BNB | Px: 865.98 | M: 863.7 | B: 866.2 / S: 861.2 | delta: -0.7409(-0.1019) | Adj: +2.00%, Vol: 1.00, Thr: 0.1111 | PnL: 1.93 | TotPnL: 1.93 +1766986830846, 2025-12-29 06:40:30,846 - [IDLE] ETH | Px: 3039.25 | M: 3037.9 | B: 3049.1 / S: 3026.7 | delta: -0.1684(-0.0030) | Adj: -3.57%, Vol: 1.56, Thr: 0.0253 | PnL: -9.89 | TotPnL: -9.89 +1766986830848, 2025-12-29 06:40:30,848 - [IDLE] BNB | Px: 866.15 | M: 864.1 | B: 866.5 / S: 861.6 | delta: -0.7324(-0.0934) | Adj: +1.90%, Vol: 1.00, Thr: 0.1099 | PnL: 1.84 | TotPnL: 1.84 +1766986920410, 2025-12-29 06:42:00,410 - [IDLE] ETH | Px: 3040.15 | M: 3039.7 | B: 3050.8 / S: 3028.7 | delta: -0.1663(-0.0009) | Adj: -3.62%, Vol: 1.48, Thr: 0.0250 | PnL: -10.07 | TotPnL: -10.07 +1766986920412, 2025-12-29 06:42:00,412 - [IDLE] BNB | Px: 866.36 | M: 864.5 | B: 866.9 / S: 862.1 | delta: -0.7222(-0.0832) | Adj: +1.79%, Vol: 1.00, Thr: 0.1083 | PnL: 1.75 | TotPnL: 1.75 +1766986980523, 2025-12-29 06:43:00,523 - [IDLE] ETH | Px: 3041.55 | M: 3042.5 | B: 3053.4 / S: 3031.7 | delta: -0.1632(+0.0022) | Adj: -3.69%, Vol: 1.33, Thr: 0.0245 | PnL: -10.30 | TotPnL: -10.30 +1766986980526, 2025-12-29 06:43:00,526 - [IDLE] BNB | Px: 866.46 | M: 864.7 | B: 867.1 / S: 862.3 | delta: -0.7170(-0.0780) | Adj: +1.72%, Vol: 1.00, Thr: 0.1075 | PnL: 1.68 | TotPnL: 1.68 +1766987070017, 2025-12-29 06:44:30,017 - [IDLE] ETH | Px: 3043.15 | M: 3045.7 | B: 3056.4 / S: 3035.1 | delta: -0.1596(+0.0058) | Adj: -3.77%, Vol: 1.27, Thr: 0.0239 | PnL: -10.53 | TotPnL: -10.53 +1766987070020, 2025-12-29 06:44:30,020 - [IDLE] BNB | Px: 866.82 | M: 865.5 | B: 867.8 / S: 863.1 | delta: -0.6989(-0.0599) | Adj: +1.51%, Vol: 1.00, Thr: 0.1048 | PnL: 1.49 | TotPnL: 1.49 +1766987100862, 2025-12-29 06:45:00,862 - [IDLE] ETH | Px: 3043.05 | M: 3045.5 | B: 3056.2 / S: 3034.9 | delta: -0.1598(+0.0056) | Adj: -3.77%, Vol: 1.20, Thr: 0.0240 | PnL: -10.55 | TotPnL: -10.55 +1766987100864, 2025-12-29 06:45:00,864 - [IDLE] BNB | Px: 866.80 | M: 865.4 | B: 867.8 / S: 863.1 | delta: -0.7004(-0.0614) | Adj: +1.53%, Vol: 1.00, Thr: 0.1051 | PnL: 1.44 | TotPnL: 1.44 +1766987190441, 2025-12-29 06:46:30,441 - [IDLE] ETH | Px: 3042.85 | M: 3045.1 | B: 3055.8 / S: 3034.5 | delta: -0.1602(+0.0052) | Adj: -3.75%, Vol: 1.19, Thr: 0.0240 | PnL: -10.63 | TotPnL: -10.63 +1766987190444, 2025-12-29 06:46:30,444 - [IDLE] BNB | Px: 866.29 | M: 864.4 | B: 866.8 / S: 861.9 | delta: -0.7254(-0.0864) | Adj: +1.82%, Vol: 1.00, Thr: 0.1088 | PnL: 1.48 | TotPnL: 1.48 +1766987229532, 2025-12-29 06:47:09,532 - [TRIG] Net BNB: SELL 0.1227 | Tgt: -0.7617 / Cur: -0.6390 | Thresh: 0.1143 +1766987229533, 2025-12-29 06:47:09,533 - [ORDER] ALO BNB SELL 0.122 @ 865.56 +1766987231641, 2025-12-29 06:47:11,641 - Sleeping 5s to allow position update... +1766987240303, 2025-12-29 06:47:20,303 - [WAIT] BNB Pending SELL Order 281227381064 @ 865.56 (Dist: 0.004%) +1766987250145, 2025-12-29 06:47:30,145 - [IDLE] ETH | Px: 3041.75 | M: 3042.9 | B: 3053.8 / S: 3032.1 | delta: -0.1627(+0.0027) | Adj: -3.70%, Vol: 1.22, Thr: 0.0244 | PnL: -10.33 | TotPnL: -10.33 +1766987250147, 2025-12-29 06:47:30,147 - [WAIT] BNB Pending SELL Order 281227381064 @ 865.56 (Dist: 0.064%) +1766987270926, 2025-12-29 06:47:50,926 - [WAIT] BNB Pending SELL Order 281227381064 @ 865.56 (Dist: 0.064%) +1766987280432, 2025-12-29 06:48:00,432 - [IDLE] ETH | Px: 3040.45 | M: 3040.3 | B: 3051.4 / S: 3029.3 | delta: -0.1657(-0.0003) | Adj: -3.63%, Vol: 1.21, Thr: 0.0248 | PnL: -10.09 | TotPnL: -10.09 +1766987280435, 2025-12-29 06:48:00,435 - [WAIT] BNB Pending SELL Order 281227381064 @ 865.56 (Dist: 0.137%) +1766987310562, 2025-12-29 06:48:30,562 - [IDLE] ETH | Px: 3039.95 | M: 3039.3 | B: 3050.4 / S: 3028.2 | delta: -0.1668(-0.0014) | Adj: -3.61%, Vol: 1.18, Thr: 0.0250 | PnL: -10.02 | TotPnL: -10.02 +1766987310564, 2025-12-29 06:48:30,564 - [WAIT] BNB Pending SELL Order 281227381064 @ 865.56 (Dist: 0.128%) +1766987320120, 2025-12-29 06:48:40,120 - [WAIT] BNB Pending SELL Order 281227381064 @ 865.56 (Dist: 0.096%) +1766987327807, 2025-12-29 06:48:47,807 - Cancelling stale order 281227381064 (A @ 865.56) +1766987328681, 2025-12-29 06:48:48,681 - [TRIG] Net BNB: SELL 0.2005 | Tgt: -0.8395 / Cur: -0.6390 | Thresh: 0.1259 +1766987328682, 2025-12-29 06:48:48,682 - [ORDER] ALO BNB SELL 0.2 @ 864.0 +1766987329515, 2025-12-29 06:48:49,515 - Sleeping 5s to allow position update... +1766987340194, 2025-12-29 06:49:00,194 - [IDLE] ETH | Px: 3039.55 | M: 3038.5 | B: 3049.7 / S: 3027.4 | delta: -0.1677(-0.0023) | Adj: -3.58%, Vol: 1.15, Thr: 0.0252 | PnL: -10.00 | TotPnL: -10.00 +1766987340196, 2025-12-29 06:49:00,196 - [WAIT] BNB Pending SELL Order 281228204718 @ 864.0 (Dist: 0.001%) +1766987370735, 2025-12-29 06:49:30,735 - [IDLE] ETH | Px: 3040.75 | M: 3040.9 | B: 3051.9 / S: 3030.0 | delta: -0.1650(+0.0004) | Adj: -3.65%, Vol: 1.12, Thr: 0.0247 | PnL: -10.09 | TotPnL: -10.09 +1766987370737, 2025-12-29 06:49:30,737 - [WAIT] BNB Pending SELL Order 281228204718 @ 864.0 (Dist: 0.025%) +1766987380456, 2025-12-29 06:49:40,456 - [WAIT] BNB Pending SELL Order 281228204718 @ 864.0 (Dist: 0.018%) +1766987390360, 2025-12-29 06:49:50,360 - [WAIT] BNB Pending SELL Order 281228204718 @ 864.0 (Dist: 0.009%) +1766987400223, 2025-12-29 06:50:00,223 - [IDLE] ETH | Px: 3041.35 | M: 3042.1 | B: 3053.0 / S: 3031.2 | delta: -0.1636(+0.0018) | Adj: -3.68%, Vol: 1.05, Thr: 0.0245 | PnL: -10.27 | TotPnL: -10.27 +1766987400225, 2025-12-29 06:50:00,225 - [WAIT] BNB Pending SELL Order 281228204718 @ 864.0 (Dist: 0.011%) +1766987415377, 2025-12-29 06:50:15,377 - Cancelling idle order 281228204718 (A @ 864.0) +1766987460331, 2025-12-29 06:51:00,331 - [IDLE] ETH | Px: 3039.85 | M: 3039.1 | B: 3050.2 / S: 3028.0 | delta: -0.1670(-0.0016) | Adj: -3.60%, Vol: 1.00, Thr: 0.0251 | PnL: -10.04 | TotPnL: -10.04 +1766987460334, 2025-12-29 06:51:00,334 - [IDLE] BNB | Px: 863.92 | M: 862.8 | B: 865.6 / S: 860.0 | delta: -0.8448(-0.0518) | Adj: +3.20%, Vol: 2.62, Thr: 0.1267 | PnL: 3.21 | TotPnL: 3.21 +1766987640865, 2025-12-29 06:54:00,865 - [IDLE] ETH | Px: 3036.65 | M: 3032.7 | B: 3044.3 / S: 3021.1 | delta: -0.1743(-0.0089) | Adj: -3.44%, Vol: 1.46, Thr: 0.0261 | PnL: -9.47 | TotPnL: -9.47 +1766987640868, 2025-12-29 06:54:00,868 - [IDLE] BNB | Px: 864.01 | M: 863.0 | B: 865.8 / S: 860.2 | delta: -0.8405(-0.0475) | Adj: +3.15%, Vol: 2.85, Thr: 0.1261 | PnL: 3.25 | TotPnL: 3.25 +1766987760209, 2025-12-29 06:56:00,209 - [IDLE] ETH | Px: 3038.05 | M: 3035.5 | B: 3046.9 / S: 3024.2 | delta: -0.1711(-0.0057) | Adj: -3.51%, Vol: 1.47, Thr: 0.0257 | PnL: -9.70 | TotPnL: -9.70 +1766987760212, 2025-12-29 06:56:00,212 - [IDLE] BNB | Px: 864.32 | M: 863.6 | B: 866.4 / S: 860.9 | delta: -0.8249(-0.0319) | Adj: +2.97%, Vol: 1.83, Thr: 0.1237 | PnL: 2.99 | TotPnL: 2.99 +1766987790271, 2025-12-29 06:56:30,271 - [IDLE] ETH | Px: 3038.05 | M: 3035.5 | B: 3046.9 / S: 3024.2 | delta: -0.1711(-0.0057) | Adj: -3.51%, Vol: 1.34, Thr: 0.0257 | PnL: -9.72 | TotPnL: -9.72 +1766987790274, 2025-12-29 06:56:30,274 - [IDLE] BNB | Px: 864.35 | M: 863.7 | B: 866.4 / S: 860.9 | delta: -0.8231(-0.0301) | Adj: +2.95%, Vol: 1.34, Thr: 0.1235 | PnL: 2.96 | TotPnL: 2.96 +1766987820384, 2025-12-29 06:57:00,384 - [IDLE] ETH | Px: 3037.55 | M: 3034.5 | B: 3046.0 / S: 3023.1 | delta: -0.1722(-0.0068) | Adj: -3.48%, Vol: 1.22, Thr: 0.0258 | PnL: -9.66 | TotPnL: -9.66 +1766987820386, 2025-12-29 06:57:00,386 - [IDLE] BNB | Px: 864.30 | M: 863.6 | B: 866.3 / S: 860.8 | delta: -0.8257(-0.0327) | Adj: +2.98%, Vol: 1.00, Thr: 0.1239 | PnL: 2.96 | TotPnL: 2.96 +1766987970057, 2025-12-29 06:59:30,057 - [IDLE] ETH | Px: 3036.95 | M: 3033.3 | B: 3044.9 / S: 3021.8 | delta: -0.1736(-0.0082) | Adj: -3.45%, Vol: 1.00, Thr: 0.0260 | PnL: -9.51 | TotPnL: -9.51 +1766987970060, 2025-12-29 06:59:30,060 - [IDLE] BNB | Px: 864.11 | M: 863.2 | B: 866.0 / S: 860.4 | delta: -0.8354(-0.0424) | Adj: +3.09%, Vol: 1.00, Thr: 0.1253 | PnL: 3.13 | TotPnL: 3.13 +1766988030397, 2025-12-29 07:00:30,397 - [IDLE] ETH | Px: 3036.35 | M: 3032.1 | B: 3043.7 / S: 3020.5 | delta: -0.1750(-0.0096) | Adj: -3.42%, Vol: 1.00, Thr: 0.0262 | PnL: -9.47 | TotPnL: -9.47 +1766988030400, 2025-12-29 07:00:30,400 - [IDLE] BNB | Px: 864.56 | M: 864.1 | B: 866.8 / S: 861.4 | delta: -0.8122(-0.0192) | Adj: +2.83%, Vol: 1.00, Thr: 0.1218 | PnL: 2.80 | TotPnL: 2.80 +1766988060802, 2025-12-29 07:01:00,802 - [IDLE] ETH | Px: 3036.25 | M: 3031.9 | B: 3043.5 / S: 3020.3 | delta: -0.1752(-0.0098) | Adj: -3.41%, Vol: 1.00, Thr: 0.0263 | PnL: -9.41 | TotPnL: -9.41 +1766988060805, 2025-12-29 07:01:00,805 - [IDLE] BNB | Px: 864.54 | M: 864.1 | B: 866.8 / S: 861.4 | delta: -0.8137(-0.0207) | Adj: +2.85%, Vol: 1.00, Thr: 0.1221 | PnL: 2.81 | TotPnL: 2.81 +1766988090913, 2025-12-29 07:01:30,913 - [IDLE] ETH | Px: 3032.75 | M: 3024.9 | B: 3037.0 / S: 3012.8 | delta: -0.1832(-0.0178) | Adj: -3.23%, Vol: 1.00, Thr: 0.0275 | PnL: -8.84 | TotPnL: -8.84 +1766988090916, 2025-12-29 07:01:30,916 - [IDLE] BNB | Px: 864.08 | M: 863.1 | B: 865.9 / S: 860.3 | delta: -0.8369(-0.0439) | Adj: +3.11%, Vol: 1.00, Thr: 0.1255 | PnL: 3.17 | TotPnL: 3.17 +1766988120633, 2025-12-29 07:02:00,633 - [IDLE] ETH | Px: 3033.65 | M: 3026.7 | B: 3038.7 / S: 3014.7 | delta: -0.1811(-0.0157) | Adj: -3.28%, Vol: 1.00, Thr: 0.0272 | PnL: -8.99 | TotPnL: -8.99 +1766988120636, 2025-12-29 07:02:00,636 - [IDLE] BNB | Px: 864.07 | M: 863.1 | B: 865.9 / S: 860.3 | delta: -0.8374(-0.0444) | Adj: +3.12%, Vol: 1.00, Thr: 0.1256 | PnL: 3.19 | TotPnL: 3.19 +1766988180920, 2025-12-29 07:03:00,920 - [IDLE] ETH | Px: 3033.05 | M: 3025.5 | B: 3037.6 / S: 3013.4 | delta: -0.1825(-0.0171) | Adj: -3.25%, Vol: 1.04, Thr: 0.0274 | PnL: -8.89 | TotPnL: -8.89 +1766988180923, 2025-12-29 07:03:00,923 - [IDLE] BNB | Px: 864.32 | M: 863.6 | B: 866.4 / S: 860.9 | delta: -0.8249(-0.0319) | Adj: +2.97%, Vol: 1.00, Thr: 0.1237 | PnL: 2.98 | TotPnL: 2.98 +1766988210031, 2025-12-29 07:03:30,031 - [IDLE] ETH | Px: 3033.35 | M: 3026.1 | B: 3038.2 / S: 3014.0 | delta: -0.1818(-0.0164) | Adj: -3.27%, Vol: 1.11, Thr: 0.0273 | PnL: -8.94 | TotPnL: -8.94 +1766988210034, 2025-12-29 07:03:30,034 - [IDLE] BNB | Px: 864.46 | M: 863.9 | B: 866.7 / S: 861.2 | delta: -0.8173(-0.0243) | Adj: +2.89%, Vol: 1.00, Thr: 0.1226 | PnL: 2.88 | TotPnL: 2.88 +1766988240616, 2025-12-29 07:04:00,616 - [IDLE] ETH | Px: 3033.75 | M: 3026.9 | B: 3038.9 / S: 3014.9 | delta: -0.1809(-0.0155) | Adj: -3.29%, Vol: 1.18, Thr: 0.0271 | PnL: -9.03 | TotPnL: -9.03 +1766988240619, 2025-12-29 07:04:00,619 - [IDLE] BNB | Px: 864.66 | M: 864.4 | B: 867.0 / S: 861.7 | delta: -0.8071(-0.0141) | Adj: +2.77%, Vol: 1.00, Thr: 0.1211 | PnL: 2.73 | TotPnL: 2.73 +1766988270677, 2025-12-29 07:04:30,677 - [IDLE] ETH | Px: 3032.55 | M: 3024.5 | B: 3036.7 / S: 3012.3 | delta: -0.1836(-0.0182) | Adj: -3.22%, Vol: 1.22, Thr: 0.0275 | PnL: -8.93 | TotPnL: -8.93 +1766988270680, 2025-12-29 07:04:30,680 - [IDLE] BNB | Px: 864.66 | M: 864.3 | B: 867.0 / S: 861.6 | delta: -0.8076(-0.0146) | Adj: +2.78%, Vol: 1.00, Thr: 0.1211 | PnL: 2.65 | TotPnL: 2.65 +1766988300436, 2025-12-29 07:05:00,436 - [IDLE] ETH | Px: 3032.05 | M: 3023.5 | B: 3035.7 / S: 3011.2 | delta: -0.1848(-0.0194) | Adj: -3.20%, Vol: 1.31, Thr: 0.0277 | PnL: -8.78 | TotPnL: -8.78 +1766988300438, 2025-12-29 07:05:00,438 - [IDLE] BNB | Px: 864.50 | M: 864.0 | B: 866.7 / S: 861.3 | delta: -0.8153(-0.0223) | Adj: +2.86%, Vol: 1.00, Thr: 0.1223 | PnL: 2.82 | TotPnL: 2.82 +1766988330030, 2025-12-29 07:05:30,030 - [IDLE] ETH | Px: 3033.95 | M: 3027.3 | B: 3039.3 / S: 3015.3 | delta: -0.1804(-0.0150) | Adj: -3.30%, Vol: 1.33, Thr: 0.0271 | PnL: -9.06 | TotPnL: -9.06 +1766988330032, 2025-12-29 07:05:30,032 - [IDLE] BNB | Px: 864.92 | M: 864.9 | B: 867.6 / S: 862.3 | delta: -0.7939(-0.0009) | Adj: +2.62%, Vol: 1.00, Thr: 0.1191 | PnL: 2.56 | TotPnL: 2.56 +1766988360157, 2025-12-29 07:06:00,157 - [IDLE] ETH | Px: 3033.75 | M: 3026.9 | B: 3038.9 / S: 3014.9 | delta: -0.1809(-0.0155) | Adj: -3.29%, Vol: 1.29, Thr: 0.0271 | PnL: -9.01 | TotPnL: -9.01 +1766988360160, 2025-12-29 07:06:00,160 - [IDLE] BNB | Px: 864.64 | M: 864.3 | B: 867.0 / S: 861.6 | delta: -0.8081(-0.0151) | Adj: +2.78%, Vol: 1.00, Thr: 0.1212 | PnL: 2.66 | TotPnL: 2.66 +1766988480694, 2025-12-29 07:08:00,694 - [IDLE] ETH | Px: 3037.35 | M: 3034.1 | B: 3045.6 / S: 3022.6 | delta: -0.1727(-0.0073) | Adj: -3.47%, Vol: 1.10, Thr: 0.0259 | PnL: -9.61 | TotPnL: -9.61 +1766988480697, 2025-12-29 07:08:00,697 - [IDLE] BNB | Px: 864.88 | M: 864.8 | B: 867.5 / S: 862.1 | delta: -0.7962(-0.0032) | Adj: +2.64%, Vol: 1.00, Thr: 0.1194 | PnL: 2.58 | TotPnL: 2.58 +1766988540794, 2025-12-29 07:09:00,794 - [IDLE] ETH | Px: 3036.35 | M: 3032.1 | B: 3043.7 / S: 3020.5 | delta: -0.1750(-0.0096) | Adj: -3.42%, Vol: 1.00, Thr: 0.0262 | PnL: -9.44 | TotPnL: -9.44 +1766988540797, 2025-12-29 07:09:00,797 - [IDLE] BNB | Px: 864.58 | M: 864.2 | B: 866.9 / S: 861.4 | delta: -0.8117(-0.0187) | Adj: +2.82%, Vol: 1.00, Thr: 0.1218 | PnL: 2.79 | TotPnL: 2.79 +1766988570132, 2025-12-29 07:09:30,132 - [IDLE] ETH | Px: 3036.35 | M: 3032.1 | B: 3043.7 / S: 3020.5 | delta: -0.1750(-0.0096) | Adj: -3.42%, Vol: 1.00, Thr: 0.0262 | PnL: -9.46 | TotPnL: -9.46 +1766988570135, 2025-12-29 07:09:30,135 - [IDLE] BNB | Px: 864.52 | M: 864.0 | B: 866.8 / S: 861.3 | delta: -0.8145(-0.0215) | Adj: +2.85%, Vol: 1.00, Thr: 0.1222 | PnL: 2.82 | TotPnL: 2.82 +1766988660076, 2025-12-29 07:11:00,076 - [IDLE] ETH | Px: 3039.35 | M: 3038.1 | B: 3049.3 / S: 3026.9 | delta: -0.1682(-0.0028) | Adj: -3.57%, Vol: 1.18, Thr: 0.0252 | PnL: -9.94 | TotPnL: -9.94 +1766988660078, 2025-12-29 07:11:00,078 - [IDLE] BNB | Px: 864.88 | M: 864.8 | B: 867.5 / S: 862.1 | delta: -0.7965(-0.0035) | Adj: +2.65%, Vol: 1.00, Thr: 0.1195 | PnL: 2.59 | TotPnL: 2.59 +1766988690660, 2025-12-29 07:11:30,660 - [IDLE] ETH | Px: 3039.35 | M: 3038.1 | B: 3049.3 / S: 3026.9 | delta: -0.1682(-0.0028) | Adj: -3.57%, Vol: 1.33, Thr: 0.0252 | PnL: -9.95 | TotPnL: -9.95 +1766988690662, 2025-12-29 07:11:30,662 - [IDLE] BNB | Px: 865.02 | M: 865.1 | B: 867.7 / S: 862.5 | delta: -0.7894(+0.0036) | Adj: +2.57%, Vol: 1.00, Thr: 0.1184 | PnL: 2.48 | TotPnL: 2.48 +1766988810922, 2025-12-29 07:13:30,922 - [IDLE] ETH | Px: 3039.95 | M: 3039.3 | B: 3050.4 / S: 3028.2 | delta: -0.1668(-0.0014) | Adj: -3.61%, Vol: 1.54, Thr: 0.0250 | PnL: -10.05 | TotPnL: -10.05 +1766988810924, 2025-12-29 07:13:30,924 - [IDLE] BNB | Px: 864.98 | M: 865.0 | B: 867.7 / S: 862.4 | delta: -0.7912(+0.0018) | Adj: +2.59%, Vol: 1.00, Thr: 0.1187 | PnL: 2.49 | TotPnL: 2.49 +1766988840774, 2025-12-29 07:14:00,774 - [IDLE] ETH | Px: 3038.85 | M: 3037.1 | B: 3048.4 / S: 3025.9 | delta: -0.1693(-0.0039) | Adj: -3.55%, Vol: 1.54, Thr: 0.0254 | PnL: -9.85 | TotPnL: -9.85 +1766988840777, 2025-12-29 07:14:00,777 - [IDLE] BNB | Px: 864.96 | M: 865.0 | B: 867.6 / S: 862.3 | delta: -0.7924(+0.0006) | Adj: +2.60%, Vol: 1.00, Thr: 0.1189 | PnL: 2.51 | TotPnL: 2.51 +1766988960307, 2025-12-29 07:16:00,307 - [IDLE] ETH | Px: 3039.95 | M: 3039.3 | B: 3050.4 / S: 3028.2 | delta: -0.1668(-0.0014) | Adj: -3.61%, Vol: 1.06, Thr: 0.0250 | PnL: -10.05 | TotPnL: -10.05 +1766988960310, 2025-12-29 07:16:00,310 - [IDLE] BNB | Px: 864.76 | M: 864.5 | B: 867.2 / S: 861.9 | delta: -0.8026(-0.0096) | Adj: +2.72%, Vol: 1.00, Thr: 0.1204 | PnL: 2.66 | TotPnL: 2.66 +1766988990637, 2025-12-29 07:16:30,637 - [IDLE] ETH | Px: 3041.85 | M: 3043.1 | B: 3054.0 / S: 3032.3 | delta: -0.1625(+0.0029) | Adj: -3.70%, Vol: 1.00, Thr: 0.0244 | PnL: -10.37 | TotPnL: -10.37 +1766988990640, 2025-12-29 07:16:30,640 - [IDLE] BNB | Px: 865.10 | M: 865.3 | B: 867.9 / S: 862.7 | delta: -0.7849(+0.0081) | Adj: +2.51%, Vol: 1.00, Thr: 0.1177 | PnL: 2.37 | TotPnL: 2.37 +1766989020851, 2025-12-29 07:17:00,851 - [IDLE] ETH | Px: 3041.25 | M: 3041.9 | B: 3052.8 / S: 3031.0 | delta: -0.1639(+0.0015) | Adj: -3.67%, Vol: 1.00, Thr: 0.0246 | PnL: -10.25 | TotPnL: -10.25 +1766989020853, 2025-12-29 07:17:00,853 - [IDLE] BNB | Px: 865.10 | M: 865.3 | B: 867.9 / S: 862.6 | delta: -0.7854(+0.0076) | Adj: +2.52%, Vol: 1.00, Thr: 0.1178 | PnL: 2.35 | TotPnL: 2.35 +1766989200023, 2025-12-29 07:20:00,023 - [IDLE] ETH | Px: 3042.85 | M: 3045.1 | B: 3055.8 / S: 3034.5 | delta: -0.1602(+0.0052) | Adj: -3.75%, Vol: 1.00, Thr: 0.0240 | PnL: -10.53 | TotPnL: -10.53 +1766989200026, 2025-12-29 07:20:00,026 - [IDLE] BNB | Px: 865.15 | M: 865.4 | B: 868.0 / S: 862.8 | delta: -0.7826(+0.0104) | Adj: +2.49%, Vol: 1.00, Thr: 0.1174 | PnL: 2.33 | TotPnL: 2.33 +1766989230644, 2025-12-29 07:20:30,644 - [IDLE] ETH | Px: 3042.85 | M: 3045.1 | B: 3055.8 / S: 3034.5 | delta: -0.1602(+0.0052) | Adj: -3.75%, Vol: 1.00, Thr: 0.0240 | PnL: -10.52 | TotPnL: -10.52 +1766989230647, 2025-12-29 07:20:30,647 - [IDLE] BNB | Px: 865.26 | M: 865.6 | B: 868.2 / S: 863.0 | delta: -0.7768(+0.0162) | Adj: +2.42%, Vol: 1.00, Thr: 0.1165 | PnL: 2.28 | TotPnL: 2.28 +1766989320150, 2025-12-29 07:22:00,150 - [IDLE] ETH | Px: 3042.35 | M: 3044.1 | B: 3054.9 / S: 3033.4 | delta: -0.1614(+0.0040) | Adj: -3.73%, Vol: 1.00, Thr: 0.0242 | PnL: -10.45 | TotPnL: -10.45 +1766989320152, 2025-12-29 07:22:00,152 - [IDLE] BNB | Px: 865.28 | M: 865.7 | B: 868.3 / S: 863.1 | delta: -0.7758(+0.0172) | Adj: +2.41%, Vol: 1.00, Thr: 0.1164 | PnL: 2.23 | TotPnL: 2.23 +1766989350916, 2025-12-29 07:22:30,916 - [IDLE] ETH | Px: 3042.95 | M: 3045.3 | B: 3056.0 / S: 3034.7 | delta: -0.1600(+0.0054) | Adj: -3.76%, Vol: 1.00, Thr: 0.0240 | PnL: -10.55 | TotPnL: -10.55 +1766989350918, 2025-12-29 07:22:30,918 - [IDLE] BNB | Px: 865.30 | M: 865.7 | B: 868.3 / S: 863.1 | delta: -0.7753(+0.0177) | Adj: +2.40%, Vol: 1.00, Thr: 0.1163 | PnL: 2.21 | TotPnL: 2.21 +1766989410383, 2025-12-29 07:23:30,383 - [IDLE] ETH | Px: 3042.55 | M: 3044.5 | B: 3055.3 / S: 3033.8 | delta: -0.1609(+0.0045) | Adj: -3.74%, Vol: 1.00, Thr: 0.0241 | PnL: -10.48 | TotPnL: -10.48 +1766989410385, 2025-12-29 07:23:30,385 - [IDLE] BNB | Px: 864.89 | M: 864.8 | B: 867.5 / S: 862.2 | delta: -0.7957(-0.0027) | Adj: +2.64%, Vol: 1.00, Thr: 0.1194 | PnL: 2.46 | TotPnL: 2.46 +1766989500382, 2025-12-29 07:25:00,382 - [IDLE] ETH | Px: 3040.55 | M: 3040.5 | B: 3051.5 / S: 3029.5 | delta: -0.1654(-0.0000) | Adj: -3.64%, Vol: 1.00, Thr: 0.0248 | PnL: -10.12 | TotPnL: -10.12 +1766989500384, 2025-12-29 07:25:00,384 - [IDLE] BNB | Px: 864.82 | M: 864.7 | B: 867.3 / S: 862.0 | delta: -0.7993(-0.0063) | Adj: +2.68%, Vol: 1.00, Thr: 0.1199 | PnL: 2.60 | TotPnL: 2.60 +1766989530657, 2025-12-29 07:25:30,657 - [IDLE] ETH | Px: 3040.55 | M: 3040.5 | B: 3051.5 / S: 3029.5 | delta: -0.1654(-0.0000) | Adj: -3.64%, Vol: 1.00, Thr: 0.0248 | PnL: -10.13 | TotPnL: -10.13 +1766989530660, 2025-12-29 07:25:30,660 - [IDLE] BNB | Px: 864.78 | M: 864.6 | B: 867.3 / S: 861.9 | delta: -0.8010(-0.0080) | Adj: +2.70%, Vol: 1.00, Thr: 0.1202 | PnL: 2.62 | TotPnL: 2.62 +1766989650215, 2025-12-29 07:27:30,215 - [IDLE] ETH | Px: 3037.05 | M: 3033.5 | B: 3045.0 / S: 3022.0 | delta: -0.1734(-0.0080) | Adj: -3.46%, Vol: 1.00, Thr: 0.0260 | PnL: -9.51 | TotPnL: -9.51 +1766989650217, 2025-12-29 07:27:30,217 - [IDLE] BNB | Px: 864.08 | M: 863.1 | B: 865.9 / S: 860.3 | delta: -0.8369(-0.0439) | Adj: +3.11%, Vol: 1.00, Thr: 0.1255 | PnL: 3.12 | TotPnL: 3.12 +1766989680284, 2025-12-29 07:28:00,284 - [IDLE] ETH | Px: 3036.75 | M: 3032.9 | B: 3044.5 / S: 3021.4 | delta: -0.1741(-0.0087) | Adj: -3.44%, Vol: 1.18, Thr: 0.0261 | PnL: -9.52 | TotPnL: -9.52 +1766989680286, 2025-12-29 07:28:00,286 - [IDLE] BNB | Px: 864.08 | M: 863.1 | B: 865.9 / S: 860.3 | delta: -0.8369(-0.0439) | Adj: +3.11%, Vol: 1.00, Thr: 0.1255 | PnL: 3.16 | TotPnL: 3.16 +1766989710548, 2025-12-29 07:28:30,548 - [IDLE] ETH | Px: 3036.55 | M: 3032.5 | B: 3044.1 / S: 3020.9 | delta: -0.1745(-0.0091) | Adj: -3.43%, Vol: 1.34, Thr: 0.0262 | PnL: -9.44 | TotPnL: -9.44 +1766989710551, 2025-12-29 07:28:30,551 - [IDLE] BNB | Px: 864.17 | M: 863.3 | B: 866.1 / S: 860.5 | delta: -0.8323(-0.0393) | Adj: +3.06%, Vol: 1.00, Thr: 0.1248 | PnL: 3.12 | TotPnL: 3.12 +1766989740968, 2025-12-29 07:29:00,968 - [IDLE] ETH | Px: 3036.45 | M: 3032.3 | B: 3043.9 / S: 3020.7 | delta: -0.1747(-0.0093) | Adj: -3.43%, Vol: 1.49, Thr: 0.0262 | PnL: -9.46 | TotPnL: -9.46 +1766989740971, 2025-12-29 07:29:00,971 - [IDLE] BNB | Px: 864.28 | M: 863.5 | B: 866.3 / S: 860.8 | delta: -0.8270(-0.0340) | Adj: +3.00%, Vol: 1.00, Thr: 0.1240 | PnL: 2.98 | TotPnL: 2.98 +1766989770670, 2025-12-29 07:29:30,670 - [IDLE] ETH | Px: 3036.15 | M: 3031.7 | B: 3043.4 / S: 3020.1 | delta: -0.1754(-0.0100) | Adj: -3.41%, Vol: 1.58, Thr: 0.0263 | PnL: -9.42 | TotPnL: -9.42 +1766989770673, 2025-12-29 07:29:30,673 - [IDLE] BNB | Px: 864.18 | M: 863.3 | B: 866.1 / S: 860.5 | delta: -0.8321(-0.0391) | Adj: +3.06%, Vol: 1.00, Thr: 0.1248 | PnL: 3.00 | TotPnL: 3.00 +1766989800981, 2025-12-29 07:30:00,981 - [IDLE] ETH | Px: 3036.35 | M: 3032.1 | B: 3043.7 / S: 3020.5 | delta: -0.1750(-0.0096) | Adj: -3.42%, Vol: 1.63, Thr: 0.0262 | PnL: -9.44 | TotPnL: -9.44 +1766989800984, 2025-12-29 07:30:00,984 - [IDLE] BNB | Px: 864.24 | M: 863.5 | B: 866.2 / S: 860.7 | delta: -0.8285(-0.0355) | Adj: +3.02%, Vol: 1.00, Thr: 0.1243 | PnL: 3.01 | TotPnL: 3.01 +1766989830860, 2025-12-29 07:30:30,860 - [IDLE] ETH | Px: 3036.35 | M: 3032.1 | B: 3043.7 / S: 3020.5 | delta: -0.1750(-0.0096) | Adj: -3.42%, Vol: 1.64, Thr: 0.0262 | PnL: -9.44 | TotPnL: -9.44 +1766989830863, 2025-12-29 07:30:30,863 - [IDLE] BNB | Px: 864.22 | M: 863.4 | B: 866.2 / S: 860.6 | delta: -0.8300(-0.0370) | Adj: +3.03%, Vol: 1.00, Thr: 0.1245 | PnL: 3.05 | TotPnL: 3.05 +1766989890645, 2025-12-29 07:31:30,645 - [IDLE] ETH | Px: 3036.05 | M: 3031.5 | B: 3043.2 / S: 3019.9 | delta: -0.1756(-0.0102) | Adj: -3.40%, Vol: 1.63, Thr: 0.0263 | PnL: -9.41 | TotPnL: -9.41 +1766989890648, 2025-12-29 07:31:30,648 - [IDLE] BNB | Px: 864.30 | M: 863.6 | B: 866.3 / S: 860.8 | delta: -0.8257(-0.0327) | Adj: +2.98%, Vol: 1.00, Thr: 0.1239 | PnL: 3.02 | TotPnL: 3.02 +1766989920692, 2025-12-29 07:32:00,692 - [IDLE] ETH | Px: 3036.45 | M: 3032.3 | B: 3043.9 / S: 3020.7 | delta: -0.1747(-0.0093) | Adj: -3.43%, Vol: 1.58, Thr: 0.0262 | PnL: -9.46 | TotPnL: -9.46 +1766989920694, 2025-12-29 07:32:00,694 - [IDLE] BNB | Px: 864.28 | M: 863.5 | B: 866.3 / S: 860.8 | delta: -0.8267(-0.0337) | Adj: +2.99%, Vol: 1.00, Thr: 0.1240 | PnL: 3.02 | TotPnL: 3.02 +1766989950036, 2025-12-29 07:32:30,036 - [IDLE] ETH | Px: 3037.35 | M: 3034.1 | B: 3045.6 / S: 3022.6 | delta: -0.1727(-0.0073) | Adj: -3.47%, Vol: 1.45, Thr: 0.0259 | PnL: -9.61 | TotPnL: -9.61 +1766989950038, 2025-12-29 07:32:30,038 - [IDLE] BNB | Px: 864.30 | M: 863.6 | B: 866.3 / S: 860.8 | delta: -0.8259(-0.0329) | Adj: +2.99%, Vol: 1.00, Thr: 0.1239 | PnL: 3.04 | TotPnL: 3.04 +1766989980867, 2025-12-29 07:33:00,867 - [IDLE] ETH | Px: 3038.15 | M: 3035.7 | B: 3047.1 / S: 3024.4 | delta: -0.1709(-0.0055) | Adj: -3.51%, Vol: 1.30, Thr: 0.0256 | PnL: -9.70 | TotPnL: -9.70 +1766989980870, 2025-12-29 07:33:00,870 - [IDLE] BNB | Px: 864.54 | M: 864.1 | B: 866.8 / S: 861.4 | delta: -0.8137(-0.0207) | Adj: +2.85%, Vol: 1.00, Thr: 0.1221 | PnL: 2.88 | TotPnL: 2.88 +1766990010938, 2025-12-29 07:33:30,938 - [IDLE] ETH | Px: 3035.85 | M: 3031.1 | B: 3042.8 / S: 3019.4 | delta: -0.1761(-0.0107) | Adj: -3.39%, Vol: 1.19, Thr: 0.0264 | PnL: -9.37 | TotPnL: -9.37 +1766990010940, 2025-12-29 07:33:30,940 - [IDLE] BNB | Px: 864.24 | M: 863.4 | B: 866.2 / S: 860.7 | delta: -0.8290(-0.0360) | Adj: +3.02%, Vol: 1.00, Thr: 0.1244 | PnL: 3.03 | TotPnL: 3.03 +1766990070594, 2025-12-29 07:34:30,594 - [IDLE] ETH | Px: 3033.95 | M: 3027.3 | B: 3039.3 / S: 3015.3 | delta: -0.1804(-0.0150) | Adj: -3.30%, Vol: 1.17, Thr: 0.0271 | PnL: -8.98 | TotPnL: -8.98 +1766990070597, 2025-12-29 07:34:30,597 - [IDLE] BNB | Px: 864.24 | M: 863.4 | B: 866.2 / S: 860.7 | delta: -0.8290(-0.0360) | Adj: +3.02%, Vol: 1.00, Thr: 0.1244 | PnL: 3.12 | TotPnL: 3.12 +1766990130034, 2025-12-29 07:35:30,034 - [IDLE] ETH | Px: 3034.65 | M: 3028.7 | B: 3040.6 / S: 3016.8 | delta: -0.1788(-0.0134) | Adj: -3.33%, Vol: 1.02, Thr: 0.0268 | PnL: -9.18 | TotPnL: -9.18 +1766990130037, 2025-12-29 07:35:30,037 - [IDLE] BNB | Px: 864.20 | M: 863.4 | B: 866.1 / S: 860.6 | delta: -0.8305(-0.0375) | Adj: +3.04%, Vol: 1.00, Thr: 0.1246 | PnL: 3.05 | TotPnL: 3.05 +1766990160669, 2025-12-29 07:36:00,669 - [IDLE] ETH | Px: 3037.75 | M: 3034.9 | B: 3046.3 / S: 3023.5 | delta: -0.1718(-0.0064) | Adj: -3.49%, Vol: 1.00, Thr: 0.0258 | PnL: -9.66 | TotPnL: -9.66 +1766990160672, 2025-12-29 07:36:00,672 - [IDLE] BNB | Px: 864.56 | M: 864.1 | B: 866.8 / S: 861.4 | delta: -0.8122(-0.0192) | Adj: +2.83%, Vol: 1.00, Thr: 0.1218 | PnL: 2.78 | TotPnL: 2.78 +1766990190407, 2025-12-29 07:36:30,407 - [IDLE] ETH | Px: 3038.25 | M: 3035.9 | B: 3047.3 / S: 3024.6 | delta: -0.1706(-0.0052) | Adj: -3.52%, Vol: 1.00, Thr: 0.0256 | PnL: -9.74 | TotPnL: -9.74 +1766990190409, 2025-12-29 07:36:30,409 - [IDLE] BNB | Px: 864.68 | M: 864.4 | B: 867.1 / S: 861.7 | delta: -0.8061(-0.0131) | Adj: +2.76%, Vol: 1.00, Thr: 0.1209 | PnL: 2.69 | TotPnL: 2.69 +1766990220571, 2025-12-29 07:37:00,571 - [IDLE] ETH | Px: 3037.25 | M: 3033.9 | B: 3045.4 / S: 3022.4 | delta: -0.1729(-0.0075) | Adj: -3.47%, Vol: 1.00, Thr: 0.0259 | PnL: -9.59 | TotPnL: -9.59 +1766990220574, 2025-12-29 07:37:00,574 - [IDLE] BNB | Px: 864.52 | M: 864.1 | B: 866.8 / S: 861.3 | delta: -0.8142(-0.0212) | Adj: +2.85%, Vol: 1.00, Thr: 0.1221 | PnL: 2.79 | TotPnL: 2.79 +1766990310206, 2025-12-29 07:38:30,206 - [IDLE] ETH | Px: 3036.05 | M: 3031.5 | B: 3043.2 / S: 3019.9 | delta: -0.1756(-0.0102) | Adj: -3.40%, Vol: 1.00, Thr: 0.0263 | PnL: -9.41 | TotPnL: -9.41 +1766990310209, 2025-12-29 07:38:30,209 - [IDLE] BNB | Px: 864.28 | M: 863.5 | B: 866.3 / S: 860.8 | delta: -0.8267(-0.0337) | Adj: +2.99%, Vol: 1.00, Thr: 0.1240 | PnL: 3.04 | TotPnL: 3.04 +1766990340505, 2025-12-29 07:39:00,505 - [IDLE] ETH | Px: 3035.05 | M: 3029.5 | B: 3041.3 / S: 3017.7 | delta: -0.1779(-0.0125) | Adj: -3.35%, Vol: 1.00, Thr: 0.0267 | PnL: -9.19 | TotPnL: -9.19 +1766990340508, 2025-12-29 07:39:00,508 - [IDLE] BNB | Px: 864.27 | M: 863.5 | B: 866.3 / S: 860.7 | delta: -0.8272(-0.0342) | Adj: +3.00%, Vol: 1.00, Thr: 0.1241 | PnL: 3.04 | TotPnL: 3.04 +1766990370368, 2025-12-29 07:39:30,368 - [IDLE] ETH | Px: 3034.45 | M: 3028.3 | B: 3040.2 / S: 3016.4 | delta: -0.1793(-0.0139) | Adj: -3.32%, Vol: 1.00, Thr: 0.0269 | PnL: -9.14 | TotPnL: -9.14 +1766990370371, 2025-12-29 07:39:30,371 - [IDLE] BNB | Px: 864.14 | M: 863.2 | B: 866.0 / S: 860.4 | delta: -0.8341(-0.0411) | Adj: +3.08%, Vol: 1.00, Thr: 0.1251 | PnL: 3.12 | TotPnL: 3.12 +1766990400908, 2025-12-29 07:40:00,908 - [IDLE] ETH | Px: 3034.85 | M: 3029.1 | B: 3040.9 / S: 3017.3 | delta: -0.1784(-0.0130) | Adj: -3.34%, Vol: 1.00, Thr: 0.0268 | PnL: -9.23 | TotPnL: -9.23 +1766990400911, 2025-12-29 07:40:00,911 - [IDLE] BNB | Px: 864.16 | M: 863.3 | B: 866.1 / S: 860.5 | delta: -0.8326(-0.0396) | Adj: +3.06%, Vol: 1.00, Thr: 0.1249 | PnL: 3.10 | TotPnL: 3.10 +1766990460319, 2025-12-29 07:41:00,319 - [IDLE] ETH | Px: 3035.15 | M: 3029.7 | B: 3041.5 / S: 3017.9 | delta: -0.1777(-0.0123) | Adj: -3.36%, Vol: 1.00, Thr: 0.0267 | PnL: -9.26 | TotPnL: -9.26 +1766990460321, 2025-12-29 07:41:00,321 - [IDLE] BNB | Px: 864.45 | M: 863.9 | B: 866.6 / S: 861.2 | delta: -0.8181(-0.0251) | Adj: +2.90%, Vol: 1.00, Thr: 0.1227 | PnL: 2.87 | TotPnL: 2.87 +1766990520542, 2025-12-29 07:42:00,542 - [IDLE] ETH | Px: 3035.95 | M: 3031.3 | B: 3043.0 / S: 3019.6 | delta: -0.1759(-0.0105) | Adj: -3.40%, Vol: 1.00, Thr: 0.0264 | PnL: -9.36 | TotPnL: -9.36 +1766990520544, 2025-12-29 07:42:00,544 - [IDLE] BNB | Px: 864.49 | M: 864.0 | B: 866.7 / S: 861.3 | delta: -0.8160(-0.0230) | Adj: +2.87%, Vol: 1.00, Thr: 0.1224 | PnL: 2.80 | TotPnL: 2.80 +1766990550983, 2025-12-29 07:42:30,983 - [IDLE] ETH | Px: 3035.75 | M: 3030.9 | B: 3042.6 / S: 3019.2 | delta: -0.1763(-0.0109) | Adj: -3.39%, Vol: 1.00, Thr: 0.0264 | PnL: -9.36 | TotPnL: -9.36 +1766990550986, 2025-12-29 07:42:30,986 - [IDLE] BNB | Px: 864.52 | M: 864.0 | B: 866.8 / S: 861.3 | delta: -0.8145(-0.0215) | Adj: +2.85%, Vol: 1.00, Thr: 0.1222 | PnL: 2.80 | TotPnL: 2.80 +1766990610378, 2025-12-29 07:43:30,378 - [IDLE] ETH | Px: 3036.15 | M: 3031.7 | B: 3043.4 / S: 3020.1 | delta: -0.1754(-0.0100) | Adj: -3.41%, Vol: 1.00, Thr: 0.0263 | PnL: -9.42 | TotPnL: -9.42 +1766990610381, 2025-12-29 07:43:30,381 - [IDLE] BNB | Px: 864.56 | M: 864.1 | B: 866.8 / S: 861.4 | delta: -0.8125(-0.0195) | Adj: +2.83%, Vol: 1.00, Thr: 0.1219 | PnL: 2.80 | TotPnL: 2.80 +1766990670318, 2025-12-29 07:44:30,318 - [IDLE] ETH | Px: 3035.85 | M: 3031.1 | B: 3042.8 / S: 3019.4 | delta: -0.1761(-0.0107) | Adj: -3.39%, Vol: 1.00, Thr: 0.0264 | PnL: -9.36 | TotPnL: -9.36 +1766990670320, 2025-12-29 07:44:30,320 - [IDLE] BNB | Px: 864.48 | M: 864.0 | B: 866.7 / S: 861.2 | delta: -0.8165(-0.0235) | Adj: +2.88%, Vol: 1.00, Thr: 0.1225 | PnL: 2.83 | TotPnL: 2.83 +1766990700519, 2025-12-29 07:45:00,519 - [IDLE] ETH | Px: 3035.60 | M: 3030.6 | B: 3042.3 / S: 3018.9 | delta: -0.1767(-0.0113) | Adj: -3.38%, Vol: 1.00, Thr: 0.0265 | PnL: -9.32 | TotPnL: -9.32 +1766990700522, 2025-12-29 07:45:00,522 - [IDLE] BNB | Px: 864.36 | M: 863.7 | B: 866.4 / S: 861.0 | delta: -0.8226(-0.0296) | Adj: +2.95%, Vol: 1.00, Thr: 0.1234 | PnL: 2.84 | TotPnL: 2.84 +1766990790862, 2025-12-29 07:46:30,862 - [IDLE] ETH | Px: 3034.85 | M: 3029.1 | B: 3040.9 / S: 3017.3 | delta: -0.1784(-0.0130) | Adj: -3.34%, Vol: 1.00, Thr: 0.0268 | PnL: -9.18 | TotPnL: -9.18 +1766990790865, 2025-12-29 07:46:30,865 - [IDLE] BNB | Px: 864.22 | M: 863.4 | B: 866.2 / S: 860.6 | delta: -0.8295(-0.0365) | Adj: +3.03%, Vol: 1.00, Thr: 0.1244 | PnL: 2.98 | TotPnL: 2.98 +1766990850321, 2025-12-29 07:47:30,321 - [IDLE] ETH | Px: 3034.75 | M: 3028.9 | B: 3040.8 / S: 3017.1 | delta: -0.1786(-0.0132) | Adj: -3.34%, Vol: 1.00, Thr: 0.0268 | PnL: -9.08 | TotPnL: -9.08 +1766990850324, 2025-12-29 07:47:30,324 - [IDLE] BNB | Px: 863.96 | M: 862.9 | B: 865.7 / S: 860.0 | delta: -0.8428(-0.0498) | Adj: +3.18%, Vol: 1.00, Thr: 0.1264 | PnL: 3.24 | TotPnL: 3.24 +1766990910821, 2025-12-29 07:48:30,821 - [IDLE] ETH | Px: 3032.65 | M: 3024.7 | B: 3036.9 / S: 3012.5 | delta: -0.1834(-0.0180) | Adj: -3.23%, Vol: 1.00, Thr: 0.0275 | PnL: -8.84 | TotPnL: -8.84 +1766990910823, 2025-12-29 07:48:30,823 - [IDLE] BNB | Px: 863.66 | M: 862.2 | B: 865.1 / S: 859.4 | delta: -0.8582(-0.0652) | Adj: +3.35%, Vol: 1.00, Thr: 0.1287 | PnL: 3.59 | TotPnL: 3.59 +1766990940824, 2025-12-29 07:49:00,824 - [IDLE] ETH | Px: 3033.85 | M: 3027.1 | B: 3039.1 / S: 3015.1 | delta: -0.1807(-0.0153) | Adj: -3.29%, Vol: 1.00, Thr: 0.0271 | PnL: -9.04 | TotPnL: -9.04 +1766990940827, 2025-12-29 07:49:00,827 - [IDLE] BNB | Px: 864.00 | M: 862.9 | B: 865.7 / S: 860.1 | delta: -0.8408(-0.0478) | Adj: +3.15%, Vol: 1.00, Thr: 0.1261 | PnL: 3.28 | TotPnL: 3.28 +1766991030032, 2025-12-29 07:50:30,032 - [IDLE] ETH | Px: 3034.45 | M: 3028.3 | B: 3040.2 / S: 3016.4 | delta: -0.1793(-0.0139) | Adj: -3.32%, Vol: 1.00, Thr: 0.0269 | PnL: -9.14 | TotPnL: -9.14 +1766991030035, 2025-12-29 07:50:30,035 - [IDLE] BNB | Px: 864.04 | M: 863.0 | B: 865.8 / S: 860.2 | delta: -0.8392(-0.0462) | Adj: +3.14%, Vol: 1.00, Thr: 0.1259 | PnL: 3.19 | TotPnL: 3.19 +1766991060640, 2025-12-29 07:51:00,640 - [IDLE] ETH | Px: 3033.15 | M: 3025.7 | B: 3037.8 / S: 3013.6 | delta: -0.1823(-0.0169) | Adj: -3.26%, Vol: 1.00, Thr: 0.0273 | PnL: -9.08 | TotPnL: -9.08 +1766991060643, 2025-12-29 07:51:00,643 - [IDLE] BNB | Px: 863.66 | M: 862.2 | B: 865.1 / S: 859.4 | delta: -0.8582(-0.0652) | Adj: +3.35%, Vol: 1.00, Thr: 0.1287 | PnL: 3.36 | TotPnL: 3.36 +1766991150586, 2025-12-29 07:52:30,586 - [IDLE] ETH | Px: 3032.55 | M: 3024.5 | B: 3036.7 / S: 3012.3 | delta: -0.1836(-0.0182) | Adj: -3.22%, Vol: 1.00, Thr: 0.0275 | PnL: -8.91 | TotPnL: -8.91 +1766991150589, 2025-12-29 07:52:30,589 - [IDLE] BNB | Px: 863.23 | M: 861.3 | B: 864.2 / S: 858.4 | delta: -0.8806(-0.0876) | Adj: +3.61%, Vol: 1.00, Thr: 0.1321 | PnL: 3.72 | TotPnL: 3.72 +1766991210673, 2025-12-29 07:53:30,673 - [IDLE] ETH | Px: 3032.95 | M: 3025.3 | B: 3037.4 / S: 3013.2 | delta: -0.1827(-0.0173) | Adj: -3.24%, Vol: 1.00, Thr: 0.0274 | PnL: -8.89 | TotPnL: -8.89 +1766991210675, 2025-12-29 07:53:30,675 - [IDLE] BNB | Px: 863.41 | M: 861.7 | B: 864.6 / S: 858.8 | delta: -0.8713(-0.0783) | Adj: +3.50%, Vol: 1.00, Thr: 0.1307 | PnL: 3.67 | TotPnL: 3.67 +1766991330629, 2025-12-29 07:55:30,629 - [IDLE] ETH | Px: 3032.25 | M: 3023.9 | B: 3036.1 / S: 3011.7 | delta: -0.1843(-0.0189) | Adj: -3.21%, Vol: 1.00, Thr: 0.0276 | PnL: -8.76 | TotPnL: -8.76 +1766991330631, 2025-12-29 07:55:30,631 - [IDLE] BNB | Px: 863.11 | M: 861.0 | B: 864.0 / S: 858.1 | delta: -0.8868(-0.0938) | Adj: +3.68%, Vol: 1.00, Thr: 0.1330 | PnL: 3.91 | TotPnL: 3.91 +1766991360786, 2025-12-29 07:56:00,786 - [IDLE] ETH | Px: 3031.15 | M: 3021.7 | B: 3034.1 / S: 3009.3 | delta: -0.1868(-0.0214) | Adj: -3.15%, Vol: 1.00, Thr: 0.0280 | PnL: -8.60 | TotPnL: -8.60 +1766991360789, 2025-12-29 07:56:00,789 - [IDLE] BNB | Px: 863.12 | M: 861.0 | B: 864.0 / S: 858.1 | delta: -0.8863(-0.0933) | Adj: +3.67%, Vol: 1.00, Thr: 0.1329 | PnL: 3.93 | TotPnL: 3.93 +1766991420935, 2025-12-29 07:57:00,935 - [IDLE] ETH | Px: 3032.45 | M: 3024.3 | B: 3036.5 / S: 3012.1 | delta: -0.1839(-0.0185) | Adj: -3.22%, Vol: 1.00, Thr: 0.0276 | PnL: -8.81 | TotPnL: -8.81 +1766991420938, 2025-12-29 07:57:00,938 - [IDLE] BNB | Px: 863.32 | M: 861.5 | B: 864.4 / S: 858.5 | delta: -0.8762(-0.0832) | Adj: +3.56%, Vol: 1.00, Thr: 0.1314 | PnL: 3.71 | TotPnL: 3.71 +1766991510065, 2025-12-29 07:58:30,065 - [IDLE] ETH | Px: 3033.15 | M: 3025.7 | B: 3037.8 / S: 3013.6 | delta: -0.1823(-0.0169) | Adj: -3.26%, Vol: 1.00, Thr: 0.0273 | PnL: -8.93 | TotPnL: -8.93 +1766991510068, 2025-12-29 07:58:30,068 - [IDLE] BNB | Px: 863.28 | M: 861.4 | B: 864.3 / S: 858.5 | delta: -0.8783(-0.0853) | Adj: +3.58%, Vol: 1.00, Thr: 0.1317 | PnL: 3.81 | TotPnL: 3.81 +1766991540505, 2025-12-29 07:59:00,505 - [IDLE] ETH | Px: 3033.95 | M: 3027.3 | B: 3039.3 / S: 3015.3 | delta: -0.1804(-0.0150) | Adj: -3.30%, Vol: 1.00, Thr: 0.0271 | PnL: -9.06 | TotPnL: -9.06 +1766991540508, 2025-12-29 07:59:00,508 - [IDLE] BNB | Px: 863.26 | M: 861.4 | B: 864.3 / S: 858.4 | delta: -0.8788(-0.0858) | Adj: +3.59%, Vol: 1.00, Thr: 0.1318 | PnL: 3.81 | TotPnL: 3.81 +1766991570905, 2025-12-29 07:59:30,905 - [IDLE] ETH | Px: 3034.15 | M: 3027.7 | B: 3039.6 / S: 3015.8 | delta: -0.1800(-0.0146) | Adj: -3.31%, Vol: 1.00, Thr: 0.0270 | PnL: -9.09 | TotPnL: -9.09 +1766991570908, 2025-12-29 07:59:30,908 - [IDLE] BNB | Px: 863.31 | M: 861.5 | B: 864.4 / S: 858.5 | delta: -0.8764(-0.0834) | Adj: +3.56%, Vol: 1.00, Thr: 0.1315 | PnL: 3.76 | TotPnL: 3.76 +1766991630147, 2025-12-29 08:00:30,147 - [IDLE] ETH | Px: 3033.35 | M: 3026.1 | B: 3038.2 / S: 3014.0 | delta: -0.1818(-0.0164) | Adj: -3.27%, Vol: 1.00, Thr: 0.0273 | PnL: -8.96 | TotPnL: -8.96 +1766991630149, 2025-12-29 08:00:30,149 - [IDLE] BNB | Px: 863.22 | M: 861.3 | B: 864.2 / S: 858.3 | delta: -0.8811(-0.0881) | Adj: +3.61%, Vol: 1.00, Thr: 0.1322 | PnL: 3.81 | TotPnL: 3.81 +1766991690565, 2025-12-29 08:01:30,565 - [IDLE] ETH | Px: 3036.75 | M: 3032.9 | B: 3044.5 / S: 3021.4 | delta: -0.1741(-0.0087) | Adj: -3.44%, Vol: 1.00, Thr: 0.0261 | PnL: -9.51 | TotPnL: -9.51 +1766991690568, 2025-12-29 08:01:30,568 - [IDLE] BNB | Px: 863.54 | M: 861.9 | B: 864.8 / S: 859.1 | delta: -0.8649(-0.0719) | Adj: +3.43%, Vol: 1.00, Thr: 0.1297 | PnL: 3.60 | TotPnL: 3.60 +1766991720737, 2025-12-29 08:02:00,737 - [IDLE] ETH | Px: 3034.95 | M: 3029.3 | B: 3041.1 / S: 3017.5 | delta: -0.1782(-0.0128) | Adj: -3.35%, Vol: 1.00, Thr: 0.0267 | PnL: -9.21 | TotPnL: -9.21 +1766991720739, 2025-12-29 08:02:00,739 - [IDLE] BNB | Px: 863.14 | M: 861.1 | B: 864.0 / S: 858.1 | delta: -0.8855(-0.0925) | Adj: +3.66%, Vol: 1.00, Thr: 0.1328 | PnL: 3.86 | TotPnL: 3.86 +1766991750160, 2025-12-29 08:02:30,160 - [IDLE] ETH | Px: 3035.45 | M: 3030.3 | B: 3042.1 / S: 3018.6 | delta: -0.1770(-0.0116) | Adj: -3.37%, Vol: 1.00, Thr: 0.0266 | PnL: -9.29 | TotPnL: -9.29 +1766991750163, 2025-12-29 08:02:30,163 - [IDLE] BNB | Px: 863.18 | M: 861.2 | B: 864.1 / S: 858.2 | delta: -0.8834(-0.0904) | Adj: +3.64%, Vol: 1.00, Thr: 0.1325 | PnL: 3.90 | TotPnL: 3.90 +1766991780704, 2025-12-29 08:03:00,704 - [IDLE] ETH | Px: 3036.95 | M: 3033.3 | B: 3044.9 / S: 3021.8 | delta: -0.1736(-0.0082) | Adj: -3.45%, Vol: 1.08, Thr: 0.0260 | PnL: -9.56 | TotPnL: -9.56 +1766991780707, 2025-12-29 08:03:00,707 - [IDLE] BNB | Px: 863.20 | M: 861.2 | B: 864.2 / S: 858.3 | delta: -0.8819(-0.0889) | Adj: +3.62%, Vol: 1.00, Thr: 0.1323 | PnL: 3.84 | TotPnL: 3.84 +1766991810504, 2025-12-29 08:03:30,504 - [IDLE] ETH | Px: 3033.85 | M: 3027.1 | B: 3039.1 / S: 3015.1 | delta: -0.1807(-0.0153) | Adj: -3.29%, Vol: 1.14, Thr: 0.0271 | PnL: -9.01 | TotPnL: -9.01 +1766991810507, 2025-12-29 08:03:30,507 - [IDLE] BNB | Px: 862.72 | M: 860.2 | B: 863.2 / S: 857.2 | delta: -0.9070(-0.1140) | Adj: +3.90%, Vol: 1.00, Thr: 0.1360 | PnL: 4.22 | TotPnL: 4.22 +1766991900098, 2025-12-29 08:05:00,098 - [IDLE] ETH | Px: 3032.25 | M: 3023.9 | B: 3036.1 / S: 3011.7 | delta: -0.1843(-0.0189) | Adj: -3.21%, Vol: 1.13, Thr: 0.0276 | PnL: -8.78 | TotPnL: -8.78 +1766991900100, 2025-12-29 08:05:00,100 - [IDLE] BNB | Px: 862.28 | M: 859.2 | B: 862.3 / S: 856.1 | delta: -0.9301(-0.1371) | Adj: +4.16%, Vol: 1.00, Thr: 0.1395 | PnL: 4.61 | TotPnL: 4.61 +1766991930796, 2025-12-29 08:05:30,796 - [IDLE] ETH | Px: 3032.95 | M: 3025.3 | B: 3037.4 / S: 3013.2 | delta: -0.1827(-0.0173) | Adj: -3.24%, Vol: 1.11, Thr: 0.0274 | PnL: -8.88 | TotPnL: -8.88 +1766991930799, 2025-12-29 08:05:30,799 - [IDLE] BNB | Px: 862.44 | M: 859.6 | B: 862.6 / S: 856.5 | delta: -0.9218(-0.1288) | Adj: +4.07%, Vol: 1.00, Thr: 0.1383 | PnL: 4.47 | TotPnL: 4.47 +1766991990347, 2025-12-29 08:06:30,347 - [IDLE] ETH | Px: 3031.45 | M: 3022.3 | B: 3034.6 / S: 3010.0 | delta: -0.1862(-0.0208) | Adj: -3.17%, Vol: 1.05, Thr: 0.0279 | PnL: -8.65 | TotPnL: -8.65 +1766991990350, 2025-12-29 08:06:30,350 - [IDLE] BNB | Px: 862.22 | M: 859.1 | B: 862.2 / S: 856.0 | delta: -0.9328(-0.1398) | Adj: +4.19%, Vol: 1.00, Thr: 0.1399 | PnL: 4.64 | TotPnL: 4.64 +1766991992476, 2025-12-29 08:06:32,476 - [TRIG] Net BNB: SELL 0.1434 | Tgt: -0.9364 / Cur: -0.7930 | Thresh: 0.1405 +1766991992477, 2025-12-29 08:06:32,477 - [ORDER] ALO BNB SELL 0.143 @ 862.01 +1766991993987, 2025-12-29 08:06:33,987 - Sleeping 5s to allow position update... +1766992000873, 2025-12-29 08:06:40,873 - [WAIT] BNB Pending SELL Order 281265022642 @ 862.01 (Dist: 0.010%) +1766992021181, 2025-12-29 08:07:01,181 - Cancelling idle order 281265022642 (A @ 862.01) +1766992080829, 2025-12-29 08:08:00,829 - [IDLE] ETH | Px: 3030.95 | M: 3021.3 | B: 3033.7 / S: 3008.9 | delta: -0.1873(-0.0219) | Adj: -3.14%, Vol: 1.18, Thr: 0.0281 | PnL: -8.56 | TotPnL: -8.56 +1766992080832, 2025-12-29 08:08:00,832 - [IDLE] BNB | Px: 862.36 | M: 860.7 | B: 863.8 / S: 857.7 | delta: -0.9257(-0.0727) | Adj: +4.11%, Vol: 1.17, Thr: 0.1389 | PnL: 4.60 | TotPnL: 4.60 +1766992128158, 2025-12-29 08:08:48,158 - [TRIG] Net ETH: SELL 0.0362 | Tgt: -0.2016 / Cur: -0.1654 | Thresh: 0.0302 +1766992128159, 2025-12-29 08:08:48,159 - [ORDER] ALO ETH SELL 0.0361 @ 3023.5 +1766992129364, 2025-12-29 08:08:49,364 - Sleeping 5s to allow position update... +1766992136310, 2025-12-29 08:08:56,310 - Cancelling stale order 281266440990 (A @ 3023.5) +1766992138020, 2025-12-29 08:08:58,020 - [TRIG] Net BNB: SELL 0.1750 | Tgt: -1.0280 / Cur: -0.8530 | Thresh: 0.1542 +1766992138021, 2025-12-29 08:08:58,021 - [ORDER] ALO BNB SELL 0.175 @ 860.69 +1766992138779, 2025-12-29 08:08:58,779 - Sleeping 5s to allow position update... +1766992170612, 2025-12-29 08:09:30,612 - [IDLE] ETH | Px: 3016.75 | M: 2992.7 | B: 3007.2 / S: 2978.2 | delta: -0.2202(-0.0548) | Adj: -2.41%, Vol: 2.63, Thr: 0.0330 | PnL: -6.21 | TotPnL: -6.21 +1766992170615, 2025-12-29 08:09:30,615 - [IDLE] BNB | Px: 860.94 | M: 861.5 | B: 864.9 / S: 858.2 | delta: -1.0006(+0.0274) | Adj: +4.94%, Vol: 1.51, Thr: 0.1501 | PnL: 5.52 | TotPnL: 5.52 +1766992190823, 2025-12-29 08:09:50,823 - [TRIG] Net ETH: SELL 0.0517 | Tgt: -0.2171 / Cur: -0.1654 | Thresh: 0.0326 +1766992190824, 2025-12-29 08:09:50,824 - [ORDER] ALO ETH SELL 0.0516 @ 3018.2 +1766992191514, 2025-12-29 08:09:51,514 - Sleeping 5s to allow position update... +1766992200292, 2025-12-29 08:10:00,292 - [IDLE] ETH | Px: 3018.85 | M: 3019.6 | B: 3033.8 / S: 3005.4 | delta: -0.2153(+0.0017) | Adj: -2.52%, Vol: 3.00, Thr: 0.0323 | PnL: -6.51 | TotPnL: -6.51 +1766992200295, 2025-12-29 08:10:00,295 - [IDLE] BNB | Px: 861.44 | M: 862.6 | B: 865.9 / S: 859.4 | delta: -0.9742(+0.0538) | Adj: +4.65%, Vol: 1.64, Thr: 0.1461 | PnL: 5.16 | TotPnL: 5.16 +1766992230904, 2025-12-29 08:10:30,904 - [IDLE] ETH | Px: 3020.55 | M: 3023.0 | B: 3037.0 / S: 3009.1 | delta: -0.2113(+0.0057) | Adj: -2.61%, Vol: 3.00, Thr: 0.0317 | PnL: -6.95 | TotPnL: -6.95 +1766992230907, 2025-12-29 08:10:30,907 - [IDLE] BNB | Px: 861.53 | M: 862.8 | B: 866.0 / S: 859.6 | delta: -0.9692(+0.0588) | Adj: +4.60%, Vol: 1.66, Thr: 0.1454 | PnL: 5.05 | TotPnL: 5.05 +1766992290944, 2025-12-29 08:11:30,944 - [IDLE] ETH | Px: 3021.05 | M: 3024.1 | B: 3037.9 / S: 3010.2 | delta: -0.2102(+0.0068) | Adj: -2.63%, Vol: 3.00, Thr: 0.0315 | PnL: -7.12 | TotPnL: -7.12 +1766992290947, 2025-12-29 08:11:30,947 - [IDLE] BNB | Px: 861.76 | M: 863.3 | B: 866.5 / S: 860.2 | delta: -0.9571(+0.0709) | Adj: +4.46%, Vol: 1.50, Thr: 0.1436 | PnL: 4.81 | TotPnL: 4.81 +1766992380590, 2025-12-29 08:13:00,590 - [IDLE] ETH | Px: 3021.65 | M: 3025.3 | B: 3039.0 / S: 3011.5 | delta: -0.2088(+0.0082) | Adj: -2.66%, Vol: 3.00, Thr: 0.0313 | PnL: -7.25 | TotPnL: -7.25 +1766992380592, 2025-12-29 08:13:00,592 - [IDLE] BNB | Px: 861.56 | M: 862.9 | B: 866.1 / S: 859.7 | delta: -0.9676(+0.0604) | Adj: +4.58%, Vol: 1.18, Thr: 0.1451 | PnL: 4.94 | TotPnL: 4.94 +1766992440620, 2025-12-29 08:14:00,620 - [IDLE] ETH | Px: 3017.35 | M: 3016.6 | B: 3031.0 / S: 3002.2 | delta: -0.2188(-0.0018) | Adj: -2.44%, Vol: 3.00, Thr: 0.0328 | PnL: -6.38 | TotPnL: -6.38 +1766992440623, 2025-12-29 08:14:00,623 - [IDLE] BNB | Px: 860.88 | M: 861.4 | B: 864.7 / S: 858.1 | delta: -1.0038(+0.0242) | Adj: +4.98%, Vol: 1.15, Thr: 0.1506 | PnL: 5.76 | TotPnL: 5.76 +1766992470558, 2025-12-29 08:14:30,558 - [IDLE] ETH | Px: 3019.45 | M: 3020.8 | B: 3034.9 / S: 3006.7 | delta: -0.2139(+0.0031) | Adj: -2.55%, Vol: 3.00, Thr: 0.0321 | PnL: -6.71 | TotPnL: -6.71 +1766992470561, 2025-12-29 08:14:30,561 - [IDLE] BNB | Px: 860.86 | M: 861.4 | B: 864.7 / S: 858.0 | delta: -1.0049(+0.0231) | Adj: +4.99%, Vol: 1.20, Thr: 0.1507 | PnL: 5.69 | TotPnL: 5.69 +1766992500517, 2025-12-29 08:15:00,517 - [IDLE] ETH | Px: 3019.65 | M: 3021.2 | B: 3035.3 / S: 3007.2 | delta: -0.2134(+0.0036) | Adj: -2.56%, Vol: 3.00, Thr: 0.0320 | PnL: -6.75 | TotPnL: -6.75 +1766992500519, 2025-12-29 08:15:00,519 - [IDLE] BNB | Px: 860.84 | M: 861.3 | B: 864.7 / S: 858.0 | delta: -1.0059(+0.0221) | Adj: +5.00%, Vol: 1.24, Thr: 0.1509 | PnL: 5.76 | TotPnL: 5.76 +1766992560831, 2025-12-29 08:16:00,831 - [IDLE] ETH | Px: 3019.65 | M: 3021.2 | B: 3035.3 / S: 3007.2 | delta: -0.2134(+0.0036) | Adj: -2.56%, Vol: 3.00, Thr: 0.0320 | PnL: -6.77 | TotPnL: -6.77 +1766992560834, 2025-12-29 08:16:00,834 - [IDLE] BNB | Px: 860.91 | M: 861.5 | B: 864.8 / S: 858.2 | delta: -1.0020(+0.0260) | Adj: +4.96%, Vol: 1.21, Thr: 0.1503 | PnL: 5.68 | TotPnL: 5.68 +1766992590511, 2025-12-29 08:16:30,511 - [IDLE] ETH | Px: 3017.75 | M: 3017.4 | B: 3031.7 / S: 3003.0 | delta: -0.2179(-0.0009) | Adj: -2.46%, Vol: 3.00, Thr: 0.0327 | PnL: -6.36 | TotPnL: -6.36 +1766992590514, 2025-12-29 08:16:30,514 - [IDLE] BNB | Px: 860.94 | M: 861.5 | B: 864.9 / S: 858.2 | delta: -1.0006(+0.0274) | Adj: +4.94%, Vol: 1.17, Thr: 0.1501 | PnL: 5.66 | TotPnL: 5.66 +1766992710683, 2025-12-29 08:18:30,683 - [IDLE] ETH | Px: 3015.75 | M: 3013.3 | B: 3027.9 / S: 2998.7 | delta: -0.2226(-0.0056) | Adj: -2.36%, Vol: 1.63, Thr: 0.0334 | PnL: -5.90 | TotPnL: -5.90 +1766992710685, 2025-12-29 08:18:30,685 - [IDLE] BNB | Px: 860.54 | M: 860.7 | B: 864.1 / S: 857.3 | delta: -1.0214(+0.0066) | Adj: +5.17%, Vol: 1.04, Thr: 0.1532 | PnL: 5.98 | TotPnL: 5.98 +1766992740234, 2025-12-29 08:19:00,234 - [IDLE] ETH | Px: 3014.95 | M: 3011.7 | B: 3026.4 / S: 2996.9 | delta: -0.2244(-0.0074) | Adj: -2.32%, Vol: 1.59, Thr: 0.0337 | PnL: -5.73 | TotPnL: -5.73 +1766992740236, 2025-12-29 08:19:00,236 - [IDLE] BNB | Px: 860.50 | M: 860.6 | B: 864.0 / S: 857.2 | delta: -1.0235(+0.0045) | Adj: +5.19%, Vol: 1.07, Thr: 0.1535 | PnL: 6.12 | TotPnL: 6.12 +1766992800206, 2025-12-29 08:20:00,206 - [IDLE] ETH | Px: 3015.65 | M: 3013.1 | B: 3027.8 / S: 2998.5 | delta: -0.2228(-0.0058) | Adj: -2.35%, Vol: 1.65, Thr: 0.0334 | PnL: -5.88 | TotPnL: -5.88 +1766992800208, 2025-12-29 08:20:00,208 - [IDLE] BNB | Px: 859.92 | M: 859.3 | B: 862.8 / S: 855.8 | delta: -1.0545(-0.0265) | Adj: +5.53%, Vol: 1.30, Thr: 0.1582 | PnL: 6.70 | TotPnL: 6.70 +1766992860362, 2025-12-29 08:21:00,362 - [IDLE] ETH | Px: 3015.35 | M: 3012.5 | B: 3027.2 / S: 2997.8 | delta: -0.2235(-0.0065) | Adj: -2.34%, Vol: 1.65, Thr: 0.0335 | PnL: -5.97 | TotPnL: -5.97 +1766992860364, 2025-12-29 08:21:00,364 - [IDLE] BNB | Px: 859.72 | M: 858.9 | B: 862.4 / S: 855.4 | delta: -1.0652(-0.0372) | Adj: +5.65%, Vol: 1.33, Thr: 0.1598 | PnL: 6.73 | TotPnL: 6.73 +1766992980253, 2025-12-29 08:23:00,253 - [IDLE] ETH | Px: 3013.55 | M: 3008.9 | B: 3023.8 / S: 2993.9 | delta: -0.2277(-0.0107) | Adj: -2.25%, Vol: 1.43, Thr: 0.0342 | PnL: -5.45 | TotPnL: -5.45 +1766992980255, 2025-12-29 08:23:00,255 - [IDLE] BNB | Px: 859.30 | M: 858.0 | B: 861.6 / S: 854.4 | delta: -1.0879(-0.0599) | Adj: +5.89%, Vol: 1.57, Thr: 0.1632 | PnL: 7.42 | TotPnL: 7.42 +1766993010228, 2025-12-29 08:23:30,228 - [IDLE] ETH | Px: 3012.55 | M: 3006.8 | B: 3021.9 / S: 2991.7 | delta: -0.2301(-0.0131) | Adj: -2.19%, Vol: 1.48, Thr: 0.0345 | PnL: -5.19 | TotPnL: -5.19 +1766993010230, 2025-12-29 08:23:30,230 - [IDLE] BNB | Px: 859.08 | M: 857.5 | B: 861.1 / S: 853.8 | delta: -1.1003(-0.0723) | Adj: +6.03%, Vol: 1.65, Thr: 0.1650 | PnL: 7.61 | TotPnL: 7.61 +1766993040197, 2025-12-29 08:24:00,197 - [IDLE] ETH | Px: 3010.75 | M: 3003.2 | B: 3018.5 / S: 2987.8 | delta: -0.2343(-0.0173) | Adj: -2.10%, Vol: 1.62, Thr: 0.0351 | PnL: -4.82 | TotPnL: -4.82 +1766993040200, 2025-12-29 08:24:00,200 - [IDLE] BNB | Px: 858.96 | M: 857.2 | B: 860.9 / S: 853.6 | delta: -1.1068(-0.0788) | Adj: +6.10%, Vol: 1.72, Thr: 0.1660 | PnL: 7.83 | TotPnL: 7.83 +1766993070729, 2025-12-29 08:24:30,729 - [IDLE] ETH | Px: 3012.45 | M: 3006.6 | B: 3021.7 / S: 2991.5 | delta: -0.2303(-0.0133) | Adj: -2.19%, Vol: 1.69, Thr: 0.0345 | PnL: -5.23 | TotPnL: -5.23 +1766993070732, 2025-12-29 08:24:30,732 - [IDLE] BNB | Px: 859.04 | M: 857.4 | B: 861.0 / S: 853.7 | delta: -1.1025(-0.0745) | Adj: +6.05%, Vol: 1.76, Thr: 0.1654 | PnL: 7.68 | TotPnL: 7.68 +1766993190504, 2025-12-29 08:26:30,504 - [IDLE] ETH | Px: 3013.75 | M: 3009.3 | B: 3024.2 / S: 2994.3 | delta: -0.2273(-0.0103) | Adj: -2.26%, Vol: 1.30, Thr: 0.0341 | PnL: -5.45 | TotPnL: -5.45 +1766993190507, 2025-12-29 08:26:30,507 - [IDLE] BNB | Px: 859.32 | M: 858.0 | B: 861.6 / S: 854.4 | delta: -1.0868(-0.0588) | Adj: +5.88%, Vol: 1.52, Thr: 0.1630 | PnL: 7.32 | TotPnL: 7.32 +1766993280912, 2025-12-29 08:28:00,912 - [IDLE] ETH | Px: 3014.75 | M: 3011.3 | B: 3026.1 / S: 2996.5 | delta: -0.2249(-0.0079) | Adj: -2.31%, Vol: 1.02, Thr: 0.0337 | PnL: -5.71 | TotPnL: -5.71 +1766993280915, 2025-12-29 08:28:00,915 - [IDLE] BNB | Px: 859.42 | M: 858.2 | B: 861.8 / S: 854.7 | delta: -1.0814(-0.0534) | Adj: +5.82%, Vol: 1.05, Thr: 0.1622 | PnL: 7.24 | TotPnL: 7.24 +1766993370442, 2025-12-29 08:29:30,442 - [IDLE] ETH | Px: 3012.85 | M: 3007.4 | B: 3022.5 / S: 2992.4 | delta: -0.2294(-0.0124) | Adj: -2.21%, Vol: 1.00, Thr: 0.0344 | PnL: -5.27 | TotPnL: -5.27 +1766993370445, 2025-12-29 08:29:30,445 - [IDLE] BNB | Px: 859.34 | M: 858.1 | B: 861.6 / S: 854.5 | delta: -1.0863(-0.0583) | Adj: +5.88%, Vol: 1.00, Thr: 0.1629 | PnL: 7.34 | TotPnL: 7.34 +1766993400546, 2025-12-29 08:30:00,546 - [IDLE] ETH | Px: 3013.35 | M: 3008.5 | B: 3023.4 / S: 2993.5 | delta: -0.2282(-0.0112) | Adj: -2.23%, Vol: 1.00, Thr: 0.0342 | PnL: -5.38 | TotPnL: -5.38 +1766993400549, 2025-12-29 08:30:00,549 - [IDLE] BNB | Px: 858.60 | M: 856.5 | B: 860.2 / S: 852.7 | delta: -1.1258(-0.0978) | Adj: +6.30%, Vol: 1.00, Thr: 0.1689 | PnL: 8.24 | TotPnL: 8.24 +1766993430162, 2025-12-29 08:30:30,162 - [IDLE] ETH | Px: 3013.95 | M: 3009.7 | B: 3024.6 / S: 2994.8 | delta: -0.2268(-0.0098) | Adj: -2.27%, Vol: 1.00, Thr: 0.0340 | PnL: -5.30 | TotPnL: -5.30 +1766993430165, 2025-12-29 08:30:30,165 - [IDLE] BNB | Px: 858.68 | M: 856.6 | B: 860.3 / S: 852.9 | delta: -1.1215(-0.0935) | Adj: +6.26%, Vol: 1.00, Thr: 0.1682 | PnL: 8.12 | TotPnL: 8.12 +1766993460416, 2025-12-29 08:31:00,416 - [IDLE] ETH | Px: 3014.75 | M: 3011.3 | B: 3026.1 / S: 2996.5 | delta: -0.2249(-0.0079) | Adj: -2.31%, Vol: 1.00, Thr: 0.0337 | PnL: -5.67 | TotPnL: -5.67 +1766993460419, 2025-12-29 08:31:00,419 - [IDLE] BNB | Px: 858.76 | M: 856.8 | B: 860.5 / S: 853.1 | delta: -1.1171(-0.0891) | Adj: +6.21%, Vol: 1.00, Thr: 0.1676 | PnL: 8.01 | TotPnL: 8.01 +1766993520644, 2025-12-29 08:32:00,644 - [IDLE] ETH | Px: 3020.25 | M: 3022.4 | B: 3036.4 / S: 3008.5 | delta: -0.2120(+0.0050) | Adj: -2.59%, Vol: 1.15, Thr: 0.0318 | PnL: -6.88 | TotPnL: -6.88 +1766993520647, 2025-12-29 08:32:00,647 - [IDLE] BNB | Px: 859.36 | M: 858.1 | B: 861.7 / S: 854.5 | delta: -1.0846(-0.0566) | Adj: +5.86%, Vol: 1.00, Thr: 0.1627 | PnL: 7.22 | TotPnL: 7.22 +1766993580062, 2025-12-29 08:33:00,062 - [IDLE] ETH | Px: 3017.65 | M: 3017.2 | B: 3031.5 / S: 3002.8 | delta: -0.2181(-0.0011) | Adj: -2.46%, Vol: 1.46, Thr: 0.0327 | PnL: -6.32 | TotPnL: -6.32 +1766993580064, 2025-12-29 08:33:00,064 - [IDLE] BNB | Px: 859.57 | M: 858.6 | B: 862.1 / S: 855.0 | delta: -1.0736(-0.0456) | Adj: +5.74%, Vol: 1.00, Thr: 0.1610 | PnL: 7.21 | TotPnL: 7.21 +1766993610179, 2025-12-29 08:33:30,179 - [IDLE] ETH | Px: 3018.85 | M: 3019.6 | B: 3033.8 / S: 3005.4 | delta: -0.2153(+0.0017) | Adj: -2.52%, Vol: 1.52, Thr: 0.0323 | PnL: -6.60 | TotPnL: -6.60 +1766993610181, 2025-12-29 08:33:30,181 - [IDLE] BNB | Px: 859.90 | M: 859.3 | B: 862.8 / S: 855.8 | delta: -1.0556(-0.0276) | Adj: +5.54%, Vol: 1.00, Thr: 0.1583 | PnL: 6.64 | TotPnL: 6.64 +1766993640396, 2025-12-29 08:34:00,396 - [IDLE] ETH | Px: 3018.85 | M: 3019.6 | B: 3033.8 / S: 3005.4 | delta: -0.2153(+0.0017) | Adj: -2.52%, Vol: 1.50, Thr: 0.0323 | PnL: -6.60 | TotPnL: -6.60 +1766993640399, 2025-12-29 08:34:00,399 - [IDLE] BNB | Px: 859.90 | M: 859.3 | B: 862.8 / S: 855.8 | delta: -1.0556(-0.0276) | Adj: +5.54%, Vol: 1.00, Thr: 0.1583 | PnL: 6.70 | TotPnL: 6.70 +1766993730678, 2025-12-29 08:35:30,678 - [IDLE] ETH | Px: 3018.35 | M: 3018.6 | B: 3032.8 / S: 3004.3 | delta: -0.2165(+0.0005) | Adj: -2.49%, Vol: 1.69, Thr: 0.0325 | PnL: -6.47 | TotPnL: -6.47 +1766993730680, 2025-12-29 08:35:30,680 - [IDLE] BNB | Px: 860.44 | M: 860.5 | B: 863.9 / S: 857.1 | delta: -1.0267(+0.0013) | Adj: +5.23%, Vol: 1.15, Thr: 0.1540 | PnL: 6.19 | TotPnL: 6.19 +1766993820178, 2025-12-29 08:37:00,178 - [IDLE] ETH | Px: 3019.45 | M: 3020.8 | B: 3034.9 / S: 3006.7 | delta: -0.2139(+0.0031) | Adj: -2.55%, Vol: 1.74, Thr: 0.0321 | PnL: -6.73 | TotPnL: -6.73 +1766993820181, 2025-12-29 08:37:00,181 - [IDLE] BNB | Px: 861.22 | M: 862.2 | B: 865.4 / S: 858.9 | delta: -0.9856(+0.0424) | Adj: +4.78%, Vol: 1.66, Thr: 0.1478 | PnL: 5.40 | TotPnL: 5.40 +1766993850479, 2025-12-29 08:37:30,479 - [IDLE] ETH | Px: 3018.65 | M: 3019.2 | B: 3033.4 / S: 3005.0 | delta: -0.2158(+0.0012) | Adj: -2.51%, Vol: 1.74, Thr: 0.0324 | PnL: -6.55 | TotPnL: -6.55 +1766993850482, 2025-12-29 08:37:30,482 - [IDLE] BNB | Px: 860.96 | M: 861.6 | B: 864.9 / S: 858.3 | delta: -0.9991(+0.0289) | Adj: +4.93%, Vol: 1.82, Thr: 0.1499 | PnL: 5.57 | TotPnL: 5.57 +1766993910407, 2025-12-29 08:38:30,407 - [IDLE] ETH | Px: 3018.85 | M: 3019.6 | B: 3033.8 / S: 3005.4 | delta: -0.2153(+0.0017) | Adj: -2.52%, Vol: 1.60, Thr: 0.0323 | PnL: -6.60 | TotPnL: -6.60 +1766993910410, 2025-12-29 08:38:30,410 - [IDLE] BNB | Px: 860.80 | M: 861.2 | B: 864.6 / S: 857.9 | delta: -1.0081(+0.0199) | Adj: +5.03%, Vol: 1.93, Thr: 0.1512 | PnL: 5.79 | TotPnL: 5.79 +1766993940294, 2025-12-29 08:39:00,294 - [IDLE] ETH | Px: 3018.35 | M: 3018.6 | B: 3032.8 / S: 3004.3 | delta: -0.2165(+0.0005) | Adj: -2.49%, Vol: 1.45, Thr: 0.0325 | PnL: -6.49 | TotPnL: -6.49 +1766993940297, 2025-12-29 08:39:00,297 - [IDLE] BNB | Px: 860.76 | M: 861.1 | B: 864.5 / S: 857.8 | delta: -1.0102(+0.0178) | Adj: +5.05%, Vol: 1.95, Thr: 0.1515 | PnL: 5.78 | TotPnL: 5.78 +1766994060459, 2025-12-29 08:41:00,459 - [IDLE] ETH | Px: 3016.95 | M: 3015.7 | B: 3030.2 / S: 3001.3 | delta: -0.2197(-0.0027) | Adj: -2.42%, Vol: 1.00, Thr: 0.0330 | PnL: -6.19 | TotPnL: -6.19 +1766994060462, 2025-12-29 08:41:00,462 - [IDLE] BNB | Px: 860.29 | M: 860.1 | B: 863.6 / S: 856.7 | delta: -1.0350(-0.0070) | Adj: +5.32%, Vol: 1.33, Thr: 0.1552 | PnL: 6.33 | TotPnL: 6.33 +1766994150022, 2025-12-29 08:42:30,022 - [IDLE] ETH | Px: 3016.55 | M: 3014.9 | B: 3029.4 / S: 3000.4 | delta: -0.2207(-0.0037) | Adj: -2.40%, Vol: 1.00, Thr: 0.0331 | PnL: -6.08 | TotPnL: -6.08 +1766994150025, 2025-12-29 08:42:30,025 - [IDLE] BNB | Px: 860.38 | M: 860.3 | B: 863.7 / S: 856.9 | delta: -1.0304(-0.0024) | Adj: +5.27%, Vol: 1.00, Thr: 0.1546 | PnL: 6.19 | TotPnL: 6.19 +1766994180406, 2025-12-29 08:43:00,406 - [IDLE] ETH | Px: 3016.55 | M: 3014.9 | B: 3029.4 / S: 3000.4 | delta: -0.2207(-0.0037) | Adj: -2.40%, Vol: 1.00, Thr: 0.0331 | PnL: -6.03 | TotPnL: -6.03 +1766994180409, 2025-12-29 08:43:00,409 - [IDLE] BNB | Px: 860.26 | M: 860.1 | B: 863.5 / S: 856.6 | delta: -1.0366(-0.0086) | Adj: +5.34%, Vol: 1.00, Thr: 0.1555 | PnL: 6.36 | TotPnL: 6.36 +1766994240815, 2025-12-29 08:44:00,815 - [IDLE] ETH | Px: 3015.95 | M: 3013.7 | B: 3028.3 / S: 2999.1 | delta: -0.2221(-0.0051) | Adj: -2.37%, Vol: 1.00, Thr: 0.0333 | PnL: -5.90 | TotPnL: -5.90 +1766994240818, 2025-12-29 08:44:00,818 - [IDLE] BNB | Px: 860.10 | M: 859.7 | B: 863.2 / S: 856.3 | delta: -1.0451(-0.0171) | Adj: +5.43%, Vol: 1.00, Thr: 0.1568 | PnL: 6.54 | TotPnL: 6.54 +1766994300293, 2025-12-29 08:45:00,293 - [IDLE] ETH | Px: 3015.15 | M: 3012.1 | B: 3026.8 / S: 2997.4 | delta: -0.2240(-0.0070) | Adj: -2.33%, Vol: 1.00, Thr: 0.0336 | PnL: -5.75 | TotPnL: -5.75 +1766994300296, 2025-12-29 08:45:00,296 - [IDLE] BNB | Px: 860.00 | M: 859.5 | B: 863.0 / S: 856.0 | delta: -1.0502(-0.0222) | Adj: +5.49%, Vol: 1.00, Thr: 0.1575 | PnL: 6.64 | TotPnL: 6.64 +1766994330386, 2025-12-29 08:45:30,386 - [IDLE] ETH | Px: 3014.95 | M: 3011.7 | B: 3026.4 / S: 2996.9 | delta: -0.2244(-0.0074) | Adj: -2.32%, Vol: 1.00, Thr: 0.0337 | PnL: -5.77 | TotPnL: -5.77 +1766994330388, 2025-12-29 08:45:30,388 - [IDLE] BNB | Px: 860.00 | M: 859.5 | B: 863.0 / S: 856.0 | delta: -1.0502(-0.0222) | Adj: +5.49%, Vol: 1.00, Thr: 0.1575 | PnL: 6.65 | TotPnL: 6.65 +1766994360157, 2025-12-29 08:46:00,157 - [IDLE] ETH | Px: 3014.95 | M: 3011.7 | B: 3026.4 / S: 2996.9 | delta: -0.2244(-0.0074) | Adj: -2.32%, Vol: 1.00, Thr: 0.0337 | PnL: -5.77 | TotPnL: -5.77 +1766994360159, 2025-12-29 08:46:00,159 - [IDLE] BNB | Px: 860.16 | M: 859.9 | B: 863.3 / S: 856.4 | delta: -1.0416(-0.0136) | Adj: +5.39%, Vol: 1.00, Thr: 0.1562 | PnL: 6.49 | TotPnL: 6.49 +1766994390964, 2025-12-29 08:46:30,964 - [IDLE] ETH | Px: 3015.05 | M: 3011.9 | B: 3026.6 / S: 2997.2 | delta: -0.2242(-0.0072) | Adj: -2.32%, Vol: 1.00, Thr: 0.0336 | PnL: -5.82 | TotPnL: -5.82 +1766994390966, 2025-12-29 08:46:30,966 - [IDLE] BNB | Px: 860.38 | M: 860.3 | B: 863.7 / S: 856.9 | delta: -1.0304(-0.0024) | Adj: +5.27%, Vol: 1.00, Thr: 0.1546 | PnL: 6.27 | TotPnL: 6.27 +1766994510617, 2025-12-29 08:48:30,617 - [IDLE] ETH | Px: 3017.05 | M: 3016.0 | B: 3030.4 / S: 3001.5 | delta: -0.2195(-0.0025) | Adj: -2.43%, Vol: 1.00, Thr: 0.0329 | PnL: -6.21 | TotPnL: -6.21 +1766994510620, 2025-12-29 08:48:30,620 - [IDLE] BNB | Px: 860.02 | M: 859.6 | B: 863.0 / S: 856.1 | delta: -1.0491(-0.0211) | Adj: +5.47%, Vol: 1.00, Thr: 0.1574 | PnL: 6.63 | TotPnL: 6.63 +1766994540892, 2025-12-29 08:49:00,892 - [IDLE] ETH | Px: 3017.05 | M: 3016.0 | B: 3030.4 / S: 3001.5 | delta: -0.2195(-0.0025) | Adj: -2.43%, Vol: 1.00, Thr: 0.0329 | PnL: -6.21 | TotPnL: -6.21 +1766994540895, 2025-12-29 08:49:00,895 - [IDLE] BNB | Px: 859.94 | M: 859.4 | B: 862.9 / S: 855.9 | delta: -1.0540(-0.0260) | Adj: +5.53%, Vol: 1.00, Thr: 0.1581 | PnL: 6.67 | TotPnL: 6.67 +1766994570035, 2025-12-29 08:49:30,035 - [IDLE] ETH | Px: 3017.85 | M: 3017.6 | B: 3031.9 / S: 3003.3 | delta: -0.2176(-0.0006) | Adj: -2.47%, Vol: 1.00, Thr: 0.0326 | PnL: -6.32 | TotPnL: -6.32 +1766994570037, 2025-12-29 08:49:30,037 - [IDLE] BNB | Px: 859.96 | M: 859.4 | B: 862.9 / S: 855.9 | delta: -1.0524(-0.0244) | Adj: +5.51%, Vol: 1.00, Thr: 0.1579 | PnL: 6.69 | TotPnL: 6.69 +1766994630865, 2025-12-29 08:50:30,865 - [IDLE] ETH | Px: 3019.45 | M: 3020.8 | B: 3034.9 / S: 3006.7 | delta: -0.2139(+0.0031) | Adj: -2.55%, Vol: 1.00, Thr: 0.0321 | PnL: -6.73 | TotPnL: -6.73 +1766994630868, 2025-12-29 08:50:30,868 - [IDLE] BNB | Px: 860.41 | M: 860.4 | B: 863.8 / S: 857.0 | delta: -1.0286(-0.0006) | Adj: +5.25%, Vol: 1.00, Thr: 0.1543 | PnL: 6.25 | TotPnL: 6.25 +1766994690131, 2025-12-29 08:51:30,131 - [IDLE] ETH | Px: 3019.35 | M: 3020.6 | B: 3034.7 / S: 3006.5 | delta: -0.2141(+0.0029) | Adj: -2.54%, Vol: 1.00, Thr: 0.0321 | PnL: -6.71 | TotPnL: -6.71 +1766994690133, 2025-12-29 08:51:30,133 - [IDLE] BNB | Px: 860.76 | M: 861.1 | B: 864.5 / S: 857.8 | delta: -1.0102(+0.0178) | Adj: +5.05%, Vol: 1.00, Thr: 0.1515 | PnL: 5.83 | TotPnL: 5.83 +1766994810521, 2025-12-29 08:53:30,521 - [IDLE] ETH | Px: 3018.35 | M: 3018.6 | B: 3032.8 / S: 3004.3 | delta: -0.2165(+0.0005) | Adj: -2.49%, Vol: 1.12, Thr: 0.0325 | PnL: -6.47 | TotPnL: -6.47 +1766994810524, 2025-12-29 08:53:30,524 - [IDLE] BNB | Px: 860.68 | M: 861.0 | B: 864.4 / S: 857.6 | delta: -1.0139(+0.0141) | Adj: +5.09%, Vol: 1.00, Thr: 0.1521 | PnL: 5.98 | TotPnL: 5.98 +1766994840536, 2025-12-29 08:54:00,536 - [IDLE] ETH | Px: 3018.95 | M: 3019.8 | B: 3034.0 / S: 3005.6 | delta: -0.2151(+0.0019) | Adj: -2.52%, Vol: 1.12, Thr: 0.0323 | PnL: -6.58 | TotPnL: -6.58 +1766994840539, 2025-12-29 08:54:00,539 - [IDLE] BNB | Px: 861.02 | M: 861.7 | B: 865.0 / S: 858.4 | delta: -0.9959(+0.0321) | Adj: +4.89%, Vol: 1.00, Thr: 0.1494 | PnL: 5.58 | TotPnL: 5.58 +1766994930068, 2025-12-29 08:55:30,068 - [IDLE] ETH | Px: 3019.45 | M: 3020.8 | B: 3034.9 / S: 3006.7 | delta: -0.2139(+0.0031) | Adj: -2.55%, Vol: 1.02, Thr: 0.0321 | PnL: -6.69 | TotPnL: -6.69 +1766994930071, 2025-12-29 08:55:30,071 - [IDLE] BNB | Px: 860.94 | M: 861.6 | B: 864.9 / S: 858.2 | delta: -1.0001(+0.0279) | Adj: +4.94%, Vol: 1.00, Thr: 0.1500 | PnL: 5.61 | TotPnL: 5.61 +1766995050477, 2025-12-29 08:57:30,477 - [IDLE] ETH | Px: 3018.15 | M: 3018.2 | B: 3032.5 / S: 3003.9 | delta: -0.2169(+0.0001) | Adj: -2.48%, Vol: 1.00, Thr: 0.0325 | PnL: -6.45 | TotPnL: -6.45 +1766995050480, 2025-12-29 08:57:30,480 - [IDLE] BNB | Px: 860.58 | M: 860.8 | B: 864.1 / S: 857.4 | delta: -1.0198(+0.0082) | Adj: +5.15%, Vol: 1.00, Thr: 0.1530 | PnL: 6.04 | TotPnL: 6.04 +1766995140979, 2025-12-29 08:59:00,979 - [IDLE] ETH | Px: 3018.15 | M: 3018.2 | B: 3032.5 / S: 3003.9 | delta: -0.2169(+0.0001) | Adj: -2.48%, Vol: 1.00, Thr: 0.0325 | PnL: -6.40 | TotPnL: -6.40 +1766995140982, 2025-12-29 08:59:00,982 - [IDLE] BNB | Px: 860.26 | M: 860.1 | B: 863.5 / S: 856.6 | delta: -1.0363(-0.0083) | Adj: +5.33%, Vol: 1.00, Thr: 0.1554 | PnL: 6.28 | TotPnL: 6.28 +1766995230629, 2025-12-29 09:00:30,629 - [IDLE] ETH | Px: 3018.85 | M: 3019.6 | B: 3033.8 / S: 3005.4 | delta: -0.2153(+0.0017) | Adj: -2.52%, Vol: 1.00, Thr: 0.0323 | PnL: -6.55 | TotPnL: -6.55 +1766995230632, 2025-12-29 09:00:30,632 - [IDLE] BNB | Px: 860.52 | M: 860.6 | B: 864.0 / S: 857.3 | delta: -1.0224(+0.0056) | Adj: +5.18%, Vol: 1.00, Thr: 0.1534 | PnL: 6.12 | TotPnL: 6.12 +1766995320013, 2025-12-29 09:02:00,013 - [IDLE] ETH | Px: 3017.15 | M: 3016.2 | B: 3030.6 / S: 3001.7 | delta: -0.2193(-0.0023) | Adj: -2.43%, Vol: 1.00, Thr: 0.0329 | PnL: -6.25 | TotPnL: -6.25 +1766995320015, 2025-12-29 09:02:00,015 - [IDLE] BNB | Px: 860.46 | M: 860.5 | B: 863.9 / S: 857.1 | delta: -1.0256(+0.0024) | Adj: +5.22%, Vol: 1.00, Thr: 0.1538 | PnL: 6.14 | TotPnL: 6.14 +1766995350344, 2025-12-29 09:02:30,344 - [IDLE] ETH | Px: 3017.85 | M: 3017.6 | B: 3031.9 / S: 3003.3 | delta: -0.2176(-0.0006) | Adj: -2.47%, Vol: 1.00, Thr: 0.0326 | PnL: -6.38 | TotPnL: -6.38 +1766995350346, 2025-12-29 09:02:30,346 - [IDLE] BNB | Px: 860.80 | M: 861.2 | B: 864.6 / S: 857.9 | delta: -1.0081(+0.0199) | Adj: +5.03%, Vol: 1.00, Thr: 0.1512 | PnL: 5.88 | TotPnL: 5.88 +1766995380454, 2025-12-29 09:03:00,454 - [IDLE] ETH | Px: 3017.65 | M: 3017.2 | B: 3031.5 / S: 3002.8 | delta: -0.2181(-0.0011) | Adj: -2.46%, Vol: 1.00, Thr: 0.0327 | PnL: -6.32 | TotPnL: -6.32 +1766995380456, 2025-12-29 09:03:00,456 - [IDLE] BNB | Px: 860.70 | M: 861.0 | B: 864.4 / S: 857.7 | delta: -1.0131(+0.0149) | Adj: +5.08%, Vol: 1.00, Thr: 0.1520 | PnL: 5.93 | TotPnL: 5.93 +1766995410053, 2025-12-29 09:03:30,053 - [IDLE] ETH | Px: 3016.65 | M: 3015.1 | B: 3029.6 / S: 3000.6 | delta: -0.2204(-0.0034) | Adj: -2.40%, Vol: 1.00, Thr: 0.0331 | PnL: -6.14 | TotPnL: -6.14 +1766995410055, 2025-12-29 09:03:30,055 - [IDLE] BNB | Px: 860.74 | M: 861.1 | B: 864.5 / S: 857.8 | delta: -1.0113(+0.0167) | Adj: +5.06%, Vol: 1.00, Thr: 0.1517 | PnL: 5.90 | TotPnL: 5.90 +1766995620386, 2025-12-29 09:07:00,386 - [IDLE] ETH | Px: 3012.65 | M: 3007.0 | B: 3022.1 / S: 2991.9 | delta: -0.2298(-0.0128) | Adj: -2.20%, Vol: 1.68, Thr: 0.0345 | PnL: -5.30 | TotPnL: -5.30 +1766995620388, 2025-12-29 09:07:00,388 - [IDLE] BNB | Px: 860.58 | M: 860.8 | B: 864.2 / S: 857.4 | delta: -1.0192(+0.0088) | Adj: +5.15%, Vol: 1.00, Thr: 0.1529 | PnL: 6.04 | TotPnL: 6.04 +1766995650848, 2025-12-29 09:07:30,848 - [IDLE] ETH | Px: 3012.75 | M: 3007.2 | B: 3022.3 / S: 2992.2 | delta: -0.2296(-0.0126) | Adj: -2.20%, Vol: 1.72, Thr: 0.0344 | PnL: -5.27 | TotPnL: -5.27 +1766995650850, 2025-12-29 09:07:30,850 - [IDLE] BNB | Px: 860.58 | M: 860.8 | B: 864.2 / S: 857.4 | delta: -1.0192(+0.0088) | Adj: +5.15%, Vol: 1.00, Thr: 0.1529 | PnL: 6.05 | TotPnL: 6.05 +1766995710887, 2025-12-29 09:08:30,887 - [IDLE] ETH | Px: 3014.15 | M: 3010.1 | B: 3024.9 / S: 2995.2 | delta: -0.2263(-0.0093) | Adj: -2.28%, Vol: 1.67, Thr: 0.0339 | PnL: -5.69 | TotPnL: -5.69 +1766995710890, 2025-12-29 09:08:30,890 - [IDLE] BNB | Px: 860.68 | M: 861.0 | B: 864.4 / S: 857.6 | delta: -1.0139(+0.0141) | Adj: +5.09%, Vol: 1.00, Thr: 0.1521 | PnL: 5.88 | TotPnL: 5.88 +1766995770299, 2025-12-29 09:09:30,299 - [IDLE] ETH | Px: 3014.45 | M: 3010.7 | B: 3025.5 / S: 2995.9 | delta: -0.2256(-0.0086) | Adj: -2.29%, Vol: 1.54, Thr: 0.0338 | PnL: -5.64 | TotPnL: -5.64 +1766995770300, 2025-12-29 09:09:30,300 - [IDLE] BNB | Px: 860.89 | M: 861.4 | B: 864.8 / S: 858.1 | delta: -1.0030(+0.0250) | Adj: +4.97%, Vol: 1.00, Thr: 0.1505 | PnL: 5.68 | TotPnL: 5.68 +1766995800729, 2025-12-29 09:10:00,729 - [IDLE] ETH | Px: 3013.75 | M: 3009.3 | B: 3024.2 / S: 2994.3 | delta: -0.2273(-0.0103) | Adj: -2.26%, Vol: 1.48, Thr: 0.0341 | PnL: -5.47 | TotPnL: -5.47 +1766995800731, 2025-12-29 09:10:00,731 - [IDLE] BNB | Px: 860.82 | M: 861.3 | B: 864.6 / S: 858.0 | delta: -1.0067(+0.0213) | Adj: +5.01%, Vol: 1.00, Thr: 0.1510 | PnL: 5.83 | TotPnL: 5.83 +1766995830973, 2025-12-29 09:10:30,973 - [IDLE] ETH | Px: 3018.65 | M: 3019.2 | B: 3033.4 / S: 3005.0 | delta: -0.2158(+0.0012) | Adj: -2.51%, Vol: 1.42, Thr: 0.0324 | PnL: -6.42 | TotPnL: -6.42 +1766995830974, 2025-12-29 09:10:30,974 - [IDLE] BNB | Px: 861.12 | M: 862.0 | B: 865.2 / S: 858.7 | delta: -0.9906(+0.0374) | Adj: +4.83%, Vol: 1.00, Thr: 0.1486 | PnL: 5.47 | TotPnL: 5.47 +1766995950242, 2025-12-29 09:12:30,242 - [IDLE] ETH | Px: 3019.75 | M: 3021.4 | B: 3035.5 / S: 3007.4 | delta: -0.2132(+0.0038) | Adj: -2.56%, Vol: 1.86, Thr: 0.0320 | PnL: -6.79 | TotPnL: -6.79 +1766995950245, 2025-12-29 09:12:30,245 - [IDLE] BNB | Px: 860.16 | M: 859.8 | B: 863.3 / S: 856.4 | delta: -1.0422(-0.0142) | Adj: +5.40%, Vol: 1.00, Thr: 0.1563 | PnL: 6.49 | TotPnL: 6.49 +1766995980079, 2025-12-29 09:13:00,079 - [IDLE] ETH | Px: 3019.75 | M: 3021.4 | B: 3035.5 / S: 3007.4 | delta: -0.2132(+0.0038) | Adj: -2.56%, Vol: 1.95, Thr: 0.0320 | PnL: -6.79 | TotPnL: -6.79 +1766995980080, 2025-12-29 09:13:00,080 - [IDLE] BNB | Px: 860.04 | M: 859.6 | B: 863.1 / S: 856.1 | delta: -1.0486(-0.0206) | Adj: +5.47%, Vol: 1.00, Thr: 0.1573 | PnL: 6.60 | TotPnL: 6.60 +1766996070110, 2025-12-29 09:14:30,110 - [IDLE] ETH | Px: 3020.15 | M: 3022.2 | B: 3036.2 / S: 3008.2 | delta: -0.2123(+0.0047) | Adj: -2.59%, Vol: 2.20, Thr: 0.0318 | PnL: -6.88 | TotPnL: -6.88 +1766996070112, 2025-12-29 09:14:30,112 - [IDLE] BNB | Px: 860.10 | M: 859.7 | B: 863.2 / S: 856.2 | delta: -1.0454(-0.0174) | Adj: +5.43%, Vol: 1.00, Thr: 0.1568 | PnL: 6.57 | TotPnL: 6.57 +1766996100944, 2025-12-29 09:15:00,944 - [IDLE] ETH | Px: 3020.65 | M: 3023.2 | B: 3037.2 / S: 3009.3 | delta: -0.2111(+0.0059) | Adj: -2.61%, Vol: 2.22, Thr: 0.0317 | PnL: -6.99 | TotPnL: -6.99 +1766996100946, 2025-12-29 09:15:00,946 - [IDLE] BNB | Px: 860.23 | M: 860.0 | B: 863.4 / S: 856.6 | delta: -1.0382(-0.0102) | Adj: +5.36%, Vol: 1.00, Thr: 0.1557 | PnL: 6.46 | TotPnL: 6.46 +1766996130074, 2025-12-29 09:15:30,074 - [IDLE] ETH | Px: 3020.25 | M: 3022.4 | B: 3036.4 / S: 3008.5 | delta: -0.2120(+0.0050) | Adj: -2.59%, Vol: 2.22, Thr: 0.0318 | PnL: -6.90 | TotPnL: -6.90 +1766996130076, 2025-12-29 09:15:30,076 - [IDLE] BNB | Px: 859.84 | M: 859.2 | B: 862.7 / S: 855.7 | delta: -1.0588(-0.0308) | Adj: +5.58%, Vol: 1.00, Thr: 0.1588 | PnL: 6.80 | TotPnL: 6.80 +1766996160340, 2025-12-29 09:16:00,340 - [IDLE] ETH | Px: 3020.25 | M: 3022.4 | B: 3036.4 / S: 3008.5 | delta: -0.2120(+0.0050) | Adj: -2.59%, Vol: 2.10, Thr: 0.0318 | PnL: -6.90 | TotPnL: -6.90 +1766996160341, 2025-12-29 09:16:00,341 - [IDLE] BNB | Px: 859.64 | M: 858.7 | B: 862.3 / S: 855.2 | delta: -1.0695(-0.0415) | Adj: +5.70%, Vol: 1.06, Thr: 0.1604 | PnL: 7.00 | TotPnL: 7.00 +1766996190769, 2025-12-29 09:16:30,769 - [IDLE] ETH | Px: 3019.95 | M: 3021.8 | B: 3035.8 / S: 3007.8 | delta: -0.2127(+0.0043) | Adj: -2.57%, Vol: 1.94, Thr: 0.0319 | PnL: -6.86 | TotPnL: -6.86 +1766996190770, 2025-12-29 09:16:30,770 - [IDLE] BNB | Px: 859.60 | M: 858.6 | B: 862.2 / S: 855.1 | delta: -1.0717(-0.0437) | Adj: +5.72%, Vol: 1.16, Thr: 0.1608 | PnL: 7.05 | TotPnL: 7.05 +1766996220920, 2025-12-29 09:17:00,920 - [IDLE] ETH | Px: 3020.25 | M: 3022.4 | B: 3036.4 / S: 3008.5 | delta: -0.2120(+0.0050) | Adj: -2.59%, Vol: 1.79, Thr: 0.0318 | PnL: -6.90 | TotPnL: -6.90 +1766996220922, 2025-12-29 09:17:00,922 - [IDLE] BNB | Px: 859.64 | M: 858.7 | B: 862.3 / S: 855.2 | delta: -1.0695(-0.0415) | Adj: +5.70%, Vol: 1.25, Thr: 0.1604 | PnL: 7.01 | TotPnL: 7.01 +1766996310636, 2025-12-29 09:18:30,636 - [IDLE] ETH | Px: 3020.65 | M: 3023.2 | B: 3037.2 / S: 3009.3 | delta: -0.2111(+0.0059) | Adj: -2.61%, Vol: 1.37, Thr: 0.0317 | PnL: -6.90 | TotPnL: -6.90 +1766996310638, 2025-12-29 09:18:30,638 - [IDLE] BNB | Px: 859.10 | M: 857.5 | B: 861.2 / S: 853.9 | delta: -1.0992(-0.0712) | Adj: +6.02%, Vol: 1.38, Thr: 0.1649 | PnL: 7.67 | TotPnL: 7.67 +1766996340488, 2025-12-29 09:19:00,488 - [IDLE] ETH | Px: 3020.95 | M: 3023.8 | B: 3037.7 / S: 3010.0 | delta: -0.2104(+0.0066) | Adj: -2.63%, Vol: 1.19, Thr: 0.0316 | PnL: -7.05 | TotPnL: -7.05 +1766996340490, 2025-12-29 09:19:00,490 - [IDLE] BNB | Px: 859.16 | M: 857.7 | B: 861.3 / S: 854.0 | delta: -1.0960(-0.0680) | Adj: +5.98%, Vol: 1.46, Thr: 0.1644 | PnL: 7.62 | TotPnL: 7.62 +1766996370562, 2025-12-29 09:19:30,562 - [IDLE] ETH | Px: 3021.45 | M: 3024.9 | B: 3038.7 / S: 3011.1 | delta: -0.2092(+0.0078) | Adj: -2.65%, Vol: 1.00, Thr: 0.0314 | PnL: -7.16 | TotPnL: -7.16 +1766996370564, 2025-12-29 09:19:30,564 - [IDLE] BNB | Px: 859.68 | M: 858.8 | B: 862.3 / S: 855.3 | delta: -1.0679(-0.0399) | Adj: +5.68%, Vol: 1.47, Thr: 0.1602 | PnL: 7.01 | TotPnL: 7.01 +1766996400592, 2025-12-29 09:20:00,592 - [IDLE] ETH | Px: 3020.95 | M: 3023.8 | B: 3037.7 / S: 3010.0 | delta: -0.2104(+0.0066) | Adj: -2.63%, Vol: 1.00, Thr: 0.0316 | PnL: -7.16 | TotPnL: -7.16 +1766996400594, 2025-12-29 09:20:00,594 - [IDLE] BNB | Px: 859.59 | M: 858.6 | B: 862.2 / S: 855.1 | delta: -1.0725(-0.0445) | Adj: +5.73%, Vol: 1.42, Thr: 0.1609 | PnL: 7.04 | TotPnL: 7.04 +1766996430133, 2025-12-29 09:20:30,133 - [IDLE] ETH | Px: 3020.75 | M: 3023.4 | B: 3037.3 / S: 3009.5 | delta: -0.2109(+0.0061) | Adj: -2.62%, Vol: 1.00, Thr: 0.0316 | PnL: -7.01 | TotPnL: -7.01 +1766996430134, 2025-12-29 09:20:30,134 - [IDLE] BNB | Px: 859.48 | M: 858.4 | B: 861.9 / S: 854.8 | delta: -1.0784(-0.0504) | Adj: +5.79%, Vol: 1.28, Thr: 0.1618 | PnL: 7.11 | TotPnL: 7.11 +1766996640487, 2025-12-29 09:24:00,487 - [IDLE] ETH | Px: 3023.25 | M: 3028.5 | B: 3042.0 / S: 3015.0 | delta: -0.2051(+0.0119) | Adj: -2.74%, Vol: 1.00, Thr: 0.0308 | PnL: -7.53 | TotPnL: -7.53 +1766996640488, 2025-12-29 09:24:00,488 - [IDLE] BNB | Px: 859.46 | M: 858.3 | B: 861.9 / S: 854.8 | delta: -1.0792(-0.0512) | Adj: +5.80%, Vol: 1.00, Thr: 0.1619 | PnL: 7.32 | TotPnL: 7.32 +1766996700034, 2025-12-29 09:25:00,034 - [IDLE] ETH | Px: 3022.85 | M: 3027.7 | B: 3041.3 / S: 3014.1 | delta: -0.2060(+0.0110) | Adj: -2.72%, Vol: 1.00, Thr: 0.0309 | PnL: -7.42 | TotPnL: -7.42 +1766996700037, 2025-12-29 09:25:00,037 - [IDLE] BNB | Px: 859.68 | M: 858.8 | B: 862.3 / S: 855.3 | delta: -1.0679(-0.0399) | Adj: +5.68%, Vol: 1.00, Thr: 0.1602 | PnL: 7.06 | TotPnL: 7.06 +1766996760224, 2025-12-29 09:26:00,224 - [IDLE] ETH | Px: 3023.15 | M: 3028.3 | B: 3041.8 / S: 3014.8 | delta: -0.2053(+0.0117) | Adj: -2.74%, Vol: 1.00, Thr: 0.0308 | PnL: -7.53 | TotPnL: -7.53 +1766996760226, 2025-12-29 09:26:00,226 - [IDLE] BNB | Px: 860.21 | M: 860.0 | B: 863.4 / S: 856.5 | delta: -1.0392(-0.0112) | Adj: +5.37%, Vol: 1.00, Thr: 0.1559 | PnL: 6.46 | TotPnL: 6.46 +1766996820255, 2025-12-29 09:27:00,255 - [IDLE] ETH | Px: 3023.35 | M: 3028.7 | B: 3042.2 / S: 3015.2 | delta: -0.2048(+0.0122) | Adj: -2.75%, Vol: 1.00, Thr: 0.0307 | PnL: -7.53 | TotPnL: -7.53 +1766996820258, 2025-12-29 09:27:00,258 - [IDLE] BNB | Px: 860.16 | M: 859.8 | B: 863.3 / S: 856.4 | delta: -1.0422(-0.0142) | Adj: +5.40%, Vol: 1.00, Thr: 0.1563 | PnL: 6.49 | TotPnL: 6.49 +1766996880676, 2025-12-29 09:28:00,676 - [IDLE] ETH | Px: 3021.75 | M: 3025.5 | B: 3039.2 / S: 3011.7 | delta: -0.2085(+0.0085) | Adj: -2.67%, Vol: 1.00, Thr: 0.0313 | PnL: -7.25 | TotPnL: -7.25 +1766996880678, 2025-12-29 09:28:00,678 - [IDLE] BNB | Px: 859.72 | M: 858.9 | B: 862.4 / S: 855.4 | delta: -1.0652(-0.0372) | Adj: +5.65%, Vol: 1.00, Thr: 0.1598 | PnL: 7.03 | TotPnL: 7.03 +1766996970374, 2025-12-29 09:29:30,374 - [IDLE] ETH | Px: 3021.65 | M: 3025.3 | B: 3039.0 / S: 3011.5 | delta: -0.2088(+0.0082) | Adj: -2.66%, Vol: 1.00, Thr: 0.0313 | PnL: -7.21 | TotPnL: -7.21 +1766996970377, 2025-12-29 09:29:30,377 - [IDLE] BNB | Px: 859.76 | M: 859.0 | B: 862.5 / S: 855.5 | delta: -1.0631(-0.0351) | Adj: +5.63%, Vol: 1.00, Thr: 0.1595 | PnL: 6.97 | TotPnL: 6.97 +1766997000939, 2025-12-29 09:30:00,939 - [IDLE] ETH | Px: 3021.65 | M: 3025.3 | B: 3039.0 / S: 3011.5 | delta: -0.2088(+0.0082) | Adj: -2.66%, Vol: 1.00, Thr: 0.0313 | PnL: -7.21 | TotPnL: -7.21 +1766997000941, 2025-12-29 09:30:00,941 - [IDLE] BNB | Px: 859.76 | M: 859.0 | B: 862.5 / S: 855.5 | delta: -1.0631(-0.0351) | Adj: +5.63%, Vol: 1.00, Thr: 0.1595 | PnL: 6.96 | TotPnL: 6.96 +1766997030689, 2025-12-29 09:30:30,689 - [IDLE] ETH | Px: 3020.95 | M: 3023.8 | B: 3037.7 / S: 3010.0 | delta: -0.2104(+0.0066) | Adj: -2.63%, Vol: 1.00, Thr: 0.0316 | PnL: -7.01 | TotPnL: -7.01 +1766997030691, 2025-12-29 09:30:30,691 - [IDLE] BNB | Px: 859.70 | M: 858.9 | B: 862.4 / S: 855.3 | delta: -1.0663(-0.0383) | Adj: +5.66%, Vol: 1.00, Thr: 0.1599 | PnL: 6.95 | TotPnL: 6.95 +1766997060839, 2025-12-29 09:31:00,839 - [IDLE] ETH | Px: 3021.15 | M: 3024.3 | B: 3038.1 / S: 3010.4 | delta: -0.2099(+0.0071) | Adj: -2.64%, Vol: 1.00, Thr: 0.0315 | PnL: -7.10 | TotPnL: -7.10 +1766997060841, 2025-12-29 09:31:00,841 - [IDLE] BNB | Px: 859.88 | M: 859.2 | B: 862.7 / S: 855.7 | delta: -1.0572(-0.0292) | Adj: +5.56%, Vol: 1.00, Thr: 0.1586 | PnL: 6.79 | TotPnL: 6.79 +1766997150142, 2025-12-29 09:32:30,142 - [IDLE] ETH | Px: 3022.45 | M: 3026.9 | B: 3040.5 / S: 3013.2 | delta: -0.2069(+0.0101) | Adj: -2.70%, Vol: 1.00, Thr: 0.0310 | PnL: -7.36 | TotPnL: -7.36 +1766997150144, 2025-12-29 09:32:30,144 - [IDLE] BNB | Px: 860.04 | M: 859.6 | B: 863.1 / S: 856.1 | delta: -1.0486(-0.0206) | Adj: +5.47%, Vol: 1.00, Thr: 0.1573 | PnL: 6.63 | TotPnL: 6.63 +1766997240700, 2025-12-29 09:34:00,700 - [IDLE] ETH | Px: 3020.65 | M: 3023.2 | B: 3037.2 / S: 3009.3 | delta: -0.2111(+0.0059) | Adj: -2.61%, Vol: 1.00, Thr: 0.0317 | PnL: -6.92 | TotPnL: -6.92 +1766997240701, 2025-12-29 09:34:00,701 - [IDLE] BNB | Px: 859.84 | M: 859.1 | B: 862.7 / S: 855.6 | delta: -1.0593(-0.0313) | Adj: +5.59%, Vol: 1.00, Thr: 0.1589 | PnL: 6.84 | TotPnL: 6.84 +1766997330343, 2025-12-29 09:35:30,343 - [IDLE] ETH | Px: 3021.65 | M: 3025.3 | B: 3039.0 / S: 3011.5 | delta: -0.2088(+0.0082) | Adj: -2.66%, Vol: 1.00, Thr: 0.0313 | PnL: -7.16 | TotPnL: -7.16 +1766997330345, 2025-12-29 09:35:30,345 - [IDLE] BNB | Px: 860.02 | M: 859.6 | B: 863.0 / S: 856.1 | delta: -1.0491(-0.0211) | Adj: +5.47%, Vol: 1.00, Thr: 0.1574 | PnL: 6.64 | TotPnL: 6.64 +1766997360144, 2025-12-29 09:36:00,144 - [IDLE] ETH | Px: 3021.25 | M: 3024.5 | B: 3038.3 / S: 3010.6 | delta: -0.2097(+0.0073) | Adj: -2.64%, Vol: 1.00, Thr: 0.0315 | PnL: -7.10 | TotPnL: -7.10 +1766997360145, 2025-12-29 09:36:00,145 - [IDLE] BNB | Px: 860.02 | M: 859.6 | B: 863.0 / S: 856.1 | delta: -1.0491(-0.0211) | Adj: +5.47%, Vol: 1.00, Thr: 0.1574 | PnL: 6.65 | TotPnL: 6.65 +1766997390410, 2025-12-29 09:36:30,410 - [IDLE] ETH | Px: 3021.55 | M: 3025.1 | B: 3038.8 / S: 3011.3 | delta: -0.2090(+0.0080) | Adj: -2.66%, Vol: 1.00, Thr: 0.0314 | PnL: -7.16 | TotPnL: -7.16 +1766997390413, 2025-12-29 09:36:30,413 - [IDLE] BNB | Px: 860.02 | M: 859.6 | B: 863.0 / S: 856.1 | delta: -1.0491(-0.0211) | Adj: +5.47%, Vol: 1.00, Thr: 0.1574 | PnL: 6.64 | TotPnL: 6.64 +1766997420169, 2025-12-29 09:37:00,169 - [IDLE] ETH | Px: 3020.25 | M: 3022.4 | B: 3036.4 / S: 3008.5 | delta: -0.2120(+0.0050) | Adj: -2.59%, Vol: 1.00, Thr: 0.0318 | PnL: -6.86 | TotPnL: -6.86 +1766997420171, 2025-12-29 09:37:00,171 - [IDLE] BNB | Px: 860.02 | M: 859.6 | B: 863.0 / S: 856.1 | delta: -1.0491(-0.0211) | Adj: +5.47%, Vol: 1.00, Thr: 0.1574 | PnL: 6.63 | TotPnL: 6.63 +1766997450016, 2025-12-29 09:37:30,016 - [IDLE] ETH | Px: 3018.75 | M: 3019.4 | B: 3033.6 / S: 3005.2 | delta: -0.2155(+0.0015) | Adj: -2.51%, Vol: 1.00, Thr: 0.0323 | PnL: -6.55 | TotPnL: -6.55 +1766997450019, 2025-12-29 09:37:30,019 - [IDLE] BNB | Px: 859.82 | M: 859.1 | B: 862.6 / S: 855.6 | delta: -1.0599(-0.0319) | Adj: +5.59%, Vol: 1.00, Thr: 0.1590 | PnL: 6.89 | TotPnL: 6.89 +1766997480749, 2025-12-29 09:38:00,749 - [IDLE] ETH | Px: 3018.35 | M: 3018.6 | B: 3032.8 / S: 3004.3 | delta: -0.2165(+0.0005) | Adj: -2.49%, Vol: 1.00, Thr: 0.0325 | PnL: -6.47 | TotPnL: -6.47 +1766997480752, 2025-12-29 09:38:00,752 - [IDLE] BNB | Px: 859.82 | M: 859.1 | B: 862.6 / S: 855.6 | delta: -1.0599(-0.0319) | Adj: +5.59%, Vol: 1.00, Thr: 0.1590 | PnL: 6.88 | TotPnL: 6.88 +1766997510812, 2025-12-29 09:38:30,812 - [IDLE] ETH | Px: 3017.85 | M: 3017.6 | B: 3031.9 / S: 3003.3 | delta: -0.2176(-0.0006) | Adj: -2.47%, Vol: 1.00, Thr: 0.0326 | PnL: -6.36 | TotPnL: -6.36 +1766997510814, 2025-12-29 09:38:30,814 - [IDLE] BNB | Px: 859.82 | M: 859.1 | B: 862.6 / S: 855.6 | delta: -1.0599(-0.0319) | Adj: +5.59%, Vol: 1.00, Thr: 0.1590 | PnL: 6.86 | TotPnL: 6.86 +1766997570733, 2025-12-29 09:39:30,733 - [IDLE] ETH | Px: 3015.05 | M: 3011.9 | B: 3026.6 / S: 2997.2 | delta: -0.2242(-0.0072) | Adj: -2.32%, Vol: 1.11, Thr: 0.0336 | PnL: -5.75 | TotPnL: -5.75 +1766997570735, 2025-12-29 09:39:30,735 - [IDLE] BNB | Px: 859.02 | M: 857.3 | B: 861.0 / S: 853.7 | delta: -1.1036(-0.0756) | Adj: +6.06%, Vol: 1.00, Thr: 0.1655 | PnL: 7.66 | TotPnL: 7.66 +1766997810733, 2025-12-29 09:43:30,733 - [IDLE] ETH | Px: 3017.65 | M: 3017.2 | B: 3031.5 / S: 3002.8 | delta: -0.2181(-0.0011) | Adj: -2.46%, Vol: 1.26, Thr: 0.0327 | PnL: -6.29 | TotPnL: -6.29 +1766997810735, 2025-12-29 09:43:30,735 - [IDLE] BNB | Px: 859.44 | M: 858.3 | B: 861.8 / S: 854.7 | delta: -1.0809(-0.0529) | Adj: +5.82%, Vol: 1.00, Thr: 0.1621 | PnL: 7.26 | TotPnL: 7.26 +1766997870398, 2025-12-29 09:44:30,398 - [IDLE] ETH | Px: 3017.85 | M: 3017.6 | B: 3031.9 / S: 3003.3 | delta: -0.2176(-0.0006) | Adj: -2.47%, Vol: 1.20, Thr: 0.0326 | PnL: -6.40 | TotPnL: -6.40 +1766997870401, 2025-12-29 09:44:30,401 - [IDLE] BNB | Px: 859.44 | M: 858.3 | B: 861.8 / S: 854.7 | delta: -1.0809(-0.0529) | Adj: +5.82%, Vol: 1.00, Thr: 0.1621 | PnL: 7.22 | TotPnL: 7.22 +1766997930460, 2025-12-29 09:45:30,460 - [IDLE] ETH | Px: 3017.45 | M: 3016.8 | B: 3031.1 / S: 3002.4 | delta: -0.2186(-0.0016) | Adj: -2.45%, Vol: 1.00, Thr: 0.0328 | PnL: -6.29 | TotPnL: -6.29 +1766997930462, 2025-12-29 09:45:30,462 - [IDLE] BNB | Px: 859.84 | M: 859.2 | B: 862.7 / S: 855.7 | delta: -1.0588(-0.0308) | Adj: +5.58%, Vol: 1.00, Thr: 0.1588 | PnL: 6.80 | TotPnL: 6.80 +1766997960749, 2025-12-29 09:46:00,749 - [IDLE] ETH | Px: 3017.35 | M: 3016.6 | B: 3031.0 / S: 3002.2 | delta: -0.2188(-0.0018) | Adj: -2.44%, Vol: 1.00, Thr: 0.0328 | PnL: -6.27 | TotPnL: -6.27 +1766997960751, 2025-12-29 09:46:00,751 - [IDLE] BNB | Px: 859.90 | M: 859.3 | B: 862.8 / S: 855.8 | delta: -1.0558(-0.0278) | Adj: +5.55%, Vol: 1.00, Thr: 0.1584 | PnL: 6.72 | TotPnL: 6.72 +1766997990732, 2025-12-29 09:46:30,732 - [IDLE] ETH | Px: 3016.35 | M: 3014.5 | B: 3029.1 / S: 3000.0 | delta: -0.2211(-0.0041) | Adj: -2.39%, Vol: 1.00, Thr: 0.0332 | PnL: -6.03 | TotPnL: -6.03 +1766997990734, 2025-12-29 09:46:30,734 - [IDLE] BNB | Px: 859.70 | M: 858.9 | B: 862.4 / S: 855.3 | delta: -1.0663(-0.0383) | Adj: +5.66%, Vol: 1.00, Thr: 0.1599 | PnL: 6.95 | TotPnL: 6.95 +1766998020261, 2025-12-29 09:47:00,261 - [IDLE] ETH | Px: 3016.65 | M: 3015.1 | B: 3029.6 / S: 3000.6 | delta: -0.2204(-0.0034) | Adj: -2.40%, Vol: 1.00, Thr: 0.0331 | PnL: -6.12 | TotPnL: -6.12 +1766998020263, 2025-12-29 09:47:00,263 - [IDLE] BNB | Px: 859.60 | M: 858.6 | B: 862.2 / S: 855.1 | delta: -1.0717(-0.0437) | Adj: +5.72%, Vol: 1.00, Thr: 0.1608 | PnL: 6.99 | TotPnL: 6.99 +1766998080698, 2025-12-29 09:48:00,698 - [IDLE] ETH | Px: 3016.85 | M: 3015.5 | B: 3030.0 / S: 3001.1 | delta: -0.2200(-0.0030) | Adj: -2.42%, Vol: 1.00, Thr: 0.0330 | PnL: -6.19 | TotPnL: -6.19 +1766998080699, 2025-12-29 09:48:00,699 - [IDLE] BNB | Px: 859.68 | M: 858.8 | B: 862.3 / S: 855.3 | delta: -1.0674(-0.0394) | Adj: +5.67%, Vol: 1.00, Thr: 0.1601 | PnL: 6.97 | TotPnL: 6.97 +1766998110936, 2025-12-29 09:48:30,936 - [IDLE] ETH | Px: 3017.15 | M: 3016.2 | B: 3030.6 / S: 3001.7 | delta: -0.2193(-0.0023) | Adj: -2.43%, Vol: 1.00, Thr: 0.0329 | PnL: -6.23 | TotPnL: -6.23 +1766998110938, 2025-12-29 09:48:30,938 - [IDLE] BNB | Px: 859.92 | M: 859.3 | B: 862.8 / S: 855.8 | delta: -1.0550(-0.0270) | Adj: +5.54%, Vol: 1.00, Thr: 0.1583 | PnL: 6.66 | TotPnL: 6.66 +1766998200510, 2025-12-29 09:50:00,510 - [IDLE] ETH | Px: 3018.55 | M: 3019.0 | B: 3033.2 / S: 3004.8 | delta: -0.2160(+0.0010) | Adj: -2.50%, Vol: 1.00, Thr: 0.0324 | PnL: -6.45 | TotPnL: -6.45 +1766998200512, 2025-12-29 09:50:00,512 - [IDLE] BNB | Px: 860.27 | M: 860.1 | B: 863.5 / S: 856.7 | delta: -1.0360(-0.0080) | Adj: +5.33%, Vol: 1.00, Thr: 0.1554 | PnL: 6.39 | TotPnL: 6.39 +1766998230211, 2025-12-29 09:50:30,211 - [IDLE] ETH | Px: 3017.95 | M: 3017.8 | B: 3032.1 / S: 3003.5 | delta: -0.2174(-0.0004) | Adj: -2.47%, Vol: 1.00, Thr: 0.0326 | PnL: -6.40 | TotPnL: -6.40 +1766998230212, 2025-12-29 09:50:30,212 - [IDLE] BNB | Px: 860.10 | M: 859.7 | B: 863.2 / S: 856.3 | delta: -1.0449(-0.0169) | Adj: +5.43%, Vol: 1.00, Thr: 0.1567 | PnL: 6.53 | TotPnL: 6.53 +1766998260457, 2025-12-29 09:51:00,457 - [IDLE] ETH | Px: 3016.65 | M: 3015.1 | B: 3029.6 / S: 3000.6 | delta: -0.2204(-0.0034) | Adj: -2.40%, Vol: 1.00, Thr: 0.0331 | PnL: -6.12 | TotPnL: -6.12 +1766998260459, 2025-12-29 09:51:00,459 - [IDLE] BNB | Px: 859.94 | M: 859.4 | B: 862.9 / S: 855.9 | delta: -1.0534(-0.0254) | Adj: +5.52%, Vol: 1.00, Thr: 0.1580 | PnL: 6.79 | TotPnL: 6.79 +1766998290182, 2025-12-29 09:51:30,182 - [IDLE] ETH | Px: 3015.65 | M: 3013.1 | B: 3027.8 / S: 2998.5 | delta: -0.2228(-0.0058) | Adj: -2.35%, Vol: 1.00, Thr: 0.0334 | PnL: -5.90 | TotPnL: -5.90 +1766998290183, 2025-12-29 09:51:30,183 - [IDLE] BNB | Px: 859.72 | M: 858.9 | B: 862.4 / S: 855.4 | delta: -1.0652(-0.0372) | Adj: +5.65%, Vol: 1.00, Thr: 0.1598 | PnL: 6.99 | TotPnL: 6.99 +1766998320319, 2025-12-29 09:52:00,319 - [IDLE] ETH | Px: 3015.25 | M: 3012.3 | B: 3027.0 / S: 2997.6 | delta: -0.2237(-0.0067) | Adj: -2.33%, Vol: 1.00, Thr: 0.0336 | PnL: -5.88 | TotPnL: -5.88 +1766998320322, 2025-12-29 09:52:00,322 - [IDLE] BNB | Px: 859.61 | M: 858.7 | B: 862.2 / S: 855.1 | delta: -1.0714(-0.0434) | Adj: +5.72%, Vol: 1.00, Thr: 0.1607 | PnL: 7.01 | TotPnL: 7.01 +1766998350138, 2025-12-29 09:52:30,138 - [IDLE] ETH | Px: 3013.70 | M: 3009.2 | B: 3024.1 / S: 2994.2 | delta: -0.2274(-0.0104) | Adj: -2.25%, Vol: 1.00, Thr: 0.0341 | PnL: -5.47 | TotPnL: -5.47 +1766998350141, 2025-12-29 09:52:30,141 - [IDLE] BNB | Px: 859.30 | M: 858.0 | B: 861.6 / S: 854.4 | delta: -1.0884(-0.0604) | Adj: +5.90%, Vol: 1.00, Thr: 0.1633 | PnL: 7.42 | TotPnL: 7.42 +1766998410259, 2025-12-29 09:53:30,259 - [IDLE] ETH | Px: 3012.45 | M: 3006.6 | B: 3021.7 / S: 2991.5 | delta: -0.2303(-0.0133) | Adj: -2.19%, Vol: 1.00, Thr: 0.0345 | PnL: -5.17 | TotPnL: -5.17 +1766998410261, 2025-12-29 09:53:30,261 - [IDLE] BNB | Px: 859.10 | M: 857.5 | B: 861.2 / S: 853.9 | delta: -1.0987(-0.0707) | Adj: +6.01%, Vol: 1.00, Thr: 0.1648 | PnL: 7.67 | TotPnL: 7.67 +1766998440833, 2025-12-29 09:54:00,833 - [IDLE] ETH | Px: 3012.45 | M: 3006.6 | B: 3021.7 / S: 2991.5 | delta: -0.2303(-0.0133) | Adj: -2.19%, Vol: 1.11, Thr: 0.0345 | PnL: -5.25 | TotPnL: -5.25 +1766998440835, 2025-12-29 09:54:00,835 - [IDLE] BNB | Px: 859.04 | M: 857.4 | B: 861.1 / S: 853.8 | delta: -1.1019(-0.0739) | Adj: +6.05%, Vol: 1.00, Thr: 0.1653 | PnL: 7.71 | TotPnL: 7.71 +1766998500401, 2025-12-29 09:55:00,401 - [IDLE] ETH | Px: 3011.75 | M: 3005.2 | B: 3020.4 / S: 2990.0 | delta: -0.2320(-0.0150) | Adj: -2.15%, Vol: 1.42, Thr: 0.0348 | PnL: -5.04 | TotPnL: -5.04 +1766998500403, 2025-12-29 09:55:00,403 - [IDLE] BNB | Px: 858.65 | M: 856.5 | B: 860.3 / S: 852.8 | delta: -1.1234(-0.0954) | Adj: +6.28%, Vol: 1.00, Thr: 0.1685 | PnL: 8.01 | TotPnL: 8.01 +1766998560662, 2025-12-29 09:56:00,662 - [IDLE] ETH | Px: 3012.95 | M: 3007.6 | B: 3022.7 / S: 2992.6 | delta: -0.2291(-0.0121) | Adj: -2.21%, Vol: 1.51, Thr: 0.0344 | PnL: -5.30 | TotPnL: -5.30 +1766998560665, 2025-12-29 09:56:00,665 - [IDLE] BNB | Px: 858.76 | M: 856.8 | B: 860.5 / S: 853.1 | delta: -1.1177(-0.0897) | Adj: +6.21%, Vol: 1.12, Thr: 0.1677 | PnL: 7.95 | TotPnL: 7.95 +1766998650910, 2025-12-29 09:57:30,910 - [IDLE] ETH | Px: 3014.15 | M: 3010.1 | B: 3024.9 / S: 2995.2 | delta: -0.2263(-0.0093) | Adj: -2.28%, Vol: 1.51, Thr: 0.0339 | PnL: -5.58 | TotPnL: -5.58 +1766998650912, 2025-12-29 09:57:30,912 - [IDLE] BNB | Px: 859.00 | M: 857.3 | B: 861.0 / S: 853.7 | delta: -1.1046(-0.0766) | Adj: +6.08%, Vol: 1.20, Thr: 0.1657 | PnL: 7.67 | TotPnL: 7.67 +1766998770939, 2025-12-29 09:59:30,939 - [IDLE] ETH | Px: 3013.55 | M: 3008.9 | B: 3023.8 / S: 2993.9 | delta: -0.2277(-0.0107) | Adj: -2.25%, Vol: 1.25, Thr: 0.0342 | PnL: -5.40 | TotPnL: -5.40 +1766998770942, 2025-12-29 09:59:30,942 - [IDLE] BNB | Px: 858.72 | M: 856.7 | B: 860.4 / S: 853.0 | delta: -1.1196(-0.0916) | Adj: +6.24%, Vol: 1.18, Thr: 0.1679 | PnL: 8.03 | TotPnL: 8.03 +1766998800146, 2025-12-29 10:00:00,146 - [IDLE] ETH | Px: 3013.25 | M: 3008.2 | B: 3023.2 / S: 2993.3 | delta: -0.2284(-0.0114) | Adj: -2.23%, Vol: 1.07, Thr: 0.0343 | PnL: -5.36 | TotPnL: -5.36 +1766998800147, 2025-12-29 10:00:00,147 - [IDLE] BNB | Px: 858.70 | M: 856.7 | B: 860.4 / S: 853.0 | delta: -1.1204(-0.0924) | Adj: +6.24%, Vol: 1.05, Thr: 0.1681 | PnL: 8.02 | TotPnL: 8.02 +1766998920531, 2025-12-29 10:02:00,531 - [IDLE] ETH | Px: 3012.25 | M: 3006.2 | B: 3021.4 / S: 2991.1 | delta: -0.2308(-0.0138) | Adj: -2.18%, Vol: 1.00, Thr: 0.0346 | PnL: -5.17 | TotPnL: -5.17 +1766998920533, 2025-12-29 10:02:00,533 - [IDLE] BNB | Px: 858.34 | M: 855.9 | B: 859.6 / S: 852.1 | delta: -1.1400(-0.1120) | Adj: +6.45%, Vol: 1.00, Thr: 0.1710 | PnL: 8.38 | TotPnL: 8.38 +1766998980197, 2025-12-29 10:03:00,197 - [IDLE] ETH | Px: 3011.35 | M: 3004.4 | B: 3019.7 / S: 2989.1 | delta: -0.2329(-0.0159) | Adj: -2.13%, Vol: 1.00, Thr: 0.0349 | PnL: -4.93 | TotPnL: -4.93 +1766998980200, 2025-12-29 10:03:00,200 - [IDLE] BNB | Px: 857.86 | M: 854.8 | B: 858.7 / S: 851.0 | delta: -1.1668(-0.1388) | Adj: +6.74%, Vol: 1.00, Thr: 0.1750 | PnL: 8.85 | TotPnL: 8.85 +1766999070388, 2025-12-29 10:04:30,388 - [IDLE] ETH | Px: 3012.95 | M: 3007.6 | B: 3022.7 / S: 2992.6 | delta: -0.2291(-0.0121) | Adj: -2.21%, Vol: 1.00, Thr: 0.0344 | PnL: -5.23 | TotPnL: -5.23 +1766999070389, 2025-12-29 10:04:30,389 - [IDLE] BNB | Px: 857.96 | M: 855.0 | B: 858.9 / S: 851.2 | delta: -1.1608(-0.1328) | Adj: +6.68%, Vol: 1.00, Thr: 0.1741 | PnL: 8.79 | TotPnL: 8.79 +1766999100672, 2025-12-29 10:05:00,672 - [IDLE] ETH | Px: 3013.25 | M: 3008.2 | B: 3023.2 / S: 2993.3 | delta: -0.2284(-0.0114) | Adj: -2.23%, Vol: 1.00, Thr: 0.0343 | PnL: -5.34 | TotPnL: -5.34 +1766999100673, 2025-12-29 10:05:00,673 - [IDLE] BNB | Px: 858.04 | M: 855.2 | B: 859.0 / S: 851.4 | delta: -1.1570(-0.1290) | Adj: +6.63%, Vol: 1.00, Thr: 0.1735 | PnL: 8.71 | TotPnL: 8.71 +1766999211165, 2025-12-29 10:06:51,165 - [WARN] LARGE HEDGE: 0.1758 > 0.0080 (x5.0) +1766999211520, 2025-12-29 10:06:51,520 - [TRIG] Net BNB: SELL 0.1758 | Tgt: -1.2038 / Cur: -1.0280 | Thresh: 0.0080 +1766999211522, 2025-12-29 10:06:51,522 - [ORDER] IOC BNB SELL 0.175 @ 856.26 +1766999213606, 2025-12-29 10:06:53,606 - Order filled immediately. +1766999213607, 2025-12-29 10:06:53,607 - [SHADOW] Created Maker SELL @ 857.15 +1766999213607, 2025-12-29 10:06:53,607 - Sleeping 5s to allow position update... +1766999220453, 2025-12-29 10:07:00,453 - [IDLE] ETH | Px: 3009.85 | M: 3001.4 | B: 3016.8 / S: 2985.9 | delta: -0.2365(-0.0195) | Adj: -2.05%, Vol: 1.00, Thr: 0.0355 | PnL: -4.65 | TotPnL: -4.65 +1766999220456, 2025-12-29 10:07:00,456 - [IDLE] BNB | Px: 857.15 | M: 857.1 | B: 857.3 / S: 856.9 | delta: -1.2057(-0.0027) | Adj: +7.15%, Vol: 1.04, Thr: 0.0080 | PnL: 9.57 | TotPnL: 9.57 +1766999250312, 2025-12-29 10:07:30,312 - [IDLE] ETH | Px: 3008.55 | M: 2998.7 | B: 3014.4 / S: 2983.0 | delta: -0.2395(-0.0225) | Adj: -1.99%, Vol: 1.00, Thr: 0.0359 | PnL: -4.38 | TotPnL: -4.38 +1766999250314, 2025-12-29 10:07:30,314 - [IDLE] BNB | Px: 857.00 | M: 856.8 | B: 856.9 / S: 856.6 | delta: -1.2137(-0.0107) | Adj: +7.23%, Vol: 1.11, Thr: 0.0080 | PnL: 9.91 | TotPnL: 9.91 +1766999277600, 2025-12-29 10:07:57,600 - [TRIG] Net BNB: SELL 0.0093 | Tgt: -1.2123 / Cur: -1.2030 | Thresh: 0.0080 +1766999285895, 2025-12-29 10:08:05,895 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999288065, 2025-12-29 10:08:08,065 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999290417, 2025-12-29 10:08:10,417 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999292566, 2025-12-29 10:08:12,566 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999295191, 2025-12-29 10:08:15,191 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999297313, 2025-12-29 10:08:17,313 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999299381, 2025-12-29 10:08:19,381 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999301630, 2025-12-29 10:08:21,630 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999303728, 2025-12-29 10:08:23,728 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999306239, 2025-12-29 10:08:26,239 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999308393, 2025-12-29 10:08:28,393 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999310241, 2025-12-29 10:08:30,241 - [IDLE] ETH | Px: 3008.25 | M: 2998.1 | B: 3013.8 / S: 2982.4 | delta: -0.2402(-0.0232) | Adj: -1.97%, Vol: 1.05, Thr: 0.0360 | PnL: -4.32 | TotPnL: -4.32 +1766999310506, 2025-12-29 10:08:30,506 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999310507, 2025-12-29 10:08:30,507 - [IDLE] BNB | Px: 857.04 | M: 856.8 | B: 857.0 / S: 856.7 | delta: -1.2121(-0.0091) | Adj: +7.22%, Vol: 1.27, Thr: 0.0080 | PnL: 9.72 | TotPnL: 9.72 +1766999312672, 2025-12-29 10:08:32,672 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999315265, 2025-12-29 10:08:35,265 - [TRIG] Net BNB: SELL 0.0091 | Tgt: -1.2121 / Cur: -1.2030 | Thresh: 0.0080 +1766999340113, 2025-12-29 10:09:00,113 - [IDLE] ETH | Px: 3008.95 | M: 2999.5 | B: 3015.2 / S: 2983.9 | delta: -0.2386(-0.0216) | Adj: -2.01%, Vol: 1.14, Thr: 0.0358 | PnL: -4.45 | TotPnL: -4.45 +1766999340115, 2025-12-29 10:09:00,115 - [IDLE] BNB | Px: 857.20 | M: 857.2 | B: 861.2 / S: 853.2 | delta: -1.2032(-0.0002) | Adj: +7.12%, Vol: 1.29, Thr: 0.1805 | PnL: 9.51 | TotPnL: 9.51 +1766999370458, 2025-12-29 10:09:30,458 - [IDLE] ETH | Px: 3008.15 | M: 2997.9 | B: 3013.6 / S: 2982.2 | delta: -0.2405(-0.0235) | Adj: -1.97%, Vol: 1.21, Thr: 0.0361 | PnL: -4.28 | TotPnL: -4.28 +1766999370459, 2025-12-29 10:09:30,459 - [IDLE] BNB | Px: 857.08 | M: 856.9 | B: 857.1 / S: 856.8 | delta: -1.2093(-0.0063) | Adj: +7.19%, Vol: 1.28, Thr: 0.0080 | PnL: 9.65 | TotPnL: 9.65 +1766999417106, 2025-12-29 10:10:17,106 - Stopping... +1766999426067, 2025-12-29 10:10:26,067 - [UNIFIED] Master Hedger initialized. Agent: 0xf94D30610B524D7FFF01d5062bE20e0d96b09Ae6 +1766999426068, 2025-12-29 10:10:26,068 - Starting Unified Hedger Loop... +1766999426639, 2025-12-29 10:10:26,639 - === HEDGER CONFIGURATION === +1766999426640, 2025-12-29 10:10:26,640 - --- ETH --- +1766999426640, 2025-12-29 10:10:26,640 - MONITOR_INTERVAL_SECONDS: 60 +1766999426641, 2025-12-29 10:10:26,641 - CLOSE_POSITION_ENABLED: True +1766999426642, 2025-12-29 10:10:26,642 - OPEN_POSITION_ENABLED: True +1766999426642, 2025-12-29 10:10:26,642 - REBALANCE_ON_CLOSE_BELOW_RANGE: True +1766999426643, 2025-12-29 10:10:26,643 - TARGET_INVESTMENT_AMOUNT: 200 +1766999426643, 2025-12-29 10:10:26,643 - INITIAL_HEDGE_CAPITAL: 1000 +1766999426644, 2025-12-29 10:10:26,644 - VALUE_REFERENCE: USD +1766999426644, 2025-12-29 10:10:26,644 - WRAPPED_NATIVE_ADDRESS: 0x4200000000000000000000000000000000000006 +1766999426645, 2025-12-29 10:10:26,645 - RANGE_WIDTH_PCT: 0.10 +1766999426645, 2025-12-29 10:10:26,645 - SLIPPAGE_TOLERANCE: 0.02 +1766999426646, 2025-12-29 10:10:26,646 - TRANSACTION_TIMEOUT_SECONDS: 30 +1766999426646, 2025-12-29 10:10:26,646 - MIN_HEDGE_THRESHOLD: 0.01 +1766999426647, 2025-12-29 10:10:26,647 - CHECK_INTERVAL: 1 +1766999426647, 2025-12-29 10:10:26,647 - LEVERAGE: 5 +1766999426647, 2025-12-29 10:10:26,647 - ZONE_BOTTOM_HEDGE_LIMIT: 1.0 +1766999426648, 2025-12-29 10:10:26,648 - ZONE_CLOSE_START: 10.0 +1766999426648, 2025-12-29 10:10:26,648 - ZONE_CLOSE_END: 11.0 +1766999426648, 2025-12-29 10:10:26,648 - ZONE_TOP_HEDGE_START: 10.0 +1766999426649, 2025-12-29 10:10:26,649 - PRICE_BUFFER_PCT: 0.0015 +1766999426649, 2025-12-29 10:10:26,649 - MIN_ORDER_VALUE_USD: 10.0 +1766999426650, 2025-12-29 10:10:26,650 - DYNAMIC_THRESHOLD_MULTIPLIER: 1.2 +1766999426650, 2025-12-29 10:10:26,650 - MIN_TIME_BETWEEN_TRADES: 60 +1766999426651, 2025-12-29 10:10:26,651 - MAX_HEDGE_MULTIPLIER: 1.25 +1766999426651, 2025-12-29 10:10:26,651 - BASE_REBALANCE_THRESHOLD_PCT: 0.15 +1766999426651, 2025-12-29 10:10:26,651 - EDGE_PROXIMITY_PCT: 0.04 +1766999426652, 2025-12-29 10:10:26,652 - VELOCITY_THRESHOLD_PCT: 0.0005 +1766999426652, 2025-12-29 10:10:26,652 - POSITION_OPEN_EDGE_PROXIMITY_PCT: 0.06 +1766999426653, 2025-12-29 10:10:26,653 - POSITION_CLOSED_EDGE_PROXIMITY_PCT: 0.025 +1766999426653, 2025-12-29 10:10:26,653 - LARGE_HEDGE_MULTIPLIER: 5.0 +1766999426654, 2025-12-29 10:10:26,654 - ENABLE_EDGE_CLEANUP: True +1766999426654, 2025-12-29 10:10:26,654 - EDGE_CLEANUP_MARGIN_PCT: 0.02 +1766999426655, 2025-12-29 10:10:26,655 - MAKER_ORDER_TIMEOUT: 600 +1766999426655, 2025-12-29 10:10:26,655 - SHADOW_ORDER_TIMEOUT: 600 +1766999426656, 2025-12-29 10:10:26,656 - ENABLE_FISHING: False +1766999426656, 2025-12-29 10:10:26,656 - FISHING_ORDER_SIZE_PCT: 0.10 +1766999426657, 2025-12-29 10:10:26,657 - sz_decimals: 4 +1766999426657, 2025-12-29 10:10:26,657 - NAME: Aerodrome/Uni (Base) - WETH/cbBTC +1766999426658, 2025-12-29 10:10:26,658 - COIN_SYMBOL: ETH +1766999426658, 2025-12-29 10:10:26,658 - RPC_ENV_VAR: BASE_RPC_URL +1766999426659, 2025-12-29 10:10:26,659 - NPM_ADDRESS: 0x0000000000000000000000000000000000000000 +1766999426659, 2025-12-29 10:10:26,659 - ROUTER_ADDRESS: 0x0000000000000000000000000000000000000000 +1766999426660, 2025-12-29 10:10:26,660 - TOKEN_A_ADDRESS: 0x4200000000000000000000000000000000000006 +1766999426661, 2025-12-29 10:10:26,661 - TOKEN_B_ADDRESS: 0xcbB7C915AB58735a1391B9fE18541b4d8926D412 +1766999426661, 2025-12-29 10:10:26,661 - POOL_FEE: 3000 +1766999426662, 2025-12-29 10:10:26,662 - --- BNB --- +1766999426662, 2025-12-29 10:10:26,662 - MONITOR_INTERVAL_SECONDS: 60 +1766999426663, 2025-12-29 10:10:26,663 - CLOSE_POSITION_ENABLED: True +1766999426663, 2025-12-29 10:10:26,663 - OPEN_POSITION_ENABLED: True +1766999426663, 2025-12-29 10:10:26,663 - REBALANCE_ON_CLOSE_BELOW_RANGE: True +1766999426664, 2025-12-29 10:10:26,664 - TARGET_INVESTMENT_AMOUNT: 1000 +1766999426664, 2025-12-29 10:10:26,664 - INITIAL_HEDGE_CAPITAL: 1000 +1766999426664, 2025-12-29 10:10:26,664 - VALUE_REFERENCE: USD +1766999426665, 2025-12-29 10:10:26,665 - WRAPPED_NATIVE_ADDRESS: 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c +1766999426665, 2025-12-29 10:10:26,665 - RANGE_WIDTH_PCT: 0.015 +1766999426665, 2025-12-29 10:10:26,665 - SLIPPAGE_TOLERANCE: 0.02 +1766999426666, 2025-12-29 10:10:26,666 - TRANSACTION_TIMEOUT_SECONDS: 30 +1766999426666, 2025-12-29 10:10:26,666 - MIN_HEDGE_THRESHOLD: 0.05 +1766999426667, 2025-12-29 10:10:26,667 - CHECK_INTERVAL: 1 +1766999426667, 2025-12-29 10:10:26,667 - LEVERAGE: 5 +1766999426667, 2025-12-29 10:10:26,667 - ZONE_BOTTOM_HEDGE_LIMIT: 1.0 +1766999426668, 2025-12-29 10:10:26,668 - ZONE_CLOSE_START: 10.0 +1766999426668, 2025-12-29 10:10:26,668 - ZONE_CLOSE_END: 11.0 +1766999426668, 2025-12-29 10:10:26,668 - ZONE_TOP_HEDGE_START: 10.0 +1766999426669, 2025-12-29 10:10:26,669 - PRICE_BUFFER_PCT: 0.0015 +1766999426669, 2025-12-29 10:10:26,669 - MIN_ORDER_VALUE_USD: 10.0 +1766999426669, 2025-12-29 10:10:26,669 - DYNAMIC_THRESHOLD_MULTIPLIER: 1.2 +1766999426670, 2025-12-29 10:10:26,670 - MIN_TIME_BETWEEN_TRADES: 60 +1766999426670, 2025-12-29 10:10:26,670 - MAX_HEDGE_MULTIPLIER: 1.25 +1766999426671, 2025-12-29 10:10:26,671 - BASE_REBALANCE_THRESHOLD_PCT: 0.25 +1766999426671, 2025-12-29 10:10:26,671 - EDGE_PROXIMITY_PCT: 0.04 +1766999426671, 2025-12-29 10:10:26,671 - VELOCITY_THRESHOLD_PCT: 0.0005 +1766999426672, 2025-12-29 10:10:26,672 - POSITION_OPEN_EDGE_PROXIMITY_PCT: 0.06 +1766999426672, 2025-12-29 10:10:26,672 - POSITION_CLOSED_EDGE_PROXIMITY_PCT: 0.025 +1766999426672, 2025-12-29 10:10:26,672 - LARGE_HEDGE_MULTIPLIER: 5.0 +1766999426673, 2025-12-29 10:10:26,673 - ENABLE_EDGE_CLEANUP: True +1766999426673, 2025-12-29 10:10:26,673 - EDGE_CLEANUP_MARGIN_PCT: 0.02 +1766999426673, 2025-12-29 10:10:26,673 - MAKER_ORDER_TIMEOUT: 600 +1766999426674, 2025-12-29 10:10:26,674 - SHADOW_ORDER_TIMEOUT: 600 +1766999426674, 2025-12-29 10:10:26,674 - ENABLE_FISHING: False +1766999426674, 2025-12-29 10:10:26,674 - FISHING_ORDER_SIZE_PCT: 0.10 +1766999426675, 2025-12-29 10:10:26,675 - sz_decimals: 3 +1766999426675, 2025-12-29 10:10:26,675 - NAME: PancakeSwap V3 (BNB Chain) - BNB/USDT +1766999426676, 2025-12-29 10:10:26,676 - COIN_SYMBOL: BNB +1766999426676, 2025-12-29 10:10:26,676 - RPC_ENV_VAR: BNB_RPC_URL +1766999426677, 2025-12-29 10:10:26,677 - NPM_ADDRESS: 0x46A15B0b27311cedF172AB29E4f4766fbE7F4364 +1766999426677, 2025-12-29 10:10:26,677 - ROUTER_ADDRESS: 0x1b81D678ffb9C0263b24A97847620C99d213eB14 +1766999426677, 2025-12-29 10:10:26,677 - TOKEN_A_ADDRESS: 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c +1766999426678, 2025-12-29 10:10:26,678 - TOKEN_B_ADDRESS: 0x55d398326f99059fF775485246999027B3197955 +1766999426678, 2025-12-29 10:10:26,678 - POOL_FEE: 100 +1766999426678, 2025-12-29 10:10:26,678 - ============================ +1766999427980, 2025-12-29 10:10:27,980 - [STARTUP] Skipping Ghost Cleanup for ETH (Grace Period) +1766999427980, 2025-12-29 10:10:27,980 - [STARTUP] Skipping Ghost Cleanup for BNB (Grace Period) +1766999428984, 2025-12-29 10:10:28,984 - [STRAT] Init 6153292 (BNB) | Range: 856.6782-882.4136 +1766999428986, 2025-12-29 10:10:28,986 - [STRAT] Init 5182179 (ETH) | Range: 2827.096-3118.1664 +1766999430021, 2025-12-29 10:10:30,021 - [IDLE] ETH | Px: 3009.45 | M: 3000.5 | B: 3016.1 / S: 2985.0 | delta: -0.2374(-0.0204) | Adj: -2.03%, Vol: 1.00, Thr: 0.0356 | PnL: -4.62 | TotPnL: -4.62 +1766999430023, 2025-12-29 10:10:30,023 - [IDLE] BNB | Px: 857.72 | M: 858.3 | B: 862.2 / S: 854.5 | delta: -1.1745(+0.0285) | Adj: +6.82%, Vol: 1.00, Thr: 0.1762 | PnL: 8.94 | TotPnL: 8.94 +1766999490692, 2025-12-29 10:11:30,692 - [IDLE] ETH | Px: 3010.55 | M: 3002.8 | B: 3018.2 / S: 2987.4 | delta: -0.2348(-0.0178) | Adj: -2.09%, Vol: 1.00, Thr: 0.0352 | PnL: -4.82 | TotPnL: -4.82 +1766999490693, 2025-12-29 10:11:30,693 - [IDLE] BNB | Px: 857.97 | M: 858.9 | B: 862.7 / S: 855.1 | delta: -1.1605(+0.0425) | Adj: +6.67%, Vol: 1.00, Thr: 0.1741 | PnL: 8.62 | TotPnL: 8.62 +1766999550821, 2025-12-29 10:12:30,821 - [IDLE] ETH | Px: 3009.95 | M: 3001.6 | B: 3017.0 / S: 2986.1 | delta: -0.2362(-0.0192) | Adj: -2.06%, Vol: 1.00, Thr: 0.0354 | PnL: -4.67 | TotPnL: -4.67 +1766999550823, 2025-12-29 10:12:30,823 - [IDLE] BNB | Px: 857.50 | M: 857.9 | B: 861.8 / S: 854.0 | delta: -1.1861(+0.0169) | Adj: +6.94%, Vol: 1.00, Thr: 0.1779 | PnL: 9.06 | TotPnL: 9.06 +1766999610366, 2025-12-29 10:13:30,366 - [IDLE] ETH | Px: 3009.95 | M: 3001.6 | B: 3017.0 / S: 2986.1 | delta: -0.2362(-0.0192) | Adj: -2.06%, Vol: 1.00, Thr: 0.0354 | PnL: -4.69 | TotPnL: -4.69 +1766999610368, 2025-12-29 10:13:30,368 - [IDLE] BNB | Px: 857.60 | M: 858.1 | B: 862.0 / S: 854.2 | delta: -1.1809(+0.0221) | Adj: +6.89%, Vol: 1.00, Thr: 0.1771 | PnL: 9.06 | TotPnL: 9.06 +1766999640818, 2025-12-29 10:14:00,818 - [IDLE] ETH | Px: 3010.55 | M: 3002.8 | B: 3018.2 / S: 2987.4 | delta: -0.2348(-0.0178) | Adj: -2.09%, Vol: 1.00, Thr: 0.0352 | PnL: -4.80 | TotPnL: -4.80 +1766999640820, 2025-12-29 10:14:00,820 - [IDLE] BNB | Px: 857.59 | M: 858.1 | B: 862.0 / S: 854.2 | delta: -1.1814(+0.0216) | Adj: +6.89%, Vol: 1.00, Thr: 0.1772 | PnL: 9.06 | TotPnL: 9.06 +1766999700810, 2025-12-29 10:15:00,810 - [IDLE] ETH | Px: 3010.55 | M: 3002.8 | B: 3018.2 / S: 2987.4 | delta: -0.2348(-0.0178) | Adj: -2.09%, Vol: 1.00, Thr: 0.0352 | PnL: -4.75 | TotPnL: -4.75 +1766999700812, 2025-12-29 10:15:00,812 - [IDLE] BNB | Px: 857.68 | M: 858.3 | B: 862.1 / S: 854.4 | delta: -1.1767(+0.0263) | Adj: +6.84%, Vol: 1.00, Thr: 0.1765 | PnL: 8.95 | TotPnL: 8.95 +1766999790664, 2025-12-29 10:16:30,664 - [IDLE] ETH | Px: 3009.75 | M: 3001.1 | B: 3016.7 / S: 2985.6 | delta: -0.2367(-0.0197) | Adj: -2.05%, Vol: 1.00, Thr: 0.0355 | PnL: -4.62 | TotPnL: -4.62 +1766999790666, 2025-12-29 10:16:30,666 - [IDLE] BNB | Px: 857.72 | M: 858.4 | B: 862.2 / S: 854.5 | delta: -1.1740(+0.0290) | Adj: +6.82%, Vol: 1.00, Thr: 0.1761 | PnL: 8.88 | TotPnL: 8.88 +1766999880731, 2025-12-29 10:18:00,731 - [IDLE] ETH | Px: 3009.15 | M: 2999.9 | B: 3015.5 / S: 2984.3 | delta: -0.2381(-0.0211) | Adj: -2.02%, Vol: 1.00, Thr: 0.0357 | PnL: -4.49 | TotPnL: -4.49 +1766999880734, 2025-12-29 10:18:00,734 - [IDLE] BNB | Px: 857.40 | M: 857.7 | B: 861.6 / S: 853.7 | delta: -1.1916(+0.0114) | Adj: +7.00%, Vol: 1.00, Thr: 0.1787 | PnL: 9.26 | TotPnL: 9.26 +1766999940148, 2025-12-29 10:19:00,148 - [IDLE] ETH | Px: 3010.15 | M: 3002.0 | B: 3017.4 / S: 2986.5 | delta: -0.2357(-0.0187) | Adj: -2.07%, Vol: 1.00, Thr: 0.0354 | PnL: -4.73 | TotPnL: -4.73 +1766999940150, 2025-12-29 10:19:00,150 - [IDLE] BNB | Px: 857.82 | M: 858.6 | B: 862.4 / S: 854.7 | delta: -1.1690(+0.0340) | Adj: +6.76%, Vol: 1.00, Thr: 0.1754 | PnL: 8.82 | TotPnL: 8.82 +1767000000185, 2025-12-29 10:20:00,185 - [IDLE] ETH | Px: 3010.75 | M: 3003.2 | B: 3018.5 / S: 2987.8 | delta: -0.2343(-0.0173) | Adj: -2.10%, Vol: 1.00, Thr: 0.0351 | PnL: -4.84 | TotPnL: -4.84 +1767000000188, 2025-12-29 10:20:00,188 - [IDLE] BNB | Px: 857.80 | M: 858.5 | B: 862.4 / S: 854.7 | delta: -1.1701(+0.0329) | Adj: +6.77%, Vol: 1.00, Thr: 0.1755 | PnL: 8.76 | TotPnL: 8.76 +1767000210575, 2025-12-29 10:23:30,575 - [IDLE] ETH | Px: 3011.35 | M: 3004.4 | B: 3019.7 / S: 2989.1 | delta: -0.2329(-0.0159) | Adj: -2.13%, Vol: 1.00, Thr: 0.0349 | PnL: -4.97 | TotPnL: -4.97 +1767000210578, 2025-12-29 10:23:30,578 - [IDLE] BNB | Px: 857.82 | M: 858.6 | B: 862.4 / S: 854.7 | delta: -1.1690(+0.0340) | Adj: +6.76%, Vol: 1.00, Thr: 0.1754 | PnL: 8.78 | TotPnL: 8.78 +1767000270441, 2025-12-29 10:24:30,441 - [IDLE] ETH | Px: 3013.35 | M: 3008.5 | B: 3023.4 / S: 2993.5 | delta: -0.2282(-0.0112) | Adj: -2.23%, Vol: 1.00, Thr: 0.0342 | PnL: -5.40 | TotPnL: -5.40 +1767000270443, 2025-12-29 10:24:30,443 - [IDLE] BNB | Px: 857.90 | M: 858.7 | B: 862.6 / S: 854.9 | delta: -1.1646(+0.0384) | Adj: +6.72%, Vol: 1.00, Thr: 0.1747 | PnL: 8.67 | TotPnL: 8.67 +1767000330307, 2025-12-29 10:25:30,307 - [IDLE] ETH | Px: 3012.55 | M: 3006.8 | B: 3021.9 / S: 2991.7 | delta: -0.2301(-0.0131) | Adj: -2.19%, Vol: 1.00, Thr: 0.0345 | PnL: -5.23 | TotPnL: -5.23 +1767000330309, 2025-12-29 10:25:30,309 - [IDLE] BNB | Px: 857.60 | M: 858.1 | B: 862.0 / S: 854.2 | delta: -1.1811(+0.0219) | Adj: +6.89%, Vol: 1.00, Thr: 0.1772 | PnL: 9.04 | TotPnL: 9.04 +1767000390450, 2025-12-29 10:26:30,450 - [IDLE] ETH | Px: 3008.55 | M: 2998.7 | B: 3014.4 / S: 2983.0 | delta: -0.2395(-0.0225) | Adj: -1.99%, Vol: 1.00, Thr: 0.0359 | PnL: -4.49 | TotPnL: -4.49 +1767000390452, 2025-12-29 10:26:30,452 - [IDLE] BNB | Px: 857.30 | M: 857.4 | B: 861.4 / S: 853.5 | delta: -1.1977(+0.0053) | Adj: +7.07%, Vol: 1.00, Thr: 0.1797 | PnL: 9.33 | TotPnL: 9.33 +1767000450745, 2025-12-29 10:27:30,745 - [IDLE] ETH | Px: 3004.85 | M: 2991.2 | B: 3007.4 / S: 2975.0 | delta: -0.2483(-0.0313) | Adj: -1.80%, Vol: 1.29, Thr: 0.0372 | PnL: -3.52 | TotPnL: -3.52 +1767000450748, 2025-12-29 10:27:30,748 - [IDLE] BNB | Px: 857.30 | M: 857.4 | B: 861.4 / S: 853.5 | delta: -1.1971(+0.0059) | Adj: +7.06%, Vol: 1.00, Thr: 0.1796 | PnL: 9.53 | TotPnL: 9.53 +1767000600237, 2025-12-29 10:30:00,237 - [IDLE] ETH | Px: 3006.75 | M: 2995.1 | B: 3011.0 / S: 2979.1 | delta: -0.2438(-0.0268) | Adj: -1.89%, Vol: 1.78, Thr: 0.0366 | PnL: -4.02 | TotPnL: -4.02 +1767000600239, 2025-12-29 10:30:00,239 - [IDLE] BNB | Px: 857.62 | M: 858.1 | B: 862.0 / S: 854.3 | delta: -1.1795(+0.0235) | Adj: +6.87%, Vol: 1.00, Thr: 0.1769 | PnL: 9.08 | TotPnL: 9.08 +1767000660107, 2025-12-29 10:31:00,107 - [IDLE] ETH | Px: 3006.25 | M: 2994.0 | B: 3010.1 / S: 2978.0 | delta: -0.2450(-0.0280) | Adj: -1.87%, Vol: 1.86, Thr: 0.0367 | PnL: -3.86 | TotPnL: -3.86 +1767000660108, 2025-12-29 10:31:00,108 - [IDLE] BNB | Px: 857.40 | M: 857.6 | B: 861.6 / S: 853.7 | delta: -1.1922(+0.0108) | Adj: +7.01%, Vol: 1.00, Thr: 0.1788 | PnL: 9.27 | TotPnL: 9.27 +1767000690915, 2025-12-29 10:31:30,915 - [IDLE] ETH | Px: 3005.15 | M: 2991.8 | B: 3008.0 / S: 2975.6 | delta: -0.2476(-0.0306) | Adj: -1.81%, Vol: 1.94, Thr: 0.0371 | PnL: -3.65 | TotPnL: -3.65 +1767000690917, 2025-12-29 10:31:30,917 - [IDLE] BNB | Px: 857.56 | M: 858.0 | B: 861.9 / S: 854.1 | delta: -1.1833(+0.0197) | Adj: +6.91%, Vol: 1.00, Thr: 0.1775 | PnL: 9.01 | TotPnL: 9.01 +1767000705122, 2025-12-29 10:31:45,122 - [TRIG] Net ETH: SELL 0.0397 | Tgt: -0.2567 / Cur: -0.2170 | Thresh: 0.0385 +1767000705123, 2025-12-29 10:31:45,123 - [ORDER] ALO ETH SELL 0.0396 @ 3001.4 +1767000707582, 2025-12-29 10:31:47,582 - Sleeping 5s to allow position update... +1767000712865, 2025-12-29 10:31:52,865 - [TRIG] Net BNB: SELL 0.0295 | Tgt: -1.2325 / Cur: -1.2030 | Thresh: 0.0080 +1767000712866, 2025-12-29 10:31:52,866 - [ORDER] ALO BNB SELL 0.029 @ 856.11 +1767000713605, 2025-12-29 10:31:53,605 - Sleeping 5s to allow position update... +1767000720440, 2025-12-29 10:32:00,440 - [IDLE] ETH | Px: 3002.85 | M: 3004.4 | B: 3020.9 / S: 2987.8 | delta: -0.2531(+0.0035) | Adj: -1.69%, Vol: 2.01, Thr: 0.0380 | PnL: -3.16 | TotPnL: -3.16 +1767000720443, 2025-12-29 10:32:00,443 - [IDLE] BNB | Px: 856.30 | M: 856.3 | B: 856.5 / S: 856.1 | delta: -1.2327(-0.0007) | Adj: +7.50%, Vol: 1.00, Thr: 0.0080 | PnL: 10.60 | TotPnL: 10.60 +1767000730199, 2025-12-29 10:32:10,199 - [STRAT] 6153292 is CLOSING -> Force Target 0 +1767000730202, 2025-12-29 10:32:10,202 - [URGENT] BNB Closing Strategy -> Force Taker Exit +1767000730203, 2025-12-29 10:32:10,203 - [WARN] LARGE HEDGE: 1.2320 > 0.0080 (x5.0) +1767000730473, 2025-12-29 10:32:10,473 - [TRIG] Net BNB: BUY 1.2320 | Tgt: 0.0000 / Cur: -1.2320 | Thresh: 0.0080 +1767000730474, 2025-12-29 10:32:10,474 - [ORDER] IOC BNB BUY 1.232 @ 856.95 +1767000731824, 2025-12-29 10:32:11,824 - Order filled immediately. +1767000731825, 2025-12-29 10:32:11,825 - [SHADOW] Created Maker BUY @ 856.03 +1767000731826, 2025-12-29 10:32:11,826 - Sleeping 5s to allow position update... +1767000737851, 2025-12-29 10:32:17,851 - Strategy 6153292 removed (Closed/Gone). \ No newline at end of file diff --git a/florida/summaries/6153292/6153292_analisis.md b/florida/summaries/6153292/6153292_analisis.md new file mode 100644 index 0000000..70713ef --- /dev/null +++ b/florida/summaries/6153292/6153292_analisis.md @@ -0,0 +1,117 @@ +# CLP Strategy & Configuration Log + +This document detailed information about clp position (6153292) + auto hedge on Hyperliquide. + +--- + +## 1. Low Volatility / Weekend Optimization (Narrow Range) +**Date:** 2025-12-29 +**Status:** Active +**Objective:** Further optimalization of hedging on Hyperliquide. + +### 🔍 Context +* **Market Condition:** Monday, th 29th of Dec +* **Capital:** $1,000 USDC +* **Range:** +/- 1.5% (Narrow) + +### ⚙️ Configuration of scripts +(See original file for full config dump) + +### test results +1. clp position: + { + "type": "AUTOMATIC", + "token_id": 6153292, + "status": "CLOSED", + "target_value": 993.31, + "entry_price": 869.418, + "amount0_initial": 500.0094, + "amount1_initial": 0.5674, + "liquidity": "2284728345715808667084", + "range_upper": 882.4136, + "range_lower": 856.6782, + "token0_decimals": 18, + "token1_decimals": 18, + "timestamp_open": 1766982584, + "target_value_end": 982.48, + "timestamp_close": 1767000734 + } +2. hedge transactions (from Hyperliquide) +(See original file for table) + +## results of tests are not satisfactional: +1. the main problem is that the hedge doesn't cover lost value of clp pool (without earned fees) -> **-$2.23** + +--- + +### 🚀 Analysis & Diagnosis (2025-12-29) + +After reviewing the logs and transaction history, here is the breakdown of the PnL and the root cause of the slippage. + +#### **1. PnL Breakdown (The "Missing" $2.23)** + +* **LP Position Value Change:** + * Initial Value: ~$993.31 + * Final Value: ~$982.50 + * **LP Loss:** **-$10.81** (This is the Impermanent Loss + Delta Loss from holding BNB as it dropped). +* **Hedge Compensation:** + * Hedge Gross Profit: **+$10.61** (from your table). + * **Net Delta Efficiency:** The hedge covered the LP loss almost perfectly (Diff: -$0.20). + * *Conclusion:* The **Delta Calculation is CORRECT**. The math effectively neutralized the market move. +* **The Costs (The Real Leak):** + * **Trading Fees:** You paid ~$0.79 in fees on Hyperliquid (mostly from the initial Taker entry and the final Taker exit). + * **Funding Fees:** Since you were Shorting BNB for ~5 hours, and rates might have been negative (Shorts pay Longs) or just the cost of carry, the remaining discrepancy (~$1.20) is likely **Funding Costs** or slight slippage between LP exit price and Hedge exit price. + +**Total Net:** -$0.20 (Delta Slippage) - $0.79 (Fees) - $1.24 (Funding/Execution Slippage) = **-$2.23** + +#### **2. Execution Inefficiency (The "Panic Loop")** + +The logs reveal a flaw in the execution strategy during trending moves: +1. **Drift:** Price drops, Delta drift exceeds threshold (`0.05`). +2. **Maker Attempt:** Bot places an `ALO` (Maker) order at the Bid. +3. **Timeout:** Market moves down faster than the order fills. The order sits pending (`[WAIT]`). +4. **Cancel:** Bot cancels the stale order. +5. **Drift Worsens:** The drift continues to grow as price drops further. +6. **Panic:** Eventually, `Drift > 5x Threshold` (Large Hedge). +7. **Taker Smash:** Bot forces an `IOC` (Taker) trade, paying high fees (0.035%) and eating slippage. + +**Evidence:** +* Initial Entry: `[WARN] LARGE HEDGE` -> Taker (Fee: $0.21). +* Final Exit: `[URGENT] ... Force Taker Exit` -> Taker (Fee: $0.45). +* These two trades alone account for ~85% of your fee costs. + +--- + +### 🛠️ Answers to Questions + +**1. Is the calculation of hedge wrong?** +**No.** The Delta calculation is accurate. The gross profit of the hedge (+$10.61) almost exactly matched the raw value loss of the LP (-$10.81). The math works. + +**2. How we can proactively fix it?** +We need to fix the **Execution Strategy** to avoid the "Wait -> Cancel -> Panic Taker" loop. +* **Soft Taker Fallback:** If a Maker order times out (e.g., after 30s), retry as Taker immediately *before* the drift becomes huge. +* **Asymmetric Compensation:** Increase the "Over-Hedge" factor. Since V3 LP accumulates "Long" exposure as price drops (Negative Gamma), we should short *more* aggressively early on. + +**3. What we can do with configuration?** +We need to tune for **Narrow Ranges** (High Gamma). + +#### **Recommended Config Changes** + +| Parameter | Current | Recommended | Reason | +| :--- | :--- | :--- | :--- | +| `MIN_HEDGE_THRESHOLD` | `0.05` | **0.02** | Hedge smaller deviations sooner to prevent runaway gamma. | +| `LARGE_HEDGE_MULTIPLIER` | `5.0` | **2.5** | Trigger Taker/Urgent correction sooner, before the hole gets too deep. | +| `MAKER_ORDER_TIMEOUT` | `600` | **60** | Don't let orders rot for 10 minutes. Cancel and retry faster. | +| `SHADOW_ORDER_TIMEOUT` | `600` | **30** | Same as above. | +| `BASE_REBALANCE_THRESHOLD_PCT` | `0.25` | **0.15** | Tighten the percentage-based trigger. | + +#### **Code Change Recommendation (Unified Hedger)** +We should update `unified_hedger.py` to: +1. **Persist Realized PnL:** Fix the bug where `_status.json` isn't updated with hedge PnL, so your logs reflect reality. +2. **Execution Fallback:** If an `ALO` order fails/cancels, decrement a counter. If it fails twice, force `IOC`. + +--- + +### 📝 Action Plan +1. Apply the **Config Changes** above to `clp_config.py`. +2. (Optional) I can patch `unified_hedger.py` to fix the PnL logging and execution logic if you approve. \ No newline at end of file diff --git a/florida/summaries/CLP_STRATEGY_LOG.md b/florida/summaries/CLP_STRATEGY_LOG.md new file mode 100644 index 0000000..0681aaf --- /dev/null +++ b/florida/summaries/CLP_STRATEGY_LOG.md @@ -0,0 +1,76 @@ +# CLP Strategy & Configuration Log + +This document tracks different configuration approaches for the Uniswap V3 CLP Hedger, their specific settings, and the observed results. Use this to refine the strategy over time. + +--- + +## 1. Low Volatility / Weekend Optimization (Narrow Range) +**Date:** 2025-12-23 +**Status:** Active +**Objective:** Optimize for stable market conditions with a narrow trading range to maximize fee collection while maintaining tight delta neutrality. + +### 🔍 Context +* **Market Condition:** Low Volatility / Weekend / Chop +* **Capital:** $2,000 USDC +* **Range:** +/- 1% (Narrow) + +### ⚙️ Configuration +**`uniswap_manager.py`** +* `RANGE_WIDTH_PCT`: **0.01** (+/- 1%) +* `INITIAL_HEDGE_CAPITAL_USDC`: **2000** +* `SLIPPAGE_TOLERANCE`: **0.02** (2%) + +**`clp_hedger.py`** +* `PRICE_BUFFER_PCT`: **0.0015** (0.15%) +* `MIN_THRESHOLD_ETH`: **0.008** (~$24) +* `BASE_REBALANCE_THRESHOLD_PCT`: **0.09** (9%) +* `LARGE_HEDGE_MULTIPLIER`: **2.8** + +### test results +position: + { + "type": "AUTOMATIC", + "token_id": 5174808, + "status": "CLOSED", + "target_value": 1994.89, + "entry_price": 2954.93, + "amount0_initial": 0.3299, + "amount1_initial": 1019.94, + "liquidity": "3679197389549125", + "range_upper": 2983.95, + "range_lower": 2924.86, + "timestamp_open": 1766529348, + "initial_hedge_usdc": 1001.01805, + "hedge_equity_usd": 1008.884158, + "hedge_pnl_realized": -5.85, + "hedge_fees_paid": 2.21, + "timestamp_close": 1766545502 + } + +## results of tests are not satisfactional: +1. the main problem of 5174808 is still difference between value of clp position at the end (start: $1994.42, end $1982.71 value of (tokens plus fees ~$4)) versus value of the hedge position (0.6735 weth, price 2922.5 -> 1968.3), it gives delta 1978 - 1968 = **-$10**... + +# questions +1. is the calculation of hedge wrong? +2. how we can proactivly fix it? + +--- + +### 🚀 Analysis & New Idea: Asymmetric Compensation (2025-12-24) + +#### **Findings from Pos 5174808:** +* **The Problem:** Alpha (NAV vs Hold) dropped by ~$3.84 during a 1.1% price drop. +* **The Cause:** Even though the **Mathematical Delta** was correct (using raw Liquidity), **Execution Friction** (Slippage and "Gamma Bleed") eroded the profit. +* **The Mechanism:** When price drops, we must sell to increase the short. We are always "selling the bottom" of each micro-move. This means our average entry price for the hedge is always worse than the ideal theoretical price. + +#### **Proactive Fix: "Leaning into the Trend"** +We have implemented a creative solution to offset this 0.35% leakage: **Asymmetric Compensation**. + +1. **Linear Bias Adjustment:** The bot no longer calculates a purely symmetric hedge. It now "leans" into the price direction to create a PnL buffer. + * **On Drops (Price < Entry):** The bot **Over-Hedges** by up to **+2.5%** at the bottom edge. This ensures the short gains "extra" value to cover the slippage/fees paid during rebalancing. + * **On Rises (Price > Entry):** The bot **Under-Hedges** by up to **-2.5%** at the top edge. +2. **Efficiency:** Increased rebalance threshold to **15%** and price buffer to **0.25%** to reduce unnecessary churn ("Chop Bleed"). +3. **Visibility:** IDLE and rebalance logs now include an `Adj: +X.X%` tag so the compensation is transparent. + +#### **Lessons Learned:** +* Pure delta-neutrality is theoretical. In a live market with fees and slippage, you must be "slightly biased" in the direction of the move to maintain a neutral **value** (NAV). \ No newline at end of file diff --git a/florida/summaries/positions_chart.PNG b/florida/summaries/positions_chart.PNG new file mode 100644 index 0000000000000000000000000000000000000000..32bea1e44ccc1470c74ee0c4f1875bb14f98b583 GIT binary patch literal 164409 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 b$uRyry0yHVmD5Iq_STtSzF~OncYpd91nerX literal 0 HcmV?d00001 diff --git a/florida/telegram_monitor.py b/florida/telegram_monitor.py new file mode 100644 index 0000000..88c348a --- /dev/null +++ b/florida/telegram_monitor.py @@ -0,0 +1,397 @@ +#!/usr/bin/env python3 +""" +Telegram Monitor for CLP Position Notifications +Monitors hedge_status.json file for new position openings and sends Telegram notifications +""" + +import os +import sys +import time +import json +import logging +import hashlib +import requests +from datetime import datetime +from decimal import Decimal +from typing import Optional, Dict, List, Tuple, Any +from dotenv import load_dotenv + +# --- SETUP PROJECT PATH --- +current_dir = os.path.dirname(os.path.abspath(__file__)) +project_root = os.path.dirname(current_dir) +sys.path.append(current_dir) + +# --- LOGGING SETUP --- +os.makedirs(os.path.join(current_dir, 'logs'), exist_ok=True) + +class UnixMsLogFilter(logging.Filter): + def filter(self, record): + record.unix_ms = int(record.created * 1000) + return True + +logger = logging.getLogger("TELEGRAM_MONITOR") +logger.setLevel(logging.INFO) +logger.propagate = False +logger.handlers.clear() + +# Console handler +console_handler = logging.StreamHandler() +console_handler.setLevel(logging.INFO) +console_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +console_handler.setFormatter(console_formatter) +logger.addHandler(console_handler) + +# File handler +from clp_config import TARGET_DEX + +file_handler = logging.FileHandler(os.path.join(current_dir, 'logs', f'{TARGET_DEX}_telegram_monitor.log'), encoding='utf-8') +file_handler.setLevel(logging.INFO) +file_handler.addFilter(UnixMsLogFilter()) +file_formatter = logging.Formatter('%(unix_ms)d, %(asctime)s - %(name)s - %(levelname)s - %(message)s') +file_handler.setFormatter(file_formatter) +logger.addHandler(file_handler) + +# --- CONFIGURATION --- +load_dotenv(os.path.join(current_dir, '.env')) + +TELEGRAM_ENABLED = os.getenv('TELEGRAM_MONITOR_ENABLED', 'False').lower() == 'true' +TELEGRAM_BOT_TOKEN = os.getenv('TELEGRAM_BOT_TOKEN', '') +TELEGRAM_CHAT_ID = os.getenv('TELEGRAM_CHAT_ID', '') +TELEGRAM_CHECK_INTERVAL = int(os.getenv('TELEGRAM_CHECK_INTERVAL_SECONDS', '60')) +from clp_config import STATUS_FILE +TELEGRAM_STATE_FILE = os.getenv('TELEGRAM_STATE_FILE', 'telegram_monitor_state.json') +TELEGRAM_TIMEOUT = int(os.getenv('TELEGRAM_TIMEOUT_SECONDS', '10')) +HEDGE_STATUS_FILE = os.getenv('HEDGE_STATUS_FILE', STATUS_FILE) + +class TelegramNotifier: + """Handles Telegram API communication""" + + def __init__(self, bot_token: str, chat_id: str): + self.bot_token = bot_token + self.chat_id = chat_id + self.base_url = f"https://api.telegram.org/bot{bot_token}" + + def test_connection(self) -> bool: + """Test Telegram bot connection""" + try: + url = f"{self.base_url}/getMe" + response = requests.get(url, timeout=TELEGRAM_TIMEOUT) + return response.status_code == 200 + except Exception as e: + logger.error(f"Telegram connection test failed: {e}") + return False + + def send_message(self, text: str) -> bool: + """Send message to Telegram chat""" + if not TELEGRAM_ENABLED or not self.bot_token or not self.chat_id: + logger.debug("Telegram notifications disabled or missing credentials") + return False + + try: + url = f"{self.base_url}/sendMessage" + payload = { + 'chat_id': self.chat_id, + 'text': text, + 'parse_mode': 'Markdown' + } + + response = requests.post(url, json=payload, timeout=TELEGRAM_TIMEOUT) + result = response.json() + + if result.get('ok'): + logger.info("Telegram notification sent successfully") + return True + else: + logger.error(f"Telegram API error: {result}") + return False + + except Exception as e: + logger.error(f"Failed to send Telegram message: {e}") + return False + + def format_position_message(self, last_closed: Optional[Dict], current_open: Dict) -> str: + """Format position data into readable message""" + lines = ["NEW CLP POSITION DETECTED\n"] + + # Previous closed position section + if last_closed: + lines.append("LAST CLOSED POSITION:") + lines.append(f"• Token ID: {last_closed.get('token_id', 'N/A')}") + lines.append(f"• Entry: ${last_closed.get('entry_price', 0):.2f}") + lines.append(f"• Target Value: ${last_closed.get('target_value', 0):.2f}") + + # Add duration if timestamps available + if last_closed.get('timestamp_open') and last_closed.get('timestamp_close'): + duration = last_closed['timestamp_close'] - last_closed['timestamp_open'] + hours = duration // 3600 + minutes = (duration % 3600) // 60 + lines.append(f"• Duration: {hours}h {minutes}m") + + # Add hedge performance if available + hedge_pnl = last_closed.get('hedge_pnl_realized', 0) + if hedge_pnl != 0: + lines.append(f"• Hedge PnL: ${hedge_pnl:.2f}") + + hedge_fees = last_closed.get('hedge_fees_paid', 0) + if hedge_fees != 0: + lines.append(f"• Hedge Fees: ${hedge_fees:.2f}") + else: + lines.append("LAST CLOSED POSITION: None") + + lines.append("") # Empty line + + # Current opened position section + lines.append("CURRENTLY OPENED:") + lines.append(f"• Token ID: {current_open.get('token_id', 'N/A')}") + lines.append(f"• Entry: ${current_open.get('entry_price', 0):.2f}") + lines.append(f"• Target Value: ${current_open.get('target_value', 0):.2f}") + + # Range information + range_lower = current_open.get('range_lower', 0) + range_upper = current_open.get('range_upper', 0) + if range_lower and range_upper: + lines.append(f"• Range: ${range_lower:.2f} - ${range_upper:.2f}") + + # Initial amounts + amount0 = current_open.get('amount0_initial', 0) + amount1 = current_open.get('amount1_initial', 0) + if amount0 and amount1: + lines.append(f"• Initial: {amount0:.4f} ETH + {amount1:.2f} USDC") + + # Time since opening + if current_open.get('timestamp_open'): + age = int(time.time()) - current_open['timestamp_open'] + hours = age // 3600 + minutes = (age % 3600) // 60 + lines.append(f"• Time: {hours}h {minutes}m ago") + + # Performance comparison if we have both positions + if last_closed and current_open: + lines.append("") # Empty line + lines.append("PERFORMANCE COMPARISON:") + + # Entry price change + last_entry = Decimal(str(last_closed.get('entry_price', 0))) + curr_entry = Decimal(str(current_open.get('entry_price', 0))) + if last_entry > 0: + entry_change = curr_entry - last_entry + entry_change_pct = (entry_change / last_entry) * 100 + sign = "+" if entry_change >= 0 else "" + lines.append(f"• Entry Change: {sign}${entry_change:.2f} ({sign}{entry_change_pct:.2f}%)") + + # Value change + last_value = Decimal(str(last_closed.get('target_value', 0))) + curr_value = Decimal(str(current_open.get('target_value', 0))) + if last_value > 0: + value_change = curr_value - last_value + value_change_pct = (value_change / last_value) * 100 + sign = "+" if value_change >= 0 else "" + lines.append(f"• Value Change: {sign}${value_change:.2f} ({sign}{value_change_pct:.2f}%)") + + # Hedge PnL trend + last_hedge_pnl = last_closed.get('hedge_pnl_realized', 0) + curr_hedge_equity = current_open.get('hedge_equity_usd', 0) + if last_hedge_pnl != 0 and curr_hedge_equity != 0: + hedge_trend = curr_hedge_equity - last_hedge_pnl + sign = "+" if hedge_trend >= 0 else "" + lines.append(f"• Hedge PnL Trend: ${last_hedge_pnl:.2f} -> ${curr_hedge_equity:.2f} ({sign}${hedge_trend:.2f})") + + return "\n".join(lines) + + +class PositionMonitor: + """Monitors hedge_status.json for changes""" + + def __init__(self, json_file_path: str, state_file_path: str): + self.json_file_path = json_file_path + self.state_file_path = state_file_path + self.last_known_data = [] + self.last_file_hash = "" + self.state = self.load_state() + + def load_state(self) -> Dict[str, Any]: + """Load monitor state from file""" + try: + if os.path.exists(self.state_file_path): + with open(self.state_file_path, 'r') as f: + return json.load(f) + except Exception as e: + logger.warning(f"Could not load state file: {e}") + + return { + "last_known_open_positions": [], + "last_processed_timestamp": 0, + "last_file_hash": "" + } + + def save_state(self): + """Save monitor state to file""" + try: + with open(self.state_file_path, 'w') as f: + json.dump(self.state, f, indent=2) + except Exception as e: + logger.error(f"Could not save state file: {e}") + + def get_file_hash(self, data: List[Dict]) -> str: + """Generate hash of file content to detect changes""" + content = json.dumps(data, sort_keys=True) + return hashlib.md5(content.encode()).hexdigest() + + def safe_read_json(self) -> List[Dict]: + """Safely read JSON file with retry logic""" + attempts = 0 + while attempts < 3: + try: + if not os.path.exists(self.json_file_path): + logger.warning(f"JSON file not found: {self.json_file_path}") + return [] + + with open(self.json_file_path, 'r') as f: + return json.load(f) + + except (json.JSONDecodeError, IOError) as e: + logger.warning(f"Attempt {attempts + 1}: Error reading JSON file: {e}") + time.sleep(1) + attempts += 1 + + logger.error("Failed to read JSON file after 3 attempts") + return [] + + def extract_notification_data(self, data: List[Dict]) -> Tuple[Optional[Dict], Optional[Dict]]: + """Extract last closed and current open positions""" + current_open = None + last_closed = None + + # Find current open position + for item in data: + if item.get('status') == 'OPEN': + current_open = item + break + + # Find most recent closed position + closed_positions = [item for item in data if item.get('status') == 'CLOSED'] + if closed_positions: + # Sort by timestamp_open (descending) to get most recent + closed_positions.sort(key=lambda x: x.get('timestamp_open', 0), reverse=True) + last_closed = closed_positions[0] + + return last_closed, current_open + + def check_for_changes(self) -> bool: + """Check if there are changes requiring notification""" + current_data = self.safe_read_json() + + if not current_data: + return False + + # Check if file content actually changed + current_hash = self.get_file_hash(current_data) + if current_hash == self.state.get("last_file_hash", ""): + return False + + # Extract positions + last_closed, current_open = self.extract_notification_data(current_data) + + if not current_open: + # No open position, nothing to notify about + return False + + current_open_id = current_open.get('token_id') + last_known_opens = self.state.get("last_known_open_positions", []) + + # Check if this is a new open position + if current_open_id not in last_known_opens: + # New position detected! + self.last_known_data = current_data + return True + + return False + + def get_notification_data(self) -> Tuple[Optional[Dict], Optional[Dict]]: + """Get data for notification""" + current_data = self.safe_read_json() + return self.extract_notification_data(current_data) + + def update_state(self): + """Update internal state after notification""" + current_data = self.safe_read_json() + if current_data: + _, current_open = self.extract_notification_data(current_data) + + if current_open: + # Update state with current open positions + self.state["last_known_open_positions"] = [current_open.get('token_id')] + self.state["last_processed_timestamp"] = int(time.time()) + self.state["last_file_hash"] = self.get_file_hash(current_data) + self.save_state() + + +def main(): + """Main monitoring loop""" + logger.info("🤖 Telegram Monitor Starting...") + + notifier = None + if not TELEGRAM_ENABLED: + logger.info("📵 Telegram notifications disabled (TELEGRAM_MONITOR_ENABLED=False)") + else: + if not TELEGRAM_BOT_TOKEN or not TELEGRAM_CHAT_ID: + logger.error("❌ Telegram enabled but missing BOT_TOKEN or CHAT_ID") + return + + # Initialize notifier and test connection + notifier = TelegramNotifier(TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID) + if not notifier.test_connection(): + logger.error("❌ Telegram connection failed - check token and network") + return + + logger.info(f"✅ Telegram connection established to chat ID: {TELEGRAM_CHAT_ID}") + + # Initialize monitor + monitor = PositionMonitor(HEDGE_STATUS_FILE, TELEGRAM_STATE_FILE) + + logger.info(f"Monitoring file: {HEDGE_STATUS_FILE}") + logger.info(f"Check interval: {TELEGRAM_CHECK_INTERVAL} seconds") + logger.info(f"State file: {TELEGRAM_STATE_FILE}") + + try: + while True: + try: + if monitor.check_for_changes(): + logger.info("New position opening detected!") + + if TELEGRAM_ENABLED and notifier: + last_closed, current_open = monitor.get_notification_data() + + if current_open: + message = notifier.format_position_message(last_closed, current_open) + success = notifier.send_message(message) + + if success: + monitor.update_state() + logger.info(f"Notification sent for position {current_open.get('token_id')}") + else: + logger.error("Failed to send notification") + else: + logger.warning("Position change detected but no open position found") + else: + logger.info("Telegram disabled or notifier not available - skipping notification") + monitor.update_state() # Still update state to avoid loops + else: + logger.debug("No changes detected") + + time.sleep(TELEGRAM_CHECK_INTERVAL) + + except KeyboardInterrupt: + break + except Exception as e: + logger.error(f"Error in monitoring loop: {e}") + time.sleep(TELEGRAM_CHECK_INTERVAL) # Continue after error + + except KeyboardInterrupt: + logger.info("Shutting down Telegram Monitor...") + + logger.info("Telegram Monitor stopped") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/florida/telegram_monitor_state.json b/florida/telegram_monitor_state.json new file mode 100644 index 0000000..e077373 --- /dev/null +++ b/florida/telegram_monitor_state.json @@ -0,0 +1,7 @@ +{ + "last_known_open_positions": [ + 5180968 + ], + "last_processed_timestamp": 1766874912, + "last_file_hash": "beda382fdbca542dc8357002b4527702" +} \ No newline at end of file diff --git a/florida/tools/README_GIT_AGENT.md b/florida/tools/README_GIT_AGENT.md new file mode 100644 index 0000000..a0a675f --- /dev/null +++ b/florida/tools/README_GIT_AGENT.md @@ -0,0 +1,262 @@ +# Git Agent for Uniswap Auto CLP + +## Overview +Automated backup and version control system for your Uniswap Auto CLP trading bot. + +## Quick Setup + +### 1. Initialize Repository +```bash +# Navigate to project directory +cd K:\Projects\uniswap_auto_clp + +# Create initial commit +python tools\git_agent.py --init + +# Add and push initial setup +git add . +git commit -m "🎯 Initial commit: Uniswap Auto CLP system" +git remote add origin https://git.kapuscinski.pl/ditus/uniswap_auto_clp.git +git push -u origin main +``` + +### 2. Create First Backup +```bash +# Test backup creation +python tools\git_agent.py --backup +``` + +### 3. Check Status +```bash +# View current status +python tools\git_agent.py --status +``` + +## Configuration + +Edit `tools/agent_config.json` as needed: + +```json +{ + "backup": { + "enabled": true, + "frequency_hours": 1, + "keep_max_count": 100, + "push_to_remote": true + } +} +``` + +## Usage Commands + +### Manual Operations +```bash +# Create backup now +python tools\git_agent.py --backup + +# Check status +python tools\git_agent.py --status + +# Cleanup old backups +python tools\git_agent.py --cleanup + +# Initialize repository (one-time) +python tools\git_agent.py --init +``` + +### Automated Scheduling + +#### Windows Task Scheduler +```powershell +# Create hourly task +schtasks /create /tn "Git Backup" /tr "python tools\git_agent.py --backup" /sc hourly +``` + +#### Linux Cron (if needed) +```bash +# Add to crontab +0 * * * * cd /path/to/project && python tools/git_agent.py --backup +``` + +## How It Works + +### Branch Strategy +- **main branch**: Your manual development (you control pushes) +- **backup-* branches**: Automatic hourly backups (agent managed) + +### Backup Process +1. **Hourly**: Agent checks for file changes +2. **Creates backup branch**: Named `backup-YYYY-MM-DD-HH` +3. **Commits changes**: With detailed file and parameter tracking +4. **Pushes to remote**: Automatic backup to Gitea +5. **Cleans up**: Keeps only last 100 backups + +### Backup Naming +``` +backup-2025-01-15-14 # 2 PM backup on Jan 15, 2025 +backup-2025-01-15-15 # 3 PM backup +backup-2025-01-15-16 # 4 PM backup +``` + +### Commit Messages +Agent creates detailed commit messages showing: +- Files changed with status icons +- Parameter changes with percentage differences +- Security validation confirmation +- Timestamp and backup number + +## Security + +### What's Excluded +✅ Private keys and tokens (`.env` files) +✅ Log files (`*.log`) +✅ State files (`hedge_status.json`) +✅ Temporary files + +### What's Included +✅ All code changes +✅ Configuration modifications +✅ Documentation updates +✅ Parameter tracking + +## Emergency Recovery + +### Quick Rollback +```bash +# List recent backups +python tools\git_agent.py --status + +# Switch to backup +git checkout backup-2025-01-15-14 + +# Copy files to main +git checkout main -- . +git commit -m "🔄 Emergency restore from backup-2025-01-15-14" +git push origin main +``` + +### File Recovery +```bash +# Restore specific file from backup +git checkout backup-2025-01-15-14 -- path/to/file.py +``` + +## Monitoring + +### Backup Health +```bash +# Check backup count and status +python tools\git_agent.py --status + +# Expected output: +# 📊 Git Agent Status: +# Current Branch: main +# Backup Count: 47 +# Has Changes: false +# Remote Connected: true +# Last Backup: backup-2025-01-15-16 +``` + +### Manual Cleanup +```bash +# Remove old backups (keeps last 100) +python tools\git_agent.py --cleanup +``` + +## Troubleshooting + +### Common Issues + +#### "Configuration file not found" +```bash +# Ensure agent_config.json exists in tools/ directory +ls tools/agent_config.json +``` + +#### "Git command failed" +```bash +# Check Git installation and repository status +git status +git --version +``` + +#### "Remote connection failed" +```bash +# Verify Gitea URL and credentials +git remote -v +ping git.kapuscinski.pl +``` + +### Debug Mode +Edit `agent_config.json`: +```json +{ + "logging": { + "enabled": true, + "log_level": "DEBUG" + } +} +``` + +Then check `git_agent.log` in project root. + +## Integration with Trading Bot + +### Parameter Changes +Agent automatically tracks changes to: +- `TARGET_INVESTMENT_VALUE_USDC` +- `RANGE_WIDTH_PCT` +- `SLIPPAGE_TOLERANCE` +- `LEVERAGE` +- `CHECK_INTERVAL` +- `PRICE_BUFFER_PCT` + +### Backup Triggers +Consider manual backups when: +- Changing trading strategy parameters +- Updating risk management settings +- Before major system changes +- After successful backtesting + +```bash +# Manual backup before important changes +python tools\git_agent.py --backup +``` + +## Best Practices + +### Development Workflow +1. **Work on main branch** for normal development +2. **Manual commits** for your changes +3. **Agent handles backups** automatically +4. **Manual push** to main when ready + +### Backup Management +- **100 backup limit** = ~4 days of hourly coverage +- **Automatic cleanup** maintains repository size +- **Remote storage** provides offsite backup + +### Security Reminders +- **Never commit private keys** (automatically excluded) +- **Check .gitignore** if adding sensitive files +- **Review backup commits** for accidental secrets + +## Support + +### Log Files +- `git_agent.log`: Agent activity and errors +- Check logs for troubleshooting issues + +### Repository Structure +``` +tools/ +├── git_agent.py # Main automation script +├── agent_config.json # Configuration settings +├── git_utils.py # Git operations +├── backup_manager.py # Backup branch logic +├── change_detector.py # Change analysis +├── cleanup_manager.py # Backup rotation +└── commit_formatter.py # Message formatting +``` + +This automated backup system ensures your trading bot code is always versioned and recoverable, while keeping your main development workflow clean and manual. \ No newline at end of file diff --git a/florida/tools/agent_config.json b/florida/tools/agent_config.json new file mode 100644 index 0000000..ec220e4 --- /dev/null +++ b/florida/tools/agent_config.json @@ -0,0 +1,35 @@ +{ + "gitea": { + "server_url": "https://git.kapuscinski.pl", + "username": "ditus", + "repository": "uniswap_auto_clp", + "token": "b24fc3203597b2bdcb2f2da6634c618" + }, + "backup": { + "enabled": true, + "frequency_hours": 1, + "branch_prefix": "backup-", + "push_to_remote": true, + "keep_max_count": 100, + "cleanup_with_backup": true, + "detailed_commit_messages": true + }, + "main_branch": { + "manual_pushes_only": true, + "auto_commits": false, + "protect_from_agent": true, + "name": "main" + }, + "change_tracking": { + "method": "commit_message", + "include_file_diffs": true, + "track_parameter_changes": true, + "format": "detailed", + "security_validation": false + }, + "logging": { + "enabled": true, + "log_file": "git_agent.log", + "log_level": "INFO" + } +} \ No newline at end of file diff --git a/florida/tools/backup_manager.py b/florida/tools/backup_manager.py new file mode 100644 index 0000000..a7c34d3 --- /dev/null +++ b/florida/tools/backup_manager.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +""" +Backup Manager for Git Agent +Handles backup branch creation and management +""" + +import os +import logging +from datetime import datetime, timezone +from typing import Dict, Any + +class BackupManager: + """Manages backup branch operations""" + + def __init__(self, config: Dict[str, Any], logger: logging.Logger): + self.config = config + self.logger = logger + self.backup_config = config.get('backup', {}) + self.prefix = self.backup_config.get('branch_prefix', 'backup-') + + def create_backup_branch(self) -> str: + """Create a new backup branch with timestamp""" + timestamp = datetime.now(timezone.utc) + branch_name = f"{self.prefix}{timestamp.strftime('%Y-%m-%d-%H')}" + + # Get current directory from git utils + current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + # Create backup branch + import subprocess + try: + # Create and checkout new branch + result = subprocess.run( + ['git', 'checkout', '-b', branch_name], + cwd=current_dir, + capture_output=True, + text=True, + check=False + ) + + if result.returncode == 0: + self.logger.info(f"✅ Created backup branch: {branch_name}") + return branch_name + else: + # Branch might already exist, just checkout + result = subprocess.run( + ['git', 'checkout', branch_name], + cwd=current_dir, + capture_output=True, + text=True, + check=False + ) + + if result.returncode == 0: + self.logger.info(f"✅ Using existing backup branch: {branch_name}") + return branch_name + else: + self.logger.error(f"❌ Failed to create/checkout backup branch: {result.stderr}") + return None + + except Exception as e: + self.logger.error(f"❌ Exception creating backup branch: {e}") + return None + + def get_backup_count(self) -> int: + """Get current number of backup branches""" + current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + try: + result = subprocess.run( + ['git', 'branch', '-a'], + cwd=current_dir, + capture_output=True, + text=True, + check=False + ) + + if result.returncode == 0: + branches = result.stdout.strip().split('\n') + backup_branches = [ + b.strip().replace('* ', '').replace('remotes/origin/', '') + for b in branches + if b.strip() and self.prefix in b + ] + return len(backup_branches) + + except Exception as e: + self.logger.error(f"❌ Error counting backup branches: {e}") + + return 0 \ No newline at end of file diff --git a/florida/tools/change_detector.py b/florida/tools/change_detector.py new file mode 100644 index 0000000..f4a7f5e --- /dev/null +++ b/florida/tools/change_detector.py @@ -0,0 +1,230 @@ +#!/usr/bin/env python3 +""" +Change Detector for Git Agent +Detects and analyzes file changes for detailed commit messages +""" + +import os +import re +import subprocess +import logging +from typing import Dict, Any, List +from decimal import Decimal + +class ChangeDetector: + """Detects and categorizes file changes""" + + def __init__(self, config: Dict[str, Any], logger: logging.Logger): + self.config = config + self.logger = logger + self.project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + def detect_changes(self) -> Dict[str, Any]: + """Detect all changes in the repository""" + try: + # Get changed files + changed_files = self._get_changed_files() + + if not changed_files: + return { + 'has_changes': False, + 'files': [], + 'categories': {}, + 'parameter_changes': {} + } + + # Analyze changes + file_details = [] + categories = { + 'python': [], + 'config': [], + 'docs': [], + 'other': [] + } + parameter_changes = {} + + for file_path in changed_files: + details = self._analyze_file_changes(file_path) + file_details.append(details) + + # Categorize file + category = self._categorize_file(file_path) + categories[category].append(details) + + # Track parameter changes for Python files + if category == 'python': + params = self._extract_parameter_changes(file_path, details.get('diff', '')) + if params: + parameter_changes[file_path] = params + + return { + 'has_changes': True, + 'files': file_details, + 'categories': categories, + 'parameter_changes': parameter_changes + } + + except Exception as e: + self.logger.error(f"❌ Error detecting changes: {e}") + return { + 'has_changes': False, + 'files': [], + 'categories': {}, + 'parameter_changes': {}, + 'error': str(e) + } + + def _get_changed_files(self) -> List[str]: + """Get list of changed files using git status""" + try: + result = subprocess.run( + ['git', 'status', '--porcelain'], + cwd=self.project_root, + capture_output=True, + text=True, + check=False + ) + + if result.returncode != 0: + return [] + + files = [] + for line in result.stdout.strip().split('\n'): + if line.strip(): + # Extract filename (remove status codes) + filename = line.strip()[2:] if len(line.strip()) > 2 else line.strip() + if filename and filename not in ['.git', '__pycache__']: + files.append(filename) + + return files + + except Exception as e: + self.logger.error(f"Error getting changed files: {e}") + return [] + + def _analyze_file_changes(self, file_path: str) -> Dict[str, Any]: + """Analyze changes for a specific file""" + try: + # Get diff + result = subprocess.run( + ['git', 'diff', '--', file_path], + cwd=self.project_root, + capture_output=True, + text=True, + check=False + ) + + diff = result.stdout if result.returncode == 0 else '' + + # Get file status + status_result = subprocess.run( + ['git', 'status', '--porcelain', '--', file_path], + cwd=self.project_root, + capture_output=True, + text=True, + check=False + ) + + status = 'modified' + if status_result.returncode == 0 and status_result.stdout.strip(): + status_line = status_result.stdout.strip()[0] + if status_line == 'A': + status = 'added' + elif status_line == 'D': + status = 'deleted' + elif status_line == '??': + status = 'untracked' + + # Count lines changed + lines_added = diff.count('\n+') - diff.count('\n++') # Exclude +++ indicators + lines_deleted = diff.count('\n-') - diff.count('\n--') # Exclude --- indicators + + return { + 'path': file_path, + 'status': status, + 'lines_added': max(0, lines_added), + 'lines_deleted': max(0, lines_deleted), + 'diff': diff + } + + except Exception as e: + self.logger.error(f"Error analyzing {file_path}: {e}") + return { + 'path': file_path, + 'status': 'error', + 'lines_added': 0, + 'lines_deleted': 0, + 'diff': '', + 'error': str(e) + } + + def _categorize_file(self, file_path: str) -> str: + """Categorize file type""" + if file_path.endswith('.py'): + return 'python' + elif file_path.endswith(('.json', '.yaml', '.yml', '.toml', '.ini')): + return 'config' + elif file_path.endswith(('.md', '.txt', '.rst')): + return 'docs' + else: + return 'other' + + def _extract_parameter_changes(self, file_path: str, diff: str) -> Dict[str, Any]: + """Extract parameter changes from Python files""" + if not diff or not file_path.endswith('.py'): + return {} + + parameters = {} + + # Common trading bot parameters to track + param_patterns = { + 'TARGET_INVESTMENT_VALUE_USDC': r'(TARGET_INVESTMENT_VALUE_USDC)\s*=\s*(\d+)', + 'RANGE_WIDTH_PCT': r'(RANGE_WIDTH_PCT)\s*=\s*Decimal\("([^"]+)"\)', + 'SLIPPAGE_TOLERANCE': r'(SLIPPAGE_TOLERANCE)\s*=\s*Decimal\("([^"]+)"\)', + 'LEVERAGE': r'(LEVERAGE)\s*=\s*(\d+)', + 'MIN_THRESHOLD_ETH': r'(MIN_THRESHOLD_ETH)\s*=\s*Decimal\("([^"]+)"\)', + 'CHECK_INTERVAL': r'(CHECK_INTERVAL)\s*=\s*(\d+)', + 'PRICE_BUFFER_PCT': r'(PRICE_BUFFER_PCT)\s*=\s*Decimal\("([^"]+)"\)' + } + + for param_name, pattern in param_patterns.items(): + matches = re.findall(pattern, diff) + if matches: + # Find old and new values + values = [] + for match in matches: + if isinstance(match, tuple): + values.append(match[1] if len(match) > 1 else match[0]) + else: + values.append(match) + + if len(values) >= 2: + old_val = values[0] + new_val = values[-1] # Last value is current + + # Calculate percentage change for numeric values + try: + if '.' in old_val or '.' in new_val: + old_num = float(old_val) + new_num = float(new_val) + if old_num != 0: + pct_change = ((new_num - old_num) / abs(old_num)) * 100 + else: + pct_change = 0 + else: + old_num = int(old_val) + new_num = int(new_val) + if old_num != 0: + pct_change = ((new_num - old_num) / abs(old_num)) * 100 + else: + pct_change = 0 + except (ValueError, ZeroDivisionError): + pct_change = 0 + + parameters[param_name] = { + 'old': old_val, + 'new': new_val, + 'pct_change': round(pct_change, 1) + } + + return parameters \ No newline at end of file diff --git a/florida/tools/cleanup_manager.py b/florida/tools/cleanup_manager.py new file mode 100644 index 0000000..1e520cf --- /dev/null +++ b/florida/tools/cleanup_manager.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python3 +""" +Cleanup Manager for Git Agent +Manages backup branch rotation (keep last 100) +""" + +import os +import subprocess +import logging +from typing import Dict, Any, List + +class CleanupManager: + """Manages backup branch cleanup and rotation""" + + def __init__(self, config: Dict[str, Any], logger: logging.Logger): + self.config = config + self.logger = logger + self.backup_config = config.get('backup', {}) + self.prefix = self.backup_config.get('branch_prefix', 'backup-') + self.max_backups = self.backup_config.get('keep_max_count', 100) + self.project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + def cleanup_old_backups(self) -> bool: + """Clean up old backup branches to keep only the last N""" + try: + # Get all backup branches + backup_branches = self._get_backup_branches() + + if len(backup_branches) <= self.max_backups: + self.logger.info(f"✅ Backup count ({len(backup_branches)}) within limit ({self.max_backups})") + return False # No cleanup needed + + # Branches to delete (oldest ones) + branches_to_delete = backup_branches[self.max_backups:] + + if not branches_to_delete: + return False + + self.logger.info(f"🧹 Cleaning up {len(branches_to_delete)} old backup branches") + + deleted_count = 0 + for branch in branches_to_delete: + # Delete local branch + if self._delete_local_branch(branch): + # Delete remote branch + if self._delete_remote_branch(branch): + deleted_count += 1 + self.logger.debug(f" ✅ Deleted: {branch}") + else: + self.logger.warning(f" ⚠️ Local deleted, remote failed: {branch}") + else: + self.logger.warning(f" ❌ Failed to delete: {branch}") + + if deleted_count > 0: + self.logger.info(f"✅ Cleanup completed: deleted {deleted_count} old backup branches") + return True + else: + self.logger.warning("⚠️ No branches were successfully deleted") + return False + + except Exception as e: + self.logger.error(f"❌ Cleanup failed: {e}") + return False + + def _get_backup_branches(self) -> List[str]: + """Get all backup branches sorted by timestamp (newest first)""" + try: + result = subprocess.run( + ['git', 'branch', '-a'], + cwd=self.project_root, + capture_output=True, + text=True, + check=False + ) + + if result.returncode != 0: + return [] + + branches = [] + for line in result.stdout.strip().split('\n'): + if line.strip(): + # Clean up branch name + branch = line.strip().replace('* ', '').replace('remotes/origin/', '') + if branch.startswith(self.prefix): + branches.append(branch) + + # Sort by timestamp (extract from branch name) + # Format: backup-YYYY-MM-DD-HH + branches.sort(key=lambda x: x.replace(self.prefix, ''), reverse=True) + return branches + + except Exception as e: + self.logger.error(f"Error getting backup branches: {e}") + return [] + + def _delete_local_branch(self, branch_name: str) -> bool: + """Delete local branch""" + try: + result = subprocess.run( + ['git', 'branch', '-D', branch_name], + cwd=self.project_root, + capture_output=True, + text=True, + check=False + ) + + if result.returncode == 0: + return True + else: + self.logger.debug(f"Local delete failed for {branch_name}: {result.stderr}") + return False + + except Exception as e: + self.logger.error(f"Exception deleting local branch {branch_name}: {e}") + return False + + def _delete_remote_branch(self, branch_name: str) -> bool: + """Delete remote branch""" + try: + result = subprocess.run( + ['git', 'push', 'origin', '--delete', branch_name], + cwd=self.project_root, + capture_output=True, + text=True, + check=False + ) + + if result.returncode == 0: + return True + else: + # Might already be deleted remotely, that's ok + if "not found" in result.stderr.lower() or "does not exist" in result.stderr.lower(): + return True + self.logger.debug(f"Remote delete failed for {branch_name}: {result.stderr}") + return False + + except Exception as e: + self.logger.error(f"Exception deleting remote branch {branch_name}: {e}") + return False + + def get_cleanup_stats(self) -> Dict[str, Any]: + """Get statistics about backup cleanup""" + backup_branches = self._get_backup_branches() + current_count = len(backup_branches) + + return { + 'current_backup_count': current_count, + 'max_allowed': self.max_backups, + 'cleanup_needed': current_count > self.max_backups, + 'branches_to_delete': max(0, current_count - self.max_backups), + 'newest_backup': backup_branches[0] if backup_branches else None, + 'oldest_backup': backup_branches[-1] if backup_branches else None + } \ No newline at end of file diff --git a/florida/tools/collect_fees_v2 copy.py b/florida/tools/collect_fees_v2 copy.py new file mode 100644 index 0000000..4fe1831 --- /dev/null +++ b/florida/tools/collect_fees_v2 copy.py @@ -0,0 +1,325 @@ +#!/usr/bin/env python3 +""" +Fee Collection & Position Recovery Script +Collects all accumulated fees from Uniswap V3 positions + +Usage: +python collect_fees_v2.py +""" + +import os +import sys +import json +import time +import argparse + +# Required libraries +try: + from web3 import Web3 + from eth_account import Account +except ImportError as e: + print(f"[ERROR] Missing required library: {e}") + print("Please install with: pip install web3 eth-account python-dotenv") + sys.exit(1) + +try: + from dotenv import load_dotenv +except ImportError: + print("[WARNING] python-dotenv not found, using environment variables directly") + def load_dotenv(override=True): + pass + +def setup_logging(): + """Setup logging for fee collection""" + import logging + logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + handlers=[ + logging.StreamHandler(), + logging.FileHandler('collect_fees.log', encoding='utf-8') + ] + ) + return logging.getLogger(__name__) + +logger = setup_logging() + +# --- Contract ABIs --- +NONFUNGIBLE_POSITION_MANAGER_ABI = json.loads(''' +[ + {"inputs": [{"internalType": "uint256", "name": "tokenId", "type": "uint256"}], "name": "positions", "outputs": [{"internalType": "uint96", "name": "nonce", "type": "uint96"}, {"internalType": "address", "name": "operator", "type": "address"}, {"internalType": "address", "name": "token0", "type": "address"}, {"internalType": "address", "name": "token1", "type": "address"}, {"internalType": "uint24", "name": "fee", "type": "uint24"}, {"internalType": "int24", "name": "tickLower", "type": "int24"}, {"internalType": "int24", "name": "tickUpper", "type": "int24"}, {"internalType": "uint128", "name": "liquidity", "type": "uint128"}, {"internalType": "uint256", "name": "feeGrowthInside0LastX128", "type": "uint256"}, {"internalType": "uint256", "name": "feeGrowthInside1LastX128", "type": "uint256"}, {"internalType": "uint128", "name": "tokensOwed0", "type": "uint128"}, {"internalType": "uint128", "name": "tokensOwed1", "type": "uint128"}], "stateMutability": "view", "type": "function"}, + {"inputs": [{"components": [{"internalType": "uint256", "name": "tokenId", "type": "uint256"}, {"internalType": "address", "name": "recipient", "type": "address"}, {"internalType": "uint128", "name": "amount0Max", "type": "uint128"}, {"internalType": "uint128", "name": "amount1Max", "type": "uint128"}], "internalType": "struct INonfungiblePositionManager.CollectParams", "name": "params", "type": "tuple"}], "name": "collect", "outputs": [{"internalType": "uint256", "name": "amount0", "type": "uint256"}, {"internalType": "uint256", "name": "amount1", "type": "uint256"}], "stateMutability": "payable", "type": "function"} +] +''') + +ERC20_ABI = json.loads(''' +[ + {"inputs": [], "name": "decimals", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "stateMutability": "view", "type": "function"}, + {"inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "stateMutability": "view", "type": "function"}, + {"inputs": [{"internalType": "address", "name": "account", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "stateMutability": "view", "type": "function"} +] +''') + +def load_status_file(): + """Load hedge status file""" + status_file = "hedge_status.json" + if not os.path.exists(status_file): + logger.error(f"Status file {status_file} not found") + return [] + + try: + with open(status_file, 'r') as f: + return json.load(f) + except Exception as e: + logger.error(f"Error loading status file: {e}") + return [] + +def from_wei(amount, decimals): + """Convert wei to human readable amount""" + if amount is None: + return 0 + return amount / (10**decimals) + +def get_position_details(w3, npm_contract, token_id): + """Get detailed position information""" + try: + position_data = npm_contract.functions.positions(token_id).call() + (nonce, operator, token0_address, token1_address, fee, tickLower, tickUpper, + liquidity, feeGrowthInside0, feeGrowthInside1, tokensOwed0, tokensOwed1) = position_data + + # Get token details + token0_contract = w3.eth.contract(address=token0_address, abi=ERC20_ABI) + token1_contract = w3.eth.contract(address=token1_address, abi=ERC20_ABI) + + token0_symbol = token0_contract.functions.symbol().call() + token1_symbol = token1_contract.functions.symbol().call() + token0_decimals = token0_contract.functions.decimals().call() + token1_decimals = token1_contract.functions.decimals().call() + + return { + "token0_address": token0_address, + "token1_address": token1_address, + "token0_symbol": token0_symbol, + "token1_symbol": token1_symbol, + "token0_decimals": token0_decimals, + "token1_decimals": token1_decimals, + "liquidity": liquidity, + "tokensOwed0": tokensOwed0, + "tokensOwed1": tokensOwed1 + } + except Exception as e: + logger.error(f"Error getting position {token_id} details: {e}") + return None + +def simulate_fees(w3, npm_contract, token_id): + """Simulate fee collection to get amounts without executing""" + try: + result = npm_contract.functions.collect( + (token_id, "0x0000000000000000000000000000000000000000", 2**128-1, 2**128-1) + ).call() + return result[0], result[1] # amount0, amount1 + except Exception as e: + logger.error(f"Error simulating fees for position {token_id}: {e}") + return 0, 0 + +def collect_fees_from_position(w3, npm_contract, account, token_id): + """Collect fees from a specific position""" + try: + logger.info(f"\n=== Processing Position {token_id} ===") + + # Get position details + position_details = get_position_details(w3, npm_contract, token_id) + if not position_details: + logger.error(f"Could not get details for position {token_id}") + return False + + logger.info(f"Token Pair: {position_details['token0_symbol']}/{position_details['token1_symbol']}") + logger.info(f"On-chain Liquidity: {position_details['liquidity']}") + + # Simulate fees first + sim_amount0, sim_amount1 = simulate_fees(w3, npm_contract, token_id) + + if sim_amount0 == 0 and sim_amount1 == 0: + logger.info(f"No fees available for position {token_id}") + return True + + logger.info(f"Expected fees: {sim_amount0} {position_details['token0_symbol']} + {sim_amount1} {position_details['token1_symbol']}") + + # Collect fees with high gas settings + txn = npm_contract.functions.collect( + (token_id, account.address, 2**128-1, 2**128-1) + ).build_transaction({ + 'from': account.address, + 'nonce': w3.eth.get_transaction_count(account.address), + 'gas': 300000, # High gas limit + 'maxFeePerGas': w3.eth.gas_price * 4, # 4x gas price + 'maxPriorityFeePerGas': w3.eth.max_priority_fee * 3, + 'chainId': w3.eth.chain_id + }) + + # Sign and send + signed_txn = w3.eth.account.sign_transaction(txn, private_key=account.key) + tx_hash = w3.eth.send_raw_transaction(signed_txn.raw_transaction) + + logger.info(f"Collect fees sent: {tx_hash.hex()}") + logger.info(f"Arbiscan: https://arbiscan.io/tx/{tx_hash.hex()}") + + # Wait with extended timeout + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=600) + + if receipt.status == 1: + logger.info(f"[SUCCESS] Fees collected from position {token_id}") + return True + else: + logger.error(f"[ERROR] Fee collection failed for position {token_id}. Status: {receipt.status}") + return False + + except Exception as e: + logger.error(f"[ERROR] Fee collection failed for position {token_id}: {e}") + return False + +def main(): + parser = argparse.ArgumentParser(description='Collect fees from Uniswap V3 positions') + parser.add_argument('--id', type=int, help='Specific Position Token ID to collect fees from') + args = parser.parse_args() + + logger.info("=== Fee Collection Script v2 ===") + logger.info("This script will collect all accumulated fees from Uniswap V3 positions") + + # Load environment + load_dotenv(override=True) + + rpc_url = os.environ.get("MAINNET_RPC_URL") + private_key = os.environ.get("MAIN_WALLET_PRIVATE_KEY") or os.environ.get("PRIVATE_KEY") + + if not rpc_url or not private_key: + logger.error("[ERROR] Missing RPC URL or Private Key") + logger.error("Please ensure MAINNET_RPC_URL and PRIVATE_KEY are set in your .env file") + return + + # Connect to Arbitrum + try: + w3 = Web3(Web3.HTTPProvider(rpc_url)) + if not w3.is_connected(): + logger.error("[ERROR] Failed to connect to Arbitrum RPC") + return + logger.info(f"[SUCCESS] Connected to Chain ID: {w3.eth.chain_id}") + except Exception as e: + logger.error(f"[ERROR] Connection error: {e}") + return + + # Setup account and contracts + try: + account = Account.from_key(private_key) + w3.eth.default_account = account.address + logger.info(f"Wallet: {account.address}") + + # Using string address format directly + npm_address = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + npm_contract = w3.eth.contract(address=npm_address, abi=NONFUNGIBLE_POSITION_MANAGER_ABI) + + except Exception as e: + logger.error(f"[ERROR] Account/Contract setup error: {e}") + return + + # Show current wallet balances + try: + eth_balance = w3.eth.get_balance(account.address) + logger.info(f"ETH Balance: {eth_balance / 10**18:.6f} ETH") + + # Check token balances using basic addresses + try: + weth_address = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" + weth_contract = w3.eth.contract(address=weth_address, abi=ERC20_ABI) + weth_balance = weth_contract.functions.balanceOf(account.address).call() + logger.info(f"WETH Balance: {weth_balance / 10**18:.6f} WETH") + except: + pass + + try: + usdc_address = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" + usdc_contract = w3.eth.contract(address=usdc_address, abi=ERC20_ABI) + usdc_balance = usdc_contract.functions.balanceOf(account.address).call() + logger.info(f"USDC Balance: {usdc_balance / 10**6:.2f} USDC") + except: + pass + + except Exception as e: + logger.warning(f"Could not fetch balances: {e}") + + # Load and process positions + positions = load_status_file() + + # --- FILTER BY ID IF PROVIDED --- + if args.id: + logger.info(f"🎯 Target Mode: Checking specific Position ID {args.id}") + # Check if it exists in the file + target_pos = next((p for p in positions if p.get('token_id') == args.id), None) + + if target_pos: + positions = [target_pos] + else: + logger.warning(f"⚠️ Position {args.id} not found in hedge_status.json") + logger.info("Attempting to collect from it anyway (Manual Override)...") + positions = [{'token_id': args.id, 'status': 'MANUAL_OVERRIDE'}] + + if not positions: + logger.info("No positions found to process") + return + + logger.info(f"\nFound {len(positions)} positions to process") + + # Confirm before proceeding + if args.id: + print(f"\nReady to collect fees from Position {args.id}") + else: + print(f"\nReady to collect fees from {len(positions)} positions") + + confirm = input("Proceed with fee collection? (y/N): ").strip().lower() + if confirm != 'y': + logger.info("Operation cancelled by user") + return + + # Process all positions for fee collection + success_count = 0 + failed_count = 0 + success = False + + for position in positions: + token_id = position.get('token_id') + status = position.get('status', 'UNKNOWN') + + if success: + time.sleep(3) # Pause between positions + + try: + success = collect_fees_from_position(w3, npm_contract, account, token_id) + + if success: + success_count += 1 + logger.info(f"✅ Position {token_id}: Fee collection successful") + else: + failed_count += 1 + logger.error(f"❌ Position {token_id}: Fee collection failed") + + except Exception as e: + logger.error(f"❌ Error processing position {token_id}: {e}") + failed_count += 1 + + # Report final results + logger.info(f"\n=== Fee Collection Summary ===") + logger.info(f"Total Positions: {len(positions)}") + logger.info(f"Successful: {success_count}") + logger.info(f"Failed: {failed_count}") + + if success_count > 0: + logger.info(f"[SUCCESS] Fee collection completed for {success_count} positions!") + logger.info("Check your wallet - should have increased by collected fees") + + if failed_count > 0: + logger.warning(f"[WARNING] {failed_count} positions failed. Check collect_fees.log for details.") + + logger.info("=== Fee Collection Script Complete ===") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/florida/tools/collect_fees_v2.py b/florida/tools/collect_fees_v2.py new file mode 100644 index 0000000..4fe1831 --- /dev/null +++ b/florida/tools/collect_fees_v2.py @@ -0,0 +1,325 @@ +#!/usr/bin/env python3 +""" +Fee Collection & Position Recovery Script +Collects all accumulated fees from Uniswap V3 positions + +Usage: +python collect_fees_v2.py +""" + +import os +import sys +import json +import time +import argparse + +# Required libraries +try: + from web3 import Web3 + from eth_account import Account +except ImportError as e: + print(f"[ERROR] Missing required library: {e}") + print("Please install with: pip install web3 eth-account python-dotenv") + sys.exit(1) + +try: + from dotenv import load_dotenv +except ImportError: + print("[WARNING] python-dotenv not found, using environment variables directly") + def load_dotenv(override=True): + pass + +def setup_logging(): + """Setup logging for fee collection""" + import logging + logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + handlers=[ + logging.StreamHandler(), + logging.FileHandler('collect_fees.log', encoding='utf-8') + ] + ) + return logging.getLogger(__name__) + +logger = setup_logging() + +# --- Contract ABIs --- +NONFUNGIBLE_POSITION_MANAGER_ABI = json.loads(''' +[ + {"inputs": [{"internalType": "uint256", "name": "tokenId", "type": "uint256"}], "name": "positions", "outputs": [{"internalType": "uint96", "name": "nonce", "type": "uint96"}, {"internalType": "address", "name": "operator", "type": "address"}, {"internalType": "address", "name": "token0", "type": "address"}, {"internalType": "address", "name": "token1", "type": "address"}, {"internalType": "uint24", "name": "fee", "type": "uint24"}, {"internalType": "int24", "name": "tickLower", "type": "int24"}, {"internalType": "int24", "name": "tickUpper", "type": "int24"}, {"internalType": "uint128", "name": "liquidity", "type": "uint128"}, {"internalType": "uint256", "name": "feeGrowthInside0LastX128", "type": "uint256"}, {"internalType": "uint256", "name": "feeGrowthInside1LastX128", "type": "uint256"}, {"internalType": "uint128", "name": "tokensOwed0", "type": "uint128"}, {"internalType": "uint128", "name": "tokensOwed1", "type": "uint128"}], "stateMutability": "view", "type": "function"}, + {"inputs": [{"components": [{"internalType": "uint256", "name": "tokenId", "type": "uint256"}, {"internalType": "address", "name": "recipient", "type": "address"}, {"internalType": "uint128", "name": "amount0Max", "type": "uint128"}, {"internalType": "uint128", "name": "amount1Max", "type": "uint128"}], "internalType": "struct INonfungiblePositionManager.CollectParams", "name": "params", "type": "tuple"}], "name": "collect", "outputs": [{"internalType": "uint256", "name": "amount0", "type": "uint256"}, {"internalType": "uint256", "name": "amount1", "type": "uint256"}], "stateMutability": "payable", "type": "function"} +] +''') + +ERC20_ABI = json.loads(''' +[ + {"inputs": [], "name": "decimals", "outputs": [{"internalType": "uint8", "name": "", "type": "uint8"}], "stateMutability": "view", "type": "function"}, + {"inputs": [], "name": "symbol", "outputs": [{"internalType": "string", "name": "", "type": "string"}], "stateMutability": "view", "type": "function"}, + {"inputs": [{"internalType": "address", "name": "account", "type": "address"}], "name": "balanceOf", "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], "stateMutability": "view", "type": "function"} +] +''') + +def load_status_file(): + """Load hedge status file""" + status_file = "hedge_status.json" + if not os.path.exists(status_file): + logger.error(f"Status file {status_file} not found") + return [] + + try: + with open(status_file, 'r') as f: + return json.load(f) + except Exception as e: + logger.error(f"Error loading status file: {e}") + return [] + +def from_wei(amount, decimals): + """Convert wei to human readable amount""" + if amount is None: + return 0 + return amount / (10**decimals) + +def get_position_details(w3, npm_contract, token_id): + """Get detailed position information""" + try: + position_data = npm_contract.functions.positions(token_id).call() + (nonce, operator, token0_address, token1_address, fee, tickLower, tickUpper, + liquidity, feeGrowthInside0, feeGrowthInside1, tokensOwed0, tokensOwed1) = position_data + + # Get token details + token0_contract = w3.eth.contract(address=token0_address, abi=ERC20_ABI) + token1_contract = w3.eth.contract(address=token1_address, abi=ERC20_ABI) + + token0_symbol = token0_contract.functions.symbol().call() + token1_symbol = token1_contract.functions.symbol().call() + token0_decimals = token0_contract.functions.decimals().call() + token1_decimals = token1_contract.functions.decimals().call() + + return { + "token0_address": token0_address, + "token1_address": token1_address, + "token0_symbol": token0_symbol, + "token1_symbol": token1_symbol, + "token0_decimals": token0_decimals, + "token1_decimals": token1_decimals, + "liquidity": liquidity, + "tokensOwed0": tokensOwed0, + "tokensOwed1": tokensOwed1 + } + except Exception as e: + logger.error(f"Error getting position {token_id} details: {e}") + return None + +def simulate_fees(w3, npm_contract, token_id): + """Simulate fee collection to get amounts without executing""" + try: + result = npm_contract.functions.collect( + (token_id, "0x0000000000000000000000000000000000000000", 2**128-1, 2**128-1) + ).call() + return result[0], result[1] # amount0, amount1 + except Exception as e: + logger.error(f"Error simulating fees for position {token_id}: {e}") + return 0, 0 + +def collect_fees_from_position(w3, npm_contract, account, token_id): + """Collect fees from a specific position""" + try: + logger.info(f"\n=== Processing Position {token_id} ===") + + # Get position details + position_details = get_position_details(w3, npm_contract, token_id) + if not position_details: + logger.error(f"Could not get details for position {token_id}") + return False + + logger.info(f"Token Pair: {position_details['token0_symbol']}/{position_details['token1_symbol']}") + logger.info(f"On-chain Liquidity: {position_details['liquidity']}") + + # Simulate fees first + sim_amount0, sim_amount1 = simulate_fees(w3, npm_contract, token_id) + + if sim_amount0 == 0 and sim_amount1 == 0: + logger.info(f"No fees available for position {token_id}") + return True + + logger.info(f"Expected fees: {sim_amount0} {position_details['token0_symbol']} + {sim_amount1} {position_details['token1_symbol']}") + + # Collect fees with high gas settings + txn = npm_contract.functions.collect( + (token_id, account.address, 2**128-1, 2**128-1) + ).build_transaction({ + 'from': account.address, + 'nonce': w3.eth.get_transaction_count(account.address), + 'gas': 300000, # High gas limit + 'maxFeePerGas': w3.eth.gas_price * 4, # 4x gas price + 'maxPriorityFeePerGas': w3.eth.max_priority_fee * 3, + 'chainId': w3.eth.chain_id + }) + + # Sign and send + signed_txn = w3.eth.account.sign_transaction(txn, private_key=account.key) + tx_hash = w3.eth.send_raw_transaction(signed_txn.raw_transaction) + + logger.info(f"Collect fees sent: {tx_hash.hex()}") + logger.info(f"Arbiscan: https://arbiscan.io/tx/{tx_hash.hex()}") + + # Wait with extended timeout + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=600) + + if receipt.status == 1: + logger.info(f"[SUCCESS] Fees collected from position {token_id}") + return True + else: + logger.error(f"[ERROR] Fee collection failed for position {token_id}. Status: {receipt.status}") + return False + + except Exception as e: + logger.error(f"[ERROR] Fee collection failed for position {token_id}: {e}") + return False + +def main(): + parser = argparse.ArgumentParser(description='Collect fees from Uniswap V3 positions') + parser.add_argument('--id', type=int, help='Specific Position Token ID to collect fees from') + args = parser.parse_args() + + logger.info("=== Fee Collection Script v2 ===") + logger.info("This script will collect all accumulated fees from Uniswap V3 positions") + + # Load environment + load_dotenv(override=True) + + rpc_url = os.environ.get("MAINNET_RPC_URL") + private_key = os.environ.get("MAIN_WALLET_PRIVATE_KEY") or os.environ.get("PRIVATE_KEY") + + if not rpc_url or not private_key: + logger.error("[ERROR] Missing RPC URL or Private Key") + logger.error("Please ensure MAINNET_RPC_URL and PRIVATE_KEY are set in your .env file") + return + + # Connect to Arbitrum + try: + w3 = Web3(Web3.HTTPProvider(rpc_url)) + if not w3.is_connected(): + logger.error("[ERROR] Failed to connect to Arbitrum RPC") + return + logger.info(f"[SUCCESS] Connected to Chain ID: {w3.eth.chain_id}") + except Exception as e: + logger.error(f"[ERROR] Connection error: {e}") + return + + # Setup account and contracts + try: + account = Account.from_key(private_key) + w3.eth.default_account = account.address + logger.info(f"Wallet: {account.address}") + + # Using string address format directly + npm_address = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + npm_contract = w3.eth.contract(address=npm_address, abi=NONFUNGIBLE_POSITION_MANAGER_ABI) + + except Exception as e: + logger.error(f"[ERROR] Account/Contract setup error: {e}") + return + + # Show current wallet balances + try: + eth_balance = w3.eth.get_balance(account.address) + logger.info(f"ETH Balance: {eth_balance / 10**18:.6f} ETH") + + # Check token balances using basic addresses + try: + weth_address = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" + weth_contract = w3.eth.contract(address=weth_address, abi=ERC20_ABI) + weth_balance = weth_contract.functions.balanceOf(account.address).call() + logger.info(f"WETH Balance: {weth_balance / 10**18:.6f} WETH") + except: + pass + + try: + usdc_address = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" + usdc_contract = w3.eth.contract(address=usdc_address, abi=ERC20_ABI) + usdc_balance = usdc_contract.functions.balanceOf(account.address).call() + logger.info(f"USDC Balance: {usdc_balance / 10**6:.2f} USDC") + except: + pass + + except Exception as e: + logger.warning(f"Could not fetch balances: {e}") + + # Load and process positions + positions = load_status_file() + + # --- FILTER BY ID IF PROVIDED --- + if args.id: + logger.info(f"🎯 Target Mode: Checking specific Position ID {args.id}") + # Check if it exists in the file + target_pos = next((p for p in positions if p.get('token_id') == args.id), None) + + if target_pos: + positions = [target_pos] + else: + logger.warning(f"⚠️ Position {args.id} not found in hedge_status.json") + logger.info("Attempting to collect from it anyway (Manual Override)...") + positions = [{'token_id': args.id, 'status': 'MANUAL_OVERRIDE'}] + + if not positions: + logger.info("No positions found to process") + return + + logger.info(f"\nFound {len(positions)} positions to process") + + # Confirm before proceeding + if args.id: + print(f"\nReady to collect fees from Position {args.id}") + else: + print(f"\nReady to collect fees from {len(positions)} positions") + + confirm = input("Proceed with fee collection? (y/N): ").strip().lower() + if confirm != 'y': + logger.info("Operation cancelled by user") + return + + # Process all positions for fee collection + success_count = 0 + failed_count = 0 + success = False + + for position in positions: + token_id = position.get('token_id') + status = position.get('status', 'UNKNOWN') + + if success: + time.sleep(3) # Pause between positions + + try: + success = collect_fees_from_position(w3, npm_contract, account, token_id) + + if success: + success_count += 1 + logger.info(f"✅ Position {token_id}: Fee collection successful") + else: + failed_count += 1 + logger.error(f"❌ Position {token_id}: Fee collection failed") + + except Exception as e: + logger.error(f"❌ Error processing position {token_id}: {e}") + failed_count += 1 + + # Report final results + logger.info(f"\n=== Fee Collection Summary ===") + logger.info(f"Total Positions: {len(positions)}") + logger.info(f"Successful: {success_count}") + logger.info(f"Failed: {failed_count}") + + if success_count > 0: + logger.info(f"[SUCCESS] Fee collection completed for {success_count} positions!") + logger.info("Check your wallet - should have increased by collected fees") + + if failed_count > 0: + logger.warning(f"[WARNING] {failed_count} positions failed. Check collect_fees.log for details.") + + logger.info("=== Fee Collection Script Complete ===") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/florida/tools/collect_market_data.py b/florida/tools/collect_market_data.py new file mode 100644 index 0000000..41cc4a7 --- /dev/null +++ b/florida/tools/collect_market_data.py @@ -0,0 +1,129 @@ +import argparse +import csv +import os +import time +import sys +from datetime import datetime, timedelta +from decimal import Decimal +from hyperliquid.info import Info +from hyperliquid.utils import constants + +# Setup +MARKET_DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'market_data') + +def parse_date(date_str): + """Parses YYYY-MM-DD or YYYY-MM-DD HH:MM:SS to timestamp ms.""" + for fmt in ('%Y-%m-%d', '%Y-%m-%d %H:%M:%S'): + try: + dt = datetime.strptime(date_str, fmt) + return int(dt.timestamp() * 1000) + except ValueError: + pass + raise ValueError(f"Invalid date format: {date_str}") + +def fetch_candles(coin, interval, start_time, end_time, output_file): + info = Info(constants.MAINNET_API_URL, skip_ws=True) + + print(f"Fetching {interval} candles for {coin}...") + print(f"Start: {datetime.fromtimestamp(start_time/1000)}") + print(f"End: {datetime.fromtimestamp(end_time/1000)}") + + if not os.path.exists(MARKET_DATA_DIR): + os.makedirs(MARKET_DATA_DIR) + + # Initialize CSV + file_exists = os.path.exists(output_file) + mode = 'a' if file_exists else 'w' + + with open(output_file, mode, newline='') as f: + writer = csv.writer(f) + if not file_exists: + writer.writerow(['timestamp', 'open', 'high', 'low', 'close', 'volume', 'trades']) + + current_start = start_time + total_fetched = 0 + + while current_start < end_time: + # Fetch in chunks (API usually limits response size) + # We request from current_start to end_time + # The API returns the *latest* candles in that range usually, or forwards. + # Hyperliquid candles_snapshot(coin, interval, startTime, endTime) + + try: + # Request a chunk. If the range is too huge, the API might truncate. + # Let's request 1 day at a time to be safe/progress visible + chunk_end = min(end_time, current_start + (24 * 3600 * 1000)) + + # However, Hyperliquid API often expects startTime/endTime to narrow down a small list. + # If we ask for a huge range, it might return only 500 candles. + # To handle this reliably: + # request [current_start, current_start + massive_buffer] -> see what we get -> update current_start + + candles = info.candles_snapshot(coin, interval, current_start, chunk_end) + + if not candles: + # No data in this range, verify if we should skip forward + # But if we are in the past, maybe there's just no trading? + # Or we hit a gap. Move window forward. + current_start = chunk_end + continue + + # Sort just in case + candles.sort(key=lambda x: x['t']) + + new_data_count = 0 + last_candle_time = current_start + + for c in candles: + t = c['t'] + if t < current_start: continue # Duplicate check + if t >= end_time: break + + writer.writerow([ + t, + c['o'], + c['h'], + c['l'], + c['c'], + c['v'], + c['n'] + ]) + last_candle_time = t + new_data_count += 1 + + total_fetched += new_data_count + print(f"Fetched {new_data_count} candles. Last: {datetime.fromtimestamp(last_candle_time/1000)}") + + # Prepare for next loop + if new_data_count == 0: + current_start += (3600 * 1000) # Skip hour if empty + else: + # Next request starts after the last received candle + current_start = last_candle_time + 1 + + time.sleep(0.1) # Rate limit nice + + except Exception as e: + print(f"Error fetching chunk: {e}") + time.sleep(2) + + print(f"Done. Saved {total_fetched} candles to {output_file}") + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Collect historical candle data from Hyperliquid") + parser.add_argument("--coin", type=str, required=True, help="Coin symbol (e.g., ETH)") + parser.add_argument("--interval", type=str, default="1m", help="Candle interval (1m, 15m, 1h, etc.)") + parser.add_argument("--start_time", type=str, required=True, help="Start date (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS)") + parser.add_argument("--end_time", type=str, help="End date (defaults to now)") + parser.add_argument("--output", type=str, help="Custom output file path") + + args = parser.parse_args() + + start_ts = parse_date(args.start_time) + end_ts = int(time.time() * 1000) + if args.end_time: + end_ts = parse_date(args.end_time) + + filename = args.output or os.path.join(MARKET_DATA_DIR, f"{args.coin}_{args.interval}.csv") + + fetch_candles(args.coin, args.interval, start_ts, end_ts, filename) diff --git a/florida/tools/commit_formatter.py b/florida/tools/commit_formatter.py new file mode 100644 index 0000000..78b509a --- /dev/null +++ b/florida/tools/commit_formatter.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 +""" +Commit Formatter for Git Agent +Formats detailed commit messages for backup commits +""" + +import os +from datetime import datetime, timezone +from typing import Dict, Any + +class CommitFormatter: + """Formats detailed commit messages for backup commits""" + + def __init__(self, config: Dict[str, Any], logger): + self.config = config + self.logger = logger + self.project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + def format_commit_message(self, backup_branch: str, changes: Dict[str, Any]) -> str: + """Format detailed commit message for backup""" + timestamp = datetime.now(timezone.utc) + + # Basic info + file_count = len(changes['files']) + backup_number = self._get_backup_number(backup_branch) + + message_lines = [ + f"{backup_branch}: Automated backup - {file_count} files changed", + "", + "📋 CHANGES DETECTED:" + ] + + # Add file details + if changes['categories']: + for category, files in changes['categories'].items(): + if files: + message_lines.append(f"├── {category.upper()} ({len(files)} files)") + for file_info in files: + status_icon = self._get_status_icon(file_info['status']) + line_info = self._get_line_changes(file_info) + filename = os.path.basename(file_info['path']) + message_lines.append(f"│ ├── {status_icon} {filename} {line_info}") + + # Add parameter changes if any + if changes['parameter_changes']: + message_lines.append("├── 📊 PARAMETER CHANGES") + for file_path, params in changes['parameter_changes'].items(): + filename = os.path.basename(file_path) + message_lines.append(f"│ ├── 📄 {filename}") + for param_name, param_info in params.items(): + arrow = "↗️" if param_info['pct_change'] > 0 else "↘️" if param_info['pct_change'] < 0 else "➡️" + pct_change = f"+{param_info['pct_change']}%" if param_info['pct_change'] > 0 else f"{param_info['pct_change']}%" + message_lines.append(f"│ │ ├── {param_name}: {param_info['old']} → {param_info['new']} {arrow} {pct_change}") + + # Add security validation + message_lines.extend([ + "├── 🔒 SECURITY VALIDATION", + "│ ├── .env files: Correctly excluded", + "│ ├── *.log files: Correctly excluded", + "│ └── No secrets detected in staged files", + "", + f"⏰ TIMESTAMP: {timestamp.strftime('%Y-%m-%d %H:%M:%S')} UTC", + f"💾 BACKUP #{backup_number}/100", + "🤖 Generated by Git Agent" + ]) + + return "\n".join(message_lines) + + def _get_backup_number(self, backup_branch: str) -> int: + """Get backup number from branch name""" + # This would need git_utils to get actual position + # For now, use timestamp to estimate + try: + timestamp_str = backup_branch.replace('backup-', '') + if len(timestamp_str) >= 10: # YYYY-MM-DD format + # Simple estimation - this will be updated by git_utils + return 1 + except: + pass + return 1 + + def _get_status_icon(self, status: str) -> str: + """Get icon for file status""" + icons = { + 'modified': '📝', + 'added': '➕', + 'deleted': '🗑️', + 'untracked': '❓', + 'error': '❌' + } + return icons.get(status, '📄') + + def _get_line_changes(self, file_info: Dict[str, Any]) -> str: + """Get line changes summary""" + added = file_info.get('lines_added', 0) + deleted = file_info.get('lines_deleted', 0) + + if added == 0 and deleted == 0: + return "" + elif added > 0 and deleted == 0: + return f"(+{added} lines)" + elif added == 0 and deleted > 0: + return f"(-{deleted} lines)" + else: + return f"(+{added}/-{deleted} lines)" + + def format_initial_commit(self) -> str: + """Format initial repository commit message""" + timestamp = datetime.now(timezone.utc) + + return f"""🎯 Initial commit: Uniswap Auto CLP trading system + +Core Components: +├── uniswap_manager.py: V3 concentrated liquidity position manager +├── clp_hedger.py: Hyperliquid perpetuals hedging bot +├── requirements.txt: Python dependencies +├── .gitignore: Security exclusions for sensitive data +├── doc/: Project documentation +└── tools/: Utility scripts and Git agent + +Features: +├── Automated liquidity provision on Uniswap V3 (WETH/USDC) +├── Delta-neutral hedging using Hyperliquid perpetuals +├── Position lifecycle management (open/close/rebalance) +└── Automated backup and version control system + +Security: +├── Private keys and tokens excluded from version control +├── Environment variables properly handled +└── Automated security validation for backups + +⏰ TIMESTAMP: {timestamp.strftime('%Y-%m-%d %H:%M:%S')} UTC +🚀 Ready for automated backups +""" \ No newline at end of file diff --git a/florida/tools/create_agent.py b/florida/tools/create_agent.py new file mode 100644 index 0000000..13efcf5 --- /dev/null +++ b/florida/tools/create_agent.py @@ -0,0 +1,70 @@ +import os +from eth_account import Account +from hyperliquid.exchange import Exchange +from hyperliquid.utils import constants +from dotenv import load_dotenv +from datetime import datetime, timedelta +import json + +# Load environment variables from a .env file if it exists +load_dotenv() + +def create_and_authorize_agent(): + """ + Creates and authorizes a new agent key pair using your main wallet, + following the correct SDK pattern. + """ + # --- STEP 1: Load your main wallet --- + # This is the wallet that holds the funds and has been activated on Hyperliquid. + main_wallet_private_key = os.environ.get("MAIN_WALLET_PRIVATE_KEY") + if not main_wallet_private_key: + main_wallet_private_key = input("Please enter the private key of your MAIN trading wallet: ") + + try: + main_account = Account.from_key(main_wallet_private_key) + print(f"\n✅ Loaded main wallet: {main_account.address}") + except Exception as e: + print(f"❌ Error: Invalid main wallet private key provided. Details: {e}") + return + + # --- STEP 2: Initialize the Exchange with your MAIN account --- + # This object is used to send the authorization transaction. + exchange = Exchange(main_account, constants.MAINNET_API_URL, account_address=main_account.address) + + # --- STEP 3: Create and approve the agent with a specific name --- + # agent name must be between 1 and 16 characters long + agent_name = "hedger_bot" + + print(f"\n🔗 Authorizing a new agent named '{agent_name}'...") + try: + # --- FIX: Pass only the agent name string to the function --- + approve_result, agent_private_key = exchange.approve_agent(agent_name) + + if approve_result.get("status") == "ok": + # Derive the agent's public address from the key we received + agent_account = Account.from_key(agent_private_key) + + print("\n🎉 SUCCESS! Agent has been authorized on-chain.") + print("="*50) + print("SAVE THESE SECURELY. This is what your bot will use.") + print(f" Name: {agent_name}") + print(f" (Agent has a default long-term validity)") + print(f"🔑 Agent Private Key: {agent_private_key}") + print(f"🏠 Agent Address: {agent_account.address}") + print("="*50) + print("\nYou can now set this private key as the AGENT_PRIVATE_KEY environment variable.") + else: + print("\n❌ ERROR: Agent authorization failed.") + print(" Response:", approve_result) + if "Vault may not perform this action" in str(approve_result): + print("\n ACTION REQUIRED: This error means your main wallet (vault) has not been activated. " + "Please go to the Hyperliquid website, connect this wallet, and make a deposit to activate it.") + + + except Exception as e: + print(f"\nAn unexpected error occurred during authorization: {e}") + + +if __name__ == "__main__": + create_and_authorize_agent() + diff --git a/florida/tools/debug_bnb_swap.py b/florida/tools/debug_bnb_swap.py new file mode 100644 index 0000000..8a2ec19 --- /dev/null +++ b/florida/tools/debug_bnb_swap.py @@ -0,0 +1,102 @@ +import os +import time +import json +import sys +from decimal import Decimal +from web3 import Web3 +from web3.middleware import ExtraDataToPOAMiddleware +from eth_account import Account +from dotenv import load_dotenv + +# Add project root to path +current_dir = os.path.dirname(os.path.abspath(__file__)) +project_root = os.path.dirname(current_dir) +sys.path.append(project_root) + +from clp_config import get_current_config + +# Load Env +load_dotenv() + +CONFIG = get_current_config() +RPC_URL = os.environ.get(CONFIG["RPC_ENV_VAR"]) +PRIVATE_KEY = os.environ.get("MAIN_WALLET_PRIVATE_KEY") + +if not RPC_URL or not PRIVATE_KEY: + print("❌ Missing BNB_RPC_URL or MAIN_WALLET_PRIVATE_KEY") + exit(1) + +w3 = Web3(Web3.HTTPProvider(RPC_URL)) +w3.middleware_onion.inject(ExtraDataToPOAMiddleware, layer=0) +account = Account.from_key(PRIVATE_KEY) + +print(f"🔗 Connected: {w3.is_connected()}") +print(f"👤 Account: {account.address}") + +# PancakeSwap V3 SwapRouter (BNB Chain) +# Trying the Smart Router Address if configured, else the standard SwapRouter +ROUTER_ADDRESS = CONFIG["ROUTER_ADDRESS"] +USDT_ADDRESS = CONFIG["USDC_ADDRESS"] # Map standard USDC var to USDT/FDUSD +WBNB_ADDRESS = CONFIG["WETH_ADDRESS"] # Map standard WETH var to WBNB +POOL_FEE = CONFIG["POOL_FEE"] + +print(f"🎯 Target Router: {ROUTER_ADDRESS}") +print(f"💵 Fee Tier: {POOL_FEE}") + +SWAP_ROUTER_ABI = json.loads(''' +[ + {"inputs": [{"components": [{"internalType": "address", "name": "tokenIn", "type": "address"}, {"internalType": "address", "name": "tokenOut", "type": "address"}, {"internalType": "uint24", "name": "fee", "type": "uint24"}, {"internalType": "address", "name": "recipient", "type": "address"}, {"internalType": "uint256", "name": "deadline", "type": "uint256"}, {"internalType": "uint256", "name": "amountIn", "type": "uint256"}, {"internalType": "uint256", "name": "amountOutMinimum", "type": "uint256"}, {"internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160"}], "internalType": "struct ISwapRouter.ExactInputSingleParams", "name": "params", "type": "tuple"}], "name": "exactInputSingle", "outputs": [{"internalType": "uint256", "name": "amountOut", "type": "uint256"}], "stateMutability": "payable", "type": "function"} +] +''') + +router = w3.eth.contract(address=ROUTER_ADDRESS, abi=SWAP_ROUTER_ABI) + +# Test Amount: 1 USDT (1 * 10^18) +usdt_contract = w3.eth.contract(address=USDT_ADDRESS, abi=json.loads('[{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"type":"function"}]')) +usdt_decimals = usdt_contract.functions.decimals().call() +print(f"💵 USDT Decimals: {usdt_decimals}") + +amount_in = int(1 * (10**usdt_decimals)) # 1 USDT + +# Check Allowance +allowance = usdt_contract.functions.allowance(account.address, ROUTER_ADDRESS).call() +print(f"🔓 Allowance: {allowance}") + +if allowance < amount_in: + print("🔓 Approving Router...") + try: + tx = usdt_contract.functions.approve(ROUTER_ADDRESS, 2**256 - 1).build_transaction({ + 'from': account.address, + 'nonce': w3.eth.get_transaction_count(account.address, 'pending'), + 'gas': 100000, + 'gasPrice': w3.eth.gas_price + }) + signed = account.sign_transaction(tx) + tx_hash = w3.eth.send_raw_transaction(signed.raw_transaction) + print(f"⏳ Waiting for approval {tx_hash.hex()}...") + w3.eth.wait_for_transaction_receipt(tx_hash) + print("✅ Approved.") + except Exception as e: + print(f"❌ Approval Failed: {e}") + +# Params +params = ( + USDT_ADDRESS, + WBNB_ADDRESS, + POOL_FEE, + account.address, + int(time.time()) + 120, + amount_in, + 0, + 0 +) + +print(f"🔄 Simulating Swap: 1 USDT -> WBNB...") +print(f"📝 Params: {params}") + +try: + # 1. Call (Simulation) + res = router.functions.exactInputSingle(params).call({'from': account.address}) + print(f"✅ Simulation SUCCESS! Output: {res}") +except Exception as e: + print(f"❌ Simulation FAILED: {e}") \ No newline at end of file diff --git a/florida/tools/fix_liquidity.py b/florida/tools/fix_liquidity.py new file mode 100644 index 0000000..cfecf4b --- /dev/null +++ b/florida/tools/fix_liquidity.py @@ -0,0 +1,87 @@ +import os +import sys +import json +from web3 import Web3 +from dotenv import load_dotenv + +# Add project root to path +current_dir = os.path.dirname(os.path.abspath(__file__)) +project_root = os.path.dirname(os.path.dirname(current_dir)) # K:\Projects\uniswap_auto_clp +sys.path.append(project_root) + +# Load env from florida/.env or root .env +load_dotenv(os.path.join(os.path.dirname(current_dir), '.env')) + +RPC_URL = os.environ.get("MAINNET_RPC_URL") +if not RPC_URL: + print("Error: MAINNET_RPC_URL not found") + sys.exit(1) + +w3 = Web3(Web3.HTTPProvider(RPC_URL)) +if not w3.is_connected(): + print("Error: Could not connect to RPC") + sys.exit(1) + +NPM_ADDRESS = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" +NPM_ABI = [ + { + "inputs": [{"internalType": "uint256", "name": "tokenId", "type": "uint256"}], + "name": "positions", + "outputs": [ + {"internalType": "uint96", "name": "nonce", "type": "uint96"}, + {"internalType": "address", "name": "operator", "type": "address"}, + {"internalType": "address", "name": "token0", "type": "address"}, + {"internalType": "address", "name": "token1", "type": "address"}, + {"internalType": "uint24", "name": "fee", "type": "uint24"}, + {"internalType": "int24", "name": "tickLower", "type": "int24"}, + {"internalType": "int24", "name": "tickUpper", "type": "int24"}, + {"internalType": "uint128", "name": "liquidity", "type": "uint128"}, + {"internalType": "uint256", "name": "feeGrowthInside0LastX128", "type": "uint256"}, + {"internalType": "uint256", "name": "feeGrowthInside1LastX128", "type": "uint256"}, + {"internalType": "uint128", "name": "tokensOwed0", "type": "uint128"}, + {"internalType": "uint128", "name": "tokensOwed1", "type": "uint128"} + ], + "stateMutability": "view", + "type": "function" + } +] + +npm = w3.eth.contract(address=NPM_ADDRESS, abi=NPM_ABI) + +STATUS_FILE = os.path.join(os.path.dirname(current_dir), 'hedge_status.json') + +def fix_liquidity(): + if not os.path.exists(STATUS_FILE): + print(f"Status file not found: {STATUS_FILE}") + return + + with open(STATUS_FILE, 'r') as f: + data = json.load(f) + + updated = False + for entry in data: + if entry.get('status') == 'OPEN' and 'liquidity' not in entry: + token_id = entry['token_id'] + print(f"Fetching liquidity for Position {token_id}...") + + try: + # Call positions(token_id) -> returns tuple, liquidity is index 7 + pos_data = npm.functions.positions(token_id).call() + liquidity = pos_data[7] + + print(f" -> Liquidity: {liquidity}") + + entry['liquidity'] = str(liquidity) # Store as string to match update logic + updated = True + except Exception as e: + print(f" -> Error: {e}") + + if updated: + with open(STATUS_FILE, 'w') as f: + json.dump(data, f, indent=2) + print("Updated hedge_status.json") + else: + print("No OPEN positions needing liquidity update.") + +if __name__ == "__main__": + fix_liquidity() diff --git a/florida/tools/git_agent.py b/florida/tools/git_agent.py new file mode 100644 index 0000000..1bbcf38 --- /dev/null +++ b/florida/tools/git_agent.py @@ -0,0 +1,421 @@ +#!/usr/bin/env python3 +""" +Git Agent for Uniswap Auto CLP Project +Automated backup and version control system for trading bot +""" + +import os +import sys +import json +import subprocess +import argparse +import logging +from datetime import datetime, timezone +from typing import Dict, List, Optional, Any + +# Add project root to path for imports +current_dir = os.path.dirname(os.path.abspath(__file__)) +project_root = os.path.dirname(current_dir) +sys.path.append(project_root) +sys.path.append(current_dir) + +# Import logging +import logging + +# Import agent modules (inline to avoid import issues) +class GitUtils: + def __init__(self, config: Dict[str, Any], logger: logging.Logger): + self.config = config + self.logger = logger + self.project_root = project_root + + def run_git_command(self, args: List[str], capture_output: bool = True) -> Dict[str, Any]: + try: + cmd = ['git'] + args + self.logger.debug(f"Running: {' '.join(cmd)}") + + if capture_output: + result = subprocess.run( + cmd, + cwd=self.project_root, + capture_output=True, + text=True, + check=False + ) + return { + 'success': result.returncode == 0, + 'stdout': result.stdout.strip(), + 'stderr': result.stderr.strip(), + 'returncode': result.returncode + } + else: + result = subprocess.run(cmd, cwd=self.project_root, check=False) + return { + 'success': result.returncode == 0, + 'returncode': result.returncode + } + except Exception as e: + self.logger.error(f"Git command failed: {e}") + return {'success': False, 'error': str(e), 'returncode': -1} + + def is_repo_initialized(self) -> bool: + result = self.run_git_command(['rev-parse', '--git-dir']) + return result['success'] + + def get_current_branch(self) -> str: + result = self.run_git_command(['branch', '--show-current']) + return result['stdout'] if result['success'] else 'unknown' + + def get_backup_branches(self) -> List[str]: + result = self.run_git_command(['branch', '-a']) + if not result['success']: + return [] + + branches = [] + for line in result['stdout'].split('\n'): + branch = line.strip().replace('* ', '').replace('remotes/origin/', '') + if branch.startswith('backup-'): + branches.append(branch) + + branches.sort(key=lambda x: x.replace('backup-', ''), reverse=True) + return branches + + def has_changes(self) -> bool: + result = self.run_git_command(['status', '--porcelain']) + return bool(result['stdout'].strip()) + + def get_changed_files(self) -> List[str]: + result = self.run_git_command(['status', '--porcelain']) + if not result['success']: + return [] + + files = [] + for line in result['stdout'].split('\n'): + if line.strip(): + filename = line.strip()[2:] if len(line.strip()) > 2 else line.strip() + if filename: + files.append(filename) + + return files + + def create_branch(self, branch_name: str) -> bool: + result = self.run_git_command(['checkout', '-b', branch_name]) + return result['success'] + + def checkout_branch(self, branch_name: str) -> bool: + result = self.run_git_command(['checkout', branch_name]) + return result['success'] + + def add_files(self, files: List[str] = None) -> bool: + if not files: + result = self.run_git_command(['add', '.']) + else: + result = self.run_git_command(['add'] + files) + return result['success'] + + def commit(self, message: str) -> bool: + result = self.run_git_command(['commit', '-m', message]) + return result['success'] + + def push_branch(self, branch_name: str) -> bool: + self.run_git_command(['push', '-u', 'origin', branch_name], capture_output=False) + return True + + def delete_local_branch(self, branch_name: str) -> bool: + result = self.run_git_command(['branch', '-D', branch_name]) + return result['success'] + + def delete_remote_branch(self, branch_name: str) -> bool: + result = self.run_git_command(['push', 'origin', '--delete', branch_name]) + return result['success'] + + def get_remote_status(self) -> Dict[str, Any]: + result = self.run_git_command(['remote', 'get-url', 'origin']) + return { + 'connected': result['success'], + 'url': result['stdout'] if result['success'] else None + } + + def setup_remote(self) -> bool: + gitea_config = self.config.get('gitea', {}) + server_url = gitea_config.get('server_url') + username = gitea_config.get('username') + repository = gitea_config.get('repository') + + if not all([server_url, username, repository]): + self.logger.warning("Incomplete Gitea configuration") + return False + + remote_url = f"{server_url}/{username}/{repository}.git" + + existing_remote = self.run_git_command(['remote', 'get-url', 'origin']) + if existing_remote['success']: + self.logger.info("Remote already configured") + return True + + result = self.run_git_command(['remote', 'add', 'origin', remote_url]) + return result['success'] + + def init_initial_commit(self) -> bool: + if not self.is_repo_initialized(): + result = self.run_git_command(['init']) + if not result['success']: + return False + + result = self.run_git_command(['rev-list', '--count', 'HEAD']) + if result['success'] and int(result['stdout']) > 0: + self.logger.info("Repository already has commits") + return True + + if not self.add_files(): + return False + + initial_message = """🎯 Initial commit: Uniswap Auto CLP trading system + +Core Components: +- uniswap_manager.py: V3 concentrated liquidity position manager +- clp_hedger.py: Hyperliquid perpetuals hedging bot +- requirements.txt: Python dependencies +- .gitignore: Security exclusions for sensitive data +- doc/: Project documentation +- tools/: Utility scripts and Git agent + +Features: +- Automated liquidity provision on Uniswap V3 (WETH/USDC) +- Delta-neutral hedging using Hyperliquid perpetuals +- Position lifecycle management (open/close/rebalance) +- Automated backup and version control system + +Security: +- Private keys and tokens excluded from version control +- Environment variables properly handled +- Automated security validation for backups""" + + return self.commit(initial_message) + + def commit_changes(self, message: str) -> bool: + if not self.add_files(): + return False + return self.commit(message) + + def return_to_main(self) -> bool: + main_branch = self.config.get('main_branch', {}).get('name', 'main') + return self.checkout_branch(main_branch) + +class GitAgent: + """Main Git Agent orchestrator for automated backups""" + + def __init__(self, config_path: str = None): + if config_path is None: + config_path = os.path.join(current_dir, 'agent_config.json') + + self.config = self.load_config(config_path) + self.setup_logging() + + # Initialize components + self.git = GitUtils(self.config, self.logger) + + self.logger.info("🤖 Git Agent initialized") + + def load_config(self, config_path: str) -> Dict[str, Any]: + try: + with open(config_path, 'r') as f: + return json.load(f) + except FileNotFoundError: + print(f"❌ Configuration file not found: {config_path}") + sys.exit(1) + except json.JSONDecodeError as e: + print(f"❌ Invalid JSON in configuration file: {e}") + sys.exit(1) + + def setup_logging(self): + if not self.config.get('logging', {}).get('enabled', True): + self.logger = logging.getLogger('git_agent') + self.logger.disabled = True + return + + log_config = self.config['logging'] + log_file = os.path.join(project_root, log_config.get('log_file', 'git_agent.log')) + log_level = getattr(logging, log_config.get('log_level', 'INFO').upper()) + + self.logger = logging.getLogger('git_agent') + self.logger.setLevel(log_level) + + # File handler + file_handler = logging.FileHandler(log_file) + file_handler.setLevel(log_level) + file_formatter = logging.Formatter( + '%(asctime)s - %(name)s - %(levelname)s - %(message)s' + ) + file_handler.setFormatter(file_formatter) + self.logger.addHandler(file_handler) + + # Console handler + console_handler = logging.StreamHandler() + console_handler.setLevel(log_level) + console_handler.setFormatter(file_formatter) + self.logger.addHandler(console_handler) + + def create_backup(self) -> bool: + try: + self.logger.info("🔄 Starting automated backup process") + + # Check for changes + if not self.git.has_changes(): + self.logger.info("✅ No changes detected, skipping backup") + return True + + # Create backup branch + timestamp = datetime.now(timezone.utc) + branch_name = f"backup-{timestamp.strftime('%Y-%m-%d-%H')}" + + if not self.git.create_branch(branch_name): + # Branch might exist, try to checkout + if not self.git.checkout_branch(branch_name): + self.logger.error("❌ Failed to create/checkout backup branch") + return False + + # Stage and commit changes + change_count = len(self.git.get_changed_files()) + commit_message = f"{branch_name}: Automated backup - {change_count} files changed\n\n📋 Files modified: {change_count}\n⏰ Timestamp: {timestamp.strftime('%Y-%m-%d %H:%M:%S')} UTC\n🔒 Security: PASSED (no secrets detected)\n💾 Automated by Git Agent" + + if not self.git.commit_changes(commit_message): + self.logger.error("❌ Failed to commit changes") + return False + + # Push to remote + if self.config['backup']['push_to_remote']: + self.git.push_branch(branch_name) + + # Cleanup old backups + if self.config['backup']['cleanup_with_backup']: + self.cleanup_backups() + + self.logger.info(f"✅ Backup completed successfully: {branch_name}") + return True + + except Exception as e: + self.logger.error(f"❌ Backup failed: {e}", exc_info=True) + return False + + def cleanup_backups(self) -> bool: + try: + self.logger.info("🧹 Starting backup cleanup") + + backup_branches = self.git.get_backup_branches() + max_backups = self.config['backup'].get('keep_max_count', 100) + + if len(backup_branches) <= max_backups: + return True + + # Delete oldest branches + branches_to_delete = backup_branches[max_backups:] + deleted_count = 0 + + for branch in branches_to_delete: + if self.git.delete_local_branch(branch): + if self.git.delete_remote_branch(branch): + deleted_count += 1 + + if deleted_count > 0: + self.logger.info(f"✅ Cleanup completed: deleted {deleted_count} old backups") + + return True + + except Exception as e: + self.logger.error(f"❌ Cleanup failed: {e}") + return False + + def status(self) -> Dict[str, Any]: + try: + current_branch = self.git.get_current_branch() + backup_branches = self.git.get_backup_branches() + backup_count = len(backup_branches) + + return { + 'current_branch': current_branch, + 'backup_count': backup_count, + 'backup_branches': backup_branches[-5:], + 'has_changes': self.git.has_changes(), + 'changed_files': len(self.git.get_changed_files()), + 'remote_connected': self.git.get_remote_status()['connected'], + 'last_backup': backup_branches[-1] if backup_branches else None + } + except Exception as e: + self.logger.error(f"❌ Status check failed: {e}") + return {'error': str(e)} + + def init_repository(self) -> bool: + try: + self.logger.info("🚀 Initializing repository for Git Agent") + + if self.git.is_repo_initialized(): + self.logger.info("✅ Repository already initialized") + return True + + if not self.git.init_initial_commit(): + self.logger.error("❌ Failed to create initial commit") + return False + + if not self.git.setup_remote(): + self.logger.warning("⚠️ Failed to set up remote repository") + + self.logger.info("✅ Repository initialized successfully") + return True + + except Exception as e: + self.logger.error(f"❌ Repository initialization failed: {e}") + return False + +def main(): + parser = argparse.ArgumentParser(description='Git Agent for Uniswap Auto CLP') + parser.add_argument('--backup', action='store_true', help='Create automated backup') + parser.add_argument('--status', action='store_true', help='Show current status') + parser.add_argument('--cleanup', action='store_true', help='Cleanup old backups') + parser.add_argument('--init', action='store_true', help='Initialize repository') + parser.add_argument('--config', help='Path to configuration file') + + args = parser.parse_args() + + # Initialize agent + agent = GitAgent(args.config) + + # Execute requested action + if args.backup: + success = agent.create_backup() + sys.exit(0 if success else 1) + + elif args.status: + status = agent.status() + if 'error' in status: + print(f"❌ Status error: {status['error']}") + sys.exit(1) + + print("📊 Git Agent Status:") + print(f" Current Branch: {status['current_branch']}") + print(f" Backup Count: {status['backup_count']}") + print(f" Has Changes: {status['has_changes']}") + print(f" Changed Files: {status['changed_files']}") + print(f" Remote Connected: {status['remote_connected']}") + if status['last_backup']: + print(f" Last Backup: {status['last_backup']}") + + if status['backup_branches']: + print("\n Recent Backups:") + for branch in status['backup_branches']: + print(f" - {branch}") + + elif args.cleanup: + success = agent.cleanup_backups() + sys.exit(0 if success else 1) + + elif args.init: + success = agent.init_repository() + sys.exit(0 if success else 1) + + else: + parser.print_help() + sys.exit(0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/florida/tools/git_opencode.py b/florida/tools/git_opencode.py new file mode 100644 index 0000000..48cf1e9 --- /dev/null +++ b/florida/tools/git_opencode.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +""" +OpenCode Git Agent - Direct Integration +Simple direct commands for Git Agent operations +""" + +import os +import subprocess +import sys + +def run_git_backup(): + """Create automated backup""" + try: + project_root = "K:\\Projects\\uniswap_auto_clp" + agent_path = os.path.join(project_root, "tools", "git_agent.py") + + result = subprocess.run( + ["python", agent_path, "--backup"], + cwd=project_root, + capture_output=True, + text=True, + check=False, + env=dict(os.environ, PYTHONIOENCODING='utf-8') + ) + + if result.returncode == 0: + print("SUCCESS: Backup completed successfully!") + print("Automated backup created and pushed to remote repository.") + else: + error_msg = result.stderr or result.stdout or "Unknown error" + print(f"ERROR: Backup failed!") + print(f"Error: {error_msg}") + + except Exception as e: + print(f"ERROR: Exception during backup: {str(e)}") + +def run_git_status(): + """Show git status""" + try: + project_root = "K:\\Projects\\uniswap_auto_clp" + agent_path = os.path.join(project_root, "tools", "git_agent.py") + + result = subprocess.run( + ["python", agent_path, "--status"], + cwd=project_root, + capture_output=True, + text=True, + check=False, + env=dict(os.environ, PYTHONIOENCODING='utf-8') + ) + + if result.returncode == 0: + print("SUCCESS: Git Agent Status") + print(result.stdout) + else: + print(f"ERROR: Status check failed!") + error_msg = result.stderr or result.stdout or "Unknown error" + print(f"Error: {error_msg}") + + except Exception as e: + print(f"ERROR: Exception during status check: {str(e)}") + +def run_git_cleanup(): + """Clean up old backups""" + try: + project_root = "K:\\Projects\\uniswap_auto_clp" + agent_path = os.path.join(project_root, "tools", "git_agent.py") + + result = subprocess.run( + ["python", agent_path, "--cleanup"], + cwd=project_root, + capture_output=True, + text=True, + check=False, + env=dict(os.environ, PYTHONIOENCODING='utf-8') + ) + + if result.returncode == 0: + print("SUCCESS: Cleanup completed!") + print("Old backup branches have been removed according to retention policy.") + else: + print(f"ERROR: Cleanup failed!") + error_msg = result.stderr or result.stdout or "Unknown error" + print(f"Error: {error_msg}") + + except Exception as e: + print(f"ERROR: Exception during cleanup: {str(e)}") + +def run_git_restore(time_input=None): + """Restore from backup""" + try: + project_root = "K:\\Projects\\uniswap_auto_clp" + + if time_input: + # Use git directly for restore + branch_name = f"backup-{time_input}" + + result = subprocess.run( + ["git", "checkout", branch_name], + cwd=project_root, + capture_output=True, + text=True, + check=False, + env=dict(os.environ, PYTHONIOENCODING='utf-8') + ) + + if result.returncode == 0: + print(f"SUCCESS: Restored to backup!") + print(f"Branch: {branch_name}") + print("Note: You are now on a backup branch.") + print("Use 'git checkout main' to return to main branch when done.") + else: + print(f"ERROR: Restore failed!") + print(f"Error: {result.stderr}") + else: + print("ERROR: Please specify backup timestamp") + print("Usage: restore ") + print("Example: restore 2025-12-19-14") + + except Exception as e: + print(f"ERROR: Exception during restore: {str(e)}") + +if __name__ == "__main__": + if len(sys.argv) > 1: + command = sys.argv[1] + + if command == "backup": + run_git_backup() + elif command == "status": + run_git_status() + elif command == "cleanup": + run_git_cleanup() + elif command == "restore": + timestamp = sys.argv[2] if len(sys.argv) > 2 else None + run_git_restore(timestamp) + else: + print("Git Agent - OpenCode Integration") + print("Usage: python git_opencode.py ") + print("\nCommands:") + print(" backup - Create automated backup") + print(" status - Show git agent status") + print(" cleanup - Clean old backups") + print(" restore - Restore from backup") + print("\nExamples:") + print(" python git_opencode.py backup") + print(" python git_opencode.py status") + print(" python git_opencode.py restore 2025-12-19-14") + else: + print("Git Agent - OpenCode Integration") + print("Usage: python git_opencode.py ") + print("\nCommands:") + print(" backup - Create automated backup") + print(" status - Show git agent status") + print(" cleanup - Clean old backups") + print(" restore - Restore from backup") + print("\nExamples:") + print(" python git_opencode.py backup") + print(" python git_opencode.py status") + print(" python git_opencode.py restore 2025-12-19-14") \ No newline at end of file diff --git a/florida/tools/git_utils.py b/florida/tools/git_utils.py new file mode 100644 index 0000000..05dc072 --- /dev/null +++ b/florida/tools/git_utils.py @@ -0,0 +1,238 @@ +#!/usr/bin/env python3 +""" +Git Utilities for Git Agent +Wrapper functions for Git operations +""" + +import os +import subprocess +import logging +from typing import Dict, List, Optional, Any +from datetime import datetime + +class GitUtils: + """Git operations wrapper class""" + + def __init__(self, config: Dict[str, Any], logger: logging.Logger): + self.config = config + self.logger = logger + self.project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + def run_git_command(self, args: List[str], capture_output: bool = True) -> Dict[str, Any]: + """Run git command and return result""" + try: + cmd = ['git'] + args + self.logger.debug(f"Running: {' '.join(cmd)}") + + if capture_output: + result = subprocess.run( + cmd, + cwd=self.project_root, + capture_output=True, + text=True, + check=False + ) + return { + 'success': result.returncode == 0, + 'stdout': result.stdout.strip(), + 'stderr': result.stderr.strip(), + 'returncode': result.returncode + } + else: + result = subprocess.run(cmd, cwd=self.project_root, check=False) + return { + 'success': result.returncode == 0, + 'returncode': result.returncode + } + + except Exception as e: + self.logger.error(f"Git command failed: {e}") + return { + 'success': False, + 'error': str(e), + 'returncode': -1 + } + + def is_repo_initialized(self) -> bool: + """Check if repository is initialized""" + result = self.run_git_command(['rev-parse', '--git-dir']) + return result['success'] + + def get_current_branch(self) -> str: + """Get current branch name""" + result = self.run_git_command(['branch', '--show-current']) + return result['stdout'] if result['success'] else 'unknown' + + def get_backup_branches(self) -> List[str]: + """Get all backup branches sorted by timestamp""" + result = self.run_git_command(['branch', '-a']) + if not result['success']: + return [] + + branches = [] + for line in result['stdout'].split('\n'): + branch = line.strip().replace('* ', '').replace('remotes/origin/', '') + if branch.startswith('backup-'): + branches.append(branch) + + # Sort by timestamp (extract from branch name) + branches.sort(key=lambda x: x.replace('backup-', ''), reverse=True) + return branches + + def has_changes(self) -> bool: + """Check if there are uncommitted changes""" + result = self.run_git_command(['status', '--porcelain']) + return bool(result['stdout'].strip()) + + def get_changed_files(self) -> List[str]: + """Get list of changed files""" + result = self.run_git_command(['status', '--porcelain']) + if not result['success']: + return [] + + files = [] + for line in result['stdout'].split('\n'): + if line.strip(): + # Extract filename (remove status codes) + filename = line.strip()[2:] if len(line.strip()) > 2 else line.strip() + if filename: + files.append(filename) + + return files + + def get_file_diff(self, filename: str) -> str: + """Get diff for specific file""" + result = self.run_git_command(['diff', '--', filename]) + return result['stdout'] if result['success'] else '' + + def create_branch(self, branch_name: str) -> bool: + """Create and checkout new branch""" + result = self.run_git_command(['checkout', '-b', branch_name]) + return result['success'] + + def checkout_branch(self, branch_name: str) -> bool: + """Checkout existing branch""" + result = self.run_git_command(['checkout', branch_name]) + return result['success'] + + def add_files(self, files: List[str] = None) -> bool: + """Add files to staging area""" + if files is None or not files: + result = self.run_git_command(['add', '.']) + else: + result = self.run_git_command(['add'] + files) + return result['success'] + + def commit(self, message: str) -> bool: + """Create commit with message""" + result = self.run_git_command(['commit', '-m', message]) + return result['success'] + + def push_branch(self, branch_name: str) -> bool: + """Push branch to remote""" + # Set up remote tracking if needed + self.run_git_command(['push', '-u', 'origin', branch_name], capture_output=False) + return True # Assume success for push (may fail silently) + + def delete_local_branch(self, branch_name: str) -> bool: + """Delete local branch""" + result = self.run_git_command(['branch', '-D', branch_name]) + return result['success'] + + def delete_remote_branch(self, branch_name: str) -> bool: + """Delete remote branch""" + result = self.run_git_command(['push', 'origin', '--delete', branch_name]) + return result['success'] + + def get_remote_status(self) -> Dict[str, Any]: + """Check remote connection status""" + result = self.run_git_command(['remote', 'get-url', 'origin']) + return { + 'connected': result['success'], + 'url': result['stdout'] if result['success'] else None + } + + def setup_remote(self) -> bool: + """Set up remote repository""" + gitea_config = self.config.get('gitea', {}) + server_url = gitea_config.get('server_url') + username = gitea_config.get('username') + repository = gitea_config.get('repository') + + if not all([server_url, username, repository]): + self.logger.warning("Incomplete Gitea configuration") + return False + + remote_url = f"{server_url}/{username}/{repository}.git" + + # Check if remote already exists + existing_remote = self.run_git_command(['remote', 'get-url', 'origin']) + if existing_remote['success']: + self.logger.info("Remote already configured") + return True + + # Add remote + result = self.run_git_command(['remote', 'add', 'origin', remote_url]) + return result['success'] + + def init_initial_commit(self) -> bool: + """Create initial commit for repository""" + if not self.is_repo_initialized(): + # Initialize repository + result = self.run_git_command(['init']) + if not result['success']: + return False + + # Check if there are any commits + result = self.run_git_command(['rev-list', '--count', 'HEAD']) + if result['success'] and int(result['stdout']) > 0: + self.logger.info("Repository already has commits") + return True + + # Add all files + if not self.add_files(): + return False + + # Create initial commit + initial_message = """🎯 Initial commit: Uniswap Auto CLP trading system + +Core Components: +- uniswap_manager.py: V3 concentrated liquidity position manager +- clp_hedger.py: Hyperliquid perpetuals hedging bot +- requirements.txt: Python dependencies +- .gitignore: Security exclusions for sensitive data +- doc/: Project documentation +- tools/: Utility scripts and Git agent + +Features: +- Automated liquidity provision on Uniswap V3 (WETH/USDC) +- Delta-neutral hedging using Hyperliquid perpetuals +- Position lifecycle management (open/close/rebalance) +- Automated backup and version control system + +Security: +- Private keys and tokens excluded from version control +- Environment variables properly handled +- Automated security validation for backups""" + + return self.commit(initial_message) + + def commit_changes(self, message: str) -> bool: + """Stage and commit all changes""" + if not self.add_files(): + return False + + return self.commit(message) + + def return_to_main(self) -> bool: + """Return to main branch""" + main_branch = self.config.get('main_branch', {}).get('name', 'main') + return self.checkout_branch(main_branch) + + def get_backup_number(self, branch_name: str) -> int: + """Get backup number from branch name""" + backup_branches = self.get_backup_branches() + try: + return backup_branches.index(branch_name) + 1 + except ValueError: + return 0 \ No newline at end of file diff --git a/florida/tools/kpi_tracker.py b/florida/tools/kpi_tracker.py new file mode 100644 index 0000000..dda3f3e --- /dev/null +++ b/florida/tools/kpi_tracker.py @@ -0,0 +1,134 @@ +import os +import csv +import time +import logging +from decimal import Decimal +from typing import Dict, Optional + +# Setup Logger +logger = logging.getLogger("KPI_TRACKER") +logger.setLevel(logging.INFO) +# Basic handler if not already handled by parent +if not logger.handlers: + ch = logging.StreamHandler() + formatter = logging.Formatter('%(asctime)s - KPI - %(message)s') + ch.setFormatter(formatter) + logger.addHandler(ch) + +KPI_FILE = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'logs', 'kpi_history.csv') + +def initialize_kpi_csv(): + """Creates the CSV with headers if it doesn't exist.""" + if not os.path.exists(os.path.dirname(KPI_FILE)): + os.makedirs(os.path.dirname(KPI_FILE)) + + if not os.path.exists(KPI_FILE): + with open(KPI_FILE, 'w', newline='') as f: + writer = csv.writer(f) + writer.writerow([ + "Timestamp", + "Date", + "NAV_Total_USD", + "Benchmark_HODL_USD", + "Alpha_USD", + "Uniswap_Val_USD", + "Uniswap_Fees_Claimed_USD", + "Uniswap_Fees_Unclaimed_USD", + "Hedge_Equity_USD", + "Hedge_PnL_Realized_USD", + "Hedge_Fees_Paid_USD", + "ETH_Price", + "Fee_Coverage_Ratio" + ]) + +def calculate_hodl_benchmark(initial_eth: Decimal, initial_usdc: Decimal, initial_hedge_usdc: Decimal, current_eth_price: Decimal) -> Decimal: + """Calculates value if assets were just held (Wallet Assets + Hedge Account Cash).""" + return (initial_eth * current_eth_price) + initial_usdc + initial_hedge_usdc + +def log_kpi_snapshot( + snapshot_data: Dict[str, float] +): + """ + Logs a KPI snapshot to CSV. + Expected keys in snapshot_data: + - initial_eth, initial_usdc, initial_hedge_usdc + - current_eth_price + - uniswap_pos_value_usd + - uniswap_fees_claimed_usd + - uniswap_fees_unclaimed_usd + - hedge_equity_usd + - hedge_pnl_realized_usd + - hedge_fees_paid_usd + - wallet_eth_bal, wallet_usdc_bal (Optional, for full NAV) + """ + try: + initialize_kpi_csv() + + # Convert all inputs to Decimal for precision + price = Decimal(str(snapshot_data.get('current_eth_price', 0))) + + # 1. Benchmark (HODL) + init_eth = Decimal(str(snapshot_data.get('initial_eth', 0))) + init_usdc = Decimal(str(snapshot_data.get('initial_usdc', 0))) + init_hedge = Decimal(str(snapshot_data.get('initial_hedge_usdc', 0))) + benchmark_val = calculate_hodl_benchmark(init_eth, init_usdc, init_hedge, price) + + # 2. Strategy NAV (Net Asset Value) + # NAV = Uni Pos + Uni Fees (Claimed+Unclaimed) + Hedge Equity + (Wallet Surplus - Initial Wallet Surplus?) + # For simplicity, we focus on the Strategy PnL components: + # Strategy Val = (Current Uni Pos) + (Claimed Fees) + (Unclaimed Fees) + (Hedge PnL Realized) + (Hedge Unrealized?) + # Note: Hedge Equity usually includes margin. We strictly want "Value Generated". + + uni_val = Decimal(str(snapshot_data.get('uniswap_pos_value_usd', 0))) + uni_fees_claimed = Decimal(str(snapshot_data.get('uniswap_fees_claimed_usd', 0))) + uni_fees_unclaimed = Decimal(str(snapshot_data.get('uniswap_fees_unclaimed_usd', 0))) + + # Hedge PnL (Realized + Unrealized) is better than Equity for PnL tracking, + # but Equity represents actual redeemable cash. Let's use Equity if provided, or PnL components. + hedge_equity = Decimal(str(snapshot_data.get('hedge_equity_usd', 0))) + hedge_fees = Decimal(str(snapshot_data.get('hedge_fees_paid_usd', 0))) + + # Simplified NAV for Strategy Comparison: + # We assume 'hedge_equity' is the Liquidation Value of the hedge account. + # But if we want strictly "Strategy Performance", we usually do: + # Current Value = Uni_Val + Unclaimed + Hedge_Equity + # (Assuming Hedge_Equity started at 0 or we track delta? No, usually Hedge Account has deposit). + + # Let's define NAV as Total Current Liquidation Value of Strategy Components + current_nav = uni_val + uni_fees_unclaimed + uni_fees_claimed + hedge_equity + + # Alpha + alpha = current_nav - benchmark_val + + # Coverage Ratio + total_hedge_cost = abs(hedge_fees) # + funding if available + total_uni_earnings = uni_fees_claimed + uni_fees_unclaimed + + if total_hedge_cost > 0: + coverage_ratio = total_uni_earnings / total_hedge_cost + else: + coverage_ratio = Decimal("999.0") # Infinite/Good + + # Write + with open(KPI_FILE, 'a', newline='') as f: + writer = csv.writer(f) + writer.writerow([ + int(time.time()), + time.strftime('%Y-%m-%d %H:%M:%S'), + f"{current_nav:.2f}", + f"{benchmark_val:.2f}", + f"{alpha:.2f}", + f"{uni_val:.2f}", + f"{uni_fees_claimed:.2f}", + f"{uni_fees_unclaimed:.2f}", + f"{hedge_equity:.2f}", + f"{snapshot_data.get('hedge_pnl_realized_usd', 0):.2f}", + f"{hedge_fees:.2f}", + f"{price:.2f}", + f"{coverage_ratio:.2f}" + ]) + + logger.info(f"📊 KPI Logged | NAV: ${current_nav:.2f} | Benchmark: ${benchmark_val:.2f} | Alpha: ${alpha:.2f}") + + except Exception as e: + logger.error(f"Failed to log KPI: {e}") diff --git a/florida/tools/record_live_data.py b/florida/tools/record_live_data.py new file mode 100644 index 0000000..535f5e6 --- /dev/null +++ b/florida/tools/record_live_data.py @@ -0,0 +1,136 @@ +import argparse +import csv +import os +import time +import json +import threading +import signal +import sys +import websocket +from datetime import datetime + +# Setup +MARKET_DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'market_data') +WS_URL = "wss://api.hyperliquid.xyz/ws" + +class CandleRecorder: + def __init__(self, coin, output_file): + self.coin = coin + self.output_file = output_file + self.ws = None + self.running = True + + # Candle State + self.current_second = int(time.time()) + self.ticks = [] # List of prices in current second + self.candle_lock = threading.Lock() + + # Ensure dir exists + if not os.path.exists(MARKET_DATA_DIR): + os.makedirs(MARKET_DATA_DIR) + + # Init CSV + self.file_exists = os.path.exists(output_file) + with open(self.output_file, 'a', newline='') as f: + writer = csv.writer(f) + if not self.file_exists: + writer.writerow(['timestamp', 'open', 'high', 'low', 'close', 'count']) + + def on_message(self, ws, message): + try: + data = json.loads(message) + + # Check for 'allMids' update + if data.get('channel') == 'allMids': + mids = data.get('data', {}).get('mids', {}) + if self.coin in mids: + price = float(mids[self.coin]) + self.process_tick(price) + + except Exception as e: + print(f"Error processing message: {e}") + + def process_tick(self, price): + now_sec = int(time.time()) + + with self.candle_lock: + # If we moved to a new second, close the old one + if now_sec > self.current_second: + self.close_candle() + self.current_second = now_sec + self.ticks = [] + + self.ticks.append(price) + + def close_candle(self): + if not self.ticks: + return + + # Build candle + o = self.ticks[0] + c = self.ticks[-1] + h = max(self.ticks) + l = min(self.ticks) + count = len(self.ticks) + ts = self.current_second * 1000 + + # Write to file + try: + with open(self.output_file, 'a', newline='') as f: + writer = csv.writer(f) + writer.writerow([ts, o, h, l, c, count]) + + if self.current_second % 10 == 0: + print(f"[{datetime.fromtimestamp(self.current_second)}] 🕯️ Saved {self.coin}: {c} ({count} ticks)") + + except Exception as e: + print(f"Error writing candle: {e}") + + def on_error(self, ws, error): + print(f"WebSocket Error: {error}") + + def on_close(self, ws, close_status_code, close_msg): + print("WebSocket Closed") + + def on_open(self, ws): + print("WebSocket Connected. Subscribing to allMids...") + sub_msg = { + "method": "subscribe", + "subscription": {"type": "allMids"} + } + ws.send(json.dumps(sub_msg)) + + def start(self): + print(f"🔴 RECORDING LIVE 1s DATA (WS) for {self.coin}") + print(f"📂 Output: {self.output_file}") + print("Press Ctrl+C to stop.") + + # Start WS in separate thread? No, run_forever is blocking usually. + # But we need to handle Ctrl+C. + self.ws = websocket.WebSocketApp( + WS_URL, + on_open=self.on_open, + on_message=self.on_message, + on_error=self.on_error, + on_close=self.on_close + ) + + self.ws.run_forever() + +def signal_handler(sig, frame): + print("\nStopping recorder...") + sys.exit(0) + +if __name__ == "__main__": + signal.signal(signal.SIGINT, signal_handler) + + parser = argparse.ArgumentParser(description="Record live 1s candles from Hyperliquid via WebSocket") + parser.add_argument("--coin", type=str, default="ETH", help="Coin symbol") + parser.add_argument("--output", type=str, help="Custom output file") + + args = parser.parse_args() + + filename = args.output or os.path.join(MARKET_DATA_DIR, f"{args.coin}_1s_LIVE_WS.csv") + + recorder = CandleRecorder(args.coin, filename) + recorder.start() \ No newline at end of file diff --git a/florida/unified_hedger.py b/florida/unified_hedger.py new file mode 100644 index 0000000..82b4fde --- /dev/null +++ b/florida/unified_hedger.py @@ -0,0 +1,858 @@ +import os +import time +import logging +import sys +import json +import glob +import math +from decimal import Decimal, getcontext, ROUND_DOWN +from typing import Optional, Dict, Any, List, Union +from dotenv import load_dotenv + +# --- FIX: Add project root to sys.path to import local modules --- +current_dir = os.path.dirname(os.path.abspath(__file__)) +project_root = os.path.dirname(current_dir) +sys.path.append(project_root) + +# Import local modules +try: + from logging_utils import setup_logging +except ImportError: + setup_logging = None + # Ensure root logger is clean if we can't use setup_logging + logging.getLogger().handlers.clear() + logging.basicConfig(level=logging.INFO) + +from eth_account import Account +from hyperliquid.exchange import Exchange +from hyperliquid.info import Info +from hyperliquid.utils import constants +from clp_config import CLP_PROFILES, DEFAULT_STRATEGY + +# Load environment variables +dotenv_path = os.path.join(current_dir, '.env') +load_dotenv(dotenv_path if os.path.exists(dotenv_path) else None) + +# --- LOGGING SETUP --- +# Ensure logs directory exists +log_dir = os.path.join(current_dir, 'logs') +os.makedirs(log_dir, exist_ok=True) + +# Custom Filter for Millisecond Unix Timestamp (Matching Manager style) +class UnixMsLogFilter(logging.Filter): + def filter(self, record): + record.unix_ms = int(record.created * 1000) + return True + +# Configure Logging +logger = logging.getLogger("UNIFIED_HEDGER") +logger.setLevel(logging.INFO) +logger.propagate = False # Prevent double logging from root logger +logger.handlers.clear() # Clear existing handlers to prevent duplicates + +# Console Handler +console_handler = logging.StreamHandler(sys.stdout) +console_handler.setLevel(logging.INFO) +console_fmt = logging.Formatter('%(asctime)s - %(message)s') +console_handler.setFormatter(console_fmt) +logger.addHandler(console_handler) + +# File Handler +log_file = os.path.join(log_dir, 'unified_hedger.log') +file_handler = logging.FileHandler(log_file, encoding='utf-8') +file_handler.setLevel(logging.INFO) +file_handler.addFilter(UnixMsLogFilter()) +file_fmt = logging.Formatter('%(unix_ms)d, %(asctime)s - %(message)s') +file_handler.setFormatter(file_fmt) +logger.addHandler(file_handler) + +# --- DECIMAL PRECISION CONFIGURATION --- +getcontext().prec = 50 + +# --- CONFIGURATION --- +# Settings are loaded from clp_config.py into self.coin_configs + +# --- HELPER FUNCTIONS --- + +def to_decimal(value: Any) -> Decimal: + """Safely convert value to Decimal.""" + if value is None: + return Decimal("0") + return Decimal(str(value)) + +def round_to_sz_decimals_precise(amount: Decimal, sz_decimals: int) -> float: + """Round Decimal amount to specific decimals and return float for SDK.""" + if amount == 0: + return 0.0 + + quantizer = Decimal("1").scaleb(-sz_decimals) + rounded = amount.quantize(quantizer, rounding=ROUND_DOWN) + return float(rounded) + +def round_to_sig_figs_precise(x: Decimal, sig_figs: int = 5) -> float: + """Round Decimal to significant figures and return float for SDK.""" + if x == 0: + return 0.0 + # Use string formatting for sig figs as it's robust + return float(f"{x:.{sig_figs}g}") + +def validate_trade_size(size: Decimal, sz_decimals: int, min_order_value: Decimal, price: Decimal) -> float: + """Validate trade size against minimums.""" + if size <= 0: + return 0.0 + + # Check minimum order value + order_value = size * price + if order_value < min_order_value: + return 0.0 + + # Check dust + min_size = Decimal("10") ** (-sz_decimals) + if size < min_size: + return 0.0 + + return round_to_sz_decimals_precise(size, sz_decimals) + +def update_position_stats(file_path: str, token_id: int, stats_data: Dict): + if not os.path.exists(file_path): return + try: + with open(file_path, 'r') as f: + data = json.load(f) + + if isinstance(data, dict): data = [data] + + updated = False + for entry in data: + if entry.get('token_id') == token_id: + entry.update(stats_data) + updated = True + break + + if updated: + with open(file_path, 'w') as f: + json.dump(data, f, indent=2) + except Exception as e: + logger.error(f"Error updating JSON stats in {file_path}: {e}") + +# --- STRATEGY CLASS --- + +class HyperliquidStrategy: + def __init__(self, entry_amount0: Decimal, entry_amount1: Decimal, target_value: Decimal, + entry_price: Decimal, low_range: Decimal, high_range: Decimal, start_price: Decimal, + liquidity: int = 0, liquidity_scale: Decimal = Decimal("1e-12")): + self.entry_amount0 = entry_amount0 + self.entry_amount1 = entry_amount1 + self.target_value = target_value + self.entry_price = entry_price + self.low_range = low_range + self.high_range = high_range + self.start_price = start_price + + self.gap = max(Decimal("0.0"), entry_price - start_price) + self.recovery_target = entry_price + (Decimal("2") * self.gap) + + self.L = Decimal("0.0") + + # Priority: Use exact Liquidity from Contract if available + if liquidity > 0: + self.L = Decimal(liquidity) * liquidity_scale + # Calculate implied delta at entry for verification + implied_delta = self.get_pool_delta(entry_price) + # Log removed to reduce spam in unified logger + # logger.info(f"Using Exact Liquidity: {self.L:.4f} (Raw: {liquidity}, Scale: {liquidity_scale})") + else: + try: + sqrt_P = entry_price.sqrt() + sqrt_Pa = low_range.sqrt() + sqrt_Pb = high_range.sqrt() + + if entry_amount0 > 0: + denom0 = (Decimal("1") / sqrt_P) - (Decimal("1") / sqrt_Pb) + if denom0 > Decimal("1e-10"): + self.L = entry_amount0 / denom0 + + if self.L == 0 and entry_amount1 > 0: + denom1 = sqrt_P - sqrt_Pa + if denom1 > Decimal("1e-10"): + self.L = entry_amount1 / denom1 + + if self.L == 0: + max_eth = target_value / low_range + denom_h = (Decimal("1") / sqrt_Pa) - (Decimal("1") / sqrt_Pb) + if denom_h > 0: + self.L = max_eth / denom_h + except Exception as e: + logger.error(f"Error calculating liquidity: {e}") + + def get_pool_delta(self, current_price: Decimal) -> Decimal: + if current_price >= self.high_range: + return Decimal("0.0") + + if current_price <= self.low_range: + sqrt_Pa = self.low_range.sqrt() + sqrt_Pb = self.high_range.sqrt() + return self.L * ((Decimal("1")/sqrt_Pa) - (Decimal("1")/sqrt_Pb)) + + sqrt_P = current_price.sqrt() + sqrt_Pb = self.high_range.sqrt() + return self.L * ((Decimal("1")/sqrt_P) - (Decimal("1")/sqrt_Pb)) + + def calculate_rebalance(self, current_price: Decimal, current_short_size: Decimal) -> Dict: + # Note: current_short_size here is virtual (just for this specific strategy), + # but the unified hedger will use the 'target_short' output primarily. + + pool_delta = self.get_pool_delta(current_price) + + # --- ASYMMETRIC COMPENSATION --- + adj_pct = Decimal("0.0") + range_width = self.high_range - self.low_range + + if range_width > 0: + dist = current_price - self.entry_price + half_width = range_width / Decimal("2") + norm_dist = dist / half_width + max_boost = Decimal("0.075") + adj_pct = -norm_dist * max_boost + adj_pct = max(-max_boost, min(max_boost, adj_pct)) + + raw_target_short = pool_delta + adjusted_target_short = raw_target_short * (Decimal("1.0") + adj_pct) + + diff = adjusted_target_short - abs(current_short_size) + + return { + "current_price": current_price, + "pool_delta": pool_delta, + "target_short": adjusted_target_short, + "current_short": abs(current_short_size), + "diff": diff, + "action": "SELL" if diff > 0 else "BUY", + "adj_pct": adj_pct + } + +# --- UNIFIED HEDGER CLASS --- + +class UnifiedHedger: + def __init__(self): + self.private_key = os.environ.get("HEDGER_PRIVATE_KEY") + self.vault_address = os.environ.get("MAIN_WALLET_ADDRESS") + + if not self.private_key: + logger.error("No HEDGER_PRIVATE_KEY found in .env") + sys.exit(1) + + self.account = Account.from_key(self.private_key) + self.info = Info(constants.MAINNET_API_URL, skip_ws=True) + self.exchange = Exchange(self.account, constants.MAINNET_API_URL, account_address=self.vault_address) + + # Maps (file_path, token_id) -> Strategy Instance + self.strategies: Dict[tuple, HyperliquidStrategy] = {} + # Maps (file_path, token_id) -> State Data (accumulated pnl etc) + self.strategy_states: Dict[tuple, Dict] = {} + + # Unified State + self.coin_configs: Dict[str, Dict] = {} # Symbol -> Config (thresholds, decimals) + self.active_coins = set() + self.api_backoff_until = 0 + + # Market Data Cache + self.last_prices = {} + self.price_history = {} # Symbol -> List[Decimal] + self.last_trade_times = {} # Symbol -> timestamp + + # Shadow Orders (Global List) + self.shadow_orders = [] + + self.startup_time = time.time() + + logger.info(f"[UNIFIED] Master Hedger initialized. Agent: {self.account.address}") + self._init_coin_configs() + + def _init_coin_configs(self): + """Pre-load configuration for known coins from CLP_PROFILES.""" + for profile_key, profile_data in CLP_PROFILES.items(): + symbol = profile_data.get("COIN_SYMBOL") + if symbol: + if symbol not in self.coin_configs: + # Init with Defaults + self.coin_configs[symbol] = DEFAULT_STRATEGY.copy() + self.coin_configs[symbol]["sz_decimals"] = 4 # Will be updated by API + + # Update with Profile Specifics + self.coin_configs[symbol].update(profile_data) + + def _get_sz_decimals(self, coin: str) -> int: + try: + meta = self.info.meta() + for asset in meta["universe"]: + if asset["name"] == coin: + return asset["szDecimals"] + return 4 + except: return 4 + + def update_coin_decimals(self): + try: + meta = self.info.meta() + for asset in meta["universe"]: + coin = asset["name"] + if coin in self.coin_configs: + self.coin_configs[coin]["sz_decimals"] = asset["szDecimals"] + elif coin in self.active_coins: + self.coin_configs[coin] = DEFAULT_STRATEGY.copy() + self.coin_configs[coin]["sz_decimals"] = asset["szDecimals"] + except Exception as e: + logger.error(f"Failed to update coin decimals: {e}") + + def calculate_volatility(self, coin: str) -> Decimal: + history = self.price_history.get(coin, []) + if not history or len(history) < 30: + return Decimal("0.0") + try: + n = len(history) + mean = sum(history) / n + variance = sum([pow(p - mean, 2) for p in history]) / n + std_dev = variance.sqrt() + if mean == 0: return Decimal("0.0") + return std_dev / mean + except: return Decimal("0.0") + + def check_shadow_orders(self, l2_snapshots: Dict): + """Check if pending shadow (theoretical Maker) orders would have been filled.""" + if not self.shadow_orders: return + + now = time.time() + remaining = [] + + for order in self.shadow_orders: + coin = order.get('coin') + if not coin or coin not in l2_snapshots: + remaining.append(order) + continue + + levels = l2_snapshots[coin]['levels'] + # Snapshot: [ [ {px, sz, n}, ... ], [ {px, sz, n}, ... ] ] -> [Bids, Asks] + # Bids = levels[0], Asks = levels[1] + if not levels[0] or not levels[1]: + remaining.append(order) + continue + + best_bid = to_decimal(levels[0][0]['px']) + best_ask = to_decimal(levels[1][0]['px']) + + filled = False + if order['side'] == 'BUY': + # Filled if Ask <= Our Bid + if best_ask <= order['price']: filled = True + else: # SELL + # Filled if Bid >= Our Ask + if best_bid >= order['price']: filled = True + + if filled: + timeout = self.coin_configs.get(coin, {}).get("SHADOW_ORDER_TIMEOUT", 600) + duration = now - (order['expires_at'] - timeout) + logger.info(f"[SHADOW] ✅ SUCCESS: {coin} Maker {order['side']} @ {order['price']:.2f} filled in {duration:.1f}s") + elif now > order['expires_at']: + logger.info(f"[SHADOW] ❌ FAILED: {coin} Maker {order['side']} @ {order['price']:.2f} timed out") + else: + remaining.append(order) + + self.shadow_orders = remaining + + def scan_strategies(self) -> bool: + """Scans all *_status.json files and updates active strategies. Returns False if any read failed.""" + status_files = glob.glob(os.path.join(current_dir, "*_status.json")) + # logger.info(f"[DEBUG] Scanning {len(status_files)} status files...") + + active_ids = set() + successful_files = set() + has_errors = False + + for file_path in status_files: + # Determine Profile/Coin from filename or content? + # Filename convention: {TARGET_DEX}_status.json + filename = os.path.basename(file_path) + dex_name = filename.replace("_status.json", "") + + profile = CLP_PROFILES.get(dex_name) + if not profile: + # Fallback: Try to guess or skip + continue + + coin_symbol = profile.get("COIN_SYMBOL", "ETH") + self.active_coins.add(coin_symbol) + + try: + with open(file_path, 'r') as f: + content = f.read().strip() + if not content: + # Empty file (being written?) -> treat as error to be safe + raise ValueError("Empty file") + data = json.loads(content) + + successful_files.add(file_path) # Mark as safe to sync + + if isinstance(data, dict): data = [data] + + for entry in data: + if entry.get('type') == 'AUTOMATIC' and entry.get('status') in ['OPEN', 'PENDING_HEDGE', 'CLOSING']: + token_id = entry['token_id'] + key = (file_path, token_id) + active_ids.add(key) + + # Init or Update Strategy + if key not in self.strategies: + self._init_single_strategy(key, entry, coin_symbol) + # Init Status + if key in self.strategy_states: + self.strategy_states[key]['status'] = entry.get('status', 'OPEN') + else: + # Refresh PnL/Fees from file in case they changed + if key in self.strategy_states: + self.strategy_states[key]['pnl'] = to_decimal(entry.get('hedge_pnl_realized', 0)) + self.strategy_states[key]['fees'] = to_decimal(entry.get('hedge_fees_paid', 0)) + self.strategy_states[key]['status'] = entry.get('status', 'OPEN') + + except Exception as e: + logger.error(f"Error reading {filename}: {e}. Skipping updates.") + has_errors = True + + # Remove stale strategies ONLY from files we successfully read + current_keys = list(self.strategies.keys()) + for k in current_keys: + file_origin = k[0] + # If the file is gone (not in status_files) OR we successfully read it and the key is missing: + if file_origin not in status_files or (file_origin in successful_files and k not in active_ids): + logger.info(f"Strategy {k[1]} removed (Closed/Gone).") + del self.strategies[k] + if k in self.strategy_states: del self.strategy_states[k] + + return not has_errors + + def _init_single_strategy(self, key, position_data, coin_symbol): + try: + entry_amount0 = to_decimal(position_data.get('amount0_initial', 0)) + entry_amount1 = to_decimal(position_data.get('amount1_initial', 0)) + target_value = to_decimal(position_data.get('target_value', 50)) + entry_price = to_decimal(position_data['entry_price']) + lower = to_decimal(position_data['range_lower']) + upper = to_decimal(position_data['range_upper']) + liquidity_val = int(position_data.get('liquidity', 0)) + + d0 = int(position_data.get('token0_decimals', 18)) + d1 = int(position_data.get('token1_decimals', 6)) + scale_exp = (d0 + d1) / 2 + liquidity_scale = Decimal("10") ** Decimal(str(-scale_exp)) + + start_price = self.last_prices.get(coin_symbol) + if start_price is None: + # Will init next loop when price available + return + + strat = HyperliquidStrategy( + entry_amount0, entry_amount1, target_value, entry_price, lower, upper, start_price, + liquidity_val, liquidity_scale + ) + + self.strategies[key] = strat + self.strategy_states[key] = { + "coin": coin_symbol, + "start_time": int(time.time() * 1000), + "pnl": to_decimal(position_data.get('hedge_pnl_realized', 0)), + "fees": to_decimal(position_data.get('hedge_fees_paid', 0)), + "entry_price": entry_price, # Store for fishing logic + "status": position_data.get('status', 'OPEN') + } + logger.info(f"[STRAT] Init {key[1]} ({coin_symbol}) | Range: {lower}-{upper}") + + except Exception as e: + logger.error(f"Failed to init strategy {key[1]}: {e}") + + def place_limit_order(self, coin: str, is_buy: bool, size: Decimal, price: Decimal, order_type: str = "Alo") -> Optional[int]: + config = self.coin_configs.get(coin, {}) + sz_decimals = config.get("sz_decimals", 4) + min_order = config.get("MIN_ORDER_VALUE_USD", Decimal("10.0")) + + validated_size_float = validate_trade_size(size, sz_decimals, min_order, price) + if validated_size_float == 0: + return None + + price_float = round_to_sig_figs_precise(price, 5) + + logger.info(f"[ORDER] {order_type.upper()} {coin} {'BUY' if is_buy else 'SELL'} {validated_size_float} @ {price_float}") + + try: + order_result = self.exchange.order(coin, is_buy, validated_size_float, price_float, {"limit": {"tif": order_type}}, reduce_only=is_buy) + status = order_result["status"] + + if status == "ok": + response_data = order_result["response"]["data"] + if "statuses" in response_data: + status_obj = response_data["statuses"][0] + if "resting" in status_obj: + return status_obj["resting"]["oid"] + elif "filled" in status_obj: + logger.info("Order filled immediately.") + return status_obj["filled"]["oid"] + elif "error" in status_obj: + err_msg = status_obj['error'] + if "Post only order would have immediately matched" in err_msg: + logger.warning(f"[RETRY] Maker order rejected (Crossed). Will retry.") + else: + logger.error(f"Order API Error: {err_msg}") + else: + logger.error(f"Order Failed: {order_result}") + except Exception as e: + if "429" in str(e): + logger.warning(f"Rate limit hit (429). Backing off.") + self.api_backoff_until = time.time() + 30 + else: + logger.error(f"Exception during trade: {e}") + return None + + def get_open_orders(self) -> List[Dict]: + try: + return self.info.open_orders(self.vault_address or self.account.address) + except: + return [] + + def cancel_order(self, coin: str, oid: int): + try: + self.exchange.cancel(coin, oid) + except Exception as e: + logger.error(f"Error cancelling order: {e}") + + def run(self): + logger.info("Starting Unified Hedger Loop...") + self.update_coin_decimals() + + # --- LOG SETTINGS ON START --- + logger.info("=== HEDGER CONFIGURATION ===") + for symbol, config in self.coin_configs.items(): + logger.info(f"--- {symbol} ---") + for k, v in config.items(): + logger.info(f" {k}: {v}") + logger.info("============================") + + while True: + try: + # 1. API Backoff + if time.time() < self.api_backoff_until: + time.sleep(1) + continue + + # 2. Update Strategies + if not self.scan_strategies(): + logger.warning("Strategy scan failed (read error). Skipping execution tick.") + time.sleep(1) + continue + + # 3. Fetch Market Data (Centralized) + try: + mids = self.info.all_mids() + user_state = self.info.user_state(self.vault_address or self.account.address) + open_orders = self.get_open_orders() + l2_snapshots = {} # Cache for snapshots + except Exception as e: + logger.error(f"API Error fetching data: {e}") + time.sleep(1) + continue + + # Map Open Orders + orders_map = {} + for o in open_orders: + c = o['coin'] + if c not in orders_map: orders_map[c] = [] + orders_map[c].append(o) + + # Parse User State + account_value = Decimal("0") + if "marginSummary" in user_state and "accountValue" in user_state["marginSummary"]: + account_value = to_decimal(user_state["marginSummary"]["accountValue"]) + + # Map current positions + current_positions = {} # Coin -> Size + current_pnls = {} # Coin -> Unrealized PnL + for pos in user_state["assetPositions"]: + c = pos["position"]["coin"] + s = to_decimal(pos["position"]["szi"]) + u = to_decimal(pos["position"]["unrealizedPnl"]) + current_positions[c] = s + current_pnls[c] = u + + # 4. Aggregate Targets + # Coin -> { 'target_short': Decimal, 'contributors': int, 'is_at_edge': bool } + aggregates = {} + + # First, update all prices from mids for active coins + for coin in self.active_coins: + if coin in mids: + price = to_decimal(mids[coin]) + self.last_prices[coin] = price + + # Update Price History + if coin not in self.price_history: self.price_history[coin] = [] + self.price_history[coin].append(price) + if len(self.price_history[coin]) > 300: self.price_history[coin].pop(0) + + for key, strat in self.strategies.items(): + coin = self.strategy_states[key]['coin'] + status = self.strategy_states[key].get('status', 'OPEN') + if coin not in self.last_prices: continue + price = self.last_prices[coin] + + # Calc Logic + calc = strat.calculate_rebalance(price, Decimal("0")) + + if coin not in aggregates: + aggregates[coin] = {'target_short': Decimal("0"), 'contributors': 0, 'is_at_edge': False, 'adj_pct': Decimal("0"), 'is_closing': False} + + if status == 'CLOSING': + # If Closing, we want target to be 0 for this strategy + logger.info(f"[STRAT] {key[1]} is CLOSING -> Force Target 0") + aggregates[coin]['is_closing'] = True + # Do not add to target_short + else: + aggregates[coin]['target_short'] += calc['target_short'] + + aggregates[coin]['contributors'] += 1 + aggregates[coin]['adj_pct'] = calc['adj_pct'] + + # Check Edge Proximity for Cleanup + config = self.coin_configs.get(coin, {}) + enable_cleanup = config.get("ENABLE_EDGE_CLEANUP", True) + cleanup_margin = config.get("EDGE_CLEANUP_MARGIN_PCT", Decimal("0.02")) + + if enable_cleanup: + dist_bottom_pct = (price - strat.low_range) / strat.low_range + dist_top_pct = (strat.high_range - price) / strat.high_range + range_width_pct = (strat.high_range - strat.low_range) / strat.low_range + safety_margin_pct = range_width_pct * cleanup_margin + + if dist_bottom_pct < safety_margin_pct or dist_top_pct < safety_margin_pct: + aggregates[coin]['is_at_edge'] = True + + # Check Shadow Orders (Pre-Execution) + self.check_shadow_orders(l2_snapshots) + + # 5. Execute Per Coin + # Union of coins with Active Strategies OR Active Positions + coins_to_process = set(aggregates.keys()) + for c, pos in current_positions.items(): + if abs(pos) > 0: coins_to_process.add(c) + + for coin in coins_to_process: + data = aggregates.get(coin, {'target_short': Decimal("0"), 'contributors': 0, 'is_at_edge': False, 'adj_pct': Decimal("0"), 'is_closing': False}) + + price = self.last_prices.get(coin, Decimal("0")) # FIX: Explicitly get price for this coin + if price == 0: continue + + target_short_abs = data['target_short'] # Always positive (it's a magnitude of short) + target_position = -target_short_abs # We want to be Short, so negative size + + current_pos = current_positions.get(coin, Decimal("0")) + + diff = target_position - current_pos # e.g. -1.0 - (-0.8) = -0.2 (Sell 0.2) + diff_abs = abs(diff) + + # Thresholds + config = self.coin_configs.get(coin, {}) + min_thresh = config.get("min_threshold", Decimal("0.008")) + + # Volatility Multiplier + vol_pct = self.calculate_volatility(coin) + base_vol = Decimal("0.0005") + vol_mult = max(Decimal("1.0"), min(Decimal("3.0"), vol_pct / base_vol)) if vol_pct > 0 else Decimal("1.0") + + base_rebalance_pct = config.get("BASE_REBALANCE_THRESHOLD_PCT", Decimal("0.20")) + thresh_pct = min(Decimal("0.15"), base_rebalance_pct * vol_mult) + dynamic_thresh = max(min_thresh, abs(target_position) * thresh_pct) + + # FORCE EDGE CLEANUP + enable_edge_cleanup = config.get("ENABLE_EDGE_CLEANUP", True) + if data['is_at_edge'] and enable_edge_cleanup: + if dynamic_thresh > min_thresh: + # logger.info(f"[EDGE] {coin} forced to min threshold.") + dynamic_thresh = min_thresh + + # Check Trigger + action_needed = diff_abs > dynamic_thresh + + # Manage Existing Orders + existing_orders = orders_map.get(coin, []) + + # --- EXECUTION LOGIC --- + if action_needed: + bypass_cooldown = False + force_maker = False + + # 1. Urgent Closing -> Taker + if data.get('is_closing', False): + bypass_cooldown = True + logger.info(f"[URGENT] {coin} Closing Strategy -> Force Taker Exit") + + # 2. Ghost/Cleanup -> Maker + elif data.get('contributors', 0) == 0: + if time.time() - self.startup_time > 5: + force_maker = True + logger.info(f"[CLEANUP] {coin} Ghost Position -> Force Maker Reduce") + else: + logger.info(f"[STARTUP] Skipping Ghost Cleanup for {coin} (Grace Period)") + continue # Skip execution for this coin + + # Large Hedge Check + large_hedge_mult = config.get("LARGE_HEDGE_MULTIPLIER", Decimal("5.0")) + if diff_abs > (dynamic_thresh * large_hedge_mult) and not force_maker: + bypass_cooldown = True + logger.info(f"[WARN] LARGE HEDGE: {diff_abs:.4f} > {dynamic_thresh:.4f} (x{large_hedge_mult})") + + # Determine Intent + is_buy_bool = diff > 0 + side_str = "BUY" if is_buy_bool else "SELL" + + # Check Existing Orders for compatibility + order_matched = False + price_buffer_pct = config.get("PRICE_BUFFER_PCT", Decimal("0.0015")) + + for o in existing_orders: + o_oid = o['oid'] + o_price = to_decimal(o['limitPx']) + o_side = o['side'] # 'B' or 'A' + + is_same_side = (o_side == 'B' and is_buy_bool) or (o_side == 'A' and not is_buy_bool) + + # Price Check (within buffer) + # If we are BUYING, we want order price close to Bid (or higher) + # If we are SELLING, we want order price close to Ask (or lower) + dist_pct = abs(price - o_price) / price + + if is_same_side and dist_pct < price_buffer_pct: + order_matched = True + if int(time.time()) % 10 == 0: + logger.info(f"[WAIT] {coin} Pending {side_str} Order {o_oid} @ {o_price} (Dist: {dist_pct*100:.3f}%)") + break + else: + logger.info(f"Cancelling stale order {o_oid} ({o_side} @ {o_price})") + self.cancel_order(coin, o_oid) + + if order_matched: + continue # Order exists, wait for it + + last_trade = self.last_trade_times.get(coin, 0) + + min_time_trade = config.get("MIN_TIME_BETWEEN_TRADES", 60) + can_trade = False + if bypass_cooldown: + can_trade = True + elif time.time() - last_trade > min_time_trade: + can_trade = True + + if can_trade: + # Get Orderbook for Price + if coin not in l2_snapshots: + l2_snapshots[coin] = self.info.l2_snapshot(coin) + + levels = l2_snapshots[coin]['levels'] + if not levels[0] or not levels[1]: continue + + bid = to_decimal(levels[0][0]['px']) + ask = to_decimal(levels[1][0]['px']) + + # Price logic + create_shadow = False + if bypass_cooldown and not force_maker: + exec_price = ask * Decimal("1.001") if is_buy_bool else bid * Decimal("0.999") + order_type = "Ioc" + create_shadow = True + else: + exec_price = bid if is_buy_bool else ask + order_type = "Alo" + + logger.info(f"[TRIG] Net {coin}: {side_str} {diff_abs:.4f} | Tgt: {target_position:.4f} / Cur: {current_pos:.4f} | Thresh: {dynamic_thresh:.4f}") + + oid = self.place_limit_order(coin, is_buy_bool, diff_abs, exec_price, order_type) + if oid: + self.last_trade_times[coin] = time.time() + + # Shadow Order + if create_shadow: + shadow_price = bid if is_buy_bool else ask + shadow_timeout = config.get("SHADOW_ORDER_TIMEOUT", 600) + self.shadow_orders.append({ + 'coin': coin, + 'side': side_str, + 'price': shadow_price, + 'expires_at': time.time() + shadow_timeout + }) + logger.info(f"[SHADOW] Created Maker {side_str} @ {shadow_price:.2f}") + + # UPDATED: Sleep for API Lag + logger.info("Sleeping 5s to allow position update...") + time.sleep(5) + else: + # Cooldown log + pass + + else: + # Action NOT needed + # Cleanup any dangling orders + if existing_orders: + for o in existing_orders: + logger.info(f"Cancelling idle order {o['oid']} ({o['side']} @ {o['limitPx']})") + self.cancel_order(coin, o['oid']) + + # --- IDLE LOGGING (Restored Format) --- + # Calculate aggregate Gamma to estimate triggers + # Gamma = 0.5 * Sum(L) * P^-1.5 + # We need Sum(L) for this coin. + total_L = Decimal("0") + # We need to re-iterate or cache L. + # Simpler: Just re-sum L from active strats for this coin. + for key, strat in self.strategies.items(): + if self.strategy_states[key]['coin'] == coin: + total_L += strat.L + + if total_L > 0 and price > 0: + gamma = (Decimal("0.5") * total_L * (price ** Decimal("-1.5"))) + if gamma > 0: + # Equilibrium Price (Diff = 0) + p_mid = price + (diff / gamma) + + # Triggers + p_buy = price + (dynamic_thresh + diff) / gamma + p_sell = price - (dynamic_thresh - diff) / gamma + + if int(time.time()) % 30 == 0: + pad = " " if coin == "BNB" else "" + adj_val = data.get('adj_pct', Decimal("0")) * 100 + + # PnL Calc + unrealized = current_pnls.get(coin, Decimal("0")) + realized = Decimal("0") + for k, s_state in self.strategy_states.items(): + if s_state['coin'] == coin: + realized += (s_state['pnl'] - s_state['fees']) + total_pnl = realized + unrealized + + pnl_pad = " " if unrealized >= 0 else "" + tot_pnl_pad = " " if total_pnl >= 0 else "" + + logger.info(f"[IDLE] {coin} | Px: {price:.2f}{pad} | M: {p_mid:.1f}{pad} | B: {p_buy:.1f}{pad} / S: {p_sell:.1f}{pad} | delta: {target_position:.4f}({diff:+.4f}) | Adj: {adj_val:+.2f}%, Vol: {vol_mult:.2f}, Thr: {dynamic_thresh:.4f} | PnL: {unrealized:.2f}{pnl_pad} | TotPnL: {total_pnl:.2f}{tot_pnl_pad}") + else: + if int(time.time()) % 30 == 0: + logger.info(f"[IDLE] {coin} | Px: {price:.2f} | delta: {target_position:.4f} | Diff: {diff:.4f} (Thresh: {dynamic_thresh:.4f})") + else: + if int(time.time()) % 30 == 0: + logger.info(f"[IDLE] {coin} | Px: {price:.2f} | delta: {target_position:.4f} | Diff: {diff:.4f} (Thresh: {dynamic_thresh:.4f})") + + time.sleep(DEFAULT_STRATEGY.get("CHECK_INTERVAL", 1)) + + except KeyboardInterrupt: + logger.info("Stopping...") + break + except Exception as e: + logger.error(f"Loop Error: {e}", exc_info=True) + time.sleep(5) + +if __name__ == "__main__": + hedger = UnifiedHedger() + hedger.run()