1
0
Files
leopard-analysis/notebook/backtest.ipynb

1089 lines
120 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"metadata": {
"SqlCellData": {
"data_source_name": "leopard_dev@81.71.3.24",
"variableName$1": "dailies_df"
},
"ExecuteTime": {
"end_time": "2026-01-28T02:33:12.682027Z",
"start_time": "2026-01-28T02:33:02.896258Z"
}
},
"cell_type": "code",
"source": [
"%%sql\n",
"select trade_date, open * factor as Open, close * factor as Close, high * factor as High, low * factor as Low, volume as Volume, coalesce(factor, 1.0) as factor\n",
"from leopard_daily daily\n",
" left join leopard_stock stock on stock.id = daily.stock_id\n",
"where stock.code = '000001.SZ'\n",
" and daily.trade_date between '2024-01-01 00:00:00' and '2025-12-31 23:59:59'\n",
"order by daily.trade_date"
],
"id": "93e66142c88e4d2f",
"outputs": [
{
"data": {
"text/plain": [
" trade_date open close high low \\\n",
"0 2024-01-02 1095.935070 1074.926730 1099.436460 1074.926730 \n",
"1 2024-01-03 1072.592470 1073.759600 1076.093860 1067.923950 \n",
"2 2024-01-04 1072.592470 1063.255430 1072.592470 1059.754040 \n",
"3 2024-01-05 1062.088300 1081.929510 1101.770720 1058.586910 \n",
"4 2024-01-08 1077.260990 1067.923950 1085.430900 1063.255430 \n",
".. ... ... ... ... ... \n",
"425 2025-10-09 1493.155774 1502.380920 1503.698798 1485.248506 \n",
"426 2025-10-10 1498.427286 1506.334554 1514.241822 1497.109408 \n",
"427 2025-10-13 1491.837896 1502.380920 1510.288188 1486.566384 \n",
"428 2025-10-14 1501.063042 1524.784846 1528.738480 1497.109408 \n",
"429 2025-10-15 1526.130396 1534.205160 1536.896748 1515.364044 \n",
"\n",
" volume factor \n",
"0 1158366.45 116.7130 \n",
"1 733610.31 116.7130 \n",
"2 864193.99 116.7130 \n",
"3 1991622.16 116.7130 \n",
"4 1121156.19 116.7130 \n",
".. ... ... \n",
"425 1047469.06 131.7878 \n",
"426 1087947.75 131.7878 \n",
"427 1168801.73 131.7878 \n",
"428 1843428.36 131.7878 \n",
"429 1271061.03 134.5794 \n",
"\n",
"[430 rows x 7 columns]"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>trade_date</th>\n",
" <th>open</th>\n",
" <th>close</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>volume</th>\n",
" <th>factor</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2024-01-02</td>\n",
" <td>1095.935070</td>\n",
" <td>1074.926730</td>\n",
" <td>1099.436460</td>\n",
" <td>1074.926730</td>\n",
" <td>1158366.45</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2024-01-03</td>\n",
" <td>1072.592470</td>\n",
" <td>1073.759600</td>\n",
" <td>1076.093860</td>\n",
" <td>1067.923950</td>\n",
" <td>733610.31</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2024-01-04</td>\n",
" <td>1072.592470</td>\n",
" <td>1063.255430</td>\n",
" <td>1072.592470</td>\n",
" <td>1059.754040</td>\n",
" <td>864193.99</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2024-01-05</td>\n",
" <td>1062.088300</td>\n",
" <td>1081.929510</td>\n",
" <td>1101.770720</td>\n",
" <td>1058.586910</td>\n",
" <td>1991622.16</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2024-01-08</td>\n",
" <td>1077.260990</td>\n",
" <td>1067.923950</td>\n",
" <td>1085.430900</td>\n",
" <td>1063.255430</td>\n",
" <td>1121156.19</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>425</th>\n",
" <td>2025-10-09</td>\n",
" <td>1493.155774</td>\n",
" <td>1502.380920</td>\n",
" <td>1503.698798</td>\n",
" <td>1485.248506</td>\n",
" <td>1047469.06</td>\n",
" <td>131.7878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>426</th>\n",
" <td>2025-10-10</td>\n",
" <td>1498.427286</td>\n",
" <td>1506.334554</td>\n",
" <td>1514.241822</td>\n",
" <td>1497.109408</td>\n",
" <td>1087947.75</td>\n",
" <td>131.7878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>427</th>\n",
" <td>2025-10-13</td>\n",
" <td>1491.837896</td>\n",
" <td>1502.380920</td>\n",
" <td>1510.288188</td>\n",
" <td>1486.566384</td>\n",
" <td>1168801.73</td>\n",
" <td>131.7878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>428</th>\n",
" <td>2025-10-14</td>\n",
" <td>1501.063042</td>\n",
" <td>1524.784846</td>\n",
" <td>1528.738480</td>\n",
" <td>1497.109408</td>\n",
" <td>1843428.36</td>\n",
" <td>131.7878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>429</th>\n",
" <td>2025-10-15</td>\n",
" <td>1526.130396</td>\n",
" <td>1534.205160</td>\n",
" <td>1536.896748</td>\n",
" <td>1515.364044</td>\n",
" <td>1271061.03</td>\n",
" <td>134.5794</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>430 rows × 7 columns</p>\n",
"</div>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 1
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-01-28T02:36:12.966661Z",
"start_time": "2026-01-28T02:36:12.867971Z"
}
},
"cell_type": "code",
"source": [
"import pandas as pd\n",
"\n",
"dailies_df.rename(\n",
" columns={'open': 'Open', 'close': 'Close', 'high': 'High', 'low': 'Low', 'volume': 'Volume'}, inplace=True\n",
")\n",
"dailies_df['trade_date'] = pd.to_datetime(dailies_df['trade_date'], format='%Y-%m-%d')\n",
"dailies_df.set_index('trade_date', inplace=True)\n",
"dailies_df"
],
"id": "c0ed078ffd5b57fd",
"outputs": [
{
"data": {
"text/plain": [
" Open Close High Low Volume \\\n",
"trade_date \n",
"2024-01-02 1095.935070 1074.926730 1099.436460 1074.926730 1158366.45 \n",
"2024-01-03 1072.592470 1073.759600 1076.093860 1067.923950 733610.31 \n",
"2024-01-04 1072.592470 1063.255430 1072.592470 1059.754040 864193.99 \n",
"2024-01-05 1062.088300 1081.929510 1101.770720 1058.586910 1991622.16 \n",
"2024-01-08 1077.260990 1067.923950 1085.430900 1063.255430 1121156.19 \n",
"... ... ... ... ... ... \n",
"2025-10-09 1493.155774 1502.380920 1503.698798 1485.248506 1047469.06 \n",
"2025-10-10 1498.427286 1506.334554 1514.241822 1497.109408 1087947.75 \n",
"2025-10-13 1491.837896 1502.380920 1510.288188 1486.566384 1168801.73 \n",
"2025-10-14 1501.063042 1524.784846 1528.738480 1497.109408 1843428.36 \n",
"2025-10-15 1526.130396 1534.205160 1536.896748 1515.364044 1271061.03 \n",
"\n",
" factor \n",
"trade_date \n",
"2024-01-02 116.7130 \n",
"2024-01-03 116.7130 \n",
"2024-01-04 116.7130 \n",
"2024-01-05 116.7130 \n",
"2024-01-08 116.7130 \n",
"... ... \n",
"2025-10-09 131.7878 \n",
"2025-10-10 131.7878 \n",
"2025-10-13 131.7878 \n",
"2025-10-14 131.7878 \n",
"2025-10-15 134.5794 \n",
"\n",
"[430 rows x 6 columns]"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>Close</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Volume</th>\n",
" <th>factor</th>\n",
" </tr>\n",
" <tr>\n",
" <th>trade_date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2024-01-02</th>\n",
" <td>1095.935070</td>\n",
" <td>1074.926730</td>\n",
" <td>1099.436460</td>\n",
" <td>1074.926730</td>\n",
" <td>1158366.45</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2024-01-03</th>\n",
" <td>1072.592470</td>\n",
" <td>1073.759600</td>\n",
" <td>1076.093860</td>\n",
" <td>1067.923950</td>\n",
" <td>733610.31</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2024-01-04</th>\n",
" <td>1072.592470</td>\n",
" <td>1063.255430</td>\n",
" <td>1072.592470</td>\n",
" <td>1059.754040</td>\n",
" <td>864193.99</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2024-01-05</th>\n",
" <td>1062.088300</td>\n",
" <td>1081.929510</td>\n",
" <td>1101.770720</td>\n",
" <td>1058.586910</td>\n",
" <td>1991622.16</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2024-01-08</th>\n",
" <td>1077.260990</td>\n",
" <td>1067.923950</td>\n",
" <td>1085.430900</td>\n",
" <td>1063.255430</td>\n",
" <td>1121156.19</td>\n",
" <td>116.7130</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-09</th>\n",
" <td>1493.155774</td>\n",
" <td>1502.380920</td>\n",
" <td>1503.698798</td>\n",
" <td>1485.248506</td>\n",
" <td>1047469.06</td>\n",
" <td>131.7878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-10</th>\n",
" <td>1498.427286</td>\n",
" <td>1506.334554</td>\n",
" <td>1514.241822</td>\n",
" <td>1497.109408</td>\n",
" <td>1087947.75</td>\n",
" <td>131.7878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-13</th>\n",
" <td>1491.837896</td>\n",
" <td>1502.380920</td>\n",
" <td>1510.288188</td>\n",
" <td>1486.566384</td>\n",
" <td>1168801.73</td>\n",
" <td>131.7878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-14</th>\n",
" <td>1501.063042</td>\n",
" <td>1524.784846</td>\n",
" <td>1528.738480</td>\n",
" <td>1497.109408</td>\n",
" <td>1843428.36</td>\n",
" <td>131.7878</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-15</th>\n",
" <td>1526.130396</td>\n",
" <td>1534.205160</td>\n",
" <td>1536.896748</td>\n",
" <td>1515.364044</td>\n",
" <td>1271061.03</td>\n",
" <td>134.5794</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>430 rows × 6 columns</p>\n",
"</div>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 2
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-01-28T02:38:15.259655Z",
"start_time": "2026-01-28T02:38:15.199743Z"
}
},
"cell_type": "code",
"source": [
"import talib\n",
"\n",
"dailies_df['sma10'] = talib.SMA(dailies_df['Close'], timeperiod=10)\n",
"dailies_df['sma30'] = talib.SMA(dailies_df['Close'], timeperiod=30)\n",
"dailies_df['sma60'] = talib.SMA(dailies_df['Close'], timeperiod=60)\n",
"dailies_df['sma120'] = talib.SMA(dailies_df['Close'], timeperiod=120)\n",
"dailies_df.tail()"
],
"id": "c558d68773d228c1",
"outputs": [
{
"data": {
"text/plain": [
" Open Close High Low Volume \\\n",
"trade_date \n",
"2025-10-09 1493.155774 1502.380920 1503.698798 1485.248506 1047469.06 \n",
"2025-10-10 1498.427286 1506.334554 1514.241822 1497.109408 1087947.75 \n",
"2025-10-13 1491.837896 1502.380920 1510.288188 1486.566384 1168801.73 \n",
"2025-10-14 1501.063042 1524.784846 1528.738480 1497.109408 1843428.36 \n",
"2025-10-15 1526.130396 1534.205160 1536.896748 1515.364044 1271061.03 \n",
"\n",
" factor sma10 sma30 sma60 sma120 \n",
"trade_date \n",
"2025-10-09 131.7878 1504.094161 1546.925196 1593.490219 1544.474925 \n",
"2025-10-10 131.7878 1504.357737 1543.762289 1589.646408 1545.431305 \n",
"2025-10-13 131.7878 1503.698798 1540.862958 1586.329749 1546.312145 \n",
"2025-10-14 131.7878 1506.202766 1536.997182 1583.232735 1547.358386 \n",
"2025-10-15 134.5794 1507.803737 1533.840781 1580.841843 1548.429886 "
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>Close</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Volume</th>\n",
" <th>factor</th>\n",
" <th>sma10</th>\n",
" <th>sma30</th>\n",
" <th>sma60</th>\n",
" <th>sma120</th>\n",
" </tr>\n",
" <tr>\n",
" <th>trade_date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2025-10-09</th>\n",
" <td>1493.155774</td>\n",
" <td>1502.380920</td>\n",
" <td>1503.698798</td>\n",
" <td>1485.248506</td>\n",
" <td>1047469.06</td>\n",
" <td>131.7878</td>\n",
" <td>1504.094161</td>\n",
" <td>1546.925196</td>\n",
" <td>1593.490219</td>\n",
" <td>1544.474925</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-10</th>\n",
" <td>1498.427286</td>\n",
" <td>1506.334554</td>\n",
" <td>1514.241822</td>\n",
" <td>1497.109408</td>\n",
" <td>1087947.75</td>\n",
" <td>131.7878</td>\n",
" <td>1504.357737</td>\n",
" <td>1543.762289</td>\n",
" <td>1589.646408</td>\n",
" <td>1545.431305</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-13</th>\n",
" <td>1491.837896</td>\n",
" <td>1502.380920</td>\n",
" <td>1510.288188</td>\n",
" <td>1486.566384</td>\n",
" <td>1168801.73</td>\n",
" <td>131.7878</td>\n",
" <td>1503.698798</td>\n",
" <td>1540.862958</td>\n",
" <td>1586.329749</td>\n",
" <td>1546.312145</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-14</th>\n",
" <td>1501.063042</td>\n",
" <td>1524.784846</td>\n",
" <td>1528.738480</td>\n",
" <td>1497.109408</td>\n",
" <td>1843428.36</td>\n",
" <td>131.7878</td>\n",
" <td>1506.202766</td>\n",
" <td>1536.997182</td>\n",
" <td>1583.232735</td>\n",
" <td>1547.358386</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-15</th>\n",
" <td>1526.130396</td>\n",
" <td>1534.205160</td>\n",
" <td>1536.896748</td>\n",
" <td>1515.364044</td>\n",
" <td>1271061.03</td>\n",
" <td>134.5794</td>\n",
" <td>1507.803737</td>\n",
" <td>1533.840781</td>\n",
" <td>1580.841843</td>\n",
" <td>1548.429886</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 4
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-01-28T02:38:37.507442Z",
"start_time": "2026-01-28T02:38:37.447793Z"
}
},
"cell_type": "code",
"source": [
"# 指标计算完成后截取后面指标的完整的部份使用\n",
"dailies_df = dailies_df.loc['2025-01-01':'2025-12-31']\n",
"dailies_df.tail()"
],
"id": "b6f5da567c935aa",
"outputs": [
{
"data": {
"text/plain": [
" Open Close High Low Volume \\\n",
"trade_date \n",
"2025-10-09 1493.155774 1502.380920 1503.698798 1485.248506 1047469.06 \n",
"2025-10-10 1498.427286 1506.334554 1514.241822 1497.109408 1087947.75 \n",
"2025-10-13 1491.837896 1502.380920 1510.288188 1486.566384 1168801.73 \n",
"2025-10-14 1501.063042 1524.784846 1528.738480 1497.109408 1843428.36 \n",
"2025-10-15 1526.130396 1534.205160 1536.896748 1515.364044 1271061.03 \n",
"\n",
" factor sma10 sma30 sma60 sma120 \n",
"trade_date \n",
"2025-10-09 131.7878 1504.094161 1546.925196 1593.490219 1544.474925 \n",
"2025-10-10 131.7878 1504.357737 1543.762289 1589.646408 1545.431305 \n",
"2025-10-13 131.7878 1503.698798 1540.862958 1586.329749 1546.312145 \n",
"2025-10-14 131.7878 1506.202766 1536.997182 1583.232735 1547.358386 \n",
"2025-10-15 134.5794 1507.803737 1533.840781 1580.841843 1548.429886 "
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>Close</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Volume</th>\n",
" <th>factor</th>\n",
" <th>sma10</th>\n",
" <th>sma30</th>\n",
" <th>sma60</th>\n",
" <th>sma120</th>\n",
" </tr>\n",
" <tr>\n",
" <th>trade_date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2025-10-09</th>\n",
" <td>1493.155774</td>\n",
" <td>1502.380920</td>\n",
" <td>1503.698798</td>\n",
" <td>1485.248506</td>\n",
" <td>1047469.06</td>\n",
" <td>131.7878</td>\n",
" <td>1504.094161</td>\n",
" <td>1546.925196</td>\n",
" <td>1593.490219</td>\n",
" <td>1544.474925</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-10</th>\n",
" <td>1498.427286</td>\n",
" <td>1506.334554</td>\n",
" <td>1514.241822</td>\n",
" <td>1497.109408</td>\n",
" <td>1087947.75</td>\n",
" <td>131.7878</td>\n",
" <td>1504.357737</td>\n",
" <td>1543.762289</td>\n",
" <td>1589.646408</td>\n",
" <td>1545.431305</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-13</th>\n",
" <td>1491.837896</td>\n",
" <td>1502.380920</td>\n",
" <td>1510.288188</td>\n",
" <td>1486.566384</td>\n",
" <td>1168801.73</td>\n",
" <td>131.7878</td>\n",
" <td>1503.698798</td>\n",
" <td>1540.862958</td>\n",
" <td>1586.329749</td>\n",
" <td>1546.312145</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-14</th>\n",
" <td>1501.063042</td>\n",
" <td>1524.784846</td>\n",
" <td>1528.738480</td>\n",
" <td>1497.109408</td>\n",
" <td>1843428.36</td>\n",
" <td>131.7878</td>\n",
" <td>1506.202766</td>\n",
" <td>1536.997182</td>\n",
" <td>1583.232735</td>\n",
" <td>1547.358386</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2025-10-15</th>\n",
" <td>1526.130396</td>\n",
" <td>1534.205160</td>\n",
" <td>1536.896748</td>\n",
" <td>1515.364044</td>\n",
" <td>1271061.03</td>\n",
" <td>134.5794</td>\n",
" <td>1507.803737</td>\n",
" <td>1533.840781</td>\n",
" <td>1580.841843</td>\n",
" <td>1548.429886</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 5
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-01-28T02:41:29.790184Z",
"start_time": "2026-01-28T02:41:29.742624Z"
}
},
"cell_type": "code",
"source": [
"from backtesting import Strategy\n",
"from backtesting.lib import crossover\n",
"\n",
"\n",
"class SmaCross(Strategy):\n",
" def init(self):\n",
" self.sma10 = self.I(lambda x: x, self.data.sma10)\n",
" self.sma30 = self.I(lambda x: x, self.data.sma30)\n",
" self.sma60 = self.I(lambda x: x, self.data.sma60)\n",
" # self.sma120 = self.I(lambda x: x, self.data.sma120)\n",
"\n",
" def next(self):\n",
" if self.sma60 > 0 and crossover(self.data.sma10, self.data.sma30):\n",
" self.buy()\n",
" elif self.position.size > 0 and crossover(self.data.sma30, self.data.sma10):\n",
" self.position.close()"
],
"id": "b56aaaf4cad7bc7d",
"outputs": [],
"execution_count": 13
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-01-28T02:39:15.398782Z",
"start_time": "2026-01-28T02:39:15.372137Z"
}
},
"cell_type": "code",
"source": [
"def stats_print(stats):\n",
" indicator_name_mapping = {\n",
" # 'Start': '回测开始时间',\n",
" # 'End': '回测结束时间',\n",
" # 'Duration': '回测持续时长',\n",
" # 'Exposure Time [%]': '持仓时间占比(%',\n",
" 'Equity Final [$]': '最终收益',\n",
" 'Equity Peak [$]': '峰值收益',\n",
" 'Return [%]': '总收益率(%',\n",
" 'Buy & Hold Return [%]': '买入并持有收益率(%',\n",
" 'Return (Ann.) [%]': '年化收益率(%',\n",
" 'Volatility (Ann.) [%]': '年化波动率(%',\n",
" # 'CAGR [%]': '复合年均增长率(%',\n",
" # 'Sharpe Ratio': '夏普比率',\n",
" 'Sortino Ratio': '索提诺比率',\n",
" 'Calmar Ratio': '卡尔玛比率',\n",
" # 'Alpha [%]': '阿尔法系数(%',\n",
" # 'Beta': '贝塔系数',\n",
" 'Max. Drawdown [%]': '最大回撤(%',\n",
" 'Avg. Drawdown [%]': '平均回撤(%',\n",
" 'Max. Drawdown Duration': '最大回撤持续时长',\n",
" 'Avg. Drawdown Duration': '平均回撤持续时长',\n",
" '# Trades': '总交易次数',\n",
" 'Win Rate [%]': '胜率(%',\n",
" # 'Best Trade [%]': '最佳单笔交易收益率(%',\n",
" # 'Worst Trade [%]': '最差单笔交易收益率(%',\n",
" # 'Avg. Trade [%]': '平均单笔交易收益率(%',\n",
" # 'Max. Trade Duration': '单笔交易最长持有时长',\n",
" # 'Avg. Trade Duration': '单笔交易平均持有时长',\n",
" # 'Profit Factor': '盈利因子',\n",
" # 'Expectancy [%]': '期望收益(%',\n",
" 'SQN': '系统质量数',\n",
" # 'Kelly Criterion': '凯利准则',\n",
" }\n",
" for k, v in stats.items():\n",
" if k in indicator_name_mapping:\n",
" cn_name = indicator_name_mapping.get(k, k)\n",
" if isinstance(v, (int, float)):\n",
" if \"%\" in cn_name or k in ['Sharpe Ratio', 'Sortino Ratio', 'Calmar Ratio', 'Profit Factor']:\n",
" formatted_value = f\"{v:.2f}\"\n",
" elif \"$\" in cn_name:\n",
" formatted_value = f\"{v:.2f}\"\n",
" elif \"次数\" in cn_name:\n",
" formatted_value = f\"{v:.0f}\"\n",
" else:\n",
" formatted_value = f\"{v:.4f}\"\n",
" else:\n",
" formatted_value = str(v)\n",
" print(f'{cn_name}: {formatted_value}')"
],
"id": "a23e811212958477",
"outputs": [],
"execution_count": 7
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-01-28T02:41:45.264982Z",
"start_time": "2026-01-28T02:41:45.179431Z"
}
},
"cell_type": "code",
"source": [
"from backtesting import Backtest\n",
"\n",
"import backtesting._plotting as plotting\n",
"from bokeh.colors.named import tomato, lime\n",
"\n",
"plotting.BULL_COLOR = tomato\n",
"plotting.BEAR_COLOR = lime\n",
"\n",
"bt = Backtest(dailies_df, SmaCross, cash=100000, commission=.002, finalize_trades=True)\n",
"stats = bt.run()\n",
"stats_print(stats)"
],
"id": "afc750727129ff2e",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"最终收益: 106401.5007\n",
"峰值收益: 114790.5427\n",
"总收益率(%: 6.40\n",
"买入并持有收益率(%: 5.04\n",
"年化收益率(%: 8.67\n",
"年化波动率(%: 12.75\n",
"索提诺比率: 1.11\n",
"卡尔玛比率: 1.19\n",
"最大回撤(%: -7.31\n",
"平均回撤(%: -2.59\n",
"最大回撤持续时长: 97 days 00:00:00\n",
"平均回撤持续时长: 29 days 00:00:00\n",
"总交易次数: 2\n",
"胜率(%: 50.00\n",
"系统质量数: 0.4955\n"
]
}
],
"execution_count": 14
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-01-28T02:50:13.762168Z",
"start_time": "2026-01-28T02:50:13.715115Z"
}
},
"cell_type": "code",
"source": [
"stats._trades\n",
"# stats._equity_curve"
],
"id": "d3e3b4d4836ab51b",
"outputs": [
{
"data": {
"text/plain": [
" Size EntryBar ExitBar EntryPrice ExitPrice SL TP PnL \\\n",
"0 66 27 53 1502.741016 1459.294422 None None -3258.463882 \n",
"1 66 85 140 1460.572263 1613.082672 None None 9659.964543 \n",
"\n",
" Commission ReturnPct EntryTime ExitTime Duration Tag Entry_λ(sma10) \\\n",
"0 390.988678 -0.032854 2025-02-18 2025-03-26 36 days None 1469.772718 \n",
"1 405.722451 0.100209 2025-05-15 2025-08-01 78 days None 1423.259306 \n",
"\n",
" Exit_λ(sma10) Entry_λ(sma30) Exit_λ(sma30) Entry_λ(sma60) Exit_λ(sma60) \n",
"0 1474.884082 1463.894650 1481.571450 1472.456184 1474.500730 \n",
"1 1635.881961 1413.973661 1644.448168 1447.112338 1566.764455 "
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Size</th>\n",
" <th>EntryBar</th>\n",
" <th>ExitBar</th>\n",
" <th>EntryPrice</th>\n",
" <th>ExitPrice</th>\n",
" <th>SL</th>\n",
" <th>TP</th>\n",
" <th>PnL</th>\n",
" <th>Commission</th>\n",
" <th>ReturnPct</th>\n",
" <th>EntryTime</th>\n",
" <th>ExitTime</th>\n",
" <th>Duration</th>\n",
" <th>Tag</th>\n",
" <th>Entry_λ(sma10)</th>\n",
" <th>Exit_λ(sma10)</th>\n",
" <th>Entry_λ(sma30)</th>\n",
" <th>Exit_λ(sma30)</th>\n",
" <th>Entry_λ(sma60)</th>\n",
" <th>Exit_λ(sma60)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>66</td>\n",
" <td>27</td>\n",
" <td>53</td>\n",
" <td>1502.741016</td>\n",
" <td>1459.294422</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>-3258.463882</td>\n",
" <td>390.988678</td>\n",
" <td>-0.032854</td>\n",
" <td>2025-02-18</td>\n",
" <td>2025-03-26</td>\n",
" <td>36 days</td>\n",
" <td>None</td>\n",
" <td>1469.772718</td>\n",
" <td>1474.884082</td>\n",
" <td>1463.894650</td>\n",
" <td>1481.571450</td>\n",
" <td>1472.456184</td>\n",
" <td>1474.500730</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>66</td>\n",
" <td>85</td>\n",
" <td>140</td>\n",
" <td>1460.572263</td>\n",
" <td>1613.082672</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>9659.964543</td>\n",
" <td>405.722451</td>\n",
" <td>0.100209</td>\n",
" <td>2025-05-15</td>\n",
" <td>2025-08-01</td>\n",
" <td>78 days</td>\n",
" <td>None</td>\n",
" <td>1423.259306</td>\n",
" <td>1635.881961</td>\n",
" <td>1413.973661</td>\n",
" <td>1644.448168</td>\n",
" <td>1447.112338</td>\n",
" <td>1566.764455</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 19
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-01-28T02:42:06.075903Z",
"start_time": "2026-01-28T02:42:05.332615Z"
}
},
"cell_type": "code",
"source": "bt.plot()",
"id": "52f84828e5903349",
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div id=\"a42589f6-5484-44e6-a172-f7aef84b7fea\" data-root-id=\"p2126\" style=\"display: contents;\"></div>\n"
]
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"data": {
"application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"5c8c5d83-a8a6-40f0-923a-3f334da17f59\":{\"version\":\"3.8.2\",\"title\":\"Bokeh Application\",\"config\":{\"type\":\"object\",\"name\":\"DocumentConfig\",\"id\":\"p2128\",\"attributes\":{\"notifications\":{\"type\":\"object\",\"name\":\"Notifications\",\"id\":\"p2129\"}}},\"roots\":[{\"type\":\"object\",\"name\":\"GridPlot\",\"id\":\"p2126\",\"attributes\":{\"rows\":null,\"cols\":null,\"sizing_mode\":\"stretch_width\",\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2125\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2112\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1840\",\"attributes\":{\"dimensions\":\"width\"}},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1940\",\"attributes\":{\"dimensions\":\"width\"}},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1793\",\"attributes\":{\"dimensions\":\"width\"}},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1998\",\"attributes\":{\"dimensions\":\"width\"}}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2113\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1841\",\"attributes\":{\"dimensions\":\"width\",\"renderers\":\"auto\",\"maintain_focus\":false}},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1941\",\"attributes\":{\"dimensions\":\"width\",\"renderers\":\"auto\",\"maintain_focus\":false}},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1794\",\"attributes\":{\"dimensions\":\"width\",\"renderers\":\"auto\",\"maintain_focus\":false}},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1999\",\"attributes\":{\"dimensions\":\"width\",\"renderers\":\"auto\",\"maintain_focus\":false}}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2114\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelPanTool\",\"id\":\"p1842\"},{\"type\":\"object\",\"name\":\"WheelPanTool\",\"id\":\"p1942\"},{\"type\":\"object\",\"name\":\"WheelPanTool\",\"id\":\"p1795\"},{\"type\":\"object\",\"name\":\"WheelPanTool\",\"id\":\"p2000\"}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2115\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1843\",\"attributes\":{\"dimensions\":\"both\",\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1844\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"p1850\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"p1849\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}}}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1943\",\"attributes\":{\"dimensions\":\"both\",\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1944\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"p1950\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"p1949\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}}}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1796\",\"attributes\":{\"dimensions\":\"both\",\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1797\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"p1803\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"p1802\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}}}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p2001\",\"attributes\":{\"dimensions\":\"both\",\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p2002\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"p2008\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"p2007\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}}}}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2116\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"UndoTool\",\"id\":\"p1851\"},{\"type\":\"object\",\"name\":\"UndoTool\",\"id\":\"p1951\"},{\"type\":\"object\",\"name\":\"UndoTool\",\"id\":\"p1804\"},{\"type\":\"object\",\"name\":\"UndoTool\",\"id\":\"p2009\"}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2117\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"RedoTool\",\"id\":\"p1852\"},{\"type\":\"object\",\"name\":\"RedoTool\",\"id\":\"p1952\"},{\"type\":\"object\",\"name\":\"RedoTool\",\"id\":\"p1805\"},{\"type\":\"object\",\"name\":\"RedoTool\",\"id\":\"p2010\"}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2118\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1853\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1953\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1806\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p2011\"}]}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2119\"},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2120\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1876\",\"attributes\":{\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1873\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1808\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1809\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1810\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/w3DB1cOAAAAwC9KKlsD2StR2UpJmdkyUiqkECLKKqNEyiwzhGhZobISf87dexcIBAJBDnGowYY4zFCHG2a4EY5wpKMc7RjHOs7xRhpltDFOcKKTjHWyU5zqNKc7w5nOcrZznGuc84x3vgtMMNEkF7rIxS5xqctc7gqTTXGlqaa5ynRXm2Gma1zrOte7wY1mucnNbnGr29zuDnea7S53u8e95rjPXPPcb74FFnrAgx6yyMMWW+IRj3rMUo97wpOWecrTlnvGs1ZY6TnPe8GLXrLKai97xates8Zar1vnDW9a7y0bbPS2d7zrPe/7wCabfegjH/vEpz6zxee+8KWtvvK1b2zzre9st8NOu+z2vR/86Cc/2+MXv/rNXvvs97s//OkvfzvgHwf96z//A0NX/L7wAgAA\"},\"shape\":[188],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Open\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/2VUbVBUZRRmEdQoZGFQBkQI8QNnYLWGUQqUB5JA240wChOGkQzEhbAkCEJxEZDPViT2vveugCG2iBAltHwoZOJGpCANICyKjLLgiDLD56IijPWjyzuDv5455zznvOec59wbHqD1KYkiaKsvT4noZbDqS3nslXoGQ9P6oy7tDFKM/jxlPkNxfot3wnQzg9qp+W6/eAZTWR67LofQvJ0xJ1f/aEYQcrFz1UFjspB3VbnEKLWfwX6H2HChkoH1kKj5Cwm1+Xye/+5fstHwcgai8jsxJ6ponH9/wqJwVthK+5SvjTLVjzMw1vqWiTYR4Olw28x3BGbHJT2RpwiSv1/nFRlGwPz9lcfmIIIHxz4RpbkRbPvoflGjJYEqtG5540NmoW97y4JzejuCyNaEgt0GNM7bi+s0Oh5Q9/kS+Oc6c6kmZKEPw7CyvekFBDPegrslHOXzdZQwz9E+YRD30M5C9ILOwc+3WA+HHNeJ4hoGr/k/0vc20f0U113qS5FRXaI9rXVTBQyeDG61kc0oEH9+9tbYHgXeWdG4LzlaATZD/Hy8SoGcQ6ok098UcEqMk0/0K/Bh18Flhe0KeKuvZdV3Un+DtNhx0oTW61Q9tmswYF7xL7Z5XBPcIVwxSOsPaPIKC1/QuEJYedHXhsF6w9uefn4MDC4MthQFMUhLCh+4nM1A2+P/clcnnZ+/g8XI3xl/h/xd837+vhbryuvG61Qptx0R1xNkV9z4/YMQgvD/v5Mjh5Ovp0VQnp2g33mgnaBFpfB+05QFk1hR5dhFoO863mPry+JY8K+BvV4scqXmAeJtLOqI6/sVViweaezulAWw2CCQSq1TWORJtWMjeSzchPnGzv+w8LdP8exP4PCt+J6i6CWL6sywjK9vszgqPu/q/hmH6O3vubUc4BAqGnQPiOHgNLluxGaSg7tAkubipcScRjB9xVyJTPFzoWWEErNqfZf9pjPQqZYqD8uUyBX/8culq0rsFlbJzm1VokQ6Ld3/lIO17vroT3McXu/+fHzLMuVCXXlwW4fkAoe7qoQQ1/ZX3+fjvD2i7ttb3sxBJHhWFuhKcUl3d7X+Yw5Lu88E/PAzh0KpS1tzEQeZOKpLW82hIXNMU5lJefweWGmEy/qdHGoznTaYbeYW9lEgPSvPeEz3w+9vXFNppTPikB68I99Cz2Klbk6yvJTDtCa2VhbKYfVkxxvew5TP4w1VyIOmCBajmuEEnwqqm4Og9GbSRhZvCY1ax20pKhOPSK45szDS3e887cGiT9107+0QqnO3emaHwpCFThPkbvLsv//i9o1N/vMEJpM1p28mE8QFr7UqlBM4CeOz1YcImlW3Sk/UEMwN7lF8mkVgI1gpxzcE+YlDZicTKc9H5JZ6NpDabepIwT5/yl8Tk3EyXUvwL/dyRfrgBQAA\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"High\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/3VUa1BUZRjmmolTuxKXuAxMxhAoLlgEzOTigxYOsismGjRgg0JckhiCILC4mEqECirs+c45XBVZQGgyaXNRN4KQi0Jxi0VIEYiQiKJVQKEk+vFxZpzp1zPve773eb/3ed7zvXJrS8BzmQQBJ1y4IyYEPNYeH5hiEHqhxyLKmGAkba/kqBfBYaPreWvnGNR9si+rdITBhZ+Cgt79mME/bltTHjQxsDcrODdrR2A6N+1g6kDwelyWTZmIILotpWCHHkEDb2h05GcGgYadEy6lQt3qgHuzWg3zv+cp0v7Kdy4/fe1XBgP9AUt+PUIdRVGGvD86j8CvZGrRbYTAYH9l8LECAsyPd8wdIkg/6eATvZ+AaY/f7BpEVu5tPLC9UuIszFs+YXHFdDeB5667xdfMBP4vjTWeczKCnJob3/qHCjw0v1B/1tlfQqCubYp0qyP4zH19/LlWgucdA43LZ4VzVG+qM62j83eoqw9HaoU5Kf5lWrQgbhP0s3g/N/GqmkHqvoYwbZ7wner6hexhxbNiBucrdMl91QpoRrwTCksV2Kpq/Fzdo0CU6GuD8O8VqH+v5EWdCQOx1Dl//YQCd5pPFRUtKpCtM94YYc9Ar2q0pTiIgX9oq1rnxeCsZLfTBnOB/8mY8vUof7Or1xN4p0Y9rDPnhH6U3+oXSVOEnMGQfEZ+P1LYE+o39Z/qQPMU6d5Rv6iftI7q/eS+UP+pT7W5tpMytRBbFd8PlOUQyM1P7BhMIiiLTz4YoyGIe3j7w6FugsvE3bfGkgWfmiBvdGEx25vRb7udxavim5G5ySzuNdsNVr7JIi3k4h6tD4tt9i7hhrEsEmUW80sVLPZK9jw2v8qiPFXv+N/DLDJlB3sHLnHw0M8az5vgMKLyt4kTcYiVbvNqCefwsn6Dr+4kh5rU3DbPfA5d5M7j0E08smWPxGaRPFKlrFlpPI+d4iR7nOJRINs5/XtCITaMDUfZhhdi9fW3ugrsCjGh7PR6ZpBHXartU4m+PIaVWxa7HXm8pi8/utGHR7C9KM3ShYeTzmHSWschPyQ/bkqfx5AyJdS9k0NuSMeP8ipuJZ5U3QqubuKwpu/AjNsqHp3EMqxBK9y7nexqfCGdwwdSE224hsMBSfXgH61CPUU6V332n8212QKOq0yvrInh8E22k6PIlcNMc63lmBGHYyHeZ0xn2RX8b98eWQm6UV7aV6v8SsMkcvhIdltRvMRCKn77fLszBy/xGWOXLhYRUtVCzkXBF6Oxuz2nNwv+Uh8pUr9vKENHNJGC79XZvX4e61hsEhu1zdiykEtavhtcxaJPNeetMGDRpPyh/NPl92F4+T+LLVl+t3SH3GIGCHS9as+MaSGfFLLOsiiXIEgaZnepnMBJnJyjiiEw0dWdvplO0K1yLZuvIoiSNVq/xBHojVm5PxglMMy3eYMxZPEvJpUInuAFAAA=\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Low\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/3VSbUyTVxSmAhGmHcUIrNu0qOgKluIYi4wEPRTkY6PiwImD6mDlswoRmKSIcziGFogQN9573/fdAIlahrqZ6IoIVNSVDw3sg4+BikYoDHEkQlsgQ5D5Y29vwrJfT8495zz3nPM8jlFPpvv1CKR19zO//BHBA/mk3JyCYF2p31TVVQQLW2Rqy20EAe0FE8l1CE4zKxRVRQg0JnvvJBECm++H2ypjSb92/zWH5j8RjFimj3p3kf6EdTnJApb0CUekt5Pk5D/XjLKcpgYEMbZdY5JqBHn7WhL6yxEc3C40misIPzdX2OgmVcQ5wj/wR9RiRDeCkMwTb5xxwgCzo50zRzCcHXNtXBWNoSPI8R29DFvzW3c9rmxejeHq0X0nqofI3Fx83K613HkGQQtra1c4iKCzoe54Sj8CFpxLB/5CYD8QViv1xFbkeNM61BXv2xB+cRPzu08RhhkZ70ENQ/7jeLi4bP0B/vQkAsd/9eD2W7o3pwOXv9AXG5ucT+5Yb17oDc8l98tYsFTrJiqg/HHo3fpwyop3FkeeHWMp0A9ty/62moKdPanLv+uiINXpp2XKnymIm+IXfdFBgUx3q7ihm4JWTUhNnz0CQaDnN15jFNiJCl3CJihrPGvzECunCK6J/1Xw6jAF4rzDZVODFOR4xxWE3iC4tK9GGi3e7ILgA0V7g8kfga97vn5zMNmH88f/+YG7G6cT5wfOH5wfufxSXRUXul1T7YlezRuUunth//XPsVMeQWmJGISV5pjIEgwBoqqNHQ0Y1vIGJY+6XuqLM2r5NzC8LbDrmHyThl7dzDZqGQ2KwLf0UQsY5NK2m/eX01b8UHrqE3UiDfd0+oe+Cho+ku5+4dJEw2IPf/XeORqe94QebjxDwxVN4smsPhrqNeJNTj4MOBvfvayKYMC2t/fKdAwDYpPH+OsmBgojfbNzV7Iwb+BZmpxZWGMsKQ3ew0IfPl85V8KCSrr1Na98FvaKnD53k7CQFfhKv1LPwG5R+KO8bsLThd0SWvoZsBhy6gv2M+BinJc7nGXgYGCwf5uSvHM4qlvVuCKdYKDg43N3PBmYNFxyM9ox0IaL13/lQea+rnlmuKRhIEjgHpxaSJBWpXhvDCF7cft2a5+u/VvIgIOxNssH0RAmMvNqWmn4RbuhIP4mDROGUfWOi+SdiytU1WUnn9JWPn/B1/aS32jIiXSdXTxP6u9qFUP6FKIHm5ctvyWhwcYo9LMMYzgQqbluMBH92rSUzJ1PW3Xm8Br2C73oRlvr8+LHde89weBkOrIlfQBDjWbHyueZL30myC3RpRPs1KXx4qIwzA9HU3uKMVzGWodDSeT9UHy8+oUfhk8j5/KLt5OYqxvv8ZoLDiCxf4S5/bMfMPwDTI5TiOAFAAA=\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Close\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/11Ua1CUVRhGYFFQ5BLoRMWCIG4BKxIBA66+IhcRGASHKAUEidtmjMXosEG4pNACgnj5zvm+DwM2ahNXISXkujLUSkQyBAtyyUSuYeAAG6ATmPGjwzfTr2fe97zX53nnDDwIfRnYg2DLR0VpTfUI7tdXZif2Izg1aW0uXEaQrX/vgtkSghcuPukLPyCQRLfE9l9A8Ffe7sDGKC6PBbOCgWkEjq5eNoOvYmhh9fTPPkQwvrCY6dyJ4LBe5x9OZQgye49VS+0RxNqmJZiyCAImHMSBXyNQxNRtaJ5EYFvgNl9ag0BYOZT6eRVXf+C/OUk9gmQ+39Tc18pNMAiamO6dORh04759L+cKhqxC+33JcRia7eJrBwMwrLb/rlyEwXzpqb25PV7rm9yefuWgDoanJcvKpLcxRF3v2ZLEw2s8ECR1Rj6LEJ7zxFDNU3ksBXP1/m6QvxkkxNA9tfn4s2sYfjeoHR6qwCCS+mWFTOK1eYu2fWi8OMf1JTbZ6/97E9swdGqxX4XA6yfpTEIlgut9kZEJGQhK624NZks5/giv0clVGkE0BT+/HJ/NYikY9d417VdMQZLJ97rxP1KQ5nxE6n+XAp/a1rz6HgoEklNF8w8pmB51t5IuUSAXhgscLRFsapP5Zocj6FH8ad2gg6BBXGqnNULwSF189eoyBfdkvvI+HmeTfH3+WcuAGQqOzBvnnGmn4I2jXaabR7l4mZbn/AEfgatNhspxP4Ltun17DxxAcC4j4VFjPrc/2ZvwQPYkfnJ/5A5qMqNzy0Y4Pgm/RFfy7nHo8ZfNFty9EL2IrvnKjrtBUdwdkTiib5uC8rExpsFE+6lLygCGRc2ZB68H0HBebBYW7EGD/tjjnou7aajDbv7KrTSECQuPpcfRUCwemH1SzOFtWdwXH/fR4LquxV9byEAQv7F8D5+Bt9btMqwbokGvt/f24mEGFtRpd6QxDMQIR73DUhkQaO2fWGkZ+EbcZPjPIRYShScl521ZkIhoi7KTLGSLHMKH7EpgVT55DsWCRe+c84lGFg6aVkm/cmdhY+/xOZf1LFRLIpL6ZhgYVuxd7nZgQS5eEMc+Y+C52ivCup6B3xTpUW6dXF+CRUfvd4VcY2Ci1rxxYwoXf0cmcDDZyYDZ2DvV4kBmbX6D3pKwyze5PGI3yGbVN2Rc3AnRfs+2eAb4WqQc3sPxUSHRKVgZpteQ8EZ4mlPf2Dqmz6z5LcdWQjZUMNCvuKVCaZyf5HuaXuI5/UrDTRk7pcmgYUY9ke6npOEV7b4uA1caWMknIa1ONFTKNIHu2zgdyTvRt0MRNaJK5OKiRDtUoS8wjKkjvY2ec2ikrbn4S9bqP6OZp0cuY5DL/DYtp2Lw4pdub6/HkBTcarWDwXBJMm6SK+FQYHo6vzYFg0qxnjfxPudfGQ2n3s3jbCRRVtlpMHTknbbsWe33L6cvQPHgBQAA\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Volume\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/yVUfUyUdRy/YULdpJYhy6WHeC/cc6/Pc8/dyXH3JL9TkLW2hhpsQQXTu6aYgRkwHNqGNxiWVGh2UUzlZWoTGaVcOuwGohOO5qHGXNR2gQ7CIdg4nYPqvp/769k993u+n9fvb6ytfCk04GTysbby6laBjYRCb5Z8wTOuuKn//KiGngmPbTz71u/3R2c1bGtAsbysSMsGFrTFexoMzOv1Ptil45gUG/D9ATPr2hJ5ltSuY76Z/MDNFWr63p21k2MpsT921evpfabjqJXm5JxZu4EFFL6ykt8MLAZ38WqzQPO82/o4JpPJPu3kjOxhfqD1uRob4Y1L280sqi1+6dYgx5r6F84kG02YY75iJdyaZT1GzPu8ciOLyal1V73ORFH859hTgbWXS42vzmWQzrn0n42sQpIXNiwZ6L08b0mPZ9GFOK7zNnAVwWhc33whR/w+efueCj7l1PLA+eW6jnSVnjrEgZ/oVgGn9fh66MjtcNF3to8TrfS7U8jLomdib1M+4cjOHcwkHVOpQ1biK3lGePLn6WGZDfzSBwXkML9PQ/4q/23RUD4h+cQ6ymN1W5cSvv+RJND5scVhFfnh21RpYGm+mXBzpxJzQ2Wb4O+PBXb6fsWQhDxXT1XooPtoOB06v1rMIL/Ewy9qgP9ZgIP/f6o49GI/r2GRmhRTnkyguX3Cu3Hda++nI+dbz6uR+939wO27dkKJ3M/+qgS/40eA16hYpUOvDpoF5OhJ45FLT50J+NPb9cB9IIksL1JzzNHtgK4Gvxk8y//W45z0PodeetqV0PP1Zity624xoWedJUaarzUWqNmBGJFotRY4ialxn5ZeNlCf3iplAuHcMV/ORv6Fo9BXe3tEQN8joyr0PdmfAf/bhmzwXf4T8qp+eEGkuXxuL48+ds4I5FNXARfve8K4ivLIn/VwyCX5mYi+7rPYgP/hExFz9jQ5wCPzRDbpeyWodKM3YtRO71M856zw8bV8C3QMO7XUwx8mU52kr35v2I7+nO3gkdew10I8B+pm3aQr+KjdTT7d+6/ZBdwdJ52Ux1Dvbgm6Eu4YSOeayjkL/H9cycO/2noJff1m2kr8v7x0X0JuummecG/8NWmBT+1TJuTxuz6LzmdHbjqodwsXJ0zYk4k6M3Iz5cbvmbSVauQmf0EDX25sjffsdJ0B5+eCKvQ1JxX7+0b4kQX7XHBFIn7vrZyyAL9qox76T8t44DY2g8/gRKoD+j9ybiFd33WtsSHfcKmL8pnd5nQgp5wjTvBvKXJB18x1O/IPjuOeWn5tQESvWpZxyEFhN2A/om4d8AO8Fv3v3W2Evv4eA877Ojjchydb1NiTioYM3AvdGhvuk0vV8Xtzp7gePYlWWdGDQzsE7M2GWN+I7/lF7N3e0LyA3K9+gL1UvPPEjFyH/TzhXD51V0BPJ9e5iFfSKo/I/gcp0ihx4AUAAA==\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"datetime\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/yXKeUzPcRzH8c9MY46cs5BF1LLcOcYyn1VKjg5+ilRKqRQSJUn5hEgXUspKblZqTBbN9XFP05grOXLLtJqWo9Wcz+9fjz3f75cQ6peLU4KTEDIkH1VutjPd/gZFkIPLf/WtVFT2z4z2vz+Tvj7Mlb1dLIrs26hbLdxom96z6PRlqL6eQ+nTxZ3/pcUom7xm0ymT57H/lIZq7gujkx560O9HeLJ3j0dx+i7q/pZetGs/b/rUclR9LqCM7zaf/yt/lOamBXTsCdR1bahmzDHxP34A1dPchbRjA4ojU33Yd8lEtare6OInvnRnu0XsIzeieHAP9SSrxXT4AD/6XgSqCRdRFvRcwv/3UpRjff3pvBLU7R2ogjwC+N8+hOpnfiAd8AXFDcel7O12GV59FsTOxj6YXUYSipb7qH2sl9FpA0PopihUC66grOodyt8qBKWX33K6sgz14D+oUrzD+DccRWVRGE4nN6H4MCOCu+uYSO5lCkXfR6jjbaLoEsuVtHk0qthrKJ/3W8VfhqGMCVhN155G7dgpmv0RE8quJ42eWryGPvgVhZlzDPvIPFQPGgzDx69jV7MVhcNT1AV2sXS1VRw9di2qvJsoOwas5x+8AmVOUDzddhZ1gNkG9jd8UY4sNdrvcAKtW1HYum5kn1GAquWL0dbvEum0iZvYN29HYapDXWWfRDdaJ9Necagq76C0HLSZ/5aVKCtCFD2wEnVy1xT2H/xQzi43OvHYFvrtDxRu7lvZlxWi6ttstPPHbXTJlFT2vdJRxL1E/XzMdrqH7Q46ZgOq2mqU04ek8T8ajfJx2E56WhXqg93T2ZsFoow6Y3TRyQy6UzuKiLmZ7GuKUTm0GB36OYuunpbNflwWin2vUXeM30WPHrmbzklE1VaDMnDoHv4316L8viKHXnIJtTbfy942GGVmhdGXS3Pp4b9Q7PTMY998GJXpm9Gpjfvoxun57L13ozj/DrXlpALaY9R+uiIZlVtoEfvySlT15QdoF1HMvnT+P/8CpqEma+AFAAA=\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"inc\",{\"type\":\"ndarray\",\"array\":[\"0\",\"0\",\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"0\",\"1\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"0\",\"0\",\"1\",\"1\",\"0\",\"0\",\"1\",\"1\",\"0\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"1\",\"0\",\"0\",\"1\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"0\",\"1\",\"0\",\"1\",\"0\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"0\",\"1\",\"0\",\"0\",\"1\",\"1\",\"0\",\"0\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"0\",\"1\",\"0\",\"1\",\"1\",\"1\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"0\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"0\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",\"0\",\"1\",\"1\",\"1\",\"0\",\"1\",\"0\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"1\",\"0\",\"0\",\"0\",\"0\",\"1\",\"1\",\"1\",\"0\",\"0\",\"0\",\"1\",\"0\",\"1\",\"0\",\"1\",\"0\",\"0\",\"1\",\"0\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\"],\"shape\":[188],\"dtype\":\"object\",\"order\":\"little\"}],[\"equity\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/+2S/y/UcRzHD9cl16SyW7Yk+ZLUWIbS0tNQN/kyJVvJNZO6ciFJs2tJWl8wLrbI1WHZiky+t06uIqsRXa6tYxpaMmGf9/ttUW5L6Qf7/Alt1euXx16v13PP5w+vl0DwuygEfxmt4uQ6l2UUe1KTy717CYZDnm6tfkAwLqoxGO8QXBo2JYQpCVrDr7knbCRwTN92i4QQsBclaSIVgUbSLu2PJKh6VzsuCuK56JN0zNGJ3CQ4NCn9WNjA+2VssO60v05gVqlc+01CEWRo6cxeTTGqaPZTBFBs8XL2W7eToOGGOsfHh89d7KNcjW39QoITFfXzPl846F/FnWoXE1QX+q9YOcP9s9wROmVX2cXheXV8YmsHh0DLgda+J/y84HvH7r6lBFPxV1d5bCcobakb+znHocYzx002xMFKHTajtSaYdUhrinXn93KhTYcEC/fsyhrTTxKQ9wWm4IX/afw6FybJI3AeKD78tpygTLlerL3H62rvR+3XWlAM+DemJUopPnGZrMuJIuLhhPntZApDyODgxFGKSMXIuFJOYcxqy8+NoOiOFgYrsigCL3tpz1fwfOSbHt/zhsL2tZt7ZihDlVi3plbA4H1QmRJroCiLoepwZwaNxtSctJnBztzqg70vQ7Y019FTxZB6d0wcqWeYO/u4GHUMCsWSmPpRhr1DTbYG2TQ+R29qqfjBcCQg3KZQMo1ZU0/3RR1DZm9ZdIqGwcL1im15HkNGsa5S38hgdlLl8ayIYblxX9G8nMFSdvzlrnN87iJVZwIVETIG9YhQn+/F611O90AmZnA4cKHUW/Sff4q/AF0U3uPgBQAA\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"\\u03bb(sma10)_0_0\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/0VUeViNWRinpEi31CRS11IMQlxNFJpfUlFJLm41jZpQY3KlZZpMcjNouSpafOd83xVZihRlaUHLaLEmTSn1ZBClaKoJRUWZ7w/z+Ot9znvO+7zntzy/CMf8ANcQiqriuUlH/Sj2xBtbb/OmGP7uZsxsCYVnfW5bmQ3F6Eb7s/NnU8iu7B9xeByFz9j2rR6dBNoGa1qXVBMkV3SZDJYT5FUd151eSWAnDh2b/4Agu6RScrGKwPNQucqeCoLyZVHTY3IIfLsb1gdmETC6poXhFwgEnoW5qwsJVhx52XTrOkGBsDktLZcgxVgprDuTQCVRcuvVua913rkm/33ZBLcG9cSh/F6tL//QqFTfmP+SYAIbYKP3gWCKT/3CXWoUg2NbrlbpUZyRc416Myi8Zr4PsZ1H4a5nVPDQlMJpINyix4yiwX/fTu2lFHj8qHCcJcWdJIey7+dSdHcuW9phQPHuo+aghz5FwvFD0ocTv57/r7oqpS37p1GI1Vz6vUUUNV45F08sp3gg8J8m3EChZMvaH11Psf1SZzIjplidsTRzhyPFt6kHb9iupLDrOBcmW0xx5MepKWX83pVzJzoeNqJ4OaXRSa5OYXDWRkneS/Dgdjga6wiu/R1Yl3yHwDJS22BjMcGay7FumXkEXs9GMZ95XoXCVheRnIAMTMlMkhLIXPYLvJwIxGE7zB8tIkjQOp9pr08wp4/tqh5FcCAyL+5DLwP15bOT57Qz8KmyFYkbGGQteH3EuJqBod+p6ohnDI6Wjowp6WDgvDbWN6yPQfoh39+mfGKwYJT0vLUSQWnMypP1KgRGbTfne6oSfKyyjqrg+2qd7coZQwz0J3ljiJ9rfrjFQzDAIDUiueDCMIN4sf5ut9E8npq/FKd0CFI7W1z1ZxOcygyJHrOcIFD0JGH3Ot4HIfZ5w9sIzH9Y4DQgIxiurSADDMGmL7iV177qa+D5uPjFj2yiWN+jniA2+HxKaBOBQf+BRPWnBNJZ8S+s2gl+aXBcXzREIHJpPlb0DYWzQ8mdICGFpaFtnOFMnvfaGbWtvJ7ChIKRdXYUJT23T1u6U3wa09fLBfN6m5pcs4+juPyv6tuOTAoN12djRYUUWl1EHnqP11H3UUPRU34u5nV7Uz9Fk5A5b6bHQulhW3fgAhZseP0MmTOLMdIzcQO/suiT2MkyGBZ2GW8MtqexqBVFBr+4wcJvdVhx8xMWYY1WcuMRHLSkZvfMZnHQ7qSc8kYOGRHxTTp7OEhM7JREZzj0Oxwzv/uAg3h6Vr55L4djHa6WpsYKpAdcn9xkqcCst/9EX3VUwEFnvLuXmwJlsc1NaZsU6LPyvZS9QQFl59sXjBwUiHf7YHbfQoHTPRIndYECw2tGaEb1cIh9bJpqUM8hL3J9bPwNDiPWpaxKv8phTWqrICud35veMjX6MIfHOToZphEcyqlL6TQZh53l6ZMCw/j3G5bsq9jLYZnWVJuf93MIW6uq0c/3/b/cu89/sXSdPwezg8XeRVIOKzih58LNHCwSioJZCQeH6Ya/fwSHoPvwkc7l0OOgORA/mcd/Sf/MyTEc1NtqXsnHczA9+L5MqMPBinP9M1mNwwW1mxIocZBvPRGexfOY9nmz9Ox7Fjapkpqdb1mUGs7wSXzO854T6ddbyWLxhEQ9tesssgVDd2VJLKpy+GALYuFfe8lCYwsL9+XdHl0SFvdMPT5F27LIEJibPF/CQiPEurF3JouYAK0ts6axGNy8R7lck0XusUVu0SNZiAyUOjN6eH9FWwnkrXw+JfozC+soot6tqtpVRDEqSM9bkcX7aqq0rCGFz4uCoWWq8XxekMbtP+3lcyr7qNj/Dwrlt1cSK2UUryVvTlbH8Lk9//roxYcp/gN1IJXk4AUAAA==\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"\\u03bb(sma30)_1_0\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/0WTeTTVaRjHyzqEinI14YpcI3WdpqSQ+eZaRt2kxSldIVlKe1RkikqK1hHv+3vR4pREaUGLqDAUWepKlAoRZiRNMZapmN+Z0zn99Tnv+2zv832ed6i1qXjuZIqNPqrVGUYUy+xFWWtMKMZ1eqgpmlPsm69t0z2VYutspecTplHcirLzXc+fP5XOcVrJ25Weu6SLeep+8/cwya9pmULhODZri5YFRUfxUGq/iMLW/HX61EkUCj/e3PnLeIrHQ30WEi2K+VxJbrwyRbuNxExdiY877/UkdQT/nvoFSwu+Ejjdf5hpPEiwqvlixdo+gnzX4tARPQQvwncsu/2ewE1pqyHpIKg9Gz7/1zcEvtM7V75rItjvoSJM4ClSXeG++yXBxkUnnlc3EAw9XVvl10hwfMW84j7eX2YsSAlvIXAdo2aTxnOHtW/qtbcEJ6UZFzraCSbL9yZHdBKopFbl//GBwCBdohDbS6DLbZEI+gmCWls3VQwQhLQbaos/E5gd16kIHiJIbrVudlal+I3TE2mNo9BQiMEkIUVv83nhS14HecEh2c/GFBVZN1IKJ3/XKXXXgwkXzCgGazWUKkXf78WjrKe48uyWy33X8f5S23dqI/k8L9of9E7Wo4i9ee/cR17Pl/qnMkRqFOo+Pu+yFSlCR8Z1XeH1urGlNPgE34+rReg4Ea9H9OFXTxOfEOzNbio3LSFI6rYo7coj2NDyy2y/awTtEZpF19MJhm95FoSdIhjbVjNQlUiwLyKg8U4cgWTV+g+yvQRe7Fan8U6CXr85S6esIzhjX26gIiOwFxg6Rc4nqCgetDw3j6CowTyoyJogoXpuwywxQZ5maZiviGBU6Lk9iUYEp3Q6FmbqE4R+9ksbo8fXO/1GcEiXoNIj4/gsAcEBza2qbTxzZ5Zt+nsCgXKUbdL5iQQtMmHdZ57d3ivDvQ0JjHyudL6YSlD8rV7MrqL0xQ4Eke77tXykvL1yKM55Od+H1nh7N18Cz8I7zdnBBPIfXBoiwwj2HPw6WH6AwFRbamVyjCDK6bh5HiN4H9ccaZLG70fbrpcl2QSNEwe33S0kGFO9d2BNDYF3soZzKL8/jXqinUf4Pa07HKGyaBTFs4MtEf783GPzDe5qTqeYVJ+ftcSRYvn4N6LPyynOBoxTCFtPcWl4UapKJMWRAYG6J6Goqf3ikJFJYYZ97q8KKAwrbJKdnlIk1qelXv+L4ob2R039YQof2Y77eQIOOa4PstWsOJxekCcJWcwBh/okbps5yLB2bmg8h2NH1f7VyOZgXVe6caqcQ8xS9cbzHRza/JYlKX/hkO1x689gbQarqGGx3RSGNL3pX6VgSLBaV3N0Cfv/P9X6M9gdnaGctIXhIXUvmrSHIfLx7vSOWAadNTE5egl8fPSl6PtnGXzFBWmjMxkCZ17senSd4UKP8uIFtxmiKt9sLCtiqBCklj4uY2ix9L/8upwh9plkxeoqBlvVA/3r5QzOJ9s7P/EUR5gotT1h+HjPVuJQzbBd0mcgLGW4HhnkWMPny1UIWliYxWA+4Pr7bL5us2Wcg/AYz6s6Fy0jGW4oKx5s2s6wwznN2GczQ2t2iq44gEE30Pi9tRdDweHDQxXuDEnBgdNMHRkqDboULW0Z4t8qSndNY/hUwqTFxgy9LszjmoBhwgaXRA91hrqMkKP9wxxyD7kVuPdwKE0y9TrXxevsn+NS2cJhRpy+p289hxNBdjcflXFICTEb7XeHg7NQpaooncO2yjNeYyiHS8rJTW0xHAKweGZmGIfqjJro5GB+TjrLnh3x4iC/LOth7hy874w0NHLkYMdeScOtOUSvvhqYY8HBD3GJGkIOntY/XQrR4SC1cDf4qsjBaGf8P179FP8BIUxvteAFAAA=\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"\\u03bb(sma60)_2_0\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/22UezDWWRjHlRW5RO+WimWyiFKbSpKKL6V37Vtuu5sxsSTdiKalmWS0NpdRK7dyzu9XrouK5FpY127oQoQkm1ci5RLlkjt7dqaZ9o/96zNnznOe5/t9znNOlc3Lj9+BosHrzDHBFooqD2F1lhFFsFFmpL0BRUdS1eYBfQqtT7TVWo/CyWyfTaU2xRaj7IPx6hS5JeI/h1Uo7jQWRtsspShvCVrevJiiotu+zfJrinsDmp5PlSjqpWcc1yygcIw3nrSX/cLf7u4pl2B0+rzOGPC9eWE+RfqIhbmqNIVJRGngNSmKdijeippD8db6tbfkLEHwoEvXqWmCNGX/dE3G1l1X6xKnCOR9ZjZlzBA81J7QaGDxfZbKXX6M03u1vrf5H9pnx6f0z6VY65+l0cjqzOAvz1oZisDPugZ02/y95ShO5wVKRMhTRJdXNP7NfCwz279CgfnaF1i7/PlCCvHkATN15ld25VnDHAHF0RDZ+5sXUcDh7ZMrjF4BJoa5yhSJJQY9+Syu9XP8/M/xq3enTjgwjnwjdHVjeW+0tBy6xOrYhbjITcl/0aPukVQ+y3Qqea1P12L61cKadWSYb6kQ13bzUYI50RNTtoMEW5+PtmOAoMh9/KVMN0GyWyDZ3knQcMWiuVZM0F0zGBL3gmBmOGGjRyMBH9ez0b2O4PGLV91eNQSnwj3Lih4TRGdZtUk8ZPtlGvG/VhL4ZqWsuHeHoE2jQsKijGDHxTctlUUEouRC3qiQILL3g8a5AnYv8vXmdTcJOmxrdcpzCKpFDu3jGQTrynyL/dIIbN/tU8i4QmA/alCtlkKwe3hctziJQL8tWzMogSDpJ/mkw/EE4gvbxmrjCNy1MmW8Ywkqz1flyPIEQtVpdVEMgfNWsWlUNMGU2DFXJorp0I/12BFJUJo6+k43gvmsVxEXhxPM7V97/BSjjemxVfnnCcJPJ/6uxuhq6x92jtHRPL1mKTtXlqC3N4nlueynSMcYA1wmJI1Z/iXDqQWmFwiOmC7rGLr4hfYh2nK3CIGVQ0yFL2Pj+4iGJUznrrx6w1Dmx0BP6XoN85no9lGl4DrBxdS1yj65rI+L3IrsWN/OZhf/eJ/1s/UJ51j1iEDv6qvqqibGj4bawnYCT+NU54O9BFHaxSon2P0W86+Lm9i81hWmbi9l82HqJHhm+S17j4KxsAOGFIL9pSdeW1I4921Na3Ki2Baywa3Vh0LaSjF2zVmKnSJcHYijWJWp6yjIZnM/ovvo7W2Knrw5isI6iheuwoyJdvYPPA01KRykCFIY3JM2l0NW4eyDBwIOKTdaZk5rcIjkMyVF+hxWD9sqGoOD96hEa541h6/mCSUELhyGho/mhHtyuCu1vmaBHwf/oKEtmqEcFJZNbkokHAr+OLmhN5mDwSKTvarZHPR+TtwtVcLqJEtqaVVx0M9S2h5bz8E5rdNO1Mrh6WGim9XF4Yh1vtfRfg45nWTy/ScOOjqRD/hZDhuQ6H5Pmoea0Xi5pRKP/PgFtvFLeYx4uk0Ea/KYrraXOKPHo+PcyWZen7G1z912E4/R4ArloG08Eu6IFm8255GdtspDvJOHnFrwRh1LHsppXbqZjOIBH7nuH3hUx7nGqzP6zPNfLvMfRnd+CHAQ8fCrXnNJxNbvTRY+eybkMV9FMdrSgsdNC7cezoxHjM6tklojHrN1x1uM1v97PrJXdzWP592XI6y0eQQI/HbcVmN1u4Vhhxbz0Bq7FvpSluWJM1jnO8NhvEajJnaQQ1PG1OTIGw4aRrJ9MU0cYofi0mwfcgjgVtr1sz4+FqvK/5LH4R+fxKBb4AUAAA==\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ohlc_low\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/12Se1SMaRzHSyqOrWYHtbnllg3drLZsVn23jkbHTJFDNKWWLkQdhFNCLcrEalDv8z6NyK3a2VZZGbW1US2VNCoRolVTRNrVFVtb9v3DeM/Zvz7n9zy/y/P8vt+x3i8HHpYQ2CqbIg/kEjyRdEv6QglmHHXoOZNPMGzvFt1fTuBcGd8VoiQ4kTbO/0wCgaxX3ybYgkDnJ03FaV++XqU+M3HmHYL2/oG9Nmq+PmhGVIhAwdeZt9uWB0v4eaYRyVHFhQSr9NQd1hkEMQE3gh7KCba6mrf1pRLon1hT8VLJU/R8TrjnRb6/YIqkfVEtN2dBp9/rZwQHVxtYpHKcY7h2xb4nBBHexx/dbSIYadik3vAngXztd+VvWwny9wYkZnD0FIx1ztTwcYpYmdXxguCGQm/0wacENYXKH0IfEijw+dFHr7n30m3uZu8IwtraIu+8J4h6MU1oO0TwpXz8nfARglNtTi0ehiz20i/mGE9gERnv4njFlP3UX9tHGyfP3GI00E0w9qMe2v9p96rVQ6uD9v7nB76+IbH8Hq/1Dd9ftpvfX8Rwf4aqKxXyFo/qa8uYT7z9of3NfgWDklaXHacyGHg1hBmmqxmEmVwdtfEPBn49RglxVQzcVGVJhfcY5Ni/Sp1dy2Bq+PnauGcMTpXpyq53MhAsmZsyr4PBO51mdmMPz6nSWoGxhoFVzK7knqcMomz84j2u8/x/XUZcSsGlEQbHfCbFrjXg/llfpzg/ntv7aqXc0YwgwWi74XOOVx2qIrvNOR/EL1ZcnEygkVo0DnH8e71fzPppBNMDczsfWxOUN80NK3MiSNxTlr3SjSBuxUHjQDF3XzNyxIPz6wHjiS5eQQTrSotaroQT1I8RNcVFE+w/PPzPbc7flkLx17OSCeKDBvWcTxKY9WcWuKYQbP7oRy19Ey3HqQiB1zrmVgzH+3/JG8zSCcT59xxl5wgc5gty1FkEZ4N7JhXkEKRm2pnuvMLpMyG4yKeIIOly8aqbZQTNd6l/ZTXB/OyWmspGjj2OliLOFxHOmYGhnE9OWBZP2sX5rThNU9w4ikVdYaZ7iTEL1wDhA8+ZLBYL3/8Y4shCuLFkl8aTRWDXt8rGABZLEhcGN+9kYehlkm6TxMJjObLfnGYxL9fKX3iZhd2AVXVHKYvOfF0TUR2LxxtEvwy2sqisl7kU9rI4ZNS7RjmKIq/wQ1WVkOLipaaR/TMojqfl6i23p7DuX2niDIooTsh8b4rRBiIdYRBFX//WX5MjKMr1v1Ibx1LsO9S3eJaMwsh8yOksoSg4Gr3w9QUKhwku0smXKeavPivR/52bc0Fv9uxKCvs8gXv6PYpAZbvP8maK+k3EKu8FxZi27O12XL3Iok/33C2Ku1mz4qWlFF03n0cvzeHPtXFqeEby4U4KuyNvy6eNT8MiwUl96zruvWLTdx8y+fzqLP/WklCKlbbHAqO/p1DE7JCUWVPotJk79GtYbBHLfrvJ7UNiW1HaZEhRkcW4TTeiWCAYXdU9hWcB6+CRY0Y/5cdIX6m+ecnCpHeP/eZHLM7Jln42FMnCSrD7iGozzxrVJl0/bxb/anyYNZxOeWzWmG3B/Pk2qTR6xIHFBvFgbJIrH2vzXjXMG3R35uP1tkUGTnIW/wHGpOLS4AUAAA==\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ohlc_high\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/02Te1iMWRzHS7WUSyT3krZIGRVb23hy+VJTT80UudZuS9gnl2hz3Z0stWtzKYrkPe95M0I2DZGQWrowu0PUbImuVhe20gUpldbu2LPPo81fn+ec9/y+5/v7nt/7WdW8hSMjCTS5ovjEjQS7D1vPX7+aQOusPmC7nGBl2bVGlRvBFrF+5bjpBFmRs4NCRAQd6lmSL2wJ9Cs9z9kzjm5ZZqjHuMzqZulTOwL3ERfDhk0jaFJpT/dMIXC1fXJOZEkwYPz1b+eNIijWdk9zG0YQoVqer2PEzofum3DKmCDtlfzaMUOC812SBRMGEsyNy92bakBQD+PMo7pMb+HTbXrvOUR1BDWG/8P9X9dH4wif8vVxBF4nW9851rP7Vp/zj0ogQE9DUXc4wZ4P/XH3wmY7rCAIGGOV9dCBQNb7/ax2J4KK0B+/MXElSG4afcNkMUFBvLdqHuv3Zdts1xYzgnSDXJduGUH0hft50sB+nb79v345bSu1J8hOUwU7XiXY72QXduYuwdgpSwySu5gfCe+ZuIQgJKPt2HGm75Xqen6zlMAmKfqWxJ3Ao0UZvseFICFw0gmVqD8/+8Eudl6MLx88CNpgzfy6thrqsjyrGu+8sR5LcPB6XvJrludjM4VyCsvPaNWq1it6BNt1o9sudXLIDFNvPNLI4WGKpLK4hkOzpmOfooqD9k2Sc8gjDlTR4ryxhENhVV1zqIZDeOzmvBuFHOLTfWt17rHveZYnt97hIE8/O+XX2xxqLdU6kjyWf0JD9Z0bHKTJ2VSczeFIa7tldBYH5ZDSBSXXODzzK7bJz+BQJA2o703jMCNPfnOXkoPf89VD01I4rOhxKjI/y8HnTe/Um6c5ONZetvopicMSPU2TiDFlZdagHOb7B3113IhuDpXlC997lfbv99Gk+4W1CcvFZVGdIseUwODDXPbVLTwkons/mrM+WpgmnOma2P9OabFmzbLs/vU4RecSWTSBz6hD3tU7CE6F7QzZkEsQ+vbJ9scP2P9AnDwujOEhyLf63Bbx6HoYUW7mycN5eGFw7E4ez3+bWH3Oj8fuLy8vrZjPw81CtFZvE49tstE973/mscx+qXbUTR7Jcp2Yv2t5RMpCHlZeofhcd19DXBNFfaZ0QqgxxaY5buI7aylm6uZ7dBymuCCPLXA5RlFCarSBMwQckPUONw0WIJ/DmyaFCfAdvsMCRwQkyHxftG1NxLRntevM1ibCUL28JGFiIppSNOKh1QKmdrTuz5YK8B45ImCVvwBVTF312a8EdM0Nzri0VICe792LVt4CDvuzh5olILl9uWzwMAFaHx3jfe0UMY8dkszKKJozq/yVKorBj9a0Ow4UoCFjgvIrKIKdUtvuZ1CkdBr4SbMpIovqNxfcpigcc1pdXEDxOOW7QCcNxcEyN//VjK4Do3pCHlB4HGts6WC032Wl31BC8TrP1W3B7xQ73LrNLdQUGRHr3EuZ3rUB63xuXaSwfet1VHyKos4heoFFLGP6yFSHiH79LXOMKtbmUlSkZORy2yhGB3/6wiWQIicmRlu4iELYGDx9sjvFZaVdSI0H68M8ytnGi51TNk69xFjzavvgZm+KIsWakxMZt3+ye9Kgjxj/Z3tkgJRiV9F0QcrWL+aOKCvzpDAcbxzvJWE+JV+38PMpjttk5hSLKd6XbKkWz/yv/kjrVBHz1ZwY5zuZ5WOyy/2WObu32fPQulEU1m9TD/xhxHQUTjPkWh69GkvNiQ4e5Wl/v+tq4GEpNmo7Xs7jRKdC6XePzQ9vu/hlDo/CmglDVl7l8S/bB+bt4AUAAA==\"},\"shape\":[188],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1874\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1875\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1870\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"equity\"},\"line_color\":\"#1f77b4\",\"line_width\":1.5}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1871\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"equity\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":1.5}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1872\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"equity\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":1.5}}}}],\"tooltips\":[[\"Date\",\"@datetime{%c}\"],[\"Equity\",\"@equity{+0,0.[000]%}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@datetime\",\"datetime\"]]},\"sort_by\":null,\"mode\":\"vline\",\"point_policy\":\"follow_mouse\"}}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2121\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1975\",\"attributes\":{\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1972\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1811\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1812\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1813\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/zNlYGDoAWIA84uADwgAAAA=\"},\"shape\":[2],\"dtype\":\"int32\",\"order\":\"little\"}],[\"datetime\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/2NgOPDrd0ylEwPDgVt6bZVOAKnI5KIQAAAA\"},\"shape\":[2],\"dtype\":\"float64\",\"order\":\"little\"}],[\"size\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/3NiYGBwAmIAT4qHPwgAAAA=\"},\"shape\":[2],\"dtype\":\"int32\",\"order\":\"little\"}],[\"returns_positive\",{\"type\":\"ndarray\",\"array\":[\"0\",\"1\"],\"shape\":[2],\"dtype\":\"object\",\"order\":\"little\"}],[\"returns\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/2N51bfI5NKC/bul2ESDl++0BwAw1oCmEAAAAA==\"},\"shape\":[2],\"dtype\":\"float64\",\"order\":\"little\"}],[\"marker_size\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/2NgAAETBwYoDQB32MeeEAAAAA==\"},\"shape\":[2],\"dtype\":\"float64\",\"order\":\"little\"}],[\"lines\",[[27,53],[85,140]]],[\"triangles\",{\"type\":\"ndarray\",\"array\":[\"triangle\",\"triangle\"],\"shape\":[2],\"dtype\":\"object\",\"order\":\"little\"}],[\"position_lines_xs\",[[27,53],[85,140]]],[\"position_lines_ys\",[[1502.741016,1459.294422],[1460.572263,1613.082672]]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1973\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1974\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1969\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"returns\"},\"size\":{\"type\":\"field\",\"field\":\"marker_size\"},\"fill_color\":{\"type\":\"field\",\"field\":\"returns_positive\",\"transform\":{\"type\":\"object\",\"name\":\"CategoricalColorMapper\",\"id\":\"p1815\",\"attributes\":{\"palette\":[\"lime\",\"tomato\"],\"factors\":[\"0\",\"1\"]}}},\"marker\":{\"type\":\"field\",\"field\":\"triangles\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1970\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"returns\"},\"size\":{\"type\":\"field\",\"field\":\"marker_size\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"field\",\"field\":\"returns_positive\",\"transform\":{\"id\":\"p1815\"}},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1},\"marker\":{\"type\":\"field\",\"field\":\"triangles\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1971\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"returns\"},\"size\":{\"type\":\"field\",\"field\":\"marker_size\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"field\",\"field\":\"returns_positive\",\"transform\":{\"id\":\"p1815\"}},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2},\"marker\":{\"type\":\"field\",\"field\":\"triangles\"}}}}}],\"tooltips\":[[\"Date\",\"@datetime{%c}\"],[\"Size\",\"@size{0,0}\"],[\"P/L\",\"@returns{+0.[000]%}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@datetime\",\"datetime\"]]},\"sort_by\":null,\"point_policy\":\"follow_mouse\"}}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2122\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p2107\",\"attributes\":{\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2063\",\"attributes\":{\"data_source\":{\"id\":\"p1808\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2064\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2065\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2060\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"value\",\"value\":0.8},\"bottom\":{\"type\":\"field\",\"field\":\"Close\"},\"top\":{\"type\":\"field\",\"field\":\"Open\"},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"type\":\"object\",\"name\":\"CategoricalColorMapper\",\"id\":\"p1814\",\"attributes\":{\"palette\":[\"lime\",\"tomato\"],\"factors\":[\"0\",\"1\"]}}}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2061\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"value\",\"value\":0.8},\"bottom\":{\"type\":\"field\",\"field\":\"Close\"},\"top\":{\"type\":\"field\",\"field\":\"Open\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2062\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"value\",\"value\":0.8},\"bottom\":{\"type\":\"field\",\"field\":\"Close\"},\"top\":{\"type\":\"field\",\"field\":\"Open\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"tooltips\":[[\"Date\",\"@datetime{%c}\"],[\"x, y\",\"$index\\u00a0\\u00a0\\u00a0\\u00a0$y{0,0.0[0000]}\"],[\"OHLC\",\"@Open{0,0.0[0000]}\\u00a0\\u00a0\\u00a0\\u00a0@High{0,0.0[0000]}\\u00a0\\u00a0\\u00a0\\u00a0@Low{0,0.0[0000]}\\u00a0\\u00a0\\u00a0\\u00a0@Close{0,0.0[0000]}\"],[\"Volume\",\"@Volume{0,0}\"],[\"\\u03bb(sma10)\",\"@{\\u03bb(sma10)_0_0}{0,0.0[0000]}\"],[\"\\u03bb(sma30)\",\"@{\\u03bb(sma30)_1_0}{0,0.0[0000]}\"],[\"\\u03bb(sma60)\",\"@{\\u03bb(sma60)_2_0}{0,0.0[0000]}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@datetime\",\"datetime\"]]},\"sort_by\":null,\"mode\":\"vline\",\"point_policy\":\"follow_mouse\"}}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2123\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p2022\",\"attributes\":{\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2019\",\"attributes\":{\"data_source\":{\"id\":\"p1808\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2020\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2021\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2016\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"value\",\"value\":0.8},\"top\":{\"type\":\"field\",\"field\":\"Volume\"},\"line_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"hatch_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2017\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"value\",\"value\":0.8},\"top\":{\"type\":\"field\",\"field\":\"Volume\"},\"line_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2018\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"value\",\"value\":0.8},\"top\":{\"type\":\"field\",\"field\":\"Volume\"},\"line_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p1814\"}},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"tooltips\":[[\"Date\",\"@datetime{%c}\"],[\"Volume\",\"@Volume{0.00 a}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@datetime\",\"datetime\"]]},\"sort_by\":null,\"mode\":\"vline\",\"point_policy\":\"follow_mouse\"}}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p2124\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"CrosshairTool\",\"id\":\"p2111\",\"attributes\":{\"overlay\":[{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p2109\",\"attributes\":{\"line_dash\":[2,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p2110\",\"attributes\":{\"dimension\":\"height\",\"line_dash\":[2,4]}}],\"line_color\":\"lightgrey\"}},{\"id\":\"p2111\"},{\"id\":\"p2111\"},{\"id\":\"p2111\"}]}}],\"logo\":null,\"active_drag\":{\"id\":\"p2112\"},\"active_scroll\":{\"id\":\"p2113\"}}},\"toolbar_location\":\"right\",\"children\":[[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1819\",\"attributes\":{\"width\":null,\"height\":100,\"sizing_mode\":\"stretch_width\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1771\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:end\",[{\"type\":\"object\",\"name\":\"CustomJS\",\"id\":\"p2108\",\"attributes\":{\"args\":{\"type\":\"map\",\"entries\":[[\"ohlc_range\",{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1774\"}],[\"source\",{\"id\":\"p1808\"}],[\"volume_range\",{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1979\"}]]},\"code\":\"if (!window._bt_scale_range) {\\n window._bt_scale_range = function (range, min, max, pad) {\\n \\\"use strict\\\";\\n if (min !== Infinity && max !== -Infinity) {\\n pad = pad ? (max - min) * .03 : 0;\\n range.start = min - pad;\\n range.end = max + pad;\\n } else console.error('backtesting: scale range error:', min, max, range);\\n };\\n}\\n\\nclearTimeout(window._bt_autoscale_timeout);\\n\\nwindow._bt_autoscale_timeout = setTimeout(function () {\\n /**\\n * @variable cb_obj `fig_ohlc.x_range`.\\n * @variable source `ColumnDataSource`\\n * @variable ohlc_range `fig_ohlc.y_range`.\\n * @variable volume_range `fig_volume.y_range`.\\n */\\n \\\"use strict\\\";\\n\\n let i = Math.max(Math.floor(cb_obj.start), 0),\\n j = Math.min(Math.ceil(cb_obj.end), source.data['ohlc_high'].length);\\n\\n let max = Math.max.apply(null, source.data['ohlc_high'].slice(i, j)),\\n min = Math.min.apply(null, source.data['ohlc_low'].slice(i, j));\\n _bt_scale_range(ohlc_range, min, max, true);\\n\\n if (volume_range) {\\n max = Math.max.apply(null, source.data['Volume'].slice(i, j));\\n _bt_scale_range(volume_range, 0, max * 1.03, false);\\n }\\n\\n}, 50);\\n\"}}]]]},\"end\":187,\"bounds\":[-9.35,196.35],\"min_interval\":10}},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1821\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1828\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1829\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1826\"},\"outline_line_color\":\"#666666\",\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1864\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1855\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1856\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1857\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/y3U+TeUYRjG8UmyJyFbsiUhISRJkuxJSJJkz5YkSZI0JNkJSZJkDyEk6Z/r2znXnPP5Zc7M+z7PvVwGg8FwACY4CFMcghnMYQFLWMEaNjgMWxyBHY7CHg5wxDE4wRkucIUbjsMdJ+ABT3jBGz44CV+cgh9Owx8BCMQZBOEsghGCUJxDGMIRgfOIxAVE4SKicQkxuIxYXEEcriIe15CARCQhGSlIRRquIx03kIGbyEQWsnELObiNXNxBHu4iH/dQgPsoRBGKUYJSlKEcD1CBSlShGjV4iFo8Qh0eox5P0ICnaMQzNOE5mvECLXiJVrxCG17DiHZ04A068RZdeIdu9KAXfejHAAYxhGG8xwhGMYYPGMdHTOATJvEZU/iCaXzFDL5hFnOYxwIWsYRlfMcKVrGGH1jHBjbxE1vYxg5+YRe/sYc/2Mdf2dd3e/rNrv6zo2ds6Zmbese63rmmM6zoTMs646LOPK87zOpOM7rjtO48pRpMqiYTqtG4ajamGo6opsOq8aBq3q8e9Kon3epRl3rWqR52qKdG9bhNPW/VDLRoJpo1I02amUbNUINmql4zVqeZq9UM1mgmqzSjFZrZcs1wqWa6WDNeqJkv0A7kayfytCO52pkc7VC2dipTO5ahnUvXDqZpJ1O0o0na2QTtcLx2Ok47Hqudj1EGRCsTopQRkcqMCGVImDIlVBkTrMwJUgYFKpP8lVF+yixfZZiPMs1LGeehzHNXBropE12UkU7KTEdlqL0y1U4Za6vMtVEGWymTLZTRZspsU2W4iTL9/+cfw4a7rOAFAAA=\"},\"shape\":[376],\"dtype\":\"int32\",\"order\":\"little\"}],[\"equity_dd\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/+2WbyzVURjHL26S26Syu2xJ8iepsQylpa+hTP5MyVZym0kpNyRpdluS1h8MsaXculi2IpP/rSu3IqsR3dy2LtPQkgm753csyt1SenH229raemfDefPZOefZ87x4zj7nEQj+LA6CeUbTqFiV/TIOe5ISSty6CAYCnm2teEgwYlyp0d4luDSgjwmSETQFX3OK2Uhgk7LtNgkgoC9vJRvnESjELf49oQTl76tGjH15sjzxx2xsyU2CQ2P+n/Jr+XypG8zarK4TGJTJ1n4Xc/DVNLZlrOYwJG3wlHpz2OJq57luJ0HtDXmmuztfl+3DHLTNPUKCE6U1M+5fdVC/jjrVIiKoyPdasXJSt2C5I3DcsqxdhxcV0XFNrTr4mPQ2dT/lz3N/tO7uXkowHn11lfN2gqLG6uFf0zpUumQ6Svp1MJUHTSrNCKask+sjnfj7WKF5qxiz/WxPH1aPEZAPuXq/2fdT9206SJxNYNdbePhdCUGxbL1IeZ+Pq3oQtl9pxKHXqy45zp/DZ10abbflEPJo1PBOAgdNQF/f6FEOodLBEVksB216c05WCIeOcKGfNJ2Dz2VX5flSno89UqI733KweOPolBZIUS5SrakSULgdlCVGajgUR3DyYDsKhULfEL+ZwtLQ9KOVB0WGf5aNSx5F0r1hUaiaYvrsk0JUU0ilSyJqhij29tdbaCQT+BK+qbH0J8UR72DzfPEEpvSdHRdVFGldxeGJCgojhysWJdkUqYWqMnUdhcHJPOfnBRTLtfsKZmIpTCTHX+06x9dlzDvjIw2RUMgHheocVz7e/nQnJCIK6wMXityMFzlXZP1f5MIk8wDzAyPzBvPN/5J56m9/Ma8x//2LzJeM7F9c5Pwim38Y2Tw2VxTM0zn3NwTpnavACwAA\"},\"shape\":[376],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1865\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1866\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1861\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"equity_dd\"},\"line_color\":\"#ffcb66\",\"fill_color\":\"#ffffea\"}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1862\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"equity_dd\"},\"line_color\":\"#ffcb66\",\"line_alpha\":0.1,\"fill_color\":\"#ffffea\",\"fill_alpha\":0.1,\"hatch_alpha\":0.1}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Patch\",\"id\":\"p1863\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"equity_dd\"},\"line_color\":\"#ffcb66\",\"line_alpha\":0.2,\"fill_color\":\"#ffffea\",\"fill_alpha\":0.2,\"hatch_alpha\":0.2}}}},{\"id\":\"p1873\"},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1884\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1878\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1879\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1880\"},\"data\":{\"type\":\"map\"}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1885\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1886\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1881\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":124},\"y\":{\"type\":\"value\",\"value\":1.1479054268546798},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"cyan\"},\"fill_color\":{\"type\":\"value\",\"value\":\"cyan\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"cyan\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1882\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":124},\"y\":{\"type\":\"value\",\"value\":1.1479054268546798},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"cyan\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"cyan\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"cyan\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1883\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":124},\"y\":{\"type\":\"value\",\"value\":1.1479054268546798},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"cyan\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"cyan\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"cyan\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1895\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1889\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1890\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1891\"},\"data\":{\"type\":\"map\"}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1896\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1897\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1892\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":187},\"y\":{\"type\":\"value\",\"value\":1.06401500660764},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"blue\"},\"fill_color\":{\"type\":\"value\",\"value\":\"blue\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"blue\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1893\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":187},\"y\":{\"type\":\"value\",\"value\":1.06401500660764},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"blue\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"blue\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"blue\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1894\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":187},\"y\":{\"type\":\"value\",\"value\":1.06401500660764},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"blue\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"blue\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"blue\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1905\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1899\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1900\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1901\"},\"data\":{\"type\":\"map\"}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1906\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1907\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1902\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":140},\"y\":{\"type\":\"value\",\"value\":1.06401500660764},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"red\"},\"fill_color\":{\"type\":\"value\",\"value\":\"red\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"red\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1903\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":140},\"y\":{\"type\":\"value\",\"value\":1.06401500660764},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"red\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"red\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"red\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1904\",\"attributes\":{\"x\":{\"type\":\"value\",\"value\":140},\"y\":{\"type\":\"value\",\"value\":1.06401500660764},\"size\":{\"type\":\"value\",\"value\":8},\"line_color\":{\"type\":\"value\",\"value\":\"red\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"red\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"red\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1915\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1909\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1910\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1911\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[124,187]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1916\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1917\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1912\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"value\",\"value\":1.1479054268546798},\"line_color\":\"red\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1913\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"value\",\"value\":1.1479054268546798},\"line_color\":\"red\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1914\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"value\",\"value\":1.1479054268546798},\"line_color\":\"red\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1827\",\"attributes\":{\"tools\":[{\"id\":\"p1840\"},{\"id\":\"p1841\"},{\"id\":\"p1842\"},{\"id\":\"p1843\"},{\"id\":\"p1851\"},{\"id\":\"p1852\"},{\"id\":\"p1853\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1854\"},{\"id\":\"p1876\"},{\"id\":\"p2111\"}],\"active_drag\":{\"id\":\"p1840\"},\"active_scroll\":{\"id\":\"p1841\"}}},\"toolbar_location\":null,\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1835\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1836\",\"attributes\":{\"desired_num_ticks\":3,\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"NumeralTickFormatter\",\"id\":\"p1877\",\"attributes\":{\"format\":\"0,0.[00]%\"}},\"axis_label\":\"Equity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1838\"},\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1830\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1831\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1832\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1833\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1834\",\"attributes\":{\"axis\":{\"id\":\"p1830\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1839\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1835\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1887\",\"attributes\":{\"location\":\"top_left\",\"border_line_color\":\"#333333\",\"background_fill_alpha\":0.9,\"click_policy\":\"hide\",\"label_text_font_size\":\"8pt\",\"margin\":0,\"padding\":5,\"spacing\":0,\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1888\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Peak (115%)\"},\"renderers\":[{\"id\":\"p1884\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1898\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Final (106%)\"},\"renderers\":[{\"id\":\"p1895\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1908\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Max Drawdown (-7.3%)\"},\"renderers\":[{\"id\":\"p1905\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1918\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Max Dd Dur. (97 days)\"},\"renderers\":[{\"id\":\"p1915\"}]}}]}}],\"min_border_top\":3,\"min_border_bottom\":6,\"min_border_left\":0,\"min_border_right\":10}},0,0],[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1919\",\"attributes\":{\"width\":null,\"height\":80,\"sizing_mode\":\"stretch_width\",\"x_range\":{\"id\":\"p1771\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1921\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1928\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1929\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1926\"},\"outline_line_color\":\"#666666\",\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1963\",\"attributes\":{\"data_source\":{\"id\":\"p1811\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1964\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1965\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"p1960\",\"attributes\":{\"xs\":{\"type\":\"field\",\"field\":\"lines\"},\"ys\":{\"type\":\"field\",\"field\":\"returns\",\"transform\":{\"type\":\"object\",\"name\":\"CustomJSTransform\",\"id\":\"p1956\",\"attributes\":{\"v_func\":\"return [...xs].map(i => [0, i]);\"}}},\"line_color\":{\"type\":\"value\",\"value\":\"#999\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"p1961\",\"attributes\":{\"xs\":{\"type\":\"field\",\"field\":\"lines\"},\"ys\":{\"type\":\"field\",\"field\":\"returns\",\"transform\":{\"id\":\"p1956\"}},\"line_color\":{\"type\":\"value\",\"value\":\"#999\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"p1962\",\"attributes\":{\"xs\":{\"type\":\"field\",\"field\":\"lines\"},\"ys\":{\"type\":\"field\",\"field\":\"returns\",\"transform\":{\"id\":\"p1956\"}},\"line_color\":{\"type\":\"value\",\"value\":\"#999\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"id\":\"p1972\"}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1927\",\"attributes\":{\"tools\":[{\"id\":\"p1940\"},{\"id\":\"p1941\"},{\"id\":\"p1942\"},{\"id\":\"p1943\"},{\"id\":\"p1951\"},{\"id\":\"p1952\"},{\"id\":\"p1953\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1954\"},{\"id\":\"p1975\"},{\"id\":\"p2111\"}],\"active_drag\":{\"id\":\"p1940\"},\"active_scroll\":{\"id\":\"p1941\"}}},\"toolbar_location\":null,\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1935\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1936\",\"attributes\":{\"desired_num_ticks\":3,\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"NumeralTickFormatter\",\"id\":\"p1976\",\"attributes\":{\"format\":\"0.[00]%\"}},\"axis_label\":\"Profit / Loss\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1938\"},\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1930\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1931\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1932\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1933\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1934\",\"attributes\":{\"axis\":{\"id\":\"p1930\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1939\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1935\"}}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p1955\",\"attributes\":{\"level\":\"underlay\",\"location\":0,\"line_color\":\"#666666\",\"line_dash\":[6]}}],\"min_border_top\":3,\"min_border_bottom\":6,\"min_border_left\":0,\"min_border_right\":10}},1,0],[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1772\",\"attributes\":{\"width\":null,\"height\":400,\"sizing_mode\":\"stretch_width\",\"x_range\":{\"id\":\"p1771\"},\"y_range\":{\"id\":\"p1774\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1781\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1782\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1779\"},\"outline_line_color\":\"#666666\",\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2033\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2024\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2025\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2026\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/2NgAAFFBzDVYAWhGdwh9IEAKB0KoRdEQeUToOJJELogFUIrpDsAAP3gVHBQAAAA\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Open\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/wFQAK//ZVHYRaFrl0CBBMWPEfaWQGjIeJRKAJdAnrex2YGAlkBO02cHnM2VQE+MLJmDCpdAsohhh3HVmEAuAfinVDSZQDgQkgUs0JhARS44g59Ul0B1eejnUAAAAA==\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"High\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/wFQAK//M9k/TxOAl0BJnuv7MOGXQBgmUwWj9ZdA8RKc+hDIlkAF2EenLimXQDYBhuWP55lAlExO7exym0DbpnhcNM2ZQDgQkgUs0JhAA5MbRZYDmEDWRuX+UAAAAA==\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Low\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/+v4xKqbIj/NoTJ2f8L1/mkOq66Gh6dWT3PI/ftl/tY3UxyKdaMa3PZNdYhZdUksnXW6w6aOxPbCqzMcOB4vL9SfNsOhIDq64p/JdDgNADo2/nBQAAAA\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Close\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/wFQAK//pl63CLzmlkBcqtIWZwWXQKrVV1dle5ZAWvENhX/IlUA3UOCdvBSXQCoBMQm32phAtogoJg8vmUA4EJIFLNCYQL2mBwXlWZdAyol2FdL4l0CjwjkwUAAAAA==\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Volume\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/wFQAK//9ihcS3accUE9CtdfpRlzQRSuRzG8UHhBSOF6vH/WcUGamZlddu9xQVyPwsUS/3hBAAAAHKSRgEHsUbgiOOB5QQrXo6RhbXVBuB6F+0R8WEFJJFnFUAAAAA==\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"_width\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"H4sIAAEAAAAC/0tLA4Jnhg5pKLQJGm0EpY2htBmavKnDrJkgIOwAAPJD/ylQAAAA\"},\"shape\":[10],\"dtype\":\"float64\",\"order\":\"little\"}],[\"inc\",{\"type\":\"ndarray\",\"array\":[\"0\",\"1\",\"0\",\"0\",\"1\",\"1\",\"1\",\"0\",\"0\",\"1\"],\"shape\":[10],\"dtype\":\"object\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2034\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2035\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p2030\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"index\"},\"y0\":{\"type\":\"field\",\"field\":\"High\"},\"x1\":{\"type\":\"field\",\"field\":\"index\"},\"y1\":{\"type\":\"field\",\"field\":\"Low\"},\"line_color\":{\"type\":\"value\",\"value\":\"#bbbbbb\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p2031\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"index\"},\"y0\":{\"type\":\"field\",\"field\":\"High\"},\"x1\":{\"type\":\"field\",\"field\":\"index\"},\"y1\":{\"type\":\"field\",\"field\":\"Low\"},\"line_color\":{\"type\":\"value\",\"value\":\"#bbbbbb\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p2032\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"index\"},\"y0\":{\"type\":\"field\",\"field\":\"High\"},\"x1\":{\"type\":\"field\",\"field\":\"index\"},\"y1\":{\"type\":\"field\",\"field\":\"Low\"},\"line_color\":{\"type\":\"value\",\"value\":\"#bbbbbb\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2043\",\"attributes\":{\"data_source\":{\"id\":\"p2024\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2044\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2045\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2040\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"field\",\"field\":\"_width\"},\"bottom\":{\"type\":\"field\",\"field\":\"Close\"},\"top\":{\"type\":\"field\",\"field\":\"Open\"},\"line_color\":{\"type\":\"value\",\"value\":null},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"type\":\"object\",\"name\":\"CategoricalColorMapper\",\"id\":\"p2036\",\"attributes\":{\"palette\":[\"rgb(214, 254, 214)\",\"rgb(254, 220, 214)\"],\"factors\":[\"0\",\"1\"]}}}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2041\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"field\",\"field\":\"_width\"},\"bottom\":{\"type\":\"field\",\"field\":\"Close\"},\"top\":{\"type\":\"field\",\"field\":\"Open\"},\"line_color\":{\"type\":\"value\",\"value\":null},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p2036\"}},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VBar\",\"id\":\"p2042\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"width\":{\"type\":\"field\",\"field\":\"_width\"},\"bottom\":{\"type\":\"field\",\"field\":\"Close\"},\"top\":{\"type\":\"field\",\"field\":\"Open\"},\"line_color\":{\"type\":\"value\",\"value\":null},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"field\",\"field\":\"inc\",\"transform\":{\"id\":\"p2036\"}},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2052\",\"attributes\":{\"data_source\":{\"id\":\"p1808\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2053\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2054\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p2049\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"index\"},\"y0\":{\"type\":\"field\",\"field\":\"High\"},\"x1\":{\"type\":\"field\",\"field\":\"index\"},\"y1\":{\"type\":\"field\",\"field\":\"Low\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p2050\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"index\"},\"y0\":{\"type\":\"field\",\"field\":\"High\"},\"x1\":{\"type\":\"field\",\"field\":\"index\"},\"y1\":{\"type\":\"field\",\"field\":\"Low\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Segment\",\"id\":\"p2051\",\"attributes\":{\"x0\":{\"type\":\"field\",\"field\":\"index\"},\"y0\":{\"type\":\"field\",\"field\":\"High\"},\"x1\":{\"type\":\"field\",\"field\":\"index\"},\"y1\":{\"type\":\"field\",\"field\":\"Low\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"id\":\"p2063\"},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2072\",\"attributes\":{\"data_source\":{\"id\":\"p1811\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2073\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2074\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"p2069\",\"attributes\":{\"xs\":{\"type\":\"field\",\"field\":\"position_lines_xs\"},\"ys\":{\"type\":\"field\",\"field\":\"position_lines_ys\"},\"line_color\":{\"type\":\"field\",\"field\":\"returns_positive\",\"transform\":{\"type\":\"object\",\"name\":\"CategoricalColorMapper\",\"id\":\"p1816\",\"attributes\":{\"palette\":[\"rgb(0, 178, 0)\",\"rgb(178, 27, 0)\"],\"factors\":[\"0\",\"1\"]}}},\"line_width\":{\"type\":\"value\",\"value\":8},\"line_dash\":{\"type\":\"value\",\"value\":\"dotted\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"p2070\",\"attributes\":{\"xs\":{\"type\":\"field\",\"field\":\"position_lines_xs\"},\"ys\":{\"type\":\"field\",\"field\":\"position_lines_ys\"},\"line_color\":{\"type\":\"field\",\"field\":\"returns_positive\",\"transform\":{\"id\":\"p1816\"}},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"line_width\":{\"type\":\"value\",\"value\":8},\"line_dash\":{\"type\":\"value\",\"value\":\"dotted\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"p2071\",\"attributes\":{\"xs\":{\"type\":\"field\",\"field\":\"position_lines_xs\"},\"ys\":{\"type\":\"field\",\"field\":\"position_lines_ys\"},\"line_color\":{\"type\":\"field\",\"field\":\"returns_positive\",\"transform\":{\"id\":\"p1816\"}},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"line_width\":{\"type\":\"value\",\"value\":8},\"line_dash\":{\"type\":\"value\",\"value\":\"dotted\"}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2082\",\"attributes\":{\"data_source\":{\"id\":\"p1808\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2083\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2084\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2079\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma10)_0_0\"},\"line_color\":\"#1f77b4\",\"line_width\":1.5}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2080\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma10)_0_0\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":1.5}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2081\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma10)_0_0\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":1.5}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2092\",\"attributes\":{\"data_source\":{\"id\":\"p1808\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2093\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2094\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2089\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma30)_1_0\"},\"line_color\":\"#ff7f0e\",\"line_width\":1.5}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2090\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma30)_1_0\"},\"line_color\":\"#ff7f0e\",\"line_alpha\":0.1,\"line_width\":1.5}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2091\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma30)_1_0\"},\"line_color\":\"#ff7f0e\",\"line_alpha\":0.2,\"line_width\":1.5}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2102\",\"attributes\":{\"data_source\":{\"id\":\"p1808\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2103\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2104\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2099\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma60)_2_0\"},\"line_color\":\"#2ca02c\",\"line_width\":1.5}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2100\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma60)_2_0\"},\"line_color\":\"#2ca02c\",\"line_alpha\":0.1,\"line_width\":1.5}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2101\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"\\u03bb(sma60)_2_0\"},\"line_color\":\"#2ca02c\",\"line_alpha\":0.2,\"line_width\":1.5}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1780\",\"attributes\":{\"tools\":[{\"id\":\"p1793\"},{\"id\":\"p1794\"},{\"id\":\"p1795\"},{\"id\":\"p1796\"},{\"id\":\"p1804\"},{\"id\":\"p1805\"},{\"id\":\"p1806\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1807\"},{\"id\":\"p2107\"},{\"id\":\"p2111\"}],\"active_drag\":{\"id\":\"p1793\"},\"active_scroll\":{\"id\":\"p1794\"}}},\"toolbar_location\":null,\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1788\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1789\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1790\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1791\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1783\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1784\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"CustomJSTickFormatter\",\"id\":\"p1818\",\"attributes\":{\"args\":{\"type\":\"map\",\"entries\":[[\"axis\",{\"id\":\"p1783\"}],[\"formatter\",{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p1817\",\"attributes\":{\"days\":\"%a, %d %b\"}}],[\"source\",{\"id\":\"p1808\"}]]},\"code\":\"\\nthis.labels = this.labels || formatter.doFormat(ticks\\n .map(i => source.data.datetime[i])\\n .filter(t => t !== undefined));\\nreturn this.labels[index] || \\\"\\\";\\n \"}},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1786\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1787\",\"attributes\":{\"axis\":{\"id\":\"p1783\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1792\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1788\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p2055\",\"attributes\":{\"location\":\"top_left\",\"border_line_color\":\"#333333\",\"background_fill_alpha\":0.9,\"click_policy\":\"hide\",\"label_text_font_size\":\"8pt\",\"margin\":0,\"padding\":5,\"spacing\":0,\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2056\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"OHLC\"},\"renderers\":[{\"id\":\"p2052\"},{\"id\":\"p2063\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2075\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Trades (2)\"},\"renderers\":[{\"id\":\"p2072\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2085\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u03bb(sma10)\"},\"renderers\":[{\"id\":\"p2082\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2095\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u03bb(sma30)\"},\"renderers\":[{\"id\":\"p2092\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2105\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u03bb(sma60)\"},\"renderers\":[{\"id\":\"p2102\"}]}}]}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2106\",\"attributes\":{\"text\":\"Created with Backtesting.py: http://kernc.github.io/backtesting.py\",\"text_color\":\"silver\",\"text_alpha\":0.09,\"x\":10,\"y\":15,\"x_units\":\"screen\",\"y_units\":\"screen\"}}],\"min_border_top\":3,\"min_border_bottom\":6,\"min_border_left\":0,\"min_border_right\":10}},2,0],[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1977\",\"attributes\":{\"width\":null,\"height\":70,\"sizing_mode\":\"stretch_width\",\"x_range\":{\"id\":\"p1771\"},\"y_range\":{\"id\":\"p1979\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1986\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1987\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1984\"},\"outline_line_color\":\"#666666\",\"renderers\":[{\"id\":\"p2019\"}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1985\",\"attributes\":{\"tools\":[{\"id\":\"p1998\"},{\"id\":\"p1999\"},{\"id\":\"p2000\"},{\"id\":\"p2001\"},{\"id\":\"p2009\"},{\"id\":\"p2010\"},{\"id\":\"p2011\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2012\"},{\"id\":\"p2022\"},{\"id\":\"p2111\"}],\"active_drag\":{\"id\":\"p1998\"},\"active_scroll\":{\"id\":\"p1999\"}}},\"toolbar_location\":null,\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1993\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1994\",\"attributes\":{\"desired_num_ticks\":3,\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"NumeralTickFormatter\",\"id\":\"p2023\",\"attributes\":{\"format\":\"0 a\"}},\"axis_label\":\"Volume\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1996\"},\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1988\",\"attributes\":{\"visible\":true,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1989\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"id\":\"p1818\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1991\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1992\",\"attributes\":{\"axis\":{\"id\":\"p1988\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1997\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1993\"}}}],\"min_border_top\":3,\"min_border_bottom\":6,\"min_border_left\":0,\"min_border_right\":10}},3,0]]}}],\"callbacks\":{\"type\":\"map\",\"entries\":[[\"document_ready\",[{\"type\":\"object\",\"name\":\"CustomJS\",\"id\":\"p1770\",\"attributes\":{\"code\":\"(function() { var i = document.createElement('iframe'); i.style.display='none';i.width=i.height=1;i.loading='eager';i.src='https://kernc.github.io/backtesting.py/plx.gif.html?utm_source='+location.origin;document.body.appendChild(i);})();\"}}]]]}}};\n const render_items = [{\"docid\":\"5c8c5d83-a8a6-40f0-923a-3f334da17f59\",\"roots\":{\"p2126\":\"a42589f6-5484-44e6-a172-f7aef84b7fea\"},\"root_ids\":[\"p2126\"]}];\n void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);",
"application/vnd.bokehjs_exec.v0+json": ""
},
"metadata": {
"application/vnd.bokehjs_exec.v0+json": {
"id": "p2126"
}
},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"data": {
"text/plain": [
"GridPlot(id='p2126', ...)"
],
"text/html": [
"<div style=\"display: table;\"><div style=\"display: table-row;\"><div style=\"display: table-cell;\"><b title=\"bokeh.models.plots.GridPlot\">GridPlot</b>(</div><div style=\"display: table-cell;\">id&nbsp;=&nbsp;'p2126', <span id=\"p2158\" style=\"cursor: pointer;\">&hellip;)</span></div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">align&nbsp;=&nbsp;'auto',</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">aspect_ratio&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">children&nbsp;=&nbsp;[(figure(id='p1819', ...), 0, 0), (figure(id='p1919', ...), 1, 0), (figure(id='p1772', ...), 2, 0), (figure(id='p1977', ...), 3, 0)],</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">cols&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">context_menu&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">css_classes&nbsp;=&nbsp;[],</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">css_variables&nbsp;=&nbsp;{},</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">disabled&nbsp;=&nbsp;False,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">elements&nbsp;=&nbsp;[],</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">flow_mode&nbsp;=&nbsp;'block',</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">height&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">height_policy&nbsp;=&nbsp;'auto',</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">html_attributes&nbsp;=&nbsp;{},</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">html_id&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">js_event_callbacks&nbsp;=&nbsp;{},</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">js_property_callbacks&nbsp;=&nbsp;{},</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">margin&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">max_height&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">max_width&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">min_height&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">min_width&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">name&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">resizable&nbsp;=&nbsp;False,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">rows&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">sizing_mode&nbsp;=&nbsp;'stretch_width',</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">spacing&nbsp;=&nbsp;0,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">styles&nbsp;=&nbsp;{},</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">stylesheets&nbsp;=&nbsp;[],</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">subscribed_events&nbsp;=&nbsp;PropertyValueSet(),</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">syncable&nbsp;=&nbsp;True,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">tags&nbsp;=&nbsp;[],</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">toolbar&nbsp;=&nbsp;Toolbar(id='p2125', ...),</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">toolbar_location&nbsp;=&nbsp;'right',</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">visible&nbsp;=&nbsp;True,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">width&nbsp;=&nbsp;None,</div></div><div class=\"p2157\" style=\"display: none;\"><div style=\"display: table-cell;\"></div><div style=\"display: table-cell;\">width_policy&nbsp;=&nbsp;'auto')</div></div></div>\n",
"<script>\n",
"(function() {\n",
" let expanded = false;\n",
" const ellipsis = document.getElementById(\"p2158\");\n",
" ellipsis.addEventListener(\"click\", function() {\n",
" const rows = document.getElementsByClassName(\"p2157\");\n",
" for (let i = 0; i < rows.length; i++) {\n",
" const el = rows[i];\n",
" el.style.display = expanded ? \"none\" : \"table-row\";\n",
" }\n",
" ellipsis.innerHTML = expanded ? \"&hellip;)\" : \"&lsaquo;&lsaquo;&lsaquo;\";\n",
" expanded = !expanded;\n",
" });\n",
"})();\n",
"</script>\n"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 16
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}