From fddcc9190afe58234915903b0c91fcffc7803630 Mon Sep 17 00:00:00 2001 From: Jarno Date: Sun, 2 Aug 2026 22:18:48 +0300 Subject: [PATCH] Use alpaca instead of ibkr. --- notebooks/alpaca.ipynb | 0 notebooks/ibkr_scratch.ipynb | 107 +++++++ notebooks/models/spy_xgb_v1.json | 2 +- notebooks/models/spy_xgb_v1_meta.json | 4 +- notebooks/spy_direction_dataset.ipynb | 9 +- pyproject.toml | 2 + src/trading_bot/data/fetch_alpaca_daily.py | 314 +++++++++++++++++++++ src/trading_bot/models/prediction.py | 23 +- tests/test_prediction.py | 2 +- uv.lock | 240 ++++++++++++++++ 10 files changed, 692 insertions(+), 11 deletions(-) create mode 100644 notebooks/alpaca.ipynb create mode 100644 notebooks/ibkr_scratch.ipynb create mode 100644 src/trading_bot/data/fetch_alpaca_daily.py diff --git a/notebooks/alpaca.ipynb b/notebooks/alpaca.ipynb new file mode 100644 index 0000000..e69de29 diff --git a/notebooks/ibkr_scratch.ipynb b/notebooks/ibkr_scratch.ipynb new file mode 100644 index 0000000..ec31deb --- /dev/null +++ b/notebooks/ibkr_scratch.ipynb @@ -0,0 +1,107 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "cd849b8e", + "metadata": {}, + "source": [ + "# IBKR scratch notebook\n", + "\n", + "This notebook is for quick manual testing of the IBKR gateway connection, portfolio lookup, and a simple SPY order flow.\n", + "\n", + "> Use this only with a paper-trading or test setup unless you explicitly intend to submit a live order.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "543426a2", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "from pathlib import Path\n", + "\n", + "from ib_insync import IB, Stock\n", + "\n", + "# Allow the notebook to import local source code from the repository.\n", + "repo_root = Path.cwd().resolve()\n", + "if (repo_root / \"src\").exists():\n", + " repo_root = repo_root\n", + "else:\n", + " repo_root = repo_root.parent\n", + "\n", + "src_path = repo_root / \"src\"\n", + "if str(src_path) not in sys.path:\n", + " sys.path.insert(0, str(src_path))\n", + "\n", + "from trading_bot.data.fetch_ibkr_daily import (\n", + " IBKR_CLIENT_ID,\n", + " IBKR_CONNECT_TIMEOUT_SECONDS,\n", + " IBKR_HOST,\n", + " IBKR_PORT,\n", + ")\n", + "\n", + "ib = IB()\n", + "print(f\"Connecting to IBKR Gateway at {IBKR_HOST}:{IBKR_PORT} with client id {IBKR_CLIENT_ID}...\")\n", + "ib.connect(IBKR_HOST, IBKR_PORT, clientId=IBKR_CLIENT_ID, timeout=IBKR_CONNECT_TIMEOUT_SECONDS)\n", + "print(\"Connection established.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ecdc721f", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Connected: {ib.isConnected()}\")\n", + "print(f\"Client ID: {ib.clientId}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10ebc240", + "metadata": {}, + "outputs": [], + "source": [ + "portfolio = ib.portfolio()\n", + "if not portfolio:\n", + " print(\"No open portfolio positions were returned.\")\n", + "else:\n", + " for item in portfolio:\n", + " print(\n", + " f\"{item.contract.symbol}: position={item.position}, \"\n", + " f\"market_value={item.marketValue}, unrealized_pnl={item.unrealizedPNL}\"\n", + " )\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fed654ec", + "metadata": {}, + "outputs": [], + "source": [ + "from ib_insync import MarketOrder\n", + "\n", + "contract = Stock(\"SPY\", \"SMART\", \"USD\")\n", + "ib.qualifyContracts(contract)\n", + "\n", + "# Adjust the quantity as needed before running this cell.\n", + "order = MarketOrder(\"BUY\", 1)\n", + "trade = ib.placeOrder(contract, order)\n", + "\n", + "print(f\"Submitted order for {contract.symbol}: {trade}\")\n" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/models/spy_xgb_v1.json b/notebooks/models/spy_xgb_v1.json index 81c602b..cc8ce55 100644 --- a/notebooks/models/spy_xgb_v1.json +++ b/notebooks/models/spy_xgb_v1.json @@ -1 +1 @@ -{"learner":{"attributes":{"best_iteration":"106","best_score":"0.6503985412626959","scikit_learn":"{\"_estimator_type\": \"classifier\"}"},"feature_names":["VIX_rank_20","TLT_ret_10","USO_ret_5","SPY_TLT_ratio_ret","SPY_ret_5","SPY_ret_20","SPY_dist_sma50"],"feature_types":["float","float","float","float","float","float","float"],"gradient_booster":{"model":{"cats":{"enc":[],"feature_segments":[],"sorted_idx":[]},"gbtree_model_param":{"num_parallel_tree":"1","num_trees":"127"},"iteration_indptr":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],"tree_info":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"trees":[{"base_weights":[7.3463306E-2,8.789444E-3,3.3142633E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":0,"left_children":[1,-1,-1],"loss_changes":[4.6537733E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-7.246757E-2,8.789444E-3,3.3142633E-4],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.43189E2,5.834526E0,1.3735446E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.2948292E-2,2.6680832E-3,-2.1664707E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":1,"left_children":[1,-1,-1],"loss_changes":[8.131979E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.1604869E-2,2.6680832E-3,-2.1664707E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3904129E2,7.754112E1,6.1500168E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[9.6368186E-2,-1.9420785E-3,5.8767013E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":2,"left_children":[1,-1,-1],"loss_changes":[2.0382488E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.009951E-3,-1.9420785E-3,5.8767013E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4097447E2,8.89629E1,5.201158E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[8.344816E-2,9.74922E-3,-3.603597E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":3,"left_children":[1,-1,-1],"loss_changes":[1.5568814E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.858291E-2,9.74922E-3,-3.603597E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4483292E2,1.6271494E1,1.2856143E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.6865238E-2,8.725172E-3,-1.3682331E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":4,"left_children":[1,-1,-1],"loss_changes":[1.0937966E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.6470924E-2,8.725172E-3,-1.3682331E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4458401E2,1.0668452E1,1.3391556E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-7.7420166E-3,6.580296E-3,-8.8608864E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":5,"left_children":[1,-1,-1],"loss_changes":[7.962295E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.858291E-2,6.580296E-3,-8.8608864E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4580824E2,1.501917E1,1.3078908E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.023059E-3,-2.3359256E-3,6.004986E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":6,"left_children":[1,-1,-1],"loss_changes":[2.0299187E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-2.3359256E-3,6.004986E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4386798E2,1.0454178E2,3.9326202E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.8270172E-2,1.9563504E-3,-3.417803E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":7,"left_children":[1,-1,-1],"loss_changes":[8.948534E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.4631292E-2,1.9563504E-3,-3.417803E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4240666E2,9.838214E1,4.402453E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.2925686E-2,2.7007188E-3,-3.4577842E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":8,"left_children":[1,-1,-1],"loss_changes":[1.3750333E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.770315E-3,2.7007188E-3,-3.4577842E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4337273E2,7.524728E1,6.812545E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.6244934E-2,8.0033E-3,-1.528456E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":9,"left_children":[1,-1,-1],"loss_changes":[1.3283729E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.858291E-2,8.0033E-3,-1.528456E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4484006E2,1.5470725E1,1.2936934E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.9621915E-2,3.7918126E-3,-2.1320023E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":10,"left_children":[1,-1,-1],"loss_changes":[1.0138443E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-9.93766E-3,3.7918126E-3,-2.1320023E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4824329E2,3.8052082E1,1.101912E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.0088308E-2,-2.4746098E-3,4.2977417E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":11,"left_children":[1,-1,-1],"loss_changes":[1.5105656E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.4746098E-3,4.2977417E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.426559E2,9.2938736E1,4.9717163E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[8.952869E-2,-1.4465643E-3,6.575664E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":12,"left_children":[1,-1,-1],"loss_changes":[1.9559643E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.4465643E-3,6.575664E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.453212E2,1.0342675E2,4.1894444E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.5759894E-2,-3.007549E-3,4.2234114E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":13,"left_children":[1,-1,-1],"loss_changes":[1.7128927E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-3.007549E-3,4.2234114E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4143814E2,9.179236E1,4.964579E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.1426687E-2,2.9801242E-3,-2.5805514E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":14,"left_children":[1,-1,-1],"loss_changes":[1.0946198E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[4.774898E-3,2.9801242E-3,-2.5805514E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3973991E2,6.766954E1,7.207037E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.4533219E-2,6.193883E-3,-1.4875324E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":15,"left_children":[1,-1,-1],"loss_changes":[1.2129973E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.761174E-2,6.193883E-3,-1.4875324E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4048021E2,2.391498E1,1.1656523E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.8370267E-2,1.9657647E-3,-3.061285E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":16,"left_children":[1,-1,-1],"loss_changes":[7.827182E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.017251E-2,1.9657647E-3,-3.061285E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3704382E2,9.146301E1,4.5580807E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.8894624E-2,-1.8387897E-3,5.5650463E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":17,"left_children":[1,-1,-1],"loss_changes":[1.531359E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.8387897E-3,5.5650463E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3853606E2,1.0107207E2,3.7463985E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.565404E-2,9.575141E-3,-9.295808E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":18,"left_children":[1,-1,-1],"loss_changes":[8.305534E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-4.705337E-2,9.575141E-3,-9.295808E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4337105E2,6.964041E0,1.3640701E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.1554168E-3,-3.5218308E-3,4.3030097E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":19,"left_children":[1,-1,-1],"loss_changes":[2.1496641E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.0410161E-3,-3.5218308E-3,4.3030097E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3993533E2,7.7260704E1,6.2674633E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.5243927E-2,-5.2772122E-3,2.0379315E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":20,"left_children":[1,-1,-1],"loss_changes":[1.6561152E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.5198517E-2,-5.2772122E-3,2.0379315E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.45578E2,4.316839E1,1.02409615E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-6.9923643E-3,-2.0602087E-3,4.0535447E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":21,"left_children":[1,-1,-1],"loss_changes":[1.1932884E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[9.29368E-3,-2.0602087E-3,4.0535447E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4338344E2,9.704355E1,4.6339886E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.685169E-2,-3.8980676E-3,3.4856945E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":22,"left_children":[1,-1,-1],"loss_changes":[1.9044353E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.611107E-3,-3.8980676E-3,3.4856945E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.377666E2,7.002678E1,6.7739815E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.3244187E-2,2.7368285E-3,-1.9997654E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":23,"left_children":[1,-1,-1],"loss_changes":[7.3338366E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.510457E-2,2.7368285E-3,-1.9997654E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.455413E2,4.791224E1,9.762907E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.6443047E-2,6.637073E-3,-1.1396981E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":24,"left_children":[1,-1,-1],"loss_changes":[1.2451653E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.5981698E-2,6.637073E-3,-1.1396981E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.373102E2,2.4119036E1,1.1319116E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.490689E-2,1.1987942E-3,-5.012564E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":25,"left_children":[1,-1,-1],"loss_changes":[5.2762876E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.7262536E-2,1.1987942E-3,-5.012564E-3],"split_indices":[5,0,0],"split_type":[0,0,0],"sum_hessian":[1.4335168E2,1.290591E2,1.4292587E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.9553074E-2,-1.6942808E-3,6.353542E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":26,"left_children":[1,-1,-1],"loss_changes":[1.8408148E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.6942808E-3,6.353542E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4166125E2,1.03632614E2,3.8028633E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-9.7658716E-2,1.0221123E-3,-4.601627E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":27,"left_children":[1,-1,-1],"loss_changes":[1.0663824E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.017251E-2,1.0221123E-3,-4.601627E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4553215E2,9.4272285E1,5.1259857E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.3284556E-2,-3.6374372E-3,2.7451487E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":28,"left_children":[1,-1,-1],"loss_changes":[1.45558605E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-8.547009E-3,-3.6374372E-3,2.7451487E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4158028E2,6.595537E1,7.562491E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.5842324E-2,-1.7949493E-3,6.3383933E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":29,"left_children":[1,-1,-1],"loss_changes":[1.7772968E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.7387219E-2,-1.7949493E-3,6.3383933E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.452849E2,1.1093119E2,3.435371E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.3130877E-3,-2.048728E-3,4.058277E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":30,"left_children":[1,-1,-1],"loss_changes":[1.2071345E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.048728E-3,4.058277E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4140726E2,9.305922E1,4.8348038E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.8272616E-2,-3.0329432E-3,3.548916E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":31,"left_children":[1,-1,-1],"loss_changes":[1.5739034E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-6.691129E-3,-3.0329432E-3,3.548916E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4333948E2,7.11664E1,7.217308E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[6.3842204E-3,7.860542E-3,-8.961846E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":32,"left_children":[1,-1,-1],"loss_changes":[1.0653452E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.0406374E-2,7.860542E-3,-8.961846E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4038876E2,1.4603225E1,1.2578554E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.164362E-2,-2.5929052E-3,4.942089E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":33,"left_children":[1,-1,-1],"loss_changes":[1.9056242E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[6.9238376E-3,-2.5929052E-3,4.942089E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4377286E2,9.2373085E1,5.1399773E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.12073205E-1,3.0269434E-3,-2.9943811E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":34,"left_children":[1,-1,-1],"loss_changes":[1.0987176E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.3670794E-2,3.0269434E-3,-2.9943811E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3791069E2,9.443209E1,4.34786E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.3802103E-2,5.228271E-3,-7.0165313E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":35,"left_children":[1,-1,-1],"loss_changes":[6.895344E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.8322952E-2,5.228271E-3,-7.0165313E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4526474E2,2.2295889E1,1.2296885E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.348658E-3,1.8722988E-3,-4.8139617E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":36,"left_children":[1,-1,-1],"loss_changes":[1.253755E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[3.0737706E-2,1.8722988E-3,-4.8139617E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3912059E2,1.01515076E2,3.760552E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.9358627E-2,2.1047639E-3,-3.2366836E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":37,"left_children":[1,-1,-1],"loss_changes":[9.242406E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.420307E-2,2.1047639E-3,-3.2366836E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4668555E2,9.99792E1,4.6706356E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.5520474E-2,-2.785714E-3,3.2515142E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":38,"left_children":[1,-1,-1],"loss_changes":[1.3466803E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.611107E-3,-2.785714E-3,3.2515142E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4589473E2,7.487638E1,7.101834E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.1149918E-2,1.2762547E-3,-3.4609234E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":39,"left_children":[1,-1,-1],"loss_changes":[5.55175E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.4834258E-2,1.2762547E-3,-3.4609234E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.3136197E2,9.954801E1,3.1813965E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.7084233E-2,1.67258E-3,-3.4652448E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":40,"left_children":[1,-1,-1],"loss_changes":[8.8146515E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4205446E-2,1.67258E-3,-3.4652448E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4319116E2,9.2130646E1,5.1060513E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[7.523718E-2,-2.0358711E-3,4.051346E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":41,"left_children":[1,-1,-1],"loss_changes":[1.3062205E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.611107E-3,-2.0358711E-3,4.051346E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.401094E2,7.613995E1,6.3969448E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[9.042003E-3,-2.4068272E-3,5.150151E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":42,"left_children":[1,-1,-1],"loss_changes":[1.7945381E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[6.9238376E-3,-2.4068272E-3,5.150151E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4004362E2,9.4116455E1,4.592717E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[9.070101E-2,1.207009E-2,3.869789E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":43,"left_children":[1,-1,-1],"loss_changes":[8.095127E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-4.705337E-2,1.207009E-2,3.869789E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.3925195E2,5.2096834E0,1.3404227E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.703698E-2,-3.7352247E-3,4.0082214E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":44,"left_children":[1,-1,-1],"loss_changes":[2.0441355E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-6.691129E-3,-3.7352247E-3,4.0082214E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3437604E2,6.661348E1,6.776256E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.727957E-2,-1.8687221E-3,6.100268E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":45,"left_children":[1,-1,-1],"loss_changes":[1.8393732E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.8687221E-3,6.100268E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4138513E2,1.0210054E2,3.928459E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.638489E-2,-2.4944392E-3,3.6598153E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":46,"left_children":[1,-1,-1],"loss_changes":[1.2398299E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[8.508053E-3,-2.4944392E-3,3.6598153E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4597614E2,9.807618E1,4.7899952E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.1996601E-1,-3.2380281E-3,3.0404949E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":47,"left_children":[1,-1,-1],"loss_changes":[1.297713E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-3.2380281E-3,3.0404949E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4800706E2,1.00115105E2,4.7891964E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.6594845E-2,1.8662215E-3,-4.730181E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":48,"left_children":[1,-1,-1],"loss_changes":[1.4189544E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.017251E-2,1.8662215E-3,-4.730181E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3822887E2,8.761066E1,5.0618217E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-6.287365E-4,-1.8153602E-3,4.341628E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":49,"left_children":[1,-1,-1],"loss_changes":[1.1713333E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.8153602E-3,4.341628E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4691466E2,1.0415889E2,4.2755768E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-6.885836E-3,1.04939975E-2,-9.6148707E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":50,"left_children":[1,-1,-1],"loss_changes":[1.3805851E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.469514E-2,1.04939975E-2,-9.6148707E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4435347E2,1.0410094E1,1.3394337E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.220697E-2,-2.2949413E-3,3.8760982E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":51,"left_children":[1,-1,-1],"loss_changes":[1.2090108E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.2949413E-3,3.8760982E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4389865E2,9.820289E1,4.569576E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.2836193E-2,3.3515735E-4,-8.387127E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":52,"left_children":[1,-1,-1],"loss_changes":[5.5925455E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[6.9250345E-2,3.3515735E-4,-8.387127E-3],"split_indices":[5,0,0],"split_type":[0,0,0],"sum_hessian":[1.4435774E2,1.3759471E2,6.763021E0],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.5930733E-2,-1.9225879E-3,1.5609933E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":53,"left_children":[1,-1,-1],"loss_changes":[4.227247E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[4.189189E-3,-1.9225879E-3,1.5609933E-3],"split_indices":[5,0,0],"split_type":[0,0,0],"sum_hessian":[1.4283142E2,5.7321445E1,8.550998E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.2189857E-2,-3.0774486E-3,2.1123756E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":54,"left_children":[1,-1,-1],"loss_changes":[9.716524E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-6.0062343E-3,-3.0774486E-3,2.1123756E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4236732E2,7.2178055E1,7.018928E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.2997329E-2,-1.9820917E-3,5.731664E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":55,"left_children":[1,-1,-1],"loss_changes":[1.7019518E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.9820917E-3,5.731664E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4189339E2,1.035115E2,3.8381878E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.9359893E-2,2.5943012E-3,-2.156817E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":56,"left_children":[1,-1,-1],"loss_changes":[7.087866E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.3626551E-2,2.5943012E-3,-2.156817E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4010716E2,4.5881187E1,9.4225975E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.0915557E-2,-2.7651754E-3,3.4155028E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":57,"left_children":[1,-1,-1],"loss_changes":[1.3901872E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.611107E-3,-2.7651754E-3,3.4155028E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4378145E2,7.466081E1,6.912064E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[6.0491455E-3,-2.255173E-3,4.7528944E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":58,"left_children":[1,-1,-1],"loss_changes":[1.4922414E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.255173E-3,4.7528944E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3534444E2,9.0970566E1,4.4373867E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.5468342E-2,-4.366384E-3,2.4168843E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":59,"left_children":[1,-1,-1],"loss_changes":[1.4561904E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.3517024E-2,-4.366384E-3,2.4168843E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4368416E2,4.54751E1,9.820906E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.0037629E-2,-1.9121884E-3,5.0096586E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":60,"left_children":[1,-1,-1],"loss_changes":[1.4774296E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.2247072E-2,-1.9121884E-3,5.0096586E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4756409E2,1.0509202E2,4.247207E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-8.260584E-3,7.1911217E-4,-1.0065454E-2],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":61,"left_children":[1,-1,-1],"loss_changes":[1.1447664E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.08018E-2,7.1911217E-4,-1.0065454E-2],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.411301E2,1.3149756E2,9.632544E0],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.8798263E-2,-3.2975355E-3,2.8022176E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":62,"left_children":[1,-1,-1],"loss_changes":[1.2771867E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.7545339E-2,-3.2975355E-3,2.8022176E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4373317E2,5.4370895E1,8.936228E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.230065E-2,7.360555E-3,-1.0181664E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":63,"left_children":[1,-1,-1],"loss_changes":[8.314667E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-4.4933084E-2,7.360555E-3,-1.0181664E-3],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.3564224E2,1.208918E1,1.23553055E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.540873E-2,-1.8642392E-3,5.0584446E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":64,"left_children":[1,-1,-1],"loss_changes":[1.5744186E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-1.8642392E-3,5.0584446E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4266908E2,9.321134E1,4.945774E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.771179E-2,-1.93194E-3,4.4862973E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":65,"left_children":[1,-1,-1],"loss_changes":[1.1987044E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.93194E-3,4.4862973E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4441974E2,1.05359245E2,3.9060486E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.5904692E-2,6.731796E-3,-8.377982E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":66,"left_children":[1,-1,-1],"loss_changes":[1.1987478E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.761174E-2,6.731796E-3,-8.377982E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4566745E2,2.4238176E1,1.2142927E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.589253E-2,-2.5280148E-3,3.9804564E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":67,"left_children":[1,-1,-1],"loss_changes":[1.439624E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.009951E-3,-2.5280148E-3,3.9804564E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4477596E2,9.232495E1,5.2451E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-6.6390965E-4,-3.0757892E-3,3.0148104E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":68,"left_children":[1,-1,-1],"loss_changes":[1.3391507E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-8.547009E-3,-3.0757892E-3,3.0148104E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.424096E2,7.063822E1,7.177139E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.519504E-2,2.810714E-3,-1.9326989E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":69,"left_children":[1,-1,-1],"loss_changes":[7.448122E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.4957553E-2,2.810714E-3,-1.9326989E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4263672E2,5.03027E1,9.233402E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.529206E-2,7.746672E-3,-3.290287E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":70,"left_children":[1,-1,-1],"loss_changes":[9.331677E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.858291E-2,7.746672E-3,-3.290287E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4568065E2,1.50597725E1,1.3062088E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[6.305049E-2,2.405156E-3,-2.8538462E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":71,"left_children":[1,-1,-1],"loss_changes":[8.999692E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.3431595E-2,2.405156E-3,-2.8538462E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4343343E2,9.523701E1,4.8196423E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.8167758E-2,-3.2833416E-3,2.42892E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":72,"left_children":[1,-1,-1],"loss_changes":[1.1359139E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-8.547009E-3,-3.2833416E-3,2.42892E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3763039E2,6.5208466E1,7.242191E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[7.6301377E-3,8.98129E-3,-3.064259E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":73,"left_children":[1,-1,-1],"loss_changes":[4.821097E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-7.246757E-2,8.98129E-3,-3.064259E-4],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.3964903E2,4.8288445E0,1.3482019E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.52934855E-2,1.8708775E-3,-2.7496777E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":74,"left_children":[1,-1,-1],"loss_changes":[7.260961E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.017251E-2,1.8708775E-3,-2.7496777E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.435801E2,9.041968E1,5.3160408E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.6154216E-2,-3.241594E-3,2.6306447E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":75,"left_children":[1,-1,-1],"loss_changes":[1.2676252E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.611107E-3,-3.241594E-3,2.6306447E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4546735E2,7.657434E1,6.8893005E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.1364627E-1,-5.331382E-4,-1.201075E-2],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":76,"left_children":[1,-1,-1],"loss_changes":[9.349779E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.30624E-2,-5.331382E-4,-1.201075E-2],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.4248741E2,1.359914E2,6.4960117E0],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.7868242E-2,2.8883533E-3,-1.384655E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":77,"left_children":[1,-1,-1],"loss_changes":[6.463881E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.5E-1,2.8883533E-3,-1.384655E-3],"split_indices":[0,0,0],"split_type":[0,0,0],"sum_hessian":[1.4066182E2,6.441401E1,7.624781E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-8.164791E-3,5.719325E-3,-7.147544E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":78,"left_children":[1,-1,-1],"loss_changes":[5.2606153E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.0406374E-2,5.719325E-3,-7.147544E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4112517E2,1.3096053E1,1.2802911E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.1437956E-2,-1.9078241E-3,3.8438707E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":79,"left_children":[1,-1,-1],"loss_changes":[1.1088522E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.009951E-3,-1.9078241E-3,3.8438707E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4200758E2,8.9910355E1,5.2097225E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.1852415E-3,2.9961055E-4,-1.2731033E-2],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":80,"left_children":[1,-1,-1],"loss_changes":[4.8680673E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[6.454178E-2,2.9961055E-4,-1.2731033E-2],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.4033466E2,1.3840747E2,1.9271857E0],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-8.084955E-3,8.325195E-4,-7.1476484E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":81,"left_children":[1,-1,-1],"loss_changes":[9.263962E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[4.7038987E-2,8.325195E-4,-7.1476484E-3],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.4160315E2,1.2617721E2,1.5425948E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.0037448E-2,5.424104E-3,-1.0034234E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":82,"left_children":[1,-1,-1],"loss_changes":[9.585615E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.226696E-2,5.424104E-3,-1.0034234E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4167589E2,2.8097336E1,1.1357855E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.3588376E-2,4.6585836E-3,-1.2595074E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":83,"left_children":[1,-1,-1],"loss_changes":[7.917352E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.8322952E-2,4.6585836E-3,-1.2595074E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4487746E2,2.6909485E1,1.1796798E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[8.558624E-3,-2.7370187E-3,3.256953E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":84,"left_children":[1,-1,-1],"loss_changes":[1.3087649E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.611107E-3,-2.7370187E-3,3.256953E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4421011E2,7.6372986E1,6.783713E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.5063736E-2,1.6826799E-3,-3.3980145E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":85,"left_children":[1,-1,-1],"loss_changes":[6.995941E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[3.0737706E-2,1.6826799E-3,-3.3980145E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3795969E2,1.0219643E2,3.5763264E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.1876162E-2,6.3335453E-4,-1.52646275E-2],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":86,"left_children":[1,-1,-1],"loss_changes":[9.623449E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[6.454178E-2,6.3335453E-4,-1.52646275E-2],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.4740816E2,1.444981E2,2.9100766E0],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[8.683802E-3,1.1016276E-2,-4.1539836E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":87,"left_children":[1,-1,-1],"loss_changes":[7.8556557E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-7.246757E-2,1.1016276E-2,-4.1539836E-4],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.4127846E2,5.2871647E0,1.359913E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.6263176E-2,4.7306484E-3,-1.2985044E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":88,"left_children":[1,-1,-1],"loss_changes":[8.086782E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.226696E-2,4.7306484E-3,-1.2985044E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4338911E2,2.6417809E1,1.16971306E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.016924E-1,1.9364256E-3,-2.9415104E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":89,"left_children":[1,-1,-1],"loss_changes":[5.3444386E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.9123588E-2,1.9364256E-3,-2.9415104E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4426892E2,1.1748844E2,2.6780485E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.52126E-2,2.131517E-3,-3.245083E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":90,"left_children":[1,-1,-1],"loss_changes":[9.43728E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.3670794E-2,2.131517E-3,-3.245083E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4535747E2,9.752387E1,4.7833588E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.4496505E-2,3.2879105E-3,-1.1520898E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":91,"left_children":[1,-1,-1],"loss_changes":[6.029949E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.7866526E-2,3.2879105E-3,-1.1520898E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3995134E2,4.36101E1,9.634125E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-8.327455E-3,-2.3992173E-3,2.3977968E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":92,"left_children":[1,-1,-1],"loss_changes":[8.296093E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.611107E-3,-2.3992173E-3,2.3977968E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4237865E2,7.365695E1,6.8721695E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.7377838E-2,-1.1168686E-3,4.2155203E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":93,"left_children":[1,-1,-1],"loss_changes":[8.144226E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.1168686E-3,4.2155203E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4039333E2,1.0165797E2,3.873536E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.3556562E-2,-4.65391E-3,2.164219E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":94,"left_children":[1,-1,-1],"loss_changes":[1.5053162E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.3517024E-2,-4.65391E-3,2.164219E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4289496E2,4.7853817E1,9.504114E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.6060344E-2,6.2824395E-3,-1.0537409E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":95,"left_children":[1,-1,-1],"loss_changes":[4.9394407E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.6470924E-2,6.2824395E-3,-1.0537409E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4341107E2,8.850938E0,1.3456013E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.9723311E-3,-2.0638104E-3,4.198816E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":96,"left_children":[1,-1,-1],"loss_changes":[1.3144022E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[8.508053E-3,-2.0638104E-3,4.198816E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.5080835E2,1.021718E2,4.863656E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.728673E-2,1.3466954E-3,-3.1419946E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":97,"left_children":[1,-1,-1],"loss_changes":[7.1704845E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4205446E-2,1.3466954E-3,-3.1419946E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4869841E2,9.205074E1,5.6647663E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.55618E-2,-7.1093877E-4,5.39053E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":98,"left_children":[1,-1,-1],"loss_changes":[8.603397E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.1043682E-2,-7.1093877E-4,5.39053E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3886781E2,1.1071722E2,2.8150595E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.8341887E-2,-1.4356439E-3,6.086739E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":99,"left_children":[1,-1,-1],"loss_changes":[1.5521069E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.4356439E-3,6.086739E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3789769E2,1.01425674E2,3.6472008E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.7613634E-2,8.146876E-3,-4.1958544E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":100,"left_children":[1,-1,-1],"loss_changes":[9.0161495E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.0406374E-2,8.146876E-3,-4.1958544E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.442606E2,1.2541953E1,1.3171866E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-7.539963E-2,1.0107108E-3,-4.350563E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":101,"left_children":[1,-1,-1],"loss_changes":[8.849934E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.420307E-2,1.0107108E-3,-4.350563E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3774457E2,9.288714E1,4.485743E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.758387E-3,1.1479278E-3,-2.8589114E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":102,"left_children":[1,-1,-1],"loss_changes":[4.8333645E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.4631292E-2,1.1479278E-3,-2.8589114E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4183194E2,9.992899E1,4.190294E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.6530554E-2,2.3743804E-3,-3.3516847E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":103,"left_children":[1,-1,-1],"loss_changes":[1.0111439E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.3670794E-2,2.3743804E-3,-3.3516847E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4057036E2,9.6428406E1,4.4141953E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.203736E-2,9.444643E-3,-6.645685E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":104,"left_children":[1,-1,-1],"loss_changes":[6.137018E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-7.246757E-2,9.444643E-3,-6.645685E-4],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.40487E2,5.2826247E0,1.3520438E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-7.1725957E-3,1.4726807E-3,-2.9548816E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":105,"left_children":[1,-1,-1],"loss_changes":[6.648845E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.017251E-2,1.4726807E-3,-2.9548816E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.473422E2,9.626538E1,5.1076817E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.5273664E-3,-1.8128908E-3,3.770871E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":106,"left_children":[1,-1,-1],"loss_changes":[9.724701E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.0351773E-3,-1.8128908E-3,3.770871E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3811331E2,9.224538E1,4.5867943E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.1702449E-2,7.59218E-3,-7.1016065E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":107,"left_children":[1,-1,-1],"loss_changes":[6.6826286E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.55946E-2,7.59218E-3,-7.1016065E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4396568E2,9.442182E0,1.345235E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.7102195E-2,4.289531E-3,-1.1002881E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":108,"left_children":[1,-1,-1],"loss_changes":[5.7957606E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.8630173E-2,4.289531E-3,-1.1002881E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.3768532E2,2.3115068E1,1.1457025E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.1392278E-1,3.1782818E-4,-4.348525E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":109,"left_children":[1,-1,-1],"loss_changes":[6.8166456E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.4631292E-2,3.1782818E-4,-4.348525E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4447995E2,9.9986115E1,4.449383E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.995979E-2,-4.244312E-3,2.130607E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":110,"left_children":[1,-1,-1],"loss_changes":[1.3992701E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.7545339E-2,-4.244312E-3,2.130607E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.419111E2,5.6055626E1,8.5855484E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-6.60875E-2,-1.7635852E-5,-5.9288056E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":111,"left_children":[1,-1,-1],"loss_changes":[4.859561E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.7262536E-2,-1.7635852E-5,-5.9288056E-3],"split_indices":[5,0,0],"split_type":[0,0,0],"sum_hessian":[1.4244255E2,1.2783647E2,1.460609E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.4278843E-2,-2.4738135E-3,2.4467953E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":112,"left_children":[1,-1,-1],"loss_changes":[8.762921E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.8479541E-2,-2.4738135E-3,2.4467953E-3],"split_indices":[5,0,0],"split_type":[0,0,0],"sum_hessian":[1.4316562E2,7.536774E1,6.779789E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.7073305E-2,-4.3419554E-4,6.923749E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":113,"left_children":[1,-1,-1],"loss_changes":[5.754551E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[4.2172298E-2,-4.3419554E-4,6.923749E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.3913116E2,1.2855136E2,1.0579801E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.1267151E-2,2.8632416E-3,-1.617719E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":114,"left_children":[1,-1,-1],"loss_changes":[6.5602565E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.3626551E-2,2.8632416E-3,-1.617719E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.444364E2,4.8209625E1,9.6226776E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.6872655E-2,3.679806E-3,-1.2369427E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":115,"left_children":[1,-1,-1],"loss_changes":[5.2127385E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.761174E-2,3.679806E-3,-1.2369427E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.460048E2,2.5210186E1,1.20794624E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.2165418E-2,-2.6861452E-3,3.2459402E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":116,"left_children":[1,-1,-1],"loss_changes":[1.265071E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.1133876E-3,-2.6861452E-3,3.2459402E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4221696E2,7.49761E1,6.724087E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.9260973E-3,-1.8926103E-3,3.94931E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":117,"left_children":[1,-1,-1],"loss_changes":[1.1157351E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-1.8926103E-3,3.94931E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4496059E2,9.686904E1,4.8091537E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.376188E-2,-7.905362E-4,4.8757675E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":118,"left_children":[1,-1,-1],"loss_changes":[7.793322E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.8211158E-2,-7.905362E-4,4.8757675E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4127031E2,1.1129411E2,2.9976198E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.6624322E-2,-1.3499174E-3,3.1419497E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":119,"left_children":[1,-1,-1],"loss_changes":[5.735118E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.3499174E-3,3.1419497E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4437697E2,1.0676744E2,3.760953E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-7.2966022E-3,1.3814194E-3,-3.0137296E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":120,"left_children":[1,-1,-1],"loss_changes":[6.0667453E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.3670794E-2,1.3814194E-3,-3.0137296E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3987228E2,9.394236E1,4.5929924E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.0496044E-2,6.023809E-4,-1.2308453E-2],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":121,"left_children":[1,-1,-1],"loss_changes":[3.659328E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.017243E-2,6.023809E-4,-1.2308453E-2],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.4184239E2,1.4061151E2,1.2308704E0],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-6.49696E-2,3.0426686E-3,-1.4683612E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":122,"left_children":[1,-1,-1],"loss_changes":[4.5347004E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.8106364E-2,3.0426686E-3,-1.4683612E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.47538E2,2.62823E1,1.212557E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[7.022803E-2,6.434352E-3,-4.569426E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":123,"left_children":[1,-1,-1],"loss_changes":[9.737565E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.8630173E-2,6.434352E-3,-4.569426E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4510277E2,2.3643063E1,1.2145971E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.8241104E-2,-1.6652303E-3,5.614786E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":124,"left_children":[1,-1,-1],"loss_changes":[1.5298388E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4175258E-2,-1.6652303E-3,5.614786E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.454042E2,1.0700758E2,3.839663E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.336234E-2,1.5742686E-3,-4.208257E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":125,"left_children":[1,-1,-1],"loss_changes":[1.0297211E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.0916335E-2,1.5742686E-3,-4.208257E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.339899E2,8.784451E1,4.6145386E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[7.161343E-2,-3.8741302E-4,5.2095633E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":126,"left_children":[1,-1,-1],"loss_changes":[7.12699E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.1043682E-2,-3.8741302E-4,5.2095633E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4231963E2,1.149923E2,2.7327333E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}}]},"name":"gbtree"},"learner_model_param":{"base_score":"[5.8303463E-1]","boost_from_average":"1","num_class":"0","num_feature":"7","num_target":"1"},"objective":{"name":"binary:logistic","reg_loss_param":{"scale_pos_weight":"1"}}},"version":[3,2,0]} \ No newline at end of file +{"learner":{"attributes":{"best_iteration":"41","best_score":"0.6593948980172475","scikit_learn":"{\"_estimator_type\": \"classifier\"}"},"feature_names":["VIX_rank_20","TLT_ret_10","USO_ret_5","SPY_TLT_ratio_ret","SPY_ret_5","SPY_ret_20","SPY_dist_sma50"],"feature_types":["float","float","float","float","float","float","float"],"gradient_booster":{"model":{"cats":{"enc":[],"feature_segments":[],"sorted_idx":[]},"gbtree_model_param":{"num_parallel_tree":"1","num_trees":"62"},"iteration_indptr":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62],"tree_info":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"trees":[{"base_weights":[1.1503149E-2,3.602216E-4,-1.4237287E-2],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":0,"left_children":[1,-1,-1],"loss_changes":[5.1499934E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[6.892705E-2,3.602216E-4,-1.4237287E-2],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.4388889E2,1.4243056E2,1.4583333E0],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.2381552E-2,2.2380585E-3,-2.9987623E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":1,"left_children":[1,-1,-1],"loss_changes":[9.187705E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.4205446E-2,2.2380585E-3,-2.9987623E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.3951015E2,8.603824E1,5.3471912E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[9.584328E-2,-1.7863275E-3,6.1051417E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":2,"left_children":[1,-1,-1],"loss_changes":[2.0163263E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-1.7863275E-3,6.1051417E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4096178E2,9.2359184E1,4.86026E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.7446564E-2,7.0196665E-3,-1.0298543E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":3,"left_children":[1,-1,-1],"loss_changes":[1.4477959E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.7963655E-2,7.0196665E-3,-1.0298543E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4530872E2,2.6470573E1,1.1883814E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[6.2338286E-3,3.326677E-3,-1.7981239E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":4,"left_children":[1,-1,-1],"loss_changes":[8.945065E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.1166078E-2,3.326677E-3,-1.7981239E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4530305E2,5.2463432E1,9.283963E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.0314475E-2,6.923221E-3,-1.2672357E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":5,"left_children":[1,-1,-1],"loss_changes":[1.0347677E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.858291E-2,6.923221E-3,-1.2672357E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4626752E2,1.648944E1,1.2977808E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.5649436E-2,-3.922325E-3,4.0787407E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":6,"left_children":[1,-1,-1],"loss_changes":[2.3413443E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-8.8626295E-3,-3.922325E-3,4.0787407E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4458455E2,6.905801E1,7.5526535E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.350957E-2,2.346545E-3,-3.7299043E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":7,"left_children":[1,-1,-1],"loss_changes":[1.3207154E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.2120422E-2,2.346545E-3,-3.7299043E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4311383E2,8.012777E1,6.2986057E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.571592E-2,2.4388554E-3,-3.3179298E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":8,"left_children":[1,-1,-1],"loss_changes":[1.20824E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[3.0081088E-3,2.4388554E-3,-3.3179298E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4409773E2,6.91606E1,7.493713E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.3208794E-2,5.398977E-3,-1.340681E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":9,"left_children":[1,-1,-1],"loss_changes":[9.853788E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.761174E-2,5.398977E-3,-1.340681E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4532292E2,2.5438362E1,1.1988455E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.1377664E-2,5.879107E-3,-1.8835204E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":10,"left_children":[1,-1,-1],"loss_changes":[1.3957067E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.7963655E-2,5.879107E-3,-1.8835204E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4870744E2,2.7587627E1,1.2111981E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-7.708372E-2,-3.119822E-3,3.8407855E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":11,"left_children":[1,-1,-1],"loss_changes":[1.5706812E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[8.498584E-3,-3.119822E-3,3.8407855E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.428892E2,9.488294E1,4.800626E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[6.0281362E-2,-2.3203024E-3,5.485706E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":12,"left_children":[1,-1,-1],"loss_changes":[2.1079298E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.3203024E-3,5.485706E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4579202E2,9.1525566E1,5.4266453E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.1625227E-3,-1.9508296E-3,5.1844628E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":13,"left_children":[1,-1,-1],"loss_changes":[1.4816274E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.39965955E-2,-1.9508296E-3,5.1844628E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4216734E2,1.02715324E2,3.945202E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.9994316E-2,1.3782366E-3,-4.2710844E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":14,"left_children":[1,-1,-1],"loss_changes":[1.0079788E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.1620143E-2,1.3782366E-3,-4.2710844E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4048087E2,9.420001E1,4.6280857E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.694477E-2,9.638787E-3,-1.386698E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":15,"left_children":[1,-1,-1],"loss_changes":[1.1979356E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.6470924E-2,9.638787E-3,-1.386698E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4098901E2,9.650531E0,1.3133847E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.7866395E-2,7.018735E-3,-4.2132087E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":16,"left_children":[1,-1,-1],"loss_changes":[7.4019384E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.0406374E-2,7.018735E-3,-4.2132087E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.3778816E2,1.3979691E1,1.2380847E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[7.828296E-2,-9.890401E-4,5.622155E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":17,"left_children":[1,-1,-1],"loss_changes":[1.20842285E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.39965955E-2,-9.890401E-4,5.622155E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3928114E2,1.0253473E2,3.674642E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-7.00861E-2,7.609278E-3,-1.4937288E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":18,"left_children":[1,-1,-1],"loss_changes":[9.659922E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.3476964E-2,7.609278E-3,-1.4937288E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4388524E2,1.1783532E1,1.3210172E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.8294593E-2,-3.3800001E-3,3.82496E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":19,"left_children":[1,-1,-1],"loss_changes":[1.8128857E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[8.5142616E-4,-3.3800001E-3,3.82496E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.404793E2,8.019525E1,6.028404E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.9752125E-2,-4.105855E-3,3.2849042E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":20,"left_children":[1,-1,-1],"loss_changes":[2.0203615E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-4.69106E-3,-4.105855E-3,3.2849042E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4633846E2,7.684254E1,6.949591E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.387051E-2,-2.2152334E-3,4.9509583E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":21,"left_children":[1,-1,-1],"loss_changes":[1.6893894E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.2152334E-3,4.9509583E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4414725E2,9.513496E1,4.901229E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-5.9092104E-2,-2.770882E-3,3.818329E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":22,"left_children":[1,-1,-1],"loss_changes":[1.351757E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[8.046347E-3,-2.770882E-3,3.818329E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3853159E2,9.294873E1,4.5582867E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.2396117E-2,2.268656E-3,-3.1107063E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":23,"left_children":[1,-1,-1],"loss_changes":[9.642728E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.1620143E-2,2.268656E-3,-3.1107063E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4580359E2,9.603986E1,4.976373E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.9717136E-4,1.9997586E-3,-4.054914E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":24,"left_children":[1,-1,-1],"loss_changes":[1.1343123E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.3939522E-2,1.9997586E-3,-4.054914E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3806137E2,9.2915596E1,4.5145775E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.8451783E-2,6.0415994E-3,-1.1212268E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":25,"left_children":[1,-1,-1],"loss_changes":[6.9379697E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-4.4933084E-2,6.0415994E-3,-1.1212268E-3],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.4411978E2,1.4082354E1,1.3003743E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[5.7917956E-2,-3.3980121E-3,4.3788254E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":26,"left_children":[1,-1,-1],"loss_changes":[2.1816666E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-8.8626295E-3,-3.3980121E-3,4.3788254E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4238264E2,6.961766E1,7.276498E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.1219869E-2,2.0441434E-3,-4.1858647E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":27,"left_children":[1,-1,-1],"loss_changes":[1.3026904E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.1620143E-2,2.0441434E-3,-4.1858647E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4632487E2,9.6004395E1,5.0320473E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.9416324E-2,-2.740262E-3,3.507794E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":28,"left_children":[1,-1,-1],"loss_changes":[1.406041E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-4.69106E-3,-2.740262E-3,3.507794E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4208485E2,7.0865746E1,7.121912E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.8356727E-2,-2.8240487E-3,4.358995E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":29,"left_children":[1,-1,-1],"loss_changes":[1.6733116E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.8240487E-3,4.358995E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4555128E2,9.8406715E1,4.714458E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.656652E-3,-2.5718545E-3,5.069005E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":30,"left_children":[1,-1,-1],"loss_changes":[1.8627548E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.5718545E-3,5.069005E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4218597E2,9.552672E1,4.665926E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.9354446E-2,-4.9880473E-3,2.5265855E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":31,"left_children":[1,-1,-1],"loss_changes":[1.9272284E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.7582418E-2,-4.9880473E-3,2.5265855E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4361893E2,5.3609554E1,9.000938E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.3786807E-2,8.684349E-3,-5.3198775E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":32,"left_children":[1,-1,-1],"loss_changes":[1.0346715E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.3476964E-2,8.684349E-3,-5.3198775E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4087578E2,1.2448235E1,1.2842754E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-8.435766E-3,-3.4412364E-3,2.960405E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":33,"left_children":[1,-1,-1],"loss_changes":[1.4951953E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-8.8626295E-3,-3.4412364E-3,2.960405E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4429129E2,6.85662E1,7.572508E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.3821368E-1,3.4961607E-3,-1.320792E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":34,"left_children":[1,-1,-1],"loss_changes":[7.9995074E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.0374096E-2,3.4961607E-3,-1.320792E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3818887E2,7.737702E1,6.0811855E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[1.2121364E-1,4.662842E-3,-4.8677507E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":35,"left_children":[1,-1,-1],"loss_changes":[8.640629E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.5531809E-2,4.662842E-3,-4.8677507E-4],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4600238E2,4.7592117E1,9.841026E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[4.5210026E-2,2.3994036E-3,-3.0564698E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":36,"left_children":[1,-1,-1],"loss_changes":[9.677734E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.1620143E-2,2.3994036E-3,-3.0564698E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3957443E2,8.9961006E1,4.961343E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.9298238E-2,1.1189663E-2,-1.9199468E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":37,"left_children":[1,-1,-1],"loss_changes":[7.8486223E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-7.246757E-2,1.1189663E-2,-1.9199468E-4],"split_indices":[6,0,0],"split_type":[0,0,0],"sum_hessian":[1.471111E2,5.3279424E0,1.4178316E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.399823E-2,1.8965567E-3,-4.24299E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":38,"left_children":[1,-1,-1],"loss_changes":[1.0593362E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[3.1135263E-2,1.8965567E-3,-4.24299E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4636862E2,1.0969699E2,3.667164E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.0468457E-2,4.1548056E-3,-1.1793928E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":39,"left_children":[1,-1,-1],"loss_changes":[5.6937346E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.761174E-2,4.1548056E-3,-1.1793928E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.3184128E2,2.3494942E1,1.0834634E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.1492526E-2,7.121196E-3,-9.191377E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":40,"left_children":[1,-1,-1],"loss_changes":[8.484619E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.858291E-2,7.121196E-3,-9.191377E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4367465E2,1.3585001E1,1.3008965E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[7.497916E-2,-9.87152E-4,5.443999E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":41,"left_children":[1,-1,-1],"loss_changes":[1.1573458E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.39965955E-2,-9.87152E-4,5.443999E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4028429E2,1.0297233E2,3.7311962E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[2.580447E-2,-2.953105E-3,3.7048592E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":42,"left_children":[1,-1,-1],"loss_changes":[1.5747092E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.9884456E-3,-2.953105E-3,3.7048592E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4028432E2,7.269906E1,6.758525E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[9.087741E-3,7.7399896E-3,-5.671346E-4],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":43,"left_children":[1,-1,-1],"loss_changes":[7.1167145E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-3.5148077E-2,7.7399896E-3,-5.671346E-4],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.3952307E2,1.01991825E1,1.2932388E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.4611776E-2,-2.9304125E-3,4.736233E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":44,"left_children":[1,-1,-1],"loss_changes":[1.7987709E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[7.100592E-3,-2.9304125E-3,4.736233E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3489554E2,8.970525E1,4.5190285E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[6.0552E-2,-3.3133684E-3,4.2325873E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":45,"left_children":[1,-1,-1],"loss_changes":[2.0485882E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-8.8626295E-3,-3.3133684E-3,4.2325873E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.421373E2,6.836182E1,7.377549E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-8.1084006E-2,-3.758726E-3,2.0739995E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":46,"left_children":[1,-1,-1],"loss_changes":[1.2576108E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.9884456E-3,-3.758726E-3,2.0739995E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4596483E2,7.204372E1,7.392111E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.068163E-1,-5.670291E-3,1.1214392E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":47,"left_children":[1,-1,-1],"loss_changes":[1.51296E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.2980139E-2,-5.670291E-3,1.1214392E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4851141E2,4.736646E1,1.0114495E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-4.007658E-2,1.7124419E-3,-4.322607E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":48,"left_children":[1,-1,-1],"loss_changes":[1.1659641E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[2.1620143E-2,1.7124419E-3,-4.322607E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.3879352E2,9.056025E1,4.823327E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.0701784E-2,-2.7265185E-3,2.7835416E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":49,"left_children":[1,-1,-1],"loss_changes":[1.1334619E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-2.7703783E-3,-2.7265185E-3,2.7835416E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4769241E2,7.750873E1,7.0183685E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[9.855976E-4,5.028119E-3,-1.1822984E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":50,"left_children":[1,-1,-1],"loss_changes":[8.798201E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.5336391E-2,5.028119E-3,-1.1822984E-3],"split_indices":[3,0,0],"split_type":[0,0,0],"sum_hessian":[1.4507086E2,2.7230198E1,1.1784066E2],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.1468798E-2,-2.037836E-3,4.981943E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":51,"left_children":[1,-1,-1],"loss_changes":[1.3903425E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.39965955E-2,-2.037836E-3,4.981943E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4467838E2,1.07553085E2,3.7125286E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[3.1599186E-2,1.0753028E-3,-6.1705606E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":52,"left_children":[1,-1,-1],"loss_changes":[7.2637935E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.6045145E-2,1.0753028E-3,-6.1705606E-3],"split_indices":[5,0,0],"split_type":[0,0,0],"sum_hessian":[1.4513171E2,1.3066982E2,1.4461886E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.9109923E-3,2.0861586E-3,-2.5921254E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":53,"left_children":[1,-1,-1],"loss_changes":[7.888134E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.0972753E-2,2.0861586E-3,-2.5921254E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4338414E2,7.834685E1,6.50373E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.541693E-2,-4.7181547E-3,2.7364993E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":54,"left_children":[1,-1,-1],"loss_changes":[1.907261E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-1.7198509E-2,-4.7181547E-3,2.7364993E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4258781E2,5.5045696E1,8.7542114E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-6.793089E-2,-4.270684E-3,2.938179E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":55,"left_children":[1,-1,-1],"loss_changes":[1.872198E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.9884456E-3,-4.270684E-3,2.938179E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4214075E2,7.12372E1,7.090354E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-1.0137361E-1,4.9936835E-4,-5.0488673E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":56,"left_children":[1,-1,-1],"loss_changes":[8.672843E0,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[3.0858375E-2,4.9936835E-4,-5.0488673E-3],"split_indices":[2,0,0],"split_type":[0,0,0],"sum_hessian":[1.4063496E2,1.0291854E2,3.7716427E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.449439E-2,-2.6215576E-3,3.7384462E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":57,"left_children":[1,-1,-1],"loss_changes":[1.3604961E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[5.0351773E-3,-2.6215576E-3,3.7384462E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4429385E2,9.2872574E1,5.142128E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.209277E-2,-2.1818222E-3,5.118343E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":58,"left_children":[1,-1,-1],"loss_changes":[1.4444012E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[1.39965955E-2,-2.1818222E-3,5.118343E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.3589288E2,9.9823265E1,3.6069614E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-2.1114854E-2,-2.2430532E-3,3.6860367E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":59,"left_children":[1,-1,-1],"loss_changes":[1.1584419E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[6.9238376E-3,-2.2430532E-3,3.6860367E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4424765E2,9.509283E1,4.915482E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-3.2282032E-2,-3.570684E-3,2.7332043E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":60,"left_children":[1,-1,-1],"loss_changes":[1.4923586E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-8.472012E-3,-3.570684E-3,2.7332043E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4837196E2,7.184672E1,7.6525246E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}},{"base_weights":[-9.693615E-3,-2.9389095E-3,3.001408E-3],"categories":[],"categories_nodes":[],"categories_segments":[],"categories_sizes":[],"default_left":[0,0,0],"id":61,"left_children":[1,-1,-1],"loss_changes":[1.2675176E1,0E0,0E0],"parents":[2147483647,0,0],"right_children":[2,-1,-1],"split_conditions":[-5.9884456E-3,-2.9389095E-3,3.001408E-3],"split_indices":[1,0,0],"split_type":[0,0,0],"sum_hessian":[1.4194582E2,7.406278E1,6.788303E1],"tree_param":{"num_deleted":"0","num_feature":"7","num_nodes":"3","size_leaf_vector":"1"}}]},"name":"gbtree"},"learner_model_param":{"base_score":"[5.833333E-1]","boost_from_average":"1","num_class":"0","num_feature":"7","num_target":"1"},"objective":{"name":"binary:logistic","reg_loss_param":{"scale_pos_weight":"1"}}},"version":[3,2,0]} \ No newline at end of file diff --git a/notebooks/models/spy_xgb_v1_meta.json b/notebooks/models/spy_xgb_v1_meta.json index e5a730c..63d3f75 100644 --- a/notebooks/models/spy_xgb_v1_meta.json +++ b/notebooks/models/spy_xgb_v1_meta.json @@ -1,5 +1,5 @@ { - "p_base": 0.5830346475507766, + "p_base": 0.5833333333333334, "feature_cols": [ "VIX_rank_20", "TLT_ret_10", @@ -9,5 +9,5 @@ "SPY_ret_20", "SPY_dist_sma50" ], - "last_trained_date": "2026-07-17 00:00:00" + "last_trained_date": "2026-07-24 00:00:00" } \ No newline at end of file diff --git a/notebooks/spy_direction_dataset.ipynb b/notebooks/spy_direction_dataset.ipynb index e83852b..f59b6a6 100644 --- a/notebooks/spy_direction_dataset.ipynb +++ b/notebooks/spy_direction_dataset.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -52,7 +52,8 @@ "\n", "\n", "PROJECT_ROOT = find_project_root()\n", - "RAW_DATA_DIR = PROJECT_ROOT / \"data\" / \"ibkr\" / \"daily\"\n", + "#RAW_DATA_DIR = PROJECT_ROOT / \"data\" / \"ibkr\" / \"daily\"\n", + "RAW_DATA_DIR = PROJECT_ROOT / \"data\" / \"alpaca\" / \"daily\"\n", "OUTPUT_PATH = PROJECT_ROOT / \"data\" / \"training\" / \"spy_direction_5d.parquet\"\n", "\n", "SPY_SYMBOL = \"SPY\"\n", @@ -233,7 +234,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -383,7 +384,7 @@ "df[\"TLT_ret_10\"] = df[\"TLT_close\"].pct_change(10)\n", "df[\"USO_ret_5\"] = df[\"USO_close\"].pct_change(5)\n", "df[\"SPY_TLT_ratio_ret\"] = (df[\"SPY_close\"] / df[\"TLT_close\"]).pct_change(5)\n", - "\n", + "df_model\n", "spy_forward_close = df[\"SPY_close\"].shift(-5)\n", "df[\"spy_up_5d\"] = np.nan\n", "df.loc[spy_forward_close > df[\"SPY_close\"], \"spy_up_5d\"] = 1.0\n", diff --git a/pyproject.toml b/pyproject.toml index 8a99a89..0c06c84 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,11 +5,13 @@ description = "Python trading bot using machine learning and the IBKR API." readme = "README.md" requires-python = ">=3.11,<3.12" dependencies = [ + "alpaca-py>=0.43.5", "ib-insync>=0.9.86", "matplotlib>=3.11.1", "pandas>=2.3.0", "pyarrow>=20.0.0", "pytest>=9.1.1", + "python-dotenv>=1.2.2", "scikit-learn>=1.9.0", "xgboost>=3.2.0", ] diff --git a/src/trading_bot/data/fetch_alpaca_daily.py b/src/trading_bot/data/fetch_alpaca_daily.py new file mode 100644 index 0000000..86f1c4a --- /dev/null +++ b/src/trading_bot/data/fetch_alpaca_daily.py @@ -0,0 +1,314 @@ +"""Alpaca daily candle fetcher.""" + +from __future__ import annotations + +import argparse +import os +import re +from dataclasses import dataclass +from datetime import date, datetime, time, timedelta +from pathlib import Path +from zoneinfo import ZoneInfo + +import pandas as pd +from dotenv import load_dotenv + +# Load environment variables from .env file if available +load_dotenv() + +DEFAULT_OUTPUT_DIR = Path("data/alpaca/daily") +DEFAULT_DURATION = "1 W" +EASTERN_TZ = ZoneInfo("America/New_York") +DURATION_PATTERN = re.compile(r"^(\d+)\s*([DWMY])$") + + +@dataclass(frozen=True) +class DailyCandle: + """Daily OHLCV market data for one trading session.""" + + trading_day: date + open: float + high: float + low: float + close: float + volume: int + + +def default_end_date() -> date: + """Return yesterday's date in the US/Eastern market timezone.""" + + return datetime.now(EASTERN_TZ).date() - timedelta(days=1) + + +def current_market_date() -> date: + """Return today's date in the US/Eastern market timezone.""" + + return datetime.now(EASTERN_TZ).date() + + +def parse_end_date(value: str) -> date: + """Parse an end date in YYYYMMDD format.""" + + try: + return datetime.strptime(value, "%Y%m%d").date() + except ValueError as exc: + raise argparse.ArgumentTypeError( + "end date must use YYYYMMDD format, such as 20250605" + ) from exc + + +def parse_duration(value: str) -> str: + """Normalize and validate a duration string like '1 W' or '1 M'.""" + + normalized = " ".join(value.upper().split()) + if not DURATION_PATTERN.fullmatch(normalized): + raise argparse.ArgumentTypeError( + "duration must look like '1 D', '1 W', '1 M', or '1 Y'" + ) + return normalized + + +def duration_to_start_date(end_date: date, duration: str) -> date: + """Calculate the start date based on end date and a duration string.""" + + match = DURATION_PATTERN.match(duration) + if not match: + raise ValueError(f"Invalid duration format: {duration}") + + amount = int(match.group(1)) + unit = match.group(2) + + if unit == "D": + return end_date - timedelta(days=amount) + if unit == "W": + return end_date - timedelta(weeks=amount) + if unit == "M": + return end_date - timedelta(days=amount * 30) + if unit == "Y": + return end_date - timedelta(days=amount * 365) + + raise ValueError(f"Unsupported duration unit: {unit}") + + +def fetch_daily_candles( + symbol: str, + end_date: date, + duration: str, + api_key: str | None = None, + secret_key: str | None = None, +) -> list[DailyCandle]: + """Fetch daily candles for a symbol using Alpaca Market Data API.""" + + try: + from alpaca.data.historical import StockHistoricalDataClient + from alpaca.data.requests import StockBarsRequest + from alpaca.data.timeframe import TimeFrame + except ImportError as exc: + raise SystemExit( + "Missing dependency: alpaca-py. Install it via 'pip install alpaca-py' " + "before running the script." + ) from exc + + start_date = duration_to_start_date(end_date, duration) + + start_dt = datetime.combine(start_date, time.min, tzinfo=EASTERN_TZ) + end_dt = datetime.combine(end_date, time.max, tzinfo=EASTERN_TZ) + + print(start_dt, end_dt) + + client = StockHistoricalDataClient(api_key=api_key, secret_key=secret_key) + + request_params = StockBarsRequest( + symbol_or_symbols=symbol, + timeframe=TimeFrame.Day, + start=start_dt, + end=end_dt, + ) + + bars = client.get_stock_bars(request_params) + + if not bars or symbol not in bars.data: + print(f"Alpaca returned no historical bars for {symbol}.") + return [] + + candles: list[DailyCandle] = [] + for bar in bars[symbol]: + trading_day = bar.timestamp.astimezone(EASTERN_TZ).date() + candles.append( + DailyCandle( + trading_day=trading_day, + open=float(bar.open), + high=float(bar.high), + low=float(bar.low), + close=float(bar.close), + volume=int(bar.volume), + ) + ) + + return candles + + +def candles_to_frame(symbol: str, candles: list[DailyCandle]) -> pd.DataFrame: + """Convert candles to a date-indexed dataframe ready for Parquet storage.""" + + rows = [ + { + "date": candle.trading_day, + "symbol": symbol, + "open": candle.open, + "high": candle.high, + "low": candle.low, + "close": candle.close, + "volume": candle.volume, + } + for candle in candles + ] + frame = pd.DataFrame.from_records(rows) + if frame.empty: + return pd.DataFrame( + columns=["symbol", "open", "high", "low", "close", "volume"], + index=pd.Index([], name="date"), + ) + + frame["date"] = pd.to_datetime(frame["date"]).dt.date + return frame.set_index("date") + + +def read_existing_candles(path: Path) -> pd.DataFrame: + """Read an existing candle Parquet file as a date-indexed dataframe.""" + + if not path.exists(): + return pd.DataFrame( + columns=["symbol", "open", "high", "low", "close", "volume"], + index=pd.Index([], name="date"), + ) + + frame = pd.read_parquet(path) + if "date" in frame.columns: + frame["date"] = pd.to_datetime(frame["date"]).dt.date + frame = frame.set_index("date") + + frame.index = pd.to_datetime(frame.index).date + frame.index.name = "date" + return frame + + +def oldest_stored_date_or_today(path: Path) -> date: + """Return the oldest stored candle date, or today if no data exists yet.""" + + existing = read_existing_candles(path) + if existing.empty: + return current_market_date() + return min(existing.index) + + +def write_candles(path: Path, symbol: str, candles: list[DailyCandle]) -> pd.DataFrame: + """Append candles to a ticker Parquet file, keeping one row per date.""" + + existing = read_existing_candles(path) + fetched = candles_to_frame(symbol, candles) + combined = pd.concat([existing, fetched]) + if not combined.empty: + combined = combined[~combined.index.duplicated(keep="last")] + combined = combined.sort_index() + + path.parent.mkdir(parents=True, exist_ok=True) + combined.to_parquet(path, index=True) + return combined + + +def print_candles(symbol: str, candles: list[DailyCandle]) -> None: + """Print candles in a compact table.""" + + print("date,symbol,open,high,low,close,volume") + for candle in candles: + print( + f"{candle.trading_day.isoformat()}," + f"{symbol}," + f"{candle.open:.2f}," + f"{candle.high:.2f}," + f"{candle.low:.2f}," + f"{candle.close:.2f}," + f"{candle.volume}" + ) + + +def parse_args() -> argparse.Namespace: + """Parse command line arguments.""" + + parser = argparse.ArgumentParser(description="Fetch daily Alpaca candles.") + parser.add_argument("symbol", help="Ticker symbol to fetch, such as SPY.") + end_date_group = parser.add_mutually_exclusive_group() + end_date_group.add_argument( + "--end-date", + type=parse_end_date, + help="Request end date in YYYYMMDD format. Defaults to yesterday.", + ) + end_date_group.add_argument( + "--end-date-from-parquet", + action="store_true", + help=( + "Use the oldest date from the symbol Parquet file as the request " + "end date. Defaults to today if the file is missing or empty." + ), + ) + parser.add_argument( + "--duration", + type=parse_duration, + default=DEFAULT_DURATION, + help=( + "Duration string, such as '1 W', '1 M', or '1 Y'. " + f"Defaults to {DEFAULT_DURATION}." + ), + ) + parser.add_argument( + "--output-dir", + type=Path, + default=DEFAULT_OUTPUT_DIR, + help=f"Directory for Parquet files. Defaults to {DEFAULT_OUTPUT_DIR}.", + ) + parser.add_argument( + "--api-key", + default=os.getenv("ALPACA_API_KEY"), + help="Alpaca API Key ID (defaults to ALPACA_API_KEY env var or .env).", + ) + parser.add_argument( + "--secret-key", + default=os.getenv("ALPACA_SECRET_KEY"), + help="Alpaca Secret Key (defaults to ALPACA_SECRET_KEY env var or .env).", + ) + return parser.parse_args() + + +def main() -> None: + """Run the daily candle fetcher.""" + + args = parse_args() + symbol = args.symbol.upper() + output_path = args.output_dir / f"{symbol}.parquet" + end_date = ( + oldest_stored_date_or_today(output_path) + if args.end_date_from_parquet + else args.end_date or default_end_date() + ) + + print(oldest_stored_date_or_today(output_path)) + + print( + f"Fetching {symbol} daily candles ending {end_date:%Y-%m-%d} " + f"for duration {args.duration} via Alpaca API" + ) + candles = fetch_daily_candles( + symbol, + end_date, + args.duration, + api_key=args.api_key, + secret_key=args.secret_key, + ) + #print_candles(symbol, candles) + stored = write_candles(output_path, symbol, candles) + print(f"Wrote {len(stored)} total daily rows to {output_path}") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/trading_bot/models/prediction.py b/src/trading_bot/models/prediction.py index f91eeb0..b857ec9 100644 --- a/src/trading_bot/models/prediction.py +++ b/src/trading_bot/models/prediction.py @@ -10,6 +10,7 @@ from __future__ import annotations import argparse import json +import os import warnings from dataclasses import dataclass from pathlib import Path @@ -18,6 +19,12 @@ from typing import Any import numpy as np import pandas as pd import xgboost as xgb +from dotenv import load_dotenv + +# Load environment variables from .env file if available +load_dotenv() + +DEFAULT_DATA_DIR = Path("data/alpaca/daily") FEATURE_COLUMNS = [ "SPY_ret_5", @@ -218,8 +225,18 @@ def parse_args() -> argparse.Namespace: parser.add_argument( "--data-dir", type=Path, - default=Path("data/ibkr/daily"), - help="Directory containing the raw Parquet market data files.", + default=DEFAULT_DATA_DIR, + help=f"Directory containing the raw Parquet market data files. Defaults to {DEFAULT_DATA_DIR}.", + ) + parser.add_argument( + "--api-key", + default=os.getenv("ALPACA_API_KEY"), + help="Alpaca API Key ID (defaults to ALPACA_API_KEY env var or .env).", + ) + parser.add_argument( + "--secret-key", + default=os.getenv("ALPACA_SECRET_KEY"), + help="Alpaca Secret Key (defaults to ALPACA_SECRET_KEY env var or .env).", ) return parser.parse_args() @@ -241,4 +258,4 @@ def main() -> None: if __name__ == "__main__": - main() + main() \ No newline at end of file diff --git a/tests/test_prediction.py b/tests/test_prediction.py index ca4d9e9..3969a75 100644 --- a/tests/test_prediction.py +++ b/tests/test_prediction.py @@ -7,7 +7,7 @@ def test_predict_latest_probability_returns_probability_between_zero_and_one() - result = predict_latest_probability( model_path=Path("notebooks/models/spy_xgb_v1.json"), metadata_path=Path("notebooks/models/spy_xgb_v1_meta.json"), - raw_data_dir=Path("data/ibkr/daily"), + raw_data_dir=Path("data/alpaca/daily"), ) assert set(result.feature_columns).issubset(FEATURE_COLUMNS) diff --git a/uv.lock b/uv.lock index 71760aa..5338f3b 100644 --- a/uv.lock +++ b/uv.lock @@ -7,6 +7,33 @@ resolution-markers = [ "sys_platform != 'emscripten' and sys_platform != 'win32'", ] +[[package]] +name = "alpaca-py" +version = "0.43.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "msgpack" }, + { name = "pandas" }, + { name = "pydantic" }, + { name = "pytz" }, + { name = "requests" }, + { name = "sseclient-py" }, + { name = "websockets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/9c/0d5b0565f31a6a439876cb343282c1b7353f20ff90fefb57d33f94b4e215/alpaca_py-0.43.5.tar.gz", hash = "sha256:7b09ba442cb0c6f957c2c57a30c6035456e2e670e63e383d439c639ffdbf98ba", size = 98289, upload-time = "2026-07-02T07:22:07.016Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/40/83c7ef8bc3e74e73cda6308f7107fe57815dcfc808dc9cd03bd09aa22dd3/alpaca_py-0.43.5-py3-none-any.whl", hash = "sha256:0b4cac9b743851310f19f6a9aa84f57ddf95ae75b601350395746a893f54a2da", size = 122677, upload-time = "2026-07-02T07:22:08.06Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/56/a8120250d128bed162cd73c76d45f6ef9991f3e068f62a8ee060afa3104a/annotated_types-0.8.0.tar.gz", hash = "sha256:13b2beaad985e05e2d6407ee4c4f35590b11f8d693a258a561055cac8f64cab7", size = 15893, upload-time = "2026-07-23T20:16:13.995Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl", hash = "sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0", size = 13427, upload-time = "2026-07-23T20:16:12.938Z" }, +] + [[package]] name = "appnope" version = "0.1.4" @@ -25,6 +52,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl", hash = "sha256:9da13157f5b28becde0bd374fc677dcd3c290614264eff096f167c469cd9f933", size = 28702, upload-time = "2026-07-12T03:31:47.542Z" }, ] +[[package]] +name = "certifi" +version = "2026.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/c2/24167ea9858356b47a87a50d39908bfdb72ceeefe0041586e704e5376b3a/certifi-2026.7.22.tar.gz", hash = "sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55", size = 138112, upload-time = "2026-07-22T03:35:12.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl", hash = "sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775", size = 136983, upload-time = "2026-07-22T03:35:11.276Z" }, +] + [[package]] name = "cffi" version = "2.1.0" @@ -49,6 +85,28 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/4e/e8d7cb5783f1841a3c8fb3a7735838d7484d08ec08c9f984b14cac1ac0e9/cffi-2.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:35aaea0c7ee0e58a5cd8c2fd1a48fdf7ece0d2699b7ecdda08194e9ce5dd9b3d", size = 179927, upload-time = "2026-07-06T21:32:42.961Z" }, ] +[[package]] +name = "charset-normalizer" +version = "3.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/2a/23f34ec9d04624958e137efdc394888716353190e75f25dd22c7a2c7a8aa/charset_normalizer-3.4.9.tar.gz", hash = "sha256:673611bbd43f0810bec0b0f028ddeaaa501190339cac411f347ac76917c3ae7b", size = 152439, upload-time = "2026-07-07T14:34:58.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/e3/85ec501f206fb049259288c1f3506e53876937fb00edb47009348e66756b/charset_normalizer-3.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0e94703ec9684807f20cfb5eed95c70f67f2a8f21ad620146d7b5a13677b93e5", size = 317075, upload-time = "2026-07-07T14:32:56.021Z" }, + { url = "https://files.pythonhosted.org/packages/c3/69/2a5385192e67175f7d8bd5ce4f57c24bc956439adeae5c13a99aa28a53d1/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a441ea71902098ffe78c5abe6c494f44160b4af614ed16c3d9a3b1d17fd8ee2", size = 213837, upload-time = "2026-07-07T14:32:57.78Z" }, + { url = "https://files.pythonhosted.org/packages/b3/46/03ddc7da576d814fe0a36dd1f0fd3258e95404b4b2e3c026b7923d7e133f/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:304b13570067b2547562e308af560b3963857b1fa90bd6afd978130130fe2d6a", size = 235503, upload-time = "2026-07-07T14:32:59.205Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6e/de0229a7ef40f6f9d28a837eebf4ec47bdca5dab4e900c84f22919af636a/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4773092f8019072343a7447203308b176e10199920eb02d6195e81bbb3274c29", size = 229944, upload-time = "2026-07-07T14:33:00.803Z" }, + { url = "https://files.pythonhosted.org/packages/a5/34/49b9060e8418b14fb5cba9cf6bfb383111e2538a03a1fb18e66a95aeb3d5/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:04ce310cb89c15df659582aee80a0603788732a5e017d5bd5c81158106ce249c", size = 221276, upload-time = "2026-07-07T14:33:02.199Z" }, + { url = "https://files.pythonhosted.org/packages/44/95/80282cce0fae9c3061203d723ee87da996aed79679e65d8935050ee7ca1f/charset_normalizer-3.4.9-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:c0323c9daef75ef2e5083624b4585018a0c9d5e3b40f607eed81a311270b934b", size = 205260, upload-time = "2026-07-07T14:33:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/0c/74/2f62c8821b969ea3bd67cc2e6976834f48ca5d12664d2559ebcd9bcfbed7/charset_normalizer-3.4.9-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:871ff67ea1aad4dfd91736464934d56b32dac49f9fbe16cddba36198a7b3a0db", size = 217786, upload-time = "2026-07-07T14:33:05.12Z" }, + { url = "https://files.pythonhosted.org/packages/d9/8d/feabb82cb49fcad14515b1d7d1ca4787b0da7fc723a212bf89bc9e0fac52/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:67830fc78e67501f47bb950471b2dcb9b35b140084429318e862895a8e89c993", size = 216798, upload-time = "2026-07-07T14:33:06.629Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ff/c946d63bc3786d5b84d960b0f7ab7e25b828486a946b5aa997625bcaf6a6/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3d92613ec25e43b05f042302531ec0f00b8445190e43325880cbd6ab7c2581da", size = 206429, upload-time = "2026-07-07T14:33:08.006Z" }, + { url = "https://files.pythonhosted.org/packages/af/ba/5e5007c370702f85d2ef75791fac7943ed41e080364a673b20142e430e3e/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:280081916dc341820640489a66e4696049401ef1cf6dd672f672e70ad915aca3", size = 223066, upload-time = "2026-07-07T14:33:09.783Z" }, + { url = "https://files.pythonhosted.org/packages/83/d5/9096aa3cf532dfad237861544eb47a0f20d5adbf1039760fed8eaae935d9/charset_normalizer-3.4.9-cp311-cp311-win32.whl", hash = "sha256:ac351b3b8014eead140e77e9717e2992c6bbe30b63bc3422422eb84865412e3d", size = 150456, upload-time = "2026-07-07T14:33:11.217Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a1/e29995109e455dc8eff8d0fac6ae509be39561318a7cfeac5d33ad029213/charset_normalizer-3.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:6366a16e1a25018694d6a5d784d09b046edc9eac40ea2b54065c3052672516a1", size = 161410, upload-time = "2026-07-07T14:33:12.743Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8d/1569f4d0032d6ba2a4fe4591c35bf87868c600c41a71eb5c2e1ffa8464c2/charset_normalizer-3.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:1d22856ffbe153a602df38e4a5464f0b748a54002e0d69ac6d2ad0a197cc99ec", size = 152649, upload-time = "2026-07-07T14:33:14.173Z" }, + { url = "https://files.pythonhosted.org/packages/98/2b/f97f1c193fb855c345d678f5077d6926034db0722df74c8f057020e05a25/charset_normalizer-3.4.9-py3-none-any.whl", hash = "sha256:68e5f26a1ad57ded6d1cfb85331d1c1a195314756471d97758c48498bb4dcdf5", size = 64538, upload-time = "2026-07-07T14:34:56.993Z" }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -176,6 +234,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/f3/28ea87be30570f4d6b8fd24380d12fa74e59467ee003755e76aeb29082b8/ib_insync-0.9.86-py3-none-any.whl", hash = "sha256:a61fbe56ff405d93d211dad8238d7300de76dd6399eafc04c320470edec9a4a4", size = 72980, upload-time = "2023-07-02T12:43:29.928Z" }, ] +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + [[package]] name = "iniconfig" version = "2.3.0" @@ -364,6 +431,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl", hash = "sha256:3c821cf1c209f59fb2d2d64abbf5b23b67bcb2210d663f9918dd851c6da1fcf6", size = 9534, upload-time = "2026-05-08T17:33:32.055Z" }, ] +[[package]] +name = "msgpack" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/f9/c0a1c127f9049db9155afc316952ea571720dd01833ff5e4d7e8e6352dbb/msgpack-1.2.1.tar.gz", hash = "sha256:04c721c2c7448767e9e3f2520a475663d8ee0f09c31890f6d2bd70fd636a9647", size = 183960, upload-time = "2026-06-18T16:13:52.594Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/6b/e9b1cdc042c4458801d2545ed782a95f3d6ba8e270cce8745b8603c7f748/msgpack-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:29a3f6e9667868429d8240dfd063ea5ffdc1321c13d783aa23827a38de0dcb22", size = 82812, upload-time = "2026-06-18T16:12:45.022Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3a/dd518a1bf78ed1e9ad8afe57307c079a00eafe4b3068932a27ca1ea56b4f/msgpack-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aded5bdf32609dc7987a49bbbd15a8ef096193f96dd8bbeb791de729e650acf5", size = 82739, upload-time = "2026-06-18T16:12:46.025Z" }, + { url = "https://files.pythonhosted.org/packages/70/e0/7ba9e1542bf0771a27b8b37c1316e3f95ae9d748fd765284655c476ad4ef/msgpack-1.2.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:146ee4e9ce80b365c6d4c47073da9da7bcec473e58194ceee5dd7620ace77e06", size = 414233, upload-time = "2026-06-18T16:12:47.029Z" }, + { url = "https://files.pythonhosted.org/packages/03/8d/671d81534ea0e2b0e8a121be100020da09eb78861fe3aa8f3ef7dcd3bed1/msgpack-1.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a28d076ca7c82b9c8728ad90b7147489449557038bed50e4241eb832395169b4", size = 423843, upload-time = "2026-06-18T16:12:48.19Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b6/e5c737515ed1f166664b87601b532f58cbb73d8aa6a90b99f7c2c5037e8e/msgpack-1.2.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7d31c0ac0c640f877804c67cb2bc9f4e23dc2db97e96c2e67fa27d38283b41f8", size = 390772, upload-time = "2026-06-18T16:12:49.624Z" }, + { url = "https://files.pythonhosted.org/packages/a8/46/62ed8c2e87d7021eab19921594d961ef3aa3794eec76c716dc30f3bfd433/msgpack-1.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8ff92d7feeaf5bc26c51495b69e2f99ed97ab79346fb6555f44be7dd2ac6503b", size = 409559, upload-time = "2026-06-18T16:12:50.936Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/59aa3887b860bbf43532835e192b1c388a17590d6068ae4f8b2bc74c906e/msgpack-1.2.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:779197a6513bab3c3632265e3d0f7cb3227e62510841a6f34f1eaa37efbb345e", size = 387838, upload-time = "2026-06-18T16:12:52.161Z" }, + { url = "https://files.pythonhosted.org/packages/09/11/f8563e471093420cf6478cb3271a0175d8402b82d879783d4035d2d03360/msgpack-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:67f6dd22fa72a93752643f07889796d62739a13415ee630169a8ce764f86cf9f", size = 421732, upload-time = "2026-06-18T16:12:53.556Z" }, + { url = "https://files.pythonhosted.org/packages/57/cf/e673683c4c6c90c1022b24c65af4b03eda72b182a1176ef6449069d66acc/msgpack-1.2.1-cp311-cp311-win32.whl", hash = "sha256:91054a783328e0ea7954b8771095705c8d2243b814743fbaadf14552c9c52c5d", size = 64091, upload-time = "2026-06-18T16:12:54.821Z" }, + { url = "https://files.pythonhosted.org/packages/3f/07/ca212739d179f9083bff2c7c08c24101c3555a334fadc2b876b18768a3ae/msgpack-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2eda0b7ebb1283a98d3e4492ac933c8af6aff59fd3df1c3ed024f536af4b1dc8", size = 70462, upload-time = "2026-06-18T16:12:55.898Z" }, + { url = "https://files.pythonhosted.org/packages/6d/be/6798347b425e26f35db82e69dd83c09716c856a3714e7bffc4c0860fd830/msgpack-1.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:6ee967f7c7e1df2890c671ff2ee51a28ded0efc95da3e507176dee881ce36c66", size = 65059, upload-time = "2026-06-18T16:12:57.053Z" }, +] + [[package]] name = "narwhals" version = "2.24.0" @@ -587,6 +673,59 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/fa/6d7708d2cfc1a832acb6aeb0cd16e801902df8a0f583bb3b4b527fde022e/pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594", size = 2111872, upload-time = "2026-05-06T13:40:27.596Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6f/aa064a3e74b5745afbdf250594f38e7ead05e2d651bcb35994b9417a0d4d/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c", size = 1948255, upload-time = "2026-05-06T13:39:12.574Z" }, + { url = "https://files.pythonhosted.org/packages/43/3a/41114a9f7569b84b4d84e7a018c57c56347dac30c0d4a872946ec4e36c46/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826", size = 1972827, upload-time = "2026-05-06T13:38:19.841Z" }, + { url = "https://files.pythonhosted.org/packages/ef/25/1ab42e8048fe551934d9884e8d64daa7e990ad386f310a15981aeb6a5b08/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04", size = 2041051, upload-time = "2026-05-06T13:38:10.447Z" }, + { url = "https://files.pythonhosted.org/packages/94/c2/1a934597ddf08da410385b3b7aae91956a5a76c635effef456074fad7e88/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e", size = 2221314, upload-time = "2026-05-06T13:40:13.089Z" }, + { url = "https://files.pythonhosted.org/packages/02/6d/9e8ad178c9c4df27ad3c8f25d1fe2a7ab0d2ba0559fad4aee5d3d1f16771/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3", size = 2285146, upload-time = "2026-05-06T13:38:59.224Z" }, + { url = "https://files.pythonhosted.org/packages/80/50/540cd3aeefc041beb111125c4bff779831a2111fc6b15a9138cda277d32c/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4", size = 2089685, upload-time = "2026-05-06T13:38:17.762Z" }, + { url = "https://files.pythonhosted.org/packages/6b/a4/b440ad35f05f6a38f89fa0f149accb3f0e02be94ca5e15f3c449a61b4bc9/pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398", size = 2115420, upload-time = "2026-05-06T13:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/99/61/de4f55db8dfd57bfdfa9a12ec90fe1b57c4f41062f7ca86f08586b3e0ac0/pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3", size = 2165122, upload-time = "2026-05-06T13:37:01.167Z" }, + { url = "https://files.pythonhosted.org/packages/f7/52/7c529d7bdb2d1068bd52f51fe32572c8301f9a4febf1948f10639f1436f5/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848", size = 2182573, upload-time = "2026-05-06T13:38:45.04Z" }, + { url = "https://files.pythonhosted.org/packages/37/b3/7c40325848ba78247f2812dcf9c7274e38cd801820ca6dd9fe63bcfb0eb4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3", size = 2317139, upload-time = "2026-05-06T13:37:15.539Z" }, + { url = "https://files.pythonhosted.org/packages/d9/37/f913f81a657c865b75da6c0dbed79876073c2a43b5bd9edbe8da785e4d49/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109", size = 2360433, upload-time = "2026-05-06T13:37:30.099Z" }, + { url = "https://files.pythonhosted.org/packages/c4/67/6acaa1be2567f9256b056d8477158cac7240813956ce86e49deae8e173b4/pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda", size = 1985513, upload-time = "2026-05-06T13:38:15.669Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e6/c505f83dfeda9a2e5c995cfd872949e4d05e12f7feb3dca72f633daefa94/pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33", size = 2071114, upload-time = "2026-05-06T13:40:35.416Z" }, + { url = "https://files.pythonhosted.org/packages/0f/da/7a263a96d965d9d0df5e8de8a475f33495451117035b09acb110288c381f/pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d", size = 2044298, upload-time = "2026-05-06T13:38:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a4/73995fd4ebbb46ba0ee51e6fa049b8f02c40daebb762208feda8a6b7894d/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c", size = 2111589, upload-time = "2026-05-06T13:37:10.817Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7f/f37d3a5e8bfcc2e403f5c57a730f2d815693fb42119e8ea48b3789335af1/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b", size = 1944552, upload-time = "2026-05-06T13:36:56.717Z" }, + { url = "https://files.pythonhosted.org/packages/15/3c/d7eb777b3ff43e8433a4efb39a17aa8fd98a4ee8561a24a67ef5db07b2d6/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b", size = 1982984, upload-time = "2026-05-06T13:39:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/63/87/70b9f40170a81afd55ca26c9b2acb25c20d64bcfbf888fafecb3ba077d4c/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea", size = 2138417, upload-time = "2026-05-06T13:39:45.476Z" }, + { url = "https://files.pythonhosted.org/packages/11/cb/428de0385b6c8d44b716feba566abfacfbd23ee3c4439faa789a1456242f/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0", size = 2112782, upload-time = "2026-05-06T13:37:04.016Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b5/6a17bdadd0fc1f170adfd05a20d37c832f52b117b4d9131da1f41bb097ce/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7", size = 1952146, upload-time = "2026-05-06T13:39:43.092Z" }, + { url = "https://files.pythonhosted.org/packages/2a/dc/03734d80e362cd43ef65428e9de77c730ce7f2f11c60d2b1e1b39f0fbf99/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2", size = 2134492, upload-time = "2026-05-06T13:36:58.124Z" }, + { url = "https://files.pythonhosted.org/packages/de/df/5e5ffc085ed07cc22d298134d3d911c63e91f6a0eb91fe646750a3209910/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9", size = 2156604, upload-time = "2026-05-06T13:37:49.88Z" }, + { url = "https://files.pythonhosted.org/packages/81/44/6e112a4253e56f5705467cbab7ab5e91ee7398ba3d56d358635958893d3e/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf", size = 2183828, upload-time = "2026-05-06T13:37:43.053Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/5565071e937d8e752842ac241463944c9eb14c87e2d269f2658a5bd05e98/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30", size = 2310000, upload-time = "2026-05-06T13:37:56.694Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c3/66883a5cec183e7fba4d024b4cbbe61851a63750ef606b0afecc46d1f2bf/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc", size = 2361286, upload-time = "2026-05-06T13:40:05.667Z" }, + { url = "https://files.pythonhosted.org/packages/4b/2d/69abac8f838090bbecd5df894befb2c2619e7996a98ddb949db9f3b93225/pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983", size = 2193071, upload-time = "2026-05-06T13:38:08.682Z" }, +] + [[package]] name = "pygments" version = "2.20.0" @@ -633,6 +772,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "pytz" +version = "2026.3.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/48/fb042503b6ca6cd271261dc559fd6432f7d8c713153e9ec5c591af4dfc1c/pytz-2026.3.post1.tar.gz", hash = "sha256:2211d3fcf9a797d3405cac96ac7f61d80e6a644f72a3309607282fe8a2010c5d", size = 319745, upload-time = "2026-07-25T15:12:07.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/7b/39c34ca613b0b198cb866466651b26b045e2009864c5183c979a3b83f383/pytz-2026.3.post1-py2.py3-none-any.whl", hash = "sha256:dd95840dd199baea12d9cc096a1d452caa6596a1c1e4b5f3dbd1541855d5e815", size = 508283, upload-time = "2026-07-25T15:12:05.782Z" }, +] + [[package]] name = "pyzmq" version = "27.1.0" @@ -669,6 +826,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload-time = "2025-09-08T23:09:56.509Z" }, ] +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + [[package]] name = "scikit-learn" version = "1.9.0" @@ -720,6 +892,14 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] +[[package]] +name = "sseclient-py" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/2e/59920f7d66b7f9932a3d83dd0ec53fab001be1e058bf582606fe414a5198/sseclient_py-1.9.0-py3-none-any.whl", hash = "sha256:340062b1587fc2880892811e2ab5b176d98ef3eee98b3672ff3a3ba1e8ed0f6f", size = 8351, upload-time = "2026-01-02T23:39:30.995Z" }, +] + [[package]] name = "stack-data" version = "0.6.3" @@ -765,11 +945,13 @@ name = "trading-bot" version = "0.1.0" source = { editable = "." } dependencies = [ + { name = "alpaca-py" }, { name = "ib-insync" }, { name = "matplotlib" }, { name = "pandas" }, { name = "pyarrow" }, { name = "pytest" }, + { name = "python-dotenv" }, { name = "scikit-learn" }, { name = "xgboost" }, ] @@ -781,11 +963,13 @@ dev = [ [package.metadata] requires-dist = [ + { name = "alpaca-py", specifier = ">=0.43.5" }, { name = "ib-insync", specifier = ">=0.9.86" }, { name = "matplotlib", specifier = ">=3.11.1" }, { name = "pandas", specifier = ">=2.3.0" }, { name = "pyarrow", specifier = ">=20.0.0" }, { name = "pytest", specifier = ">=9.1.1" }, + { name = "python-dotenv", specifier = ">=1.2.2" }, { name = "scikit-learn", specifier = ">=1.9.0" }, { name = "xgboost", specifier = ">=3.2.0" }, ] @@ -811,6 +995,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, ] +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + [[package]] name = "tzdata" version = "2026.3" @@ -820,6 +1016,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e5/6d/b53b99a9f2766d095985947a5782f1702cabb129a34f7a802d7197af832f/tzdata-2026.3-py2.py3-none-any.whl", hash = "sha256:dc096730c87af6cab1b171c9d532be840741ff5d459015e7f6947bd7d7e54931", size = 348168, upload-time = "2026-07-10T08:50:36.46Z" }, ] +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + [[package]] name = "wcwidth" version = "0.8.2" @@ -829,6 +1034,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/96/42/3e5985a0a7e57de470b320c6d6a1a67c844f6737a587f3d44dd13d1819e7/wcwidth-0.8.2-py3-none-any.whl", hash = "sha256:d63947694a0539a1d51e01eda7caf800c291020e6cdd7e28ad7b14dd33ad4f85", size = 323166, upload-time = "2026-06-29T18:11:09.888Z" }, ] +[[package]] +name = "websockets" +version = "17.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/96/e01084f83a64bcb3a27994bd0cb0db68ff29d9c6707fae37ec19b18ba990/websockets-17.0.1.tar.gz", hash = "sha256:5baa9bc0dfbae8c507e51c8cf1b6d4628086f7a87bbd3a9952bd5f035451f1cc", size = 183298, upload-time = "2026-07-31T11:31:27.665Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/54/b2bce5b754b91b727b852e78af6d7193d4fe985e420dc54e6c2abe161c1c/websockets-17.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c38515cb54902f7e97d0239e81ef46c4444f9475f4807fb9bbdb789b4089abcf", size = 212573, upload-time = "2026-07-31T11:29:04.803Z" }, + { url = "https://files.pythonhosted.org/packages/78/1b/eaefeb695b217d8c735fc377ab53c6b00bc9ed64a01a3f6f797096ac0ee8/websockets-17.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:70d438268e49f1a4bd096b6b6f7010f3ab48b5db2574dbf7d8c864c46ce7a06a", size = 210262, upload-time = "2026-07-31T11:29:06.298Z" }, + { url = "https://files.pythonhosted.org/packages/87/2d/68439a174c74969fb51619bbe9af9496826610883b828a2edd2f022c94fc/websockets-17.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0b52c76b8a870b141b7ca0705289452183ce7a523101954ccfe29a25986a673f", size = 210535, upload-time = "2026-07-31T11:29:07.553Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ab/13a856b488dbac7fd3c5473e38098897cda0baa04e3ca3b34ec6c8a32b46/websockets-17.0.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b98860aefbd3d9bc8e3c7f0eefb83b11142b16110739c68cd33d3b4d6e84e536", size = 219602, upload-time = "2026-07-31T11:29:09.227Z" }, + { url = "https://files.pythonhosted.org/packages/45/a1/2b100e71aa1fe283ec8fb73f8b74a8576d855486a49117903b100dd3b78d/websockets-17.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d41e9845514754a42d1d83b2fca9d27fee2ca7b3b0bee6843ba5a9bb2b6e25ac", size = 219873, upload-time = "2026-07-31T11:29:10.362Z" }, + { url = "https://files.pythonhosted.org/packages/3b/71/92e6146d3588d145136c0e0e16d106bbb855bb5047e13ec3fdee39cce770/websockets-17.0.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9aac6081513f02eac3f8caace800dbfc5c608b69e4a7bef69e414eabfc95aa1", size = 221108, upload-time = "2026-07-31T11:29:11.708Z" }, + { url = "https://files.pythonhosted.org/packages/09/8d/357afa2ffd29686536109e7e3cb2a94f2d09e535df4cf3989393dc506a40/websockets-17.0.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b85b960a4507b0714c0a1246d031be9118d908ee974dc085257297a955205f1d", size = 224401, upload-time = "2026-07-31T11:29:12.959Z" }, + { url = "https://files.pythonhosted.org/packages/01/27/9efba1e7a8df48e405d017e67513c6b2a8f0b59c8500b820c47cd5f3dea9/websockets-17.0.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c356dbddab0a529ed7574f78f559d75a223735c321c28f6f587fbf02b11ed301", size = 221670, upload-time = "2026-07-31T11:29:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/01/85/ab27d62103e8a150f3657e043e5fc711ad3e018c8cd8a715093e93d7640c/websockets-17.0.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5661f868ef191d33dfc6a0cc7c5b3d495f0cc8bb3f8b30d87bda8755c61c95f5", size = 220442, upload-time = "2026-07-31T11:29:15.417Z" }, + { url = "https://files.pythonhosted.org/packages/6d/04/289e00b8001b622b0c397a6901fcc4aa8f34a6d2ed42be17f2704f2faae1/websockets-17.0.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2fa2cb465a131c347ba6717a78c887746e73edb1c131d01c982d6ef0d68b82e0", size = 217760, upload-time = "2026-07-31T11:29:16.772Z" }, + { url = "https://files.pythonhosted.org/packages/2f/70/0fe58cdac988dfc0066786cc07b09dfd72b48b0c01e5de667721192b2e6e/websockets-17.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55383d8177b3c99fd873ee5db0e0193f4c1dd4a3feaccf1a4a03c1b7cf539cac", size = 220597, upload-time = "2026-07-31T11:29:18.075Z" }, + { url = "https://files.pythonhosted.org/packages/d5/76/d3eaf120710d1a791d1c7a4963f0b50a589df8ba675394fd2a97dfea3746/websockets-17.0.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:038cfad5d5417f8bb09295abe986029a26d22f34bda622ccc79b670efd4dab56", size = 219187, upload-time = "2026-07-31T11:29:19.468Z" }, + { url = "https://files.pythonhosted.org/packages/e6/00/4e9ae886bdb1647537176ca33fca66d79dddb3773d213ac98ddc6bba9ab4/websockets-17.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:15920057a6b723f84734f0641403bca163a4b176e5af809ee4f0c4a1e75e9fed", size = 219955, upload-time = "2026-07-31T11:29:20.641Z" }, + { url = "https://files.pythonhosted.org/packages/7c/67/cd7cc6849a86cf8c9979c0c570b6b6ccee75d2872854238d8d54e77be6ec/websockets-17.0.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5508f38c98ac29def9e747b87543b008a58b075df6da70b2cf2e0b47073d33bb", size = 221002, upload-time = "2026-07-31T11:29:21.753Z" }, + { url = "https://files.pythonhosted.org/packages/de/5c/4d14eaf7b2f1448d1af24c1641f04eb74c1632a5802952aac4b7e068b8e7/websockets-17.0.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:a68e604c6d1b0338e46652e2688cbce8096ad9c03548b075fda9e2ea19a9b7dd", size = 218579, upload-time = "2026-07-31T11:29:22.888Z" }, + { url = "https://files.pythonhosted.org/packages/15/67/ff8bc4b8a6ec235ed8985de12fecc59ad2cd68cc8fc79b97deaa42e412ac/websockets-17.0.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8af570fc29cd998a921c7131c8ac81d9434466d6d25300cb12a690fb56a8a08", size = 219612, upload-time = "2026-07-31T11:29:24.052Z" }, + { url = "https://files.pythonhosted.org/packages/91/eb/103d81d655bab3ffd5c7d5d4b08f92c374499decd1d4be6035ce715b385b/websockets-17.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:246927ae9ae06ca0d42a483a4bdb80d4862e1ee5b4cab37c354a5e1ad8356448", size = 219846, upload-time = "2026-07-31T11:29:25.421Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1e/3495161b1827941258545604fdf72e3e053d03f25bb61752228a784c26a1/websockets-17.0.1-cp311-cp311-win32.whl", hash = "sha256:1d4cf7e8e5b8b1fa40758ac7524843a00237b124ab217e227542cafcfeb7a946", size = 213046, upload-time = "2026-07-31T11:29:27.094Z" }, + { url = "https://files.pythonhosted.org/packages/7b/b1/ba0ce59681db38c320a6d485f95a497ddea20356d9a9e8e70615ddd867b9/websockets-17.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:02f0b037a737d0cb0c33866c97bcd1a0b73170dfbf42d69d8fb86f51002fd5ae", size = 213344, upload-time = "2026-07-31T11:29:28.28Z" }, + { url = "https://files.pythonhosted.org/packages/83/9e/abfdde9cbd57f0b5867a70e3426ac63341e1a21557b273c39bb6d2ccf8b9/websockets-17.0.1-cp311-cp311-win_arm64.whl", hash = "sha256:1bdd8c4be420905dd732e00dcd669852d8128cc723efa585a0c0e51adb00a28a", size = 213277, upload-time = "2026-07-31T11:29:29.504Z" }, + { url = "https://files.pythonhosted.org/packages/51/77/63b4abd29f15107d856f010de6f35434faa7c49ef89151e051d2807a9c40/websockets-17.0.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:49266e4488309b38783257293a38298942b9a03aa106fcb45195377a77c0c1e2", size = 210194, upload-time = "2026-07-31T11:31:18.046Z" }, + { url = "https://files.pythonhosted.org/packages/ef/ab/6160542ee644f72b865af13ddfff23740c95595b237e16312262cafdb641/websockets-17.0.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d69fd559f9f0e8a52d2fce6f04ee143f86e70df0a189cd95164eddac599e810f", size = 210465, upload-time = "2026-07-31T11:31:19.333Z" }, + { url = "https://files.pythonhosted.org/packages/53/1a/d4437d3cb0691eeac2c6064e21c83a9eeda04f6ef0261abfc0dde708590d/websockets-17.0.1-pp311-pypy311_pp73-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a39ce3a7b0e6059be093213d637963101380157bcbad355916738fafb490698d", size = 211417, upload-time = "2026-07-31T11:31:20.687Z" }, + { url = "https://files.pythonhosted.org/packages/88/28/2d671e23a20359a1cc142848384659813b49028d46cb0acdc28e81ac59b5/websockets-17.0.1-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2437d4ca208cc0f246d3a2297ae7474b4ba18261aaf5b9c79c84c031ecf348e1", size = 211309, upload-time = "2026-07-31T11:31:21.969Z" }, + { url = "https://files.pythonhosted.org/packages/02/52/b85a676b161991e5c0d884252376435f60510789e7740e3da73489d22a6e/websockets-17.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6740be6d1bab69f08ab52cb15b08f76c143b6fe61c580ba62bd929f3ab7a1d42", size = 212203, upload-time = "2026-07-31T11:31:23.38Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e3/91e297e41381d9131f3142a9c1a50389fd96b98125ce9b81526fa4e14b9f/websockets-17.0.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:afbce6e3f0fac32dc87c2a0d84869d1a706460d64f39f3889386413e6e4d3d26", size = 213434, upload-time = "2026-07-31T11:31:24.707Z" }, + { url = "https://files.pythonhosted.org/packages/09/ce/3929538b2b9918f5eee623fbf3346893973191f6df93f19bbda097bd7bb7/websockets-17.0.1-py3-none-any.whl", hash = "sha256:c6be9cba65c65cc76dfa3d4619e359ff02a4476c74e179b215236c11a0b32345", size = 206718, upload-time = "2026-07-31T11:31:26.037Z" }, +] + [[package]] name = "xgboost" version = "3.2.0"